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.
(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-\^@)))))
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.
}
}
+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.
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);