aboutsummaryrefslogtreecommitdiff
path: root/sh/shrc.d/ed.sh
diff options
context:
space:
mode:
Diffstat (limited to 'sh/shrc.d/ed.sh')
-rw-r--r--sh/shrc.d/ed.sh26
1 files changed, 26 insertions, 0 deletions
diff --git a/sh/shrc.d/ed.sh b/sh/shrc.d/ed.sh
new file mode 100644
index 00000000..c7afb176
--- /dev/null
+++ b/sh/shrc.d/ed.sh
@@ -0,0 +1,26 @@
+# Add a colon prompt to ed when a command is expected rather than text; makes
+# it feel a lot more like using ex. Only do this when stdin is a terminal,
+# however. Also try and use -v for more verbose error output, and rlwrap(1) if
+# it's available.
+ed() {
+
+ # We're only adding options if input is from a terminal
+ if [ -t 0 ] ; then
+
+ # Colon prompt (POSIX)
+ set -- -p : "$@"
+
+ # Verbose if available (not POSIX)
+ if ed -sv - </dev/null >&0 2>&0 ; then
+ set -- -v "$@"
+ fi
+ fi
+
+ # Execute the ed(1) call, in a wrapper if appropriate and with the
+ # concluded options
+ if [ -t 0 ] && hash rlwrap 2>/dev/null ; then
+ command rlwrap ed "$@"
+ else
+ command ed "$@"
+ fi
+}