aboutsummaryrefslogtreecommitdiffstats
path: root/src/keyboard.h
diff options
context:
space:
mode:
authorPaul Eggert2015-01-05 09:07:45 -0800
committerPaul Eggert2015-01-05 10:14:58 -0800
commit58f2d6ef32b28a787fcc4e0d98b3f331ceb2a68c (patch)
treed6d79ad7b7cceafc78c5a9c54f5be1ac441a8ed7 /src/keyboard.h
parentd2cf05d1bac19d8564d0806f515b9f40fe57f4df (diff)
downloademacs-58f2d6ef32b28a787fcc4e0d98b3f331ceb2a68c.tar.gz
emacs-58f2d6ef32b28a787fcc4e0d98b3f331ceb2a68c.zip
Compute C decls for DEFSYMs automatically
Fixes Bug#15880. This patch also makes Q constants (e.g., Qnil) constant addresses from the C point of view. * make-docfile.c: Revamp to generate table of symbols, too. Include <stdbool.h>. (xstrdup): New function. (main): Don't process the same file twice. (SYMBOL): New constant in enum global_type. (struct symbol): Turn 'value' member into a union, either v.value for int or v.svalue for string. All uses changed. (add_global): New arg svalue, which overrides value, so that globals can have a string value. (close_emacs_global): New arg num_symbols; all uses changed. Output lispsym decl. (write_globals): Output symbol globals too. Output more ATTRIBUTE_CONST, now that Qnil etc. are C constants. Output defsym_name table. (scan_c_file): Move most of guts into ... (scan_c_stream): ... new function. Scan for DEFSYMs and record symbols found. Don't read past EOF if file doesn't end in newline. * alloc.c, bidi.c, buffer.c, bytecode.c, callint.c, casefiddle: * casetab.c, category.c, ccl.c, charset.c, chartab.c, cmds.c, coding.c: * composite.c, data.c, dbusbind.c, decompress.c, dired.c, dispnew.c: * doc.c, editfns.c, emacs.c, eval.c, fileio.c, fns.c, font.c, fontset.c: * frame.c, fringe.c, ftfont.c, ftxfont.c, gfilenotify.c, gnutls.c: * image.c, inotify.c, insdel.c, keyboard.c, keymap.c, lread.c: * macfont.m, macros.c, minibuf.c, nsfns.m, nsfont.m, nsimage.m: * nsmenu.m, nsselect.m, nsterm.m, print.c, process.c, profiler.c: * search.c, sound.c, syntax.c, term.c, terminal.c, textprop.c, undo.c: * window.c, xdisp.c, xfaces.c, xfns.c, xftfont.c, xmenu.c, xml.c: * xselect.c, xsettings.c, xterm.c: Remove Q vars that represent symbols (e.g., Qnil, Qt, Qemacs). These names are now defined automatically by make-docfile. * alloc.c (init_symbol): New function. (Fmake_symbol): Use it. (c_symbol_p): New function. (valid_lisp_object_p, purecopy): Use it. * alloc.c (marked_pinned_symbols): Use make_lisp_symbol instead of make_lisp_ptr. (garbage_collect_1): Mark lispsym symbols. (CHECK_ALLOCATED_AND_LIVE_SYMBOL): New macro. (mark_object): Use it. (sweep_symbols): Sweep lispsym symbols. (symbol_uses_obj): New function. (which_symbols): Use it. Work for lispsym symbols, too. (init_alloc_once): Initialize Vpurify_flag here; no need to wait, since Qt's address is already known now. (syms_of_alloc): Add lispsym count to symbols_consed. * buffer.c (init_buffer_once): Compare to Qnil, not to make_number (0), when testing whether storage is all bits zero. * dispextern (struct image_type): * font.c (font_property_table): * frame.c (struct frame_parm_table, frame_parms): * keyboard.c (scroll_bar_parts, struct event_head): * xdisp.c (struct props): Use XSYMBOL_INIT (Qfoo) and struct Lisp_Symbol * rather than &Qfoo and Lisp_Object *, since Qfoo is no longer an object whose address can be taken. All uses changed. * eval.c (run_hook): New function. Most uses of Frun_hooks changed to use it, so that they no longer need to take the address of a Lisp sym. (syms_of_eval): Don't use DEFSYM on Vrun_hooks, as it's a variable. * frame.c (syms_of_frame): Add defsyms for the frame_parms table. * keyboard.c (syms_of_keyboard): Don't DEFSYM Qmenu_bar here. DEFSYM Qdeactivate_mark before the corresponding var. * keymap.c (syms_of_keymap): Use DEFSYM for Qmenu_bar and Qmode_line instead of interning their symbols; this avoids duplicates. (LISP_INITIALLY, TAG_PTR) (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END, XSYMBOL_INIT): New macros. (LISP_INITIALLY_ZERO): Use it. (enum symbol_interned, enum symbol_redirect, struct Lisp_Symbol) (EXFUN, DEFUN_ARGS_MANY, DEFUN_ARGS_UNEVALLED, DEFUN_ARGS_*): Move decls up, to avoid forward uses. Include globals.h earlier, too. (make_lisp_symbol): New function. (XSETSYMBOL): Use it. (DEFSYM): Now just a placeholder for make-docfile. * lread.c (DEFINE_SYMBOLS): Define, for globals.h. (intern_sym): New function, with body taken from old intern_driver. (intern_driver): Use it. Last arg is now Lisp integer, not ptrdiff_t. All uses changed. (define_symbol): New function. (init_obarray): Define the C symbols taken from lispsym. Use plain DEFSYM for Qt and Qnil. * syntax.c (init_syntax_once): No need to worry about Qchar_table_extra_slots.
Diffstat (limited to 'src/keyboard.h')
-rw-r--r--src/keyboard.h31
1 files changed, 0 insertions, 31 deletions
diff --git a/src/keyboard.h b/src/keyboard.h
index 534e2018a52..0ce6d184482 100644
--- a/src/keyboard.h
+++ b/src/keyboard.h
@@ -248,8 +248,6 @@ extern ptrdiff_t this_command_key_count;
248 generated by the next character. */ 248 generated by the next character. */
249extern Lisp_Object internal_last_event_frame; 249extern Lisp_Object internal_last_event_frame;
250 250
251extern Lisp_Object Qrecompute_lucid_menubar, Qactivate_menubar_hook;
252
253/* This holds a Lisp vector that holds the properties of a single 251/* This holds a Lisp vector that holds the properties of a single
254 menu item while decoding it in parse_menu_item. 252 menu item while decoding it in parse_menu_item.
255 Using a Lisp vector to hold this information while we decode it 253 Using a Lisp vector to hold this information while we decode it
@@ -387,25 +385,10 @@ extern void unuse_menu_items (void);
387#define POSN_INBUFFER_P(posn) (NILP (POSN_STRING (posn))) 385#define POSN_INBUFFER_P(posn) (NILP (POSN_STRING (posn)))
388#define POSN_BUFFER_POSN(posn) (Fnth (make_number (5), (posn))) 386#define POSN_BUFFER_POSN(posn) (Fnth (make_number (5), (posn)))
389 387
390/* Some of the event heads. */
391extern Lisp_Object Qswitch_frame;
392
393/* Properties on event heads. */
394extern Lisp_Object Qevent_kind;
395
396/* The values of Qevent_kind properties. */
397extern Lisp_Object Qmouse_click;
398
399extern Lisp_Object Qhelp_echo;
400
401/* Getting the kind of an event head. */ 388/* Getting the kind of an event head. */
402#define EVENT_HEAD_KIND(event_head) \ 389#define EVENT_HEAD_KIND(event_head) \
403 (Fget ((event_head), Qevent_kind)) 390 (Fget ((event_head), Qevent_kind))
404 391
405/* Symbols to use for non-text mouse positions. */
406extern Lisp_Object Qmode_line, Qvertical_line, Qheader_line;
407extern Lisp_Object Qright_divider, Qbottom_divider;
408
409/* True while doing kbd input. */ 392/* True while doing kbd input. */
410extern bool waiting_for_input; 393extern bool waiting_for_input;
411 394
@@ -415,9 +398,6 @@ extern struct timespec *input_available_clear_time;
415 398
416extern bool ignore_mouse_drag_p; 399extern bool ignore_mouse_drag_p;
417 400
418/* The primary selection. */
419extern Lisp_Object QPRIMARY;
420
421extern Lisp_Object parse_modifiers (Lisp_Object); 401extern Lisp_Object parse_modifiers (Lisp_Object);
422extern Lisp_Object reorder_modifiers (Lisp_Object); 402extern Lisp_Object reorder_modifiers (Lisp_Object);
423extern Lisp_Object read_char (int, Lisp_Object, Lisp_Object, 403extern Lisp_Object read_char (int, Lisp_Object, Lisp_Object,
@@ -428,17 +408,6 @@ extern int parse_solitary_modifier (Lisp_Object symbol);
428/* This is like Vthis_command, except that commands never set it. */ 408/* This is like Vthis_command, except that commands never set it. */
429extern Lisp_Object real_this_command; 409extern Lisp_Object real_this_command;
430 410
431/* Non-nil disable property on a command means
432 do not execute it; call disabled-command-function's value instead. */
433extern Lisp_Object QCtoggle, QCradio;
434
435/* An event header symbol HEAD may have a property named
436 Qevent_symbol_element_mask, which is of the form (BASE MODIFIERS);
437 BASE is the base, unmodified version of HEAD, and MODIFIERS is the
438 mask of modifiers applied to it. If present, this is used to help
439 speed up parse_modifiers. */
440extern Lisp_Object Qevent_symbol_element_mask;
441
442extern int quit_char; 411extern int quit_char;
443 412
444extern unsigned int timers_run; 413extern unsigned int timers_run;