thomas%UTAH-GR%utah-cs@sri-unix.UUCP (07/24/83)
From: Spencer W. Thomas <thomas%UTAH-GR@utah-cs> Assuming that you do not have ^Z bound to a keymap, then create a local binding: (local-bind-to-key "anything" "\^Za") If you type ^Z-a, your screen will scroll one line, AND "anything" will be executed! The section in the manual on keymaps says "When either of the [parallel] traversals [of the local and global keymaps] reaches a leaf, that function is invoked and interpretation is reset to the roots of the trees." Well, it looks as if the first part of the statement is true (the globally bound ^Z function is executed), but the second is false (the locally bound ^Z-a is also executed). =Spencer
thomas%UTAH-GR%utah-cs@sri-unix.UUCP (07/25/83)
From: thomas%UTAH-GR@utah-cs (Spencer W. Thomas) (Reprise of bug: (local-bind-to-key "previous-line" "\^N\^N"), then have fun.) Here is the fix, it's really simple. In keyboard.h, there are a couple of places where it says if (NextLocalKeymap == 0) { NextGlobalKeymap = 0; continue; } Well, change those to read: if (NextLocalKeymap == 0 || NextGlobalKeymap == 0) { NextGlobalKeymap = 0; NextLocalKeymap = 0; continue; } Note that this implies that you can't have a local prefix character which is not also a global prefix character. If somebody has a better fix, let me know, this is not entirely satisfactory. =Spencer