diff options
author | cvpcs <root@cvpcs.org> | 2010-06-02 11:02:31 -0500 |
---|---|---|
committer | cvpcs <root@cvpcs.org> | 2010-06-02 11:02:31 -0500 |
commit | 772f20abb0a3a0979c440114bf3a1cff5b3cef03 (patch) | |
tree | 3384b9291d73a12542c526a8557218c7435491b0 /examples/functions/fstty | |
download | external_bash-772f20abb0a3a0979c440114bf3a1cff5b3cef03.zip external_bash-772f20abb0a3a0979c440114bf3a1cff5b3cef03.tar.gz external_bash-772f20abb0a3a0979c440114bf3a1cff5b3cef03.tar.bz2 |
initial import of bash 4.1
Diffstat (limited to 'examples/functions/fstty')
-rw-r--r-- | examples/functions/fstty | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/examples/functions/fstty b/examples/functions/fstty new file mode 100644 index 0000000..a770d84 --- /dev/null +++ b/examples/functions/fstty @@ -0,0 +1,59 @@ +# +# A function that works as a front end for both stty and the `bind' +# builtin, so the tty driver and readline see the same changes +# + +# +# Convert between the stty ^H control character form and the readline \C-H +# form +# +cvt() +{ + echo "$@" | cat -v | sed 's/\^/\\C-/' +} + +# +# stty front-end. Parses the argument list and creates two command strings, +# one for stty, another for bind. +# +fstty() +{ + local cmd="" bargs="" + local e + + while [ $# -gt 0 ] + do + case "$1" in + -a) cmd="$cmd everything" + ;; + erase) shift; + e=$(cvt "$1") + cmd="$cmd erase $1" + bargs="$bargs '\"$e\": backward-delete-char'" + ;; + kill) shift + e=$(cvt "$1") + cmd="$cmd kill $1" + bargs="$bargs '\"$e\": unix-line-discard'" + ;; + werase) shift; + e=$(cvt "$1") + cmd="$cmd erase $1" + bargs="$bargs '\"$e\": backward-kill-word'" + ;; + lnext) shift; + e=$(cvt "$1") + cmd="$cmd erase $1" + bargs="$bargs '\"$e\": quoted-insert'" + ;; + *) cmd="$cmd $1" + ;; + esac + shift + done + + command stty $cmd + if [ -n "$bargs" ]; then + builtin bind $bargs + fi +} |