From c34a9d34a6f71cbf209c51f7afca9a6a878cbaec Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 10 Nov 1996 05:02:38 +0000 Subject: [PATCH] (define-key-after): If AFTER is t, always put new binding at the end. --- lisp/subr.el | 15 +++++++++++---- 1 file 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 -- 2.39.5