Commit 50d4ba39 authored by Stefan Monnier's avatar Stefan Monnier

* keyboard.c (Qmenu_alias, Vdefine_key_rebound_commands): Remove.

(parse_menu_item): Streamline since bindings are recomputed all the
time anyway.  Don't bother checking Vdefine_key_rebound_commands any
more and don't support lmenu's menu-alias any more either.
* subr.el (define-key-rebound-commands): Mark obsolete.
* startup.el (precompute-menubar-bindings): Remove.
(normal-top-level): Remove obsolete code that tried to precompute
menubar bindings.
* loadup.el (define-key-rebound-commands): Don't bother fiddling with
define-key-rebound-commands and precompute-menubar-bindings.
parent deeb21d4
2009-09-10 Stefan Monnier <monnier@iro.umontreal.ca>
* subr.el (define-key-rebound-commands): Mark obsolete.
* startup.el (precompute-menubar-bindings): Remove.
(normal-top-level): Remove obsolete code that tried to precompute
menubar bindings.
* loadup.el (define-key-rebound-commands): Don't bother fiddling with
define-key-rebound-commands and precompute-menubar-bindings.
2009-09-10 Glenn Morris <rgm@gnu.org>
* pcvs.el (cvs-mode-find-file): Use forward-line rather than goto-line.
......
......@@ -233,12 +233,6 @@
(if (load "site-load" t)
(garbage-collect))
(if (fboundp 'x-popup-menu)
(precompute-menubar-bindings))
;; Turn on recording of which commands get rebound,
;; for the sake of the next call to precompute-menubar-bindings.
(setq define-key-rebound-commands nil)
;; Determine which last version number to use
;; based on the executables that now exist.
(if (and (or (equal (nth 3 command-line-args) "dump")
......
......@@ -501,8 +501,7 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
(delete (concat "PWD=" pwd)
process-environment)))))
(setq default-directory (abbreviate-file-name default-directory))
(let ((menubar-bindings-done nil)
(old-face-font-rescale-alist face-font-rescale-alist))
(let ((old-face-font-rescale-alist face-font-rescale-alist))
(unwind-protect
(command-line)
;; Do this again, in case .emacs defined more abbreviations.
......@@ -571,10 +570,7 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
(if (fboundp 'font-menu-add-default)
(font-menu-add-default))
(and window-setup-hook
(run-hooks 'window-setup-hook))
(or menubar-bindings-done
(if (display-popup-menus-p)
(precompute-menubar-bindings)))))
(run-hooks 'window-setup-hook))))
;; Subprocesses of Emacs do not have direct access to the terminal, so
;; unless told otherwise they should only assume a dumb terminal.
;; We are careful to do it late (after term-setup-hook), although the
......@@ -595,20 +591,6 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
(delete display process-environment)))))
;; Precompute the keyboard equivalents in the menu bar items.
(defun precompute-menubar-bindings ()
(let ((submap (lookup-key global-map [menu-bar])))
(while submap
(and (consp (car submap))
(symbolp (car (car submap)))
(stringp (car-safe (cdr (car submap))))
(keymapp (cdr (cdr (car submap))))
(progn
(x-popup-menu nil (cdr (cdr (car submap))))
(if purify-flag
(garbage-collect))))
(setq submap (cdr submap))))
(setq define-key-rebound-commands t))
;; Command-line options supported by tty's:
(defconst tty-long-option-alist
'(("--name" . "-name")
......
......@@ -1076,6 +1076,7 @@ is converted into a string by expressing it in decimal."
;;;; Obsolescence declarations for variables, and aliases.
(make-obsolete-variable 'define-key-rebound-commands nil "23.2")
(make-obsolete-variable 'redisplay-end-trigger-functions 'jit-lock-register "23.1")
(make-obsolete 'window-redisplay-end-trigger nil "23.1")
(make-obsolete 'set-window-redisplay-end-trigger nil "23.1")
......
2009-09-10 Stefan Monnier <monnier@iro.umontreal.ca>
* keyboard.c (Qmenu_alias, Vdefine_key_rebound_commands): Remove.
(parse_menu_item): Streamline since bindings are recomputed all the
time anyway. Don't bother checking Vdefine_key_rebound_commands any
more and don't support lmenu's menu-alias any more either.
* keymap.c (where_is_internal_data): Make noindirect a boolean.
(where_is_internal): Strip it down to only traverse the keymaps.
Move the cache handling from Fwhere_is_internal to here.
......
......@@ -495,11 +495,9 @@ Lisp_Object Qevent_kind;
Lisp_Object Qevent_symbol_elements;
/* menu item parts */
Lisp_Object Qmenu_alias;
Lisp_Object Qmenu_enable;
Lisp_Object QCenable, QCvisible, QChelp, QCfilter, QCkeys, QCkey_sequence;
Lisp_Object QCbutton, QCtoggle, QCradio;
extern Lisp_Object Vdefine_key_rebound_commands;
extern Lisp_Object Qmenu_item;
/* An event header symbol HEAD may have a property named
......@@ -7883,13 +7881,10 @@ parse_menu_item (item, notreal, inmenubar)
int notreal, inmenubar;
{
Lisp_Object def, tem, item_string, start;
Lisp_Object cachelist;
Lisp_Object filter;
Lisp_Object keyhint;
int i;
int newcache = 0;
cachelist = Qnil;
filter = Qnil;
keyhint = Qnil;
......@@ -7926,14 +7921,11 @@ parse_menu_item (item, notreal, inmenubar)
item = XCDR (item);
}
/* Maybe key binding cache. */
/* Maybe an obsolete key binding cache. */
if (CONSP (item) && CONSP (XCAR (item))
&& (NILP (XCAR (XCAR (item)))
|| VECTORP (XCAR (XCAR (item)))))
{
cachelist = XCAR (item);
item = XCDR (item);
}
item = XCDR (item);
/* This is the real definition--the function to run. */
ASET (item_properties, ITEM_PROPERTY_DEF, item);
......@@ -7959,12 +7951,9 @@ parse_menu_item (item, notreal, inmenubar)
ASET (item_properties, ITEM_PROPERTY_DEF, XCAR (start));
item = XCDR (start);
/* Is there a cache list with key equivalences. */
/* Is there an obsolete cache list with key equivalences. */
if (CONSP (item) && CONSP (XCAR (item)))
{
cachelist = XCAR (item);
item = XCDR (item);
}
item = XCDR (item);
/* Parse properties. */
while (CONSP (item) && CONSP (XCDR (item)))
......@@ -7994,15 +7983,14 @@ parse_menu_item (item, notreal, inmenubar)
else if (EQ (tem, QCkey_sequence))
{
tem = XCAR (item);
if (NILP (cachelist)
&& (SYMBOLP (tem) || STRINGP (tem) || VECTORP (tem)))
if (SYMBOLP (tem) || STRINGP (tem) || VECTORP (tem))
/* Be GC protected. Set keyhint to item instead of tem. */
keyhint = item;
}
else if (EQ (tem, QCkeys))
{
tem = XCAR (item);
if (CONSP (tem) || (STRINGP (tem) && NILP (cachelist)))
if (CONSP (tem) || STRINGP (tem))
ASET (item_properties, ITEM_PROPERTY_KEYEQ, tem);
}
else if (EQ (tem, QCbutton) && CONSP (XCAR (item)))
......@@ -8083,40 +8071,16 @@ parse_menu_item (item, notreal, inmenubar)
return 1;
/* This is a command. See if there is an equivalent key binding. */
if (NILP (cachelist))
{
/* We have to create a cachelist. */
/* With the introduction of where_is_cache, the computation
of equivalent key bindings is sufficiently fast that we
do not need to cache it here any more. */
/* CHECK_IMPURE (start);
XSETCDR (start, Fcons (Fcons (Qnil, Qnil), XCDR (start)));
cachelist = XCAR (XCDR (start)); */
cachelist = Fcons (Qnil, Qnil);
newcache = 1;
tem = AREF (item_properties, ITEM_PROPERTY_KEYEQ);
if (!NILP (keyhint))
{
XSETCAR (cachelist, XCAR (keyhint));
newcache = 0;
}
else if (STRINGP (tem))
{
XSETCDR (cachelist, Fsubstitute_command_keys (tem));
XSETCAR (cachelist, Qt);
}
}
tem = XCAR (cachelist);
if (!EQ (tem, Qt))
tem = AREF (item_properties, ITEM_PROPERTY_KEYEQ);
/* The previous code preferred :key-sequence to :keys, so we
preserve this behavior. */
if (STRINGP (tem) && !CONSP (keyhint))
tem = Fsubstitute_command_keys (tem);
else
{
int chkcache = 0;
Lisp_Object prefix;
if (!NILP (tem))
tem = Fkey_binding (tem, Qnil, Qnil, Qnil);
Lisp_Object prefix = AREF (item_properties, ITEM_PROPERTY_KEYEQ);
Lisp_Object keys = Qnil;
prefix = AREF (item_properties, ITEM_PROPERTY_KEYEQ);
if (CONSP (prefix))
{
def = XCAR (prefix);
......@@ -8125,58 +8089,27 @@ parse_menu_item (item, notreal, inmenubar)
else
def = AREF (item_properties, ITEM_PROPERTY_DEF);
if (NILP (XCAR (cachelist))) /* Have no saved key. */
{
if (newcache /* Always check first time. */
/* Should we check everything when precomputing key
bindings? */
/* If something had no key binding before, don't recheck it
because that is too slow--except if we have a list of
rebound commands in Vdefine_key_rebound_commands, do
recheck any command that appears in that list. */
|| (CONSP (Vdefine_key_rebound_commands)
&& !NILP (Fmemq (def, Vdefine_key_rebound_commands))))
chkcache = 1;
}
/* We had a saved key. Is it still bound to the command? */
else if (NILP (tem)
|| (!EQ (tem, def)
/* If the command is an alias for another
(such as lmenu.el set it up), check if the
original command matches the cached command. */
&& !(SYMBOLP (def) && EQ (tem, XSYMBOL (def)->function))))
chkcache = 1; /* Need to recompute key binding. */
if (chkcache)
if (CONSP (keyhint) && !NILP (XCAR (keyhint)))
{
/* Recompute equivalent key binding. If the command is an alias
for another (such as lmenu.el set it up), see if the original
command name has equivalent keys. Otherwise look up the
specified command itself. We don't try both, because that
makes lmenu menus slow. */
if (SYMBOLP (def)
&& SYMBOLP (XSYMBOL (def)->function)
&& ! NILP (Fget (def, Qmenu_alias)))
def = XSYMBOL (def)->function;
tem = Fwhere_is_internal (def, Qnil, Qt, Qnil, Qnil);
XSETCAR (cachelist, tem);
if (NILP (tem))
{
XSETCDR (cachelist, Qnil);
chkcache = 0;
}
}
else if (!NILP (keyhint) && !NILP (XCAR (cachelist)))
{
tem = XCAR (cachelist);
chkcache = 1;
}
keys = XCAR (keyhint);
tem = Fkey_binding (keys, Qnil, Qnil, Qnil);
newcache = chkcache;
if (chkcache)
/* We have a suggested key. Is it bound to the command? */
if (NILP (tem)
|| (!EQ (tem, def)
/* If the command is an alias for another
(such as lmenu.el set it up), check if the
original command matches the cached command. */
&& !(SYMBOLP (def) && EQ (tem, XSYMBOL (def)->function))))
keys = Qnil;
}
if (NILP (keys))
keys = Fwhere_is_internal (def, Qnil, Qt, Qnil, Qnil);
if (!NILP (keys))
{
tem = Fkey_description (tem, Qnil);
tem = Fkey_description (keys, Qnil);
if (CONSP (prefix))
{
if (STRINGP (XCAR (prefix)))
......@@ -8184,17 +8117,11 @@ parse_menu_item (item, notreal, inmenubar)
if (STRINGP (XCDR (prefix)))
tem = concat2 (tem, XCDR (prefix));
}
XSETCDR (cachelist, tem);
tem = concat2 (build_string (" "), tem);
/* tem = concat3 (build_string (" ("), tem, build_string (")")); */
}
}
tem = XCDR (cachelist);
if (newcache && !NILP (tem))
{
tem = concat2 (build_string (" "), tem);
/* tem = concat3 (build_string (" ("), tem, build_string (")")); */
XSETCDR (cachelist, tem);
}
/* If we only want to precompute equivalent key bindings, stop here. */
if (notreal)
......@@ -11870,8 +11797,6 @@ syms_of_keyboard ()
Qmenu_enable = intern ("menu-enable");
staticpro (&Qmenu_enable);
Qmenu_alias = intern ("menu-alias");
staticpro (&Qmenu_alias);
QCenable = intern (":enable");
staticpro (&QCenable);
QCvisible = intern (":visible");
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment