Imported from ../bash-2.0.tar.gz.
This commit is contained in:
parent
726f63884d
commit
ccc6cda312
502 changed files with 91988 additions and 69123 deletions
71
examples/scripts.noah/remap_keys.bash
Normal file
71
examples/scripts.noah/remap_keys.bash
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
# remap_keybindings.bash
|
||||
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||
# Created: 1992-01-11
|
||||
# Last modified: 1993-02-03
|
||||
# Public domain
|
||||
|
||||
# Conversion to bash v2 syntax done by Chet Ramey
|
||||
|
||||
# Commentary:
|
||||
# Code:
|
||||
|
||||
#:docstring remap_keybindings:
|
||||
# Usage: remap_keybindings old_function new_function
|
||||
#
|
||||
# Clear all readline keybindings associated with OLD_FUNCTION (a Readline
|
||||
# function) rebinding them to NEW_FUNCTION (`self-insert' by default)
|
||||
#
|
||||
# This requires bash version 1.10 or newer, since previous versions did not
|
||||
# implement the `bind' builtin.
|
||||
#:end docstring:
|
||||
|
||||
###;;;autoload
|
||||
function remap_keybindings ()
|
||||
{
|
||||
local unbind_function="$1"
|
||||
local bind_function="${2:-'self-insert'}"
|
||||
local bind_output
|
||||
local arg
|
||||
|
||||
# If they're the same thing, the work has already been done. :-)
|
||||
if [ "${unbind_function}" = "${bind_function}" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
while : ; do
|
||||
bind_output="$(bind -q ${unbind_function} 2> /dev/null)"
|
||||
|
||||
case "${bind_output}" in
|
||||
"${unbind_function} can be invoked via"* ) ;;
|
||||
"" ) return 1 ;; # probably bad argument to bind
|
||||
*) return 0 ;; # unbound
|
||||
esac
|
||||
|
||||
# Format of bind_output is like:
|
||||
# 'quoted-insert can be invoked via "\C-q", "\C-v".'
|
||||
# 'self-insert can be invoked via " ", "!", """, "$", "%", ...'
|
||||
set -- ${bind_output}
|
||||
shift 5
|
||||
|
||||
for arg in "$@" ; do
|
||||
# strip off trailing `.' or `,'
|
||||
arg=${arg%.};
|
||||
arg=${arg%,};
|
||||
|
||||
case ${arg} in
|
||||
..)
|
||||
# bind -q didn't provide whole list of key bindings; jump
|
||||
# to top loop to get more
|
||||
continue 2 ;
|
||||
;;
|
||||
*)
|
||||
bind "${arg}: ${bind_function}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
provide remap_keybindings
|
||||
|
||||
# remap_keybindings.bash ends here
|
||||
Loading…
Add table
Add a link
Reference in a new issue