diff options
Diffstat (limited to 'examples/scripts.noah/stty.bash')
-rw-r--r-- | examples/scripts.noah/stty.bash | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/examples/scripts.noah/stty.bash b/examples/scripts.noah/stty.bash new file mode 100644 index 0000000..611d970 --- /dev/null +++ b/examples/scripts.noah/stty.bash @@ -0,0 +1,64 @@ +# stty.bash +# Author: Noah Friedman <friedman@prep.ai.mit.edu> +# Created: 1992-01-11 +# Last modified: 1993-09-29 +# Public domain + +# Conversion to bash v2 syntax done by Chet Ramey + +# Commentary: +# Code: + +require remap_keybindings + +#:docstring stty: +# Track changes to certain keybindings with stty, and make those changes +# reflect in bash's readline bindings as well. +# +# This requires bash version 1.10 or newer, since previous versions did not +# implement the `bind' builtin. +#:end docstring: + +###;;;autoload +function stty () +{ + local erase="backward-delete-char" + local kill="unix-line-discard" + local werase="backward-kill-word" + local lnext="quoted-insert" + local readline_function="" + local key="" + local stty_command="" + + while [ $# -gt 0 ]; do + case "$1" in + erase | kill | werase | lnext ) + key=$(echo "${2}" | cat -v | sed 's/\^/\\C-/') + readline_function=$(eval echo \$${1}) + + # Get rid of any current bindings; the whole point of this + # function is to make the distinction between readline + # bindings and particular cbreak characters transparent; old + # readline keybindings shouldn't hang around. + # could use bind -r here instead of binding to self-insert + remap_keybindings "${readline_function}" "self-insert" + + # Bind new key to appropriate readline function + bind "\"${key}\": ${readline_function}" + + stty_command="${stty_command} ${1} ${2}" + shift 2 + ;; + *) + stty_command="${stty_command} ${1}" + shift + ;; + esac + done + + command stty ${stty_command} +} + +provide stty + +# stty.bash ends here |