Mercurial > emacs
changeset 10162:58037e770f67
(apropos-match-keys): Handle menu bindings with cached equivalent keys.
(apropos-match-keys): Handle minor mode maps
and overriding-local-map.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 15 Dec 1994 01:56:13 +0000 |
parents | 512a84fb3c75 |
children | 70b04b218216 |
files | lisp/apropos.el |
diffstat | 1 files changed, 17 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/apropos.el Thu Dec 15 00:42:19 1994 +0000 +++ b/lisp/apropos.el Thu Dec 15 01:56:13 1994 +0000 @@ -243,9 +243,16 @@ (defun apropos-match-keys (alist &optional regexp) (let* ((current-local-map (current-local-map)) - (maps (append (and current-local-map - (accessible-keymaps current-local-map)) - (accessible-keymaps (current-global-map)))) + ;; Get a list of the top-level maps now active. + (top-maps + (if overriding-local-map + (list overriding-local-map (current-global-map)) + (append (current-minor-mode-maps) + (if current-local-map + (list current-local-map (current-global-map)) + (list (current-global-map)))))) + ;; Turn that into a list of all the maps including submaps. + (maps (apply 'append (mapcar 'accessible-keymaps top-maps))) map ;map we are now inspecting sequence ;key sequence to reach map i ;index into vector map @@ -263,12 +270,17 @@ (setq map (cdr map))) (while (stringp (car-safe map)) (setq map (cdr map))) + (while (consp map) (cond ((consp (car map)) (setq command (cdr (car map)) key (car (car map))) - ;; Skip any menu prompt in this key binding. - (and (consp command) (symbolp (cdr command)) + ;; Skip any menu prompt and help string in this key binding. + (while (and (consp command) (stringp (car command))) + (setq command (cdr command))) + ;; Skip any cached equivalent key. + (and (consp command) + (consp (car command)) (setq command (cdr command))) ;; if is a symbol, and matches optional regexp, and is a car ;; in alist, and is not shadowed by a different local binding,