]> git.eshelyaron.com Git - emacs.git/commitdiff
* subr.el (event-modifiers): Use internal-event-symbol-parse-modifiers.
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 15 Nov 2007 16:03:00 +0000 (16:03 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 15 Nov 2007 16:03:00 +0000 (16:03 +0000)
* keyboard.c (Fevent_symbol_parse_modifiers): New function.
(syms_of_keyboard): Defsubr it.

lisp/ChangeLog
lisp/subr.el
src/ChangeLog
src/keyboard.c

index f39752b4e18b98b3bd62a0c23602379973c41b60..baf66e2007a2f96dc7af76ebe58a5f435e6c47a3 100644 (file)
@@ -1,5 +1,7 @@
 2007-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * 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.
 
index 17abc70e073483c17747d16298578b8526c2bcfe..39bd8ea13c28f1136cacb01bc31fe003d2e70c1e 100644 (file)
@@ -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-\^@)))))
index f4f63e3c4d9627b2d5d693469d601c1ca861d6d4..8ee1649afd9c203222daf8f97823ed8e9d3e6831 100644 (file)
@@ -1,5 +1,8 @@
 2007-11-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * 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.
index 64504535dd34ef3b384d69e57656667a69670a11..41407b5f626979324092ba43b3d3ff1b4f830eac 100644 (file)
@@ -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);