diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2001-03-14 12:20:17 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2001-03-14 12:20:17 +0000 |
commit | 2d442fff86d643cadd16315639f17644feb08f5e (patch) | |
tree | cd825ce5bdc6ff6ec020e59db1e7b7fe4cc6d548 | |
parent | 64819aedac3e85ffc15f8aacc052009820434f49 (diff) | |
download | zsh-2d442fff86d643cadd16315639f17644feb08f5e.tar.gz zsh-2d442fff86d643cadd16315639f17644feb08f5e.tar.xz zsh-2d442fff86d643cadd16315639f17644feb08f5e.zip |
13633: don't use termcap cursor keys if single key which is already bound
-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); } |