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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
#! /bin/sh -e
if [ $# -eq 3 -a "$2" = '-d' ]; then
pdir="-d $3"
elif [ $# -ne 1 ]; then
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
exit 1
fi
case "$1" in
-patch) patch $pdir -f --no-backup-if-mismatch -p1 < $0;;
-unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;;
*)
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
exit 1
esac
exit 0
# DP: Fix readline self-insert command
From: Thomas Glanzmann <sithglan@stud.uni-erlangen.de>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: Bug#290103: readline provided with bash: self-insert doesn't work correctly
Date: Wed, 12 Jan 2005 20:35:17 +0100
Package: bash3
Version: 3.0-10
Severity: normal
Tags: patch
Hello,
having the following in .inputrc:
$if Bash
",2": " 2>&1"
",n": " 2>/dev/null"
",t": "/var/tmp/sithglan/"
",b": "/opt/build/thomas/"
",": self-insert
$endif
should expand ,2 to " 2>&1" but , still to ','. This isn't the case and
I asked bash maintainer Chet Ramey to fix it and he did it. :-) The
following patch will ship with the next version of bash.
> > That is a bug in the released version of readline-5.0. Shadow keymaps
> > are implemented by using an extra character. When a `shadowed' key
> > (the `,' in your case) is bound to self-insert, the 5.0 code was
> > trying to insert the extra character (256) rather than the `,'.
*** bash-20050106.orig/lib/readline/readline.c Fri Oct 15 14:36:55 2004
--- bash/lib/readline/readline.c Sat Jan 8 23:51:44 2005
***************
*** 657,665 ****
the input queue with _rl_unget_char. */
{
- #if 0
- r = _rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key));
- #else
- /* XXX - experimental code -- might never be executed. Save
- for later. */
Keymap m = FUNCTION_TO_KEYMAP (map, key);
int type = m[ANYOTHERKEY].type;
--- 657,660 ----
***************
*** 667,673 ****
if (type == ISFUNC && func == rl_do_lowercase_version)
r = _rl_dispatch (_rl_to_lower (key), map);
else
r = _rl_dispatch (ANYOTHERKEY, m);
- #endif
}
else if (r && map[ANYOTHERKEY].function)
--- 662,681 ----
if (type == ISFUNC && func == rl_do_lowercase_version)
r = _rl_dispatch (_rl_to_lower (key), map);
+ else if (type == ISFUNC && func == rl_insert)
+ {
+ /* If the function that was shadowed was self-insert, we
+ somehow need a keymap with map[key].func == self-insert.
+ Let's use this one. */
+ int nt = m[key].type;
+ rl_command_func_t *nf = m[key].function;
+
+ m[key].type = type;
+ m[key].function = func;
+ r = _rl_dispatch (key, m);
+ m[key].type = nt;
+ m[key].function = nf;
+ }
else
r = _rl_dispatch (ANYOTHERKEY, m);
}
else if (r && map[ANYOTHERKEY].function)
|