[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: substitute-key-definition problem with menus in Emacs 21
From: |
Stefan |
Subject: |
Re: substitute-key-definition problem with menus in Emacs 21 |
Date: |
Sun, 10 Oct 2004 13:07:22 -0400 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/21.3.50 (darwin) |
> Do these replacement functions do the job?
Shouldn't substitute-key-definition use `where-is-internal' ?
I do see a problem, tho: once we know
ELISP> (where-is-internal 'find-file global-map nil nil 'noremap)
([open] [24 6] [menu-bar files open-file])
there is no easy way to get at the menu-item to copy&modify it:
ELISP> (lookup-key global-map [menu-bar files open-file])
find-file
So we'd need to add a `noindirect' argument to lookup-key, which sounds like
a useful change anyway.
In any case, isn't your definition of substitute-key-definition equivalent to:
(defun substitute-key-definition (olddef newdef keymap &optional oldmap prefix)
...
(or prefix (setq prefix ""))
(let* ((scan (or oldmap keymap))
(prefix1 (vconcat prefix [nil]))
(key-substitution-in-progress
(cons scan key-substitution-in-progress)))
;; Scan OLDMAP, finding each char or event-symbol that
;; has any definition, and act on it with hack-key.
(map-keymap
(lambda (char defn)
(aset prefix1 (length prefix) char)
(substitute-key-definition-key defn olddef newdef prefix1 keymap))
scan)))
-- Stefan