From: Stefan Monnier Date: Thu, 15 Nov 2007 16:03:00 +0000 (+0000) Subject: * subr.el (event-modifiers): Use internal-event-symbol-parse-modifiers. X-Git-Tag: emacs-pretest-23.0.90~9730 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=58da34c73b6fb576474c73c29dfc9cf1a9e9751e;p=emacs.git * subr.el (event-modifiers): Use internal-event-symbol-parse-modifiers. * keyboard.c (Fevent_symbol_parse_modifiers): New function. (syms_of_keyboard): Defsubr it. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f39752b4e18..baf66e2007a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2007-11-15 Stefan Monnier + * subr.el (event-modifiers): Use internal-event-symbol-parse-modifiers. + * pcvs.el (cvs-revert-if-needed): Ignore `unknown' files, since cvs did not touch them. diff --git a/lisp/subr.el b/lisp/subr.el index 17abc70e073..39bd8ea13c2 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -723,7 +723,9 @@ even when EVENT actually has modifiers." (if (listp type) (setq type (car type))) (if (symbolp type) - (cdr (get type 'event-symbol-elements)) + ;; Don't read event-symbol-elements directly since we're not + ;; sure the symbol has already been parsed. + (cdr (internal-event-symbol-parse-modifiers type)) (let ((list nil) (char (logand type (lognot (logior ?\M-\^@ ?\C-\^@ ?\S-\^@ ?\H-\^@ ?\s-\^@ ?\A-\^@))))) diff --git a/src/ChangeLog b/src/ChangeLog index f4f63e3c4d9..8ee1649afd9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2007-11-15 Stefan Monnier + * keyboard.c (Fevent_symbol_parse_modifiers): New function. + (syms_of_keyboard): Defsubr it. + * data.c (swap_in_global_binding): Fix longstanding bug where store_symval_forwarding was not called with the right second argument, thus causing objfwd-ing from being dropped. diff --git a/src/keyboard.c b/src/keyboard.c index 64504535dd3..41407b5f626 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -6545,6 +6545,19 @@ parse_modifiers (symbol) } } +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers, + Sevent_symbol_parse_modifiers, 1, 1, 0, + doc: /* Parse the event symbol. For internal use. */) + (symbol) +{ + /* Fill the cache if needed. */ + parse_modifiers (symbol); + /* Ignore the result (which is stored on Qevent_symbol_element_mask) + and use the Lispier representation stored on Qevent_symbol_elements + instead. */ + return Fget (symbol, Qevent_symbol_elements); +} + /* Apply the modifiers MODIFIERS to the symbol BASE. BASE must be unmodified. @@ -11946,6 +11959,7 @@ syms_of_keyboard () staticpro (&help_form_saved_window_configs); defsubr (&Scurrent_idle_time); + defsubr (&Sevent_symbol_parse_modifiers); defsubr (&Sevent_convert_list); defsubr (&Sread_key_sequence); defsubr (&Sread_key_sequence_vector);