aboutsummaryrefslogtreecommitdiff
path: root/sh/shrc.d/ed.sh
blob: 4638d2cb7e09790567af4005e7d2cf70ec3617f3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 ] && command -v rlwrap >/dev/null 2>&1 ; then
        command rlwrap ed "$@"
    else
        command ed "$@"
    fi
}