diff options
author | Richard M. Stallman <rms@gnu.org> | 1996-11-10 05:02:38 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1996-11-10 05:02:38 +0000 |
commit | 6d0e5e3052572903a7c9b96fc6997d58453fd07e (patch) | |
tree | f9b62abe45db9946e689aa588e3045b08941d629 /lisp | |
parent | 3a43a86ebfdfb4e842b36934f3bbb7b10e415d95 (diff) | |
download | emacs-6d0e5e3052572903a7c9b96fc6997d58453fd07e.tar.gz |
(define-key-after): If AFTER is t, always put new binding at the end.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/subr.el | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lisp/subr.el b/lisp/subr.el index 0634ce21be7..22056046416 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -181,10 +181,16 @@ in KEYMAP as NEWDEF those chars which are defined as OLDDEF in OLDMAP." "Add binding in KEYMAP for KEY => DEFINITION, right after AFTER's binding. This is like `define-key' except that the binding for KEY is placed just after the binding for the event AFTER, instead of at the beginning -of the map. -The order matters when the keymap is used as a menu. +of the map. Note that AFTER must be an event type (like KEY), NOT a command +\(like DEFINITION). + +If AFTER is t, the new binding goes at the end of the keymap. + KEY must contain just one event type--that is to say, it must be -a string or vector of length 1." +a string or vector of length 1. + +The order of bindings in a keymap matters when it is used as a menu." + (or (keymapp keymap) (signal 'wrong-type-argument (list 'keymapp keymap))) (if (> (length key) 1) @@ -198,7 +204,8 @@ a string or vector of length 1." ;; When we reach AFTER's binding, insert the new binding after. ;; If we reach an inherited keymap, insert just before that. ;; If we reach the end of this keymap, insert at the end. - (if (or (eq (car-safe (car tail)) after) + (if (or (and (eq (car-safe (car tail)) after) + (not (eq after t))) (eq (car (cdr tail)) 'keymap) (null (cdr tail))) (progn |