X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/651cd3dae29fa01b689e1c4de39001cfec9b3566..490468dcffd66ab9ea64bc1204ac9692dc530e8c:/src/lisp.h diff --git a/src/lisp.h b/src/lisp.h index a6fbe28b02..5cda92c93b 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -1,5 +1,5 @@ /* Fundamental definitions for GNU Emacs Lisp interpreter. - Copyright (C) 1985,86,87,93,94,95,97,98,1999,2000 + Copyright (C) 1985,86,87,93,94,95,97,98,1999,2000, 2001 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -26,6 +26,14 @@ Boston, MA 02111-1307, USA. */ #define P_(proto) () #endif +#if 0 +/* Define this temporarily to hunt a bug. If defined, the size of + strings is redundantly recorded in sdata structures so that it can + be compared to the sizes recorded in Lisp strings. */ + +#define GC_CHECK_STRING_BYTES 1 +#endif /* 0*/ + /* These are default choices for the types to use. */ #ifdef _LP64 @@ -463,7 +471,7 @@ extern Lisp_Object make_number (); /* Extract a value or address from a Lisp_Object. */ #define XCONS(a) (eassert (GC_CONSP(a)),(struct Lisp_Cons *) XPNTR(a)) -#define XVECTOR(a) ((struct Lisp_Vector *) XPNTR(a)) +#define XVECTOR(a) (eassert (GC_VECTORLIKEP(a)),(struct Lisp_Vector *) XPNTR(a)) #define XSTRING(a) (eassert (GC_STRINGP(a)),(struct Lisp_String *) XPNTR(a)) #define XSYMBOL(a) (eassert (GC_SYMBOLP(a)),(struct Lisp_Symbol *) XPNTR(a)) #define XFLOAT(a) (eassert (GC_FLOATP(a)),(struct Lisp_Float *) XPNTR(a)) @@ -620,9 +628,20 @@ struct Lisp_Cons (XSTRING (STR)->size_byte >= 0) /* Return the length in bytes of STR. */ + +#ifdef GC_CHECK_STRING_BYTES + +struct Lisp_String; +extern int string_bytes P_ ((struct Lisp_String *)); +#define STRING_BYTES(S) string_bytes ((S)) + +#else /* not GC_CHECK_STRING_BYTES */ + #define STRING_BYTES(STR) \ ((STR)->size_byte < 0 ? (STR)->size : (STR)->size_byte) +#endif /* not GC_CHECK_STRING_BYTES */ + /* Set the length in bytes of STR. */ #define SET_STRING_BYTES(STR, SIZE) ((STR)->size_byte = (SIZE)) @@ -1203,8 +1222,7 @@ typedef unsigned char UCHAR; #define GLYPH_FACE(f, g) (FAST_GLYPH_FACE (g)) /* Return 1 iff GLYPH contains valid character code. */ -#define GLYPH_CHAR_VALID_P(glyph) \ - ((GLYPH) (FAST_GLYPH_CHAR (glyph)) <= MAX_CHAR) +#define GLYPH_CHAR_VALID_P(glyph) CHAR_VALID_P (FAST_GLYPH_CHAR (glyph), 1) /* The ID of the mode line highlighting face. */ #define GLYPH_MODE_LINE_FACE 1 @@ -1488,12 +1506,15 @@ extern void defvar_kboard P_ ((char *, int)); form. Otherwise, the element is a variable binding. + If the symbol field is a symbol, it is an ordinary variable binding. - Otherwise, it should be a structure (SYMBOL BUFFER . BUFFER), - which represents having bound BUFFER's local value, - or (SYMBOL nil . BUFFER), which represents having bound the default - value when BUFFER was current (buffer not having any local binding - for SYMBOL). */ + + Otherwise, it should be a structure (SYMBOL WHERE + . CURRENT-BUFFER), which means having bound a local value while + CURRENT-BUFFER was active. If WHERE is nil this means we saw the + default value when binding SYMBOL. WHERE being a buffer or frame + means we saw a buffer-local or frame-local value. Other values of + WHERE mean an internal error. */ struct specbinding { @@ -1506,6 +1527,8 @@ extern struct specbinding *specpdl; extern struct specbinding *specpdl_ptr; extern int specpdl_size; +#define BINDING_STACK_SIZE() (specpdl_ptr - specpdl) + /* Everything needed to describe an active condition case. */ struct handler { @@ -1898,13 +1921,15 @@ EXFUN (Fash, 2); EXFUN (Fadd1, 1); EXFUN (Fsub1, 1); +EXFUN (Fmake_variable_buffer_local, 1); extern Lisp_Object long_to_cons P_ ((unsigned long)); extern unsigned long cons_to_long P_ ((Lisp_Object)); extern void args_out_of_range P_ ((Lisp_Object, Lisp_Object)); extern void args_out_of_range_3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); extern Lisp_Object wrong_type_argument P_ ((Lisp_Object, Lisp_Object)); -extern void store_symval_forwarding P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); +extern void store_symval_forwarding P_ ((Lisp_Object, Lisp_Object, + Lisp_Object, struct buffer *)); extern Lisp_Object do_symval_forwarding P_ ((Lisp_Object)); extern Lisp_Object set_internal P_ ((Lisp_Object, Lisp_Object, struct buffer *, int)); extern void syms_of_data P_ ((void)); @@ -1928,7 +1953,7 @@ EXFUN (Fread_non_nil_coding_system, 1); EXFUN (Ffind_operation_coding_system, MANY); EXFUN (Fencode_coding_string, 3); EXFUN (Fdecode_coding_string, 3); -extern Lisp_Object detect_coding_system P_ ((unsigned char *, int, int)); +extern Lisp_Object detect_coding_system P_ ((unsigned char *, int, int, int)); Lisp_Object code_convert_string_norecord P_ ((Lisp_Object, Lisp_Object, int)); extern void init_coding P_ ((void)); extern void init_coding_once P_ ((void)); @@ -2115,7 +2140,9 @@ extern void syms_of_display P_ ((void)); extern void safe_bcopy P_ ((char *, char *, int)); /* Defined in xdisp.c */ +extern Lisp_Object Qinhibit_point_motion_hooks; extern Lisp_Object Qinhibit_redisplay, Qdisplay; +extern Lisp_Object Qinhibit_eval_during_redisplay; extern Lisp_Object Qmessage_truncate_lines; extern Lisp_Object Vmessage_log_max; extern int message_enable_multibyte; @@ -2123,6 +2150,7 @@ extern Lisp_Object echo_area_buffer[2]; extern void check_message_stack P_ ((void)); extern void setup_echo_area_for_printing P_ ((int)); extern int push_message P_ ((void)); +extern Lisp_Object push_message_unwind P_ ((Lisp_Object)); extern void pop_message P_ ((void)); extern void restore_message P_ ((void)); extern Lisp_Object current_message P_ ((void)); @@ -2144,14 +2172,14 @@ extern void truncate_echo_area P_ ((int)); extern void redisplay P_ ((void)); extern int check_point_in_composition P_ ((struct buffer *, int, struct buffer *, int)); -extern void redisplay_preserve_echo_area P_ ((void)); +extern void redisplay_preserve_echo_area P_ ((int)); extern void mark_window_display_accurate P_ ((Lisp_Object, int)); extern int invisible_p P_ ((Lisp_Object, Lisp_Object)); extern void prepare_menu_bars P_ ((void)); extern void syms_of_xdisp P_ ((void)); extern void init_xdisp P_ ((void)); extern Lisp_Object safe_eval P_ ((Lisp_Object)); -extern int pos_visible_p P_ ((struct window *, int, int *)); +extern int pos_visible_p P_ ((struct window *, int, int *, int)); /* Defined in vm-limit.c. */ extern void memory_warnings P_ ((POINTER_TYPE *, void (*warnfun) ())); @@ -2197,7 +2225,12 @@ EXFUN (Fmake_bool_vector, 2); EXFUN (Fmake_char_table, 2); extern Lisp_Object make_sub_char_table P_ ((Lisp_Object)); extern Lisp_Object Qchar_table_extra_slots; -extern struct Lisp_Vector *allocate_vectorlike P_ ((EMACS_INT)); +extern struct Lisp_Vector *allocate_vector P_ ((EMACS_INT)); +extern struct Lisp_Vector *allocate_other_vector P_ ((EMACS_INT)); +extern struct Lisp_Hash_Table *allocate_hash_table P_ ((void)); +extern struct window *allocate_window P_ ((void)); +extern struct frame *allocate_frame P_ ((void)); +extern struct Lisp_Process *allocate_process P_ ((void)); extern int gc_in_progress; extern Lisp_Object make_float P_ ((double)); extern void display_malloc_warning P_ ((void)); @@ -2273,6 +2306,7 @@ extern Lisp_Object Vautoload_queue; extern Lisp_Object Vdebug_on_error; extern Lisp_Object Vsignaling_function; extern int handling_signal; +extern int interactive_p P_ ((int)); /* To run a normal hook, use the appropriate function from the list below. The calling convention: @@ -2397,6 +2431,7 @@ EXFUN (Ffield_string_no_properties, 1); extern void set_time_zone_rule P_ ((char *)); /* defined in buffer.c */ +extern int mouse_face_overlay_overlaps P_ ((Lisp_Object)); extern void nsberror P_ ((Lisp_Object)); extern char *no_switch_window P_ ((Lisp_Object window)); EXFUN (Fset_buffer_multibyte, 1); @@ -2430,6 +2465,7 @@ extern Lisp_Object Qoverlayp; extern Lisp_Object get_truename_buffer P_ ((Lisp_Object)); extern struct buffer *all_buffers; EXFUN (Fprevious_overlay_change, 1); +EXFUN (Fbuffer_file_name, 1); extern void init_buffer_once P_ ((void)); extern void init_buffer P_ ((void)); extern void syms_of_buffer P_ ((void)); @@ -2556,6 +2592,9 @@ extern void syms_of_casetab P_ ((void)); /* defined in keyboard.c */ +extern int echoing; +extern Lisp_Object echo_message_buffer; +extern void cancel_echoing P_ ((void)); extern Lisp_Object Qdisabled, QCfilter; extern Lisp_Object Vtty_erase_char, Vhelp_form, Vtop_level; extern int input_pending; @@ -2580,6 +2619,7 @@ extern void record_auto_save P_ ((void)); extern void init_keyboard P_ ((void)); extern void syms_of_keyboard P_ ((void)); extern void keys_of_keyboard P_ ((void)); +extern char *push_key_description P_ ((unsigned int, char *, int)); /* defined in keymap.c */ @@ -2620,6 +2660,7 @@ extern void syms_of_indent P_ ((void)); /* defined in window.c */ extern Lisp_Object Qwindowp, Qwindow_live_p; +extern Lisp_Object Vwindow_list; EXFUN (Fwindow_end, 2); EXFUN (Fselected_window, 0); EXFUN (Fnext_window, 3); @@ -2651,7 +2692,7 @@ extern void keys_of_window P_ ((void)); extern Lisp_Object Qvisible; extern void store_frame_param P_ ((struct frame *, Lisp_Object, Lisp_Object)); extern void store_in_alist P_ ((Lisp_Object *, Lisp_Object, Lisp_Object)); -extern Lisp_Object do_switch_frame P_ ((Lisp_Object, Lisp_Object, int)); +extern Lisp_Object do_switch_frame P_ ((Lisp_Object, int, int)); extern Lisp_Object get_frame_param P_ ((struct frame *, Lisp_Object)); extern Lisp_Object frame_buffer_predicate P_ ((Lisp_Object)); EXFUN (Fframep, 1); @@ -2670,6 +2711,7 @@ EXFUN (Fmake_frame_invisible, 2); EXFUN (Ficonify_frame, 1); EXFUN (Fframe_visible_p, 1); EXFUN (Fvisible_frame_list, 0); +EXFUN (Fframe_parameter, 2); EXFUN (Fframe_parameters, 1); EXFUN (Fmodify_frame_parameters, 2); EXFUN (Fset_frame_height, 3); @@ -2779,7 +2821,7 @@ extern void syms_of_undo P_ ((void)); /* defined in textprop.c */ extern Lisp_Object Qmodification_hooks; -extern Lisp_Object Qrear_nonsticky, Qfont; +extern Lisp_Object Qrear_nonsticky, Qfont, Qmouse_face; extern Lisp_Object Qinsert_in_front_hooks, Qinsert_behind_hooks; EXFUN (Fnext_property_change, 3); EXFUN (Fnext_single_property_change, 4); @@ -2880,6 +2922,7 @@ extern int getloadavg P_ ((double *, int)); /* Defined in xfns.c */ extern void syms_of_xfns P_ ((void)); extern void init_xfns P_ ((void)); +extern Lisp_Object Vx_resource_name; EXFUN (Fxw_display_color_p, 1); #endif /* HAVE_X_WINDOWS */