diff options
Diffstat (limited to 'src/lisp.h')
-rw-r--r-- | src/lisp.h | 105 |
1 files changed, 28 insertions, 77 deletions
diff --git a/src/lisp.h b/src/lisp.h index 58d8678c146..726b7671f4a 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -1843,27 +1843,41 @@ extern void defvar_int (struct Lisp_Intfwd *, const char *, EMACS_INT *); extern void defvar_kboard (struct Lisp_Kboard_Objfwd *, const char *, int); /* Macros we use to define forwarded Lisp variables. - These are used in the syms_of_FILENAME functions. */ + These are used in the syms_of_FILENAME functions. + + An ordinary (not in buffer_defaults, per-buffer, or per-keyboard) + lisp variable is actually a field in `struct emacs_globals'. The + field's name begins with "f_", which is a convention enforced by + these macros. Each such global has a corresponding #define in + globals.h; the plain name should be used in the code. + + E.g., the global "cons_cells_consed" is declared as "int + f_cons_cells_consed" in globals.h, but there is a define: + + #define cons_cells_consed globals.f_cons_cells_consed + + All C code uses the `cons_cells_consed' name. This is all done + this way to support indirection for multi-threaded Emacs. */ #define DEFVAR_LISP(lname, vname, doc) \ do { \ static struct Lisp_Objfwd o_fwd; \ - defvar_lisp (&o_fwd, lname, vname); \ + defvar_lisp (&o_fwd, lname, &globals.f_ ## vname); \ } while (0) #define DEFVAR_LISP_NOPRO(lname, vname, doc) \ do { \ static struct Lisp_Objfwd o_fwd; \ - defvar_lisp_nopro (&o_fwd, lname, vname); \ + defvar_lisp_nopro (&o_fwd, lname, &globals.f_ ## vname); \ } while (0) #define DEFVAR_BOOL(lname, vname, doc) \ do { \ static struct Lisp_Boolfwd b_fwd; \ - defvar_bool (&b_fwd, lname, vname); \ + defvar_bool (&b_fwd, lname, &globals.f_ ## vname); \ } while (0) #define DEFVAR_INT(lname, vname, doc) \ do { \ static struct Lisp_Intfwd i_fwd; \ - defvar_int (&i_fwd, lname, vname); \ + defvar_int (&i_fwd, lname, &globals.f_ ## vname); \ } while (0) #define DEFVAR_BUFFER_DEFAULTS(lname, vname, doc) \ @@ -1916,8 +1930,6 @@ extern struct specbinding *specpdl; extern struct specbinding *specpdl_ptr; extern EMACS_INT specpdl_size; -extern EMACS_INT max_specpdl_size; - #define SPECPDL_INDEX() ((int) (specpdl_ptr - specpdl)) /* Everything needed to describe an active condition case. */ @@ -2081,10 +2093,6 @@ extern Lisp_Object Vascii_canon_table, Vascii_eqv_table; extern int consing_since_gc; -/* Thresholds for doing another gc. */ - -extern EMACS_INT gc_cons_threshold; - extern EMACS_INT gc_relative_threshold; extern EMACS_INT memory_full_cons_threshold; @@ -2439,14 +2447,11 @@ extern void syms_of_syntax (void); /* Defined in fns.c */ extern Lisp_Object QCrehash_size, QCrehash_threshold; -extern int use_dialog_box; -extern int use_file_dialog; extern int next_almost_prime (int); extern Lisp_Object larger_vector (Lisp_Object, int, Lisp_Object); extern void sweep_weak_hash_tables (void); extern Lisp_Object Qcursor_in_echo_area; extern Lisp_Object Qstring_lessp; -extern Lisp_Object Vfeatures; extern Lisp_Object QCsize, QCtest, QCweakness, Qequal, Qeq, Qeql; unsigned sxhash (Lisp_Object, int); Lisp_Object make_hash_table (Lisp_Object, Lisp_Object, Lisp_Object, @@ -2593,8 +2598,6 @@ extern void syms_of_insdel (void); /* Defined in dispnew.c */ extern Lisp_Object selected_frame; -extern Lisp_Object Vwindow_system_version; -extern EMACS_INT baud_rate; EXFUN (Fding, 1); EXFUN (Fredraw_frame, 1); EXFUN (Fsleep_for, 2); @@ -2609,24 +2612,21 @@ extern Lisp_Object Qinhibit_redisplay, Qdisplay; extern Lisp_Object Qinhibit_eval_during_redisplay; extern Lisp_Object Qmessage_truncate_lines; extern Lisp_Object Qmenu_bar_update_hook; -extern Lisp_Object Qwindow_scroll_functions, Vwindow_scroll_functions; +extern Lisp_Object Qwindow_scroll_functions; extern Lisp_Object Qoverriding_local_map, Qoverriding_terminal_local_map; extern Lisp_Object Qimage, Qtext, Qboth, Qboth_horiz, Qtext_image_horiz; extern Lisp_Object Qspace, Qcenter, QCalign_to; extern Lisp_Object Qbar, Qhbar, Qbox, Qhollow; extern Lisp_Object Qleft_margin, Qright_margin; extern Lisp_Object Qglyphless_char; -extern Lisp_Object Vmessage_log_max; extern Lisp_Object QCdata, QCfile; extern Lisp_Object QCmap; extern Lisp_Object Qrisky_local_variable; -extern Lisp_Object Vinhibit_redisplay; extern struct frame *last_glyphless_glyph_frame; extern unsigned last_glyphless_glyph_face_id; extern int last_glyphless_glyph_merged_face_id; extern int message_enable_multibyte; extern int noninteractive_need_newline; -extern EMACS_INT scroll_margin; extern Lisp_Object echo_area_buffer[2]; extern void add_to_log (const char *, Lisp_Object, Lisp_Object); extern void check_message_stack (void); @@ -2683,8 +2683,6 @@ extern int survives_gc_p (Lisp_Object); extern void mark_object (Lisp_Object); extern void refill_memory_reserve (void); extern const char *pending_malloc_warning; -extern Lisp_Object Vpurify_flag; -extern Lisp_Object Vmemory_full; extern Lisp_Object *stack_base; EXFUN (Fcons, 2); extern Lisp_Object list1 (Lisp_Object); @@ -2772,7 +2770,6 @@ extern void syms_of_chartab (void); /* Defined in print.c */ extern Lisp_Object Vprin1_to_string_buffer; -extern Lisp_Object Vprint_level, Vprint_length; extern void debug_print (Lisp_Object) EXTERNALLY_VISIBLE; extern void safe_debug_print (Lisp_Object) EXTERNALLY_VISIBLE; EXFUN (Fprin1, 2); @@ -2781,10 +2778,10 @@ EXFUN (Fprinc, 2); EXFUN (Fterpri, 1); EXFUN (Fprint, 2); EXFUN (Ferror_message_string, 1); -extern Lisp_Object Vstandard_output, Qstandard_output; +extern Lisp_Object Qstandard_output; extern Lisp_Object Qexternal_debugging_output; extern void temp_output_buffer_setup (const char *); -extern int print_level, print_escape_newlines; +extern int print_level; extern Lisp_Object Qprint_escape_newlines; extern void write_string (const char *, int); extern void print_error_message (Lisp_Object, Lisp_Object, const char *, @@ -2798,12 +2795,9 @@ extern void syms_of_print (void); /* Defined in doprnt.c */ extern EMACS_INT doprnt (char *, int, const char *, const char *, va_list); -/* Defined in lread.c */ -extern Lisp_Object Vafter_load_alist; extern Lisp_Object Qvariable_documentation, Qstandard_input; extern Lisp_Object Qbackquote, Qcomma, Qcomma_at, Qcomma_dot, Qfunction; -extern Lisp_Object Vobarray, initial_obarray, Vstandard_input; -extern int load_in_progress; +extern Lisp_Object initial_obarray; EXFUN (Fread, 1); EXFUN (Fread_from_string, 3); EXFUN (Fintern, 2); @@ -2822,8 +2816,6 @@ extern Lisp_Object oblookup (Lisp_Object, const char *, EMACS_INT, EMACS_INT); do { \ if (initialized) Vcurrent_load_list = Fcons (x, Vcurrent_load_list); \ } while (0) -extern Lisp_Object Vcurrent_load_list; -extern Lisp_Object Vload_history, Vload_suffixes, Vload_file_rep_suffixes; extern int openp (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object *, Lisp_Object); extern int isfloat_string (const char *, int); @@ -2837,13 +2829,10 @@ extern void syms_of_lread (void); /* Defined in eval.c */ extern Lisp_Object Qautoload, Qexit, Qinteractive, Qcommandp, Qdefun, Qmacro; -extern Lisp_Object Vinhibit_quit, Qinhibit_quit, Vquit_flag; +extern Lisp_Object Qinhibit_quit; extern Lisp_Object Vautoload_queue; -extern Lisp_Object Vdebug_on_error; extern Lisp_Object Vsignaling_function; extern int handling_signal; -extern int debug_on_next_call; - /* To run a normal hook, use the appropriate function from the list below. The calling convention: @@ -2902,12 +2891,7 @@ extern Lisp_Object safe_call2 (Lisp_Object, Lisp_Object, Lisp_Object); extern void init_eval (void); extern void syms_of_eval (void); -/* Defined in editfns.c */ -extern Lisp_Object last_nonmenu_event; extern Lisp_Object Qfield; -extern Lisp_Object Vinhibit_field_text_motion; -extern Lisp_Object Vsystem_name; -extern Lisp_Object Vuser_login_name; EXFUN (Fcurrent_message, 0); EXFUN (Fgoto_char, 1); EXFUN (Fpoint_max_marker, 0); @@ -2963,7 +2947,7 @@ extern void fix_start_end_in_overlays (EMACS_INT, EMACS_INT); extern void report_overlay_modification (Lisp_Object, Lisp_Object, int, Lisp_Object, Lisp_Object, Lisp_Object); extern int overlay_touches_p (EMACS_INT); -extern Lisp_Object Vbuffer_alist, Vinhibit_read_only; +extern Lisp_Object Vbuffer_alist; EXFUN (Fget_buffer, 1); EXFUN (Fget_buffer_create, 1); EXFUN (Fgenerate_new_buffer_name, 2); @@ -3016,7 +3000,6 @@ extern Lisp_Object Qfile_error; extern Lisp_Object Qfile_exists_p; extern Lisp_Object Qfile_directory_p; extern Lisp_Object Qinsert_file_contents; -extern Lisp_Object Vauto_save_list_file_name; EXFUN (Ffind_file_name_handler, 2); EXFUN (Ffile_name_as_directory, 1); EXFUN (Fexpand_file_name, 2); @@ -3076,13 +3059,8 @@ extern void clear_regexp_cache (void); /* Defined in minibuf.c */ extern Lisp_Object Qcompletion_ignore_case; -extern Lisp_Object Vcompletion_regexp_list; -extern Lisp_Object Vhistory_length; extern Lisp_Object Vminibuffer_list; extern Lisp_Object last_minibuf_string; -extern int completion_ignore_case; -extern int history_delete_duplicates; -extern int minibuffer_auto_raise; extern void choose_minibuf_frame (void); EXFUN (Fcompleting_read, 8); EXFUN (Fread_from_minibuffer, 7); @@ -3098,10 +3076,8 @@ extern void syms_of_minibuf (void); /* Defined in callint.c */ -extern Lisp_Object Qminus, Qplus, Vcurrent_prefix_arg; +extern Lisp_Object Qminus, Qplus; extern Lisp_Object Qwhen; -extern Lisp_Object Vcommand_history; -extern Lisp_Object Vmark_even_if_inactive; extern Lisp_Object Qcall_interactively, Qmouse_leave_buffer_hook; EXFUN (Fprefix_numeric_value, 1); extern void syms_of_callint (void); @@ -3134,10 +3110,6 @@ extern Lisp_Object Qdisabled, QCfilter; extern Lisp_Object Qabove_handle, Qhandle, Qbelow_handle; extern Lisp_Object Qup, Qdown, Qbottom, Qend_scroll; extern Lisp_Object Qtop, Qratio; -extern Lisp_Object Vsaved_region_selection; -extern Lisp_Object Vselect_active_regions; -extern Lisp_Object Vtty_erase_char, Vhelp_form, Vtop_level; -extern Lisp_Object Vthrow_on_input; extern int input_pending; EXFUN (Fdiscard_input, 0); EXFUN (Frecursive_edit, 0); @@ -3177,8 +3149,6 @@ extern void syms_of_indent (void); /* Defined in frame.c */ #ifdef HAVE_WINDOW_SYSTEM -extern Lisp_Object Vx_resource_name; -extern Lisp_Object Vx_resource_class; #endif /* HAVE_WINDOW_SYSTEM */ extern Lisp_Object Qonly; extern Lisp_Object Qvisible; @@ -3211,12 +3181,8 @@ extern int initial_argc; extern int display_arg; #endif extern Lisp_Object decode_env_path (const char *, const char *); -extern Lisp_Object Vinvocation_name, Vinvocation_directory; -extern Lisp_Object Vbefore_init_time, Vafter_init_time; -extern Lisp_Object Vinstallation_directory; extern Lisp_Object empty_unibyte_string, empty_multibyte_string; extern Lisp_Object Qfile_name_handler_alist; -extern Lisp_Object Vdynamic_library_alist; extern void (*fatal_error_signal_hook) (void); EXFUN (Fkill_emacs, 1) NO_RETURN; #if HAVE_SETLOCALE @@ -3233,9 +3199,6 @@ void shut_down_emacs (int, int, Lisp_Object); /* Nonzero means don't do interactive redisplay and don't change tty modes. */ extern int noninteractive; -/* Nonzero means don't load X resources or Windows Registry settings. */ -extern int inhibit_x_resources; - /* Nonzero means remove site-lisp directories from load-path. */ extern int no_site_lisp; @@ -3271,11 +3234,6 @@ extern void init_process (void); extern void syms_of_process (void); extern void setup_process_coding_systems (Lisp_Object); -/* Defined in callproc.c */ -extern Lisp_Object Vexec_path, Vexec_suffixes, - Vexec_directory, Vdata_directory; -extern Lisp_Object Vdoc_directory; -extern Lisp_Object Vshell_file_name; EXFUN (Fcall_process, MANY); extern int child_setup (int, int, int, char **, int, Lisp_Object); extern void init_callproc_1 (void); @@ -3285,7 +3243,6 @@ extern void syms_of_callproc (void); /* Defined in doc.c */ extern Lisp_Object Qfunction_documentation; -extern Lisp_Object Vdoc_file_name; EXFUN (Fsubstitute_command_keys, 1); EXFUN (Fdocumentation_property, 3); extern Lisp_Object read_doc_string (Lisp_Object); @@ -3322,8 +3279,6 @@ extern void record_property_change (EMACS_INT, EMACS_INT, Lisp_Object, Lisp_Object, Lisp_Object); extern void syms_of_undo (void); -extern Lisp_Object Vundo_outer_limit; - /* Defined in textprop.c */ extern Lisp_Object Qfont, Qmouse_face; extern Lisp_Object Qinsert_in_front_hooks, Qinsert_behind_hooks; @@ -3389,8 +3344,6 @@ extern void *memmove (void *, void *, size_t); extern int memcmp (void *, void *, size_t); #endif -/* Defined in filelock.c */ -extern Lisp_Object Vtemporary_file_directory; EXFUN (Funlock_buffer, 0); extern void unlock_all_files (void); extern void lock_file (Lisp_Object); @@ -3438,7 +3391,6 @@ extern void syms_of_fontset (void); /* Defined in xfns.c, w32fns.c, or macfns.c */ extern Lisp_Object Qfont_param; -extern Lisp_Object Vx_no_window_manager; EXFUN (Fxw_display_color_p, 1); EXFUN (Fx_focus_frame, 1); #endif @@ -3452,10 +3404,7 @@ extern Lisp_Object Qnormal; extern Lisp_Object QCfamily, QCweight, QCslant; extern Lisp_Object QCheight, QCname, QCwidth, QCforeground, QCbackground; extern Lisp_Object Vface_alternative_font_family_alist; -extern Lisp_Object Vface_font_rescale_alist; -extern Lisp_Object Vface_ignored_fonts; extern Lisp_Object Vface_alternative_font_registry_alist; -extern Lisp_Object Vscalable_fonts_allowed; EXFUN (Fclear_face_cache, 1); EXFUN (Fx_load_color_file, 1); extern void syms_of_xfaces (void); @@ -3680,4 +3629,6 @@ extern Lisp_Object safe_alloca_unwind (Lisp_Object); } while (0) +#include "globals.h" + #endif /* EMACS_LISP_H */ |