diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-17 17:38:45 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-17 17:38:45 +1200 |
commit | 67afb66eb1a2e7a1f7c912bdeec002de7b25d91d (patch) | |
tree | 0701c5da159452f229eb50a8b1f99387b31a01fe /sh/shrc.d/ed.sh | |
parent | Only pull if rebase possible (diff) | |
download | dotfiles-67afb66eb1a2e7a1f7c912bdeec002de7b25d91d.tar.gz dotfiles-67afb66eb1a2e7a1f7c912bdeec002de7b25d91d.zip |
Move simple Bash/pdksh functions into POSIX sh
Have only translated the scripts that translate readily into POSIX sh
for now. More complex stuff like that bd/pd/sd/ud navigation for Bash
doesn't port as easily, mostly because there isn't an analogue for the
"local" keyword in POSIX.
Diffstat (limited to 'sh/shrc.d/ed.sh')
-rw-r--r-- | sh/shrc.d/ed.sh | 26 |
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 +} |