diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Src/Zle/zle_keymap.c | 14 |
2 files changed, 19 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 8da4b0721..36d581757 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2001-03-14 Peter Stephenson <pws@csr.com> + + * 13633: Src/Zle/zle_keymap.c: lastest in saga: don't use + termcap suggestion for keymap if it is a single key already bound + by default (user bindings will take precedence anyway). + 2001-03-13 Bart Schaefer <schaefer@zsh.org> * Zvi Har'El: 13619: Completion/User/_rcs: Add the D qualifier diff --git a/Src/Zle/zle_keymap.c b/Src/Zle/zle_keymap.c index b46c74f91..c6646450d 100644 --- a/Src/Zle/zle_keymap.c +++ b/Src/Zle/zle_keymap.c @@ -1029,6 +1029,7 @@ static void add_cursor_key(Keymap km, int tccode, Thingy thingy, int defchar) { char buf[2048]; + int ok = 0; /* * Be careful not to try too hard with bindings for dubious or @@ -1042,7 +1043,18 @@ add_cursor_key(Keymap km, int tccode, Thingy thingy, int defchar) cursorptr = buf; tputs(tcstr[tccode], 1, add_cursor_char); *cursorptr = '\0'; - } else { + + /* + * Sanity checking. If the cursor key is zero-length (unlikely, + * but this is termcap we're talking about), or it's a single + * character which is already bound, then we don't bind it. + */ + if (!buf[0] || (!buf[1] && km->first[STOUC(buf[0])] != t_undefinedkey)) + ok = 0; + else + ok = 1; + } + if (!ok) { /* Assume the normal VT100-like values. */ sprintf(buf, "\33[%c", defchar); } |