aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorTom Tromey2012-09-04 10:10:06 -0600
committerTom Tromey2012-09-04 10:10:06 -0600
commitbf69f522a9e135f9aa483cedd53e71e915f2bf75 (patch)
tree3f73c47fb863ef87f420de1d30858da821072bd9 /src/lisp.h
parent303324a9232dbc89369faceb6b3530740d0fc1bd (diff)
parent6ec9a5a7b5efb129807f567709ca858211ed7840 (diff)
downloademacs-bf69f522a9e135f9aa483cedd53e71e915f2bf75.tar.gz
emacs-bf69f522a9e135f9aa483cedd53e71e915f2bf75.zip
merge from trunk
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h162
1 files changed, 103 insertions, 59 deletions
diff --git a/src/lisp.h b/src/lisp.h
index 5c7e8dc2f82..07a3ae17469 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -126,7 +126,7 @@ extern _Noreturn void die (const char *, const char *, int);
126 eassert macro altogether, e.g., if XSTRING (x) uses eassert to test 126 eassert macro altogether, e.g., if XSTRING (x) uses eassert to test
127 STRINGP (x), but a particular use of XSTRING is invoked only after 127 STRINGP (x), but a particular use of XSTRING is invoked only after
128 testing that STRINGP (x) is true, making the test redundant. */ 128 testing that STRINGP (x) is true, making the test redundant. */
129extern int suppress_checking EXTERNALLY_VISIBLE; 129extern bool suppress_checking EXTERNALLY_VISIBLE;
130 130
131# define eassert(cond) \ 131# define eassert(cond) \
132 ((cond) || suppress_checking \ 132 ((cond) || suppress_checking \
@@ -617,10 +617,8 @@ clip_to_bounds (ptrdiff_t lower, EMACS_INT num, ptrdiff_t upper)
617 617
618#define AREF(ARRAY, IDX) XVECTOR ((ARRAY))->contents[IDX] 618#define AREF(ARRAY, IDX) XVECTOR ((ARRAY))->contents[IDX]
619#define ASIZE(ARRAY) XVECTOR ((ARRAY))->header.size 619#define ASIZE(ARRAY) XVECTOR ((ARRAY))->header.size
620/* The IDX==IDX tries to detect when the macro argument is side-effecting. */
621#define ASET(ARRAY, IDX, VAL) \ 620#define ASET(ARRAY, IDX, VAL) \
622 (eassert ((IDX) == (IDX)), \ 621 (eassert (0 <= (IDX) && (IDX) < ASIZE (ARRAY)), \
623 eassert ((IDX) >= 0 && (IDX) < ASIZE (ARRAY)), \
624 XVECTOR (ARRAY)->contents[IDX] = (VAL)) 622 XVECTOR (ARRAY)->contents[IDX] = (VAL))
625 623
626/* Convenience macros for dealing with Lisp strings. */ 624/* Convenience macros for dealing with Lisp strings. */
@@ -713,7 +711,7 @@ struct Lisp_Cons
713#define CDR_SAFE(c) \ 711#define CDR_SAFE(c) \
714 (CONSP ((c)) ? XCDR ((c)) : Qnil) 712 (CONSP ((c)) ? XCDR ((c)) : Qnil)
715 713
716/* Nonzero if STR is a multibyte string. */ 714/* True if STR is a multibyte string. */
717#define STRING_MULTIBYTE(STR) \ 715#define STRING_MULTIBYTE(STR) \
718 (XSTRING (STR)->size_byte >= 0) 716 (XSTRING (STR)->size_byte >= 0)
719 717
@@ -1929,11 +1927,7 @@ typedef struct {
1929 Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object) 1927 Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)
1930 1928
1931/* Non-zero if OBJ is a Lisp function. */ 1929/* Non-zero if OBJ is a Lisp function. */
1932#define FUNCTIONP(OBJ) \ 1930#define FUNCTIONP(OBJ) functionp(OBJ)
1933 ((CONSP (OBJ) && EQ (XCAR (OBJ), Qlambda)) \
1934 || (SYMBOLP (OBJ) && !NILP (Ffboundp (OBJ))) \
1935 || COMPILEDP (OBJ) \
1936 || SUBRP (OBJ))
1937 1931
1938/* defsubr (Sname); 1932/* defsubr (Sname);
1939 is how we define the symbol for function `name' at start-up time. */ 1933 is how we define the symbol for function `name' at start-up time. */
@@ -2357,6 +2351,17 @@ gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Object val)
2357 XVECTOR (array)->contents[idx] = val; 2351 XVECTOR (array)->contents[idx] = val;
2358} 2352}
2359 2353
2354/* Copy COUNT Lisp_Objects from ARGS to contents of V starting from OFFSET. */
2355
2356LISP_INLINE void
2357vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Object *args, ptrdiff_t count)
2358{
2359 eassert (0 <= offset && 0 <= count && offset + count <= ASIZE (v));
2360 memcpy (XVECTOR (v)->contents + offset, args, count * sizeof *args);
2361}
2362
2363/* Functions to modify hash tables. */
2364
2360LISP_INLINE void 2365LISP_INLINE void
2361set_hash_key_and_value (struct Lisp_Hash_Table *h, Lisp_Object key_and_value) 2366set_hash_key_and_value (struct Lisp_Hash_Table *h, Lisp_Object key_and_value)
2362{ 2367{
@@ -2582,8 +2587,7 @@ extern Lisp_Object Qoverflow_error, Qunderflow_error;
2582extern Lisp_Object Qfloatp; 2587extern Lisp_Object Qfloatp;
2583extern Lisp_Object Qnumberp, Qnumber_or_marker_p; 2588extern Lisp_Object Qnumberp, Qnumber_or_marker_p;
2584 2589
2585extern Lisp_Object Qinteger, Qinterval, Qsymbol, Qstring; 2590extern Lisp_Object Qbuffer, Qinteger, Qsymbol;
2586extern Lisp_Object Qmisc, Qvector, Qfloat, Qcons, Qbuffer;
2587 2591
2588extern Lisp_Object Qfont_spec, Qfont_entity, Qfont_object; 2592extern Lisp_Object Qfont_spec, Qfont_entity, Qfont_object;
2589 2593
@@ -2630,7 +2634,7 @@ extern _Noreturn void args_out_of_range_3 (Lisp_Object, Lisp_Object,
2630 Lisp_Object); 2634 Lisp_Object);
2631extern _Noreturn Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object); 2635extern _Noreturn Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object);
2632extern Lisp_Object do_symval_forwarding (union Lisp_Fwd *); 2636extern Lisp_Object do_symval_forwarding (union Lisp_Fwd *);
2633extern void set_internal (Lisp_Object, Lisp_Object, Lisp_Object, int); 2637extern void set_internal (Lisp_Object, Lisp_Object, Lisp_Object, bool);
2634extern void syms_of_data (void); 2638extern void syms_of_data (void);
2635extern void init_data (void); 2639extern void init_data (void);
2636extern void swap_in_global_binding (struct Lisp_Symbol *); 2640extern void swap_in_global_binding (struct Lisp_Symbol *);
@@ -2642,7 +2646,7 @@ extern void keys_of_cmds (void);
2642/* Defined in coding.c */ 2646/* Defined in coding.c */
2643extern Lisp_Object Qcharset; 2647extern Lisp_Object Qcharset;
2644extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t, 2648extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t,
2645 ptrdiff_t, int, int, Lisp_Object); 2649 ptrdiff_t, bool, bool, Lisp_Object);
2646extern void init_coding (void); 2650extern void init_coding (void);
2647extern void init_coding_once (void); 2651extern void init_coding_once (void);
2648extern void syms_of_coding (void); 2652extern void syms_of_coding (void);
@@ -2730,43 +2734,43 @@ extern void move_gap_both (ptrdiff_t, ptrdiff_t);
2730extern _Noreturn void buffer_overflow (void); 2734extern _Noreturn void buffer_overflow (void);
2731extern void make_gap (ptrdiff_t); 2735extern void make_gap (ptrdiff_t);
2732extern ptrdiff_t copy_text (const unsigned char *, unsigned char *, 2736extern ptrdiff_t copy_text (const unsigned char *, unsigned char *,
2733 ptrdiff_t, int, int); 2737 ptrdiff_t, bool, bool);
2734extern int count_combining_before (const unsigned char *, 2738extern int count_combining_before (const unsigned char *,
2735 ptrdiff_t, ptrdiff_t, ptrdiff_t); 2739 ptrdiff_t, ptrdiff_t, ptrdiff_t);
2736extern int count_combining_after (const unsigned char *, 2740extern int count_combining_after (const unsigned char *,
2737 ptrdiff_t, ptrdiff_t, ptrdiff_t); 2741 ptrdiff_t, ptrdiff_t, ptrdiff_t);
2738extern void insert (const char *, ptrdiff_t); 2742extern void insert (const char *, ptrdiff_t);
2739extern void insert_and_inherit (const char *, ptrdiff_t); 2743extern void insert_and_inherit (const char *, ptrdiff_t);
2740extern void insert_1 (const char *, ptrdiff_t, int, int, int); 2744extern void insert_1 (const char *, ptrdiff_t, bool, bool, bool);
2741extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t, 2745extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t,
2742 int, int, int); 2746 bool, bool, bool);
2743extern void insert_from_gap (ptrdiff_t, ptrdiff_t); 2747extern void insert_from_gap (ptrdiff_t, ptrdiff_t);
2744extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t, 2748extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t,
2745 ptrdiff_t, ptrdiff_t, int); 2749 ptrdiff_t, ptrdiff_t, bool);
2746extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, int); 2750extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, bool);
2747extern void insert_char (int); 2751extern void insert_char (int);
2748extern void insert_string (const char *); 2752extern void insert_string (const char *);
2749extern void insert_before_markers (const char *, ptrdiff_t); 2753extern void insert_before_markers (const char *, ptrdiff_t);
2750extern void insert_before_markers_and_inherit (const char *, ptrdiff_t); 2754extern void insert_before_markers_and_inherit (const char *, ptrdiff_t);
2751extern void insert_from_string_before_markers (Lisp_Object, ptrdiff_t, 2755extern void insert_from_string_before_markers (Lisp_Object, ptrdiff_t,
2752 ptrdiff_t, ptrdiff_t, 2756 ptrdiff_t, ptrdiff_t,
2753 ptrdiff_t, int); 2757 ptrdiff_t, bool);
2754extern void del_range (ptrdiff_t, ptrdiff_t); 2758extern void del_range (ptrdiff_t, ptrdiff_t);
2755extern Lisp_Object del_range_1 (ptrdiff_t, ptrdiff_t, int, int); 2759extern Lisp_Object del_range_1 (ptrdiff_t, ptrdiff_t, bool, bool);
2756extern void del_range_byte (ptrdiff_t, ptrdiff_t, int); 2760extern void del_range_byte (ptrdiff_t, ptrdiff_t, bool);
2757extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, int); 2761extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, bool);
2758extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t, 2762extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t,
2759 ptrdiff_t, ptrdiff_t, int); 2763 ptrdiff_t, ptrdiff_t, bool);
2760extern void modify_region (struct buffer *, ptrdiff_t, ptrdiff_t, int); 2764extern void modify_region (struct buffer *, ptrdiff_t, ptrdiff_t, bool);
2761extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *); 2765extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *);
2762extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t); 2766extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t);
2763extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t, 2767extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t,
2764 ptrdiff_t, ptrdiff_t); 2768 ptrdiff_t, ptrdiff_t);
2765extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t, 2769extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t,
2766 ptrdiff_t, ptrdiff_t); 2770 ptrdiff_t, ptrdiff_t);
2767extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, int, int, int); 2771extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, bool, bool, bool);
2768extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, 2772extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t,
2769 const char *, ptrdiff_t, ptrdiff_t, int); 2773 const char *, ptrdiff_t, ptrdiff_t, bool);
2770extern void syms_of_insdel (void); 2774extern void syms_of_insdel (void);
2771 2775
2772/* Defined in dispnew.c */ 2776/* Defined in dispnew.c */
@@ -2776,7 +2780,7 @@ _Noreturn void __executable_start (void);
2776#endif 2780#endif
2777extern Lisp_Object selected_frame; 2781extern Lisp_Object selected_frame;
2778extern Lisp_Object Vwindow_system; 2782extern Lisp_Object Vwindow_system;
2779extern Lisp_Object sit_for (Lisp_Object, int, int); 2783extern Lisp_Object sit_for (Lisp_Object, bool, int);
2780extern void init_display (void); 2784extern void init_display (void);
2781extern void syms_of_display (void); 2785extern void syms_of_display (void);
2782 2786
@@ -2802,7 +2806,7 @@ extern Lisp_Object echo_area_buffer[2];
2802extern void add_to_log (const char *, Lisp_Object, Lisp_Object); 2806extern void add_to_log (const char *, Lisp_Object, Lisp_Object);
2803extern void check_message_stack (void); 2807extern void check_message_stack (void);
2804extern void setup_echo_area_for_printing (int); 2808extern void setup_echo_area_for_printing (int);
2805extern int push_message (void); 2809extern bool push_message (void);
2806extern Lisp_Object pop_message_unwind (Lisp_Object); 2810extern Lisp_Object pop_message_unwind (Lisp_Object);
2807extern Lisp_Object restore_message_unwind (Lisp_Object); 2811extern Lisp_Object restore_message_unwind (Lisp_Object);
2808extern void restore_message (void); 2812extern void restore_message (void);
@@ -2845,7 +2849,7 @@ extern void uninterrupt_malloc (void);
2845extern void malloc_warning (const char *); 2849extern void malloc_warning (const char *);
2846extern _Noreturn void memory_full (size_t); 2850extern _Noreturn void memory_full (size_t);
2847extern _Noreturn void buffer_memory_full (ptrdiff_t); 2851extern _Noreturn void buffer_memory_full (ptrdiff_t);
2848extern int survives_gc_p (Lisp_Object); 2852extern bool survives_gc_p (Lisp_Object);
2849extern void mark_object (Lisp_Object); 2853extern void mark_object (Lisp_Object);
2850#if defined REL_ALLOC && !defined SYSTEM_MALLOC 2854#if defined REL_ALLOC && !defined SYSTEM_MALLOC
2851extern void refill_memory_reserve (void); 2855extern void refill_memory_reserve (void);
@@ -2887,8 +2891,8 @@ extern Lisp_Object make_uninit_string (EMACS_INT);
2887extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT); 2891extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT);
2888extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t); 2892extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t);
2889extern Lisp_Object make_specified_string (const char *, 2893extern Lisp_Object make_specified_string (const char *,
2890 ptrdiff_t, ptrdiff_t, int); 2894 ptrdiff_t, ptrdiff_t, bool);
2891extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, int); 2895extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, bool);
2892extern Lisp_Object make_pure_c_string (const char *, ptrdiff_t); 2896extern Lisp_Object make_pure_c_string (const char *, ptrdiff_t);
2893 2897
2894/* Make a string allocated in pure space, use STR as string data. */ 2898/* Make a string allocated in pure space, use STR as string data. */
@@ -2922,8 +2926,8 @@ extern struct window *allocate_window (void);
2922extern struct frame *allocate_frame (void); 2926extern struct frame *allocate_frame (void);
2923extern struct Lisp_Process *allocate_process (void); 2927extern struct Lisp_Process *allocate_process (void);
2924extern struct terminal *allocate_terminal (void); 2928extern struct terminal *allocate_terminal (void);
2925extern int gc_in_progress; 2929extern bool gc_in_progress;
2926extern int abort_on_gc; 2930extern bool abort_on_gc;
2927extern Lisp_Object make_float (double); 2931extern Lisp_Object make_float (double);
2928extern void display_malloc_warning (void); 2932extern void display_malloc_warning (void);
2929extern ptrdiff_t inhibit_garbage_collection (void); 2933extern ptrdiff_t inhibit_garbage_collection (void);
@@ -3001,6 +3005,7 @@ extern ptrdiff_t evxprintf (char **, ptrdiff_t *, char const *, ptrdiff_t,
3001/* Defined in lread.c. */ 3005/* Defined in lread.c. */
3002extern Lisp_Object Qvariable_documentation, Qstandard_input; 3006extern Lisp_Object Qvariable_documentation, Qstandard_input;
3003extern Lisp_Object Qbackquote, Qcomma, Qcomma_at, Qcomma_dot, Qfunction; 3007extern Lisp_Object Qbackquote, Qcomma, Qcomma_at, Qcomma_dot, Qfunction;
3008extern Lisp_Object Qlexical_binding;
3004extern Lisp_Object check_obarray (Lisp_Object); 3009extern Lisp_Object check_obarray (Lisp_Object);
3005extern Lisp_Object intern_1 (const char *, ptrdiff_t); 3010extern Lisp_Object intern_1 (const char *, ptrdiff_t);
3006extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t); 3011extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t);
@@ -3034,7 +3039,7 @@ intern_c_string (const char *str)
3034 3039
3035/* Defined in eval.c. */ 3040/* Defined in eval.c. */
3036extern Lisp_Object Qautoload, Qexit, Qinteractive, Qcommandp, Qmacro; 3041extern Lisp_Object Qautoload, Qexit, Qinteractive, Qcommandp, Qmacro;
3037extern Lisp_Object Qinhibit_quit, Qclosure; 3042extern Lisp_Object Qinhibit_quit, Qinternal_interpreter_environment, Qclosure;
3038extern Lisp_Object Qand_rest; 3043extern Lisp_Object Qand_rest;
3039extern Lisp_Object Vautoload_queue; 3044extern Lisp_Object Vautoload_queue;
3040extern Lisp_Object Vsignaling_function; 3045extern Lisp_Object Vsignaling_function;
@@ -3109,23 +3114,23 @@ extern Lisp_Object save_restriction_save (void);
3109extern Lisp_Object save_excursion_restore (Lisp_Object); 3114extern Lisp_Object save_excursion_restore (Lisp_Object);
3110extern Lisp_Object save_restriction_restore (Lisp_Object); 3115extern Lisp_Object save_restriction_restore (Lisp_Object);
3111extern _Noreturn void time_overflow (void); 3116extern _Noreturn void time_overflow (void);
3112extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, int); 3117extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, bool);
3113extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, 3118extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t,
3114 ptrdiff_t, int); 3119 ptrdiff_t, bool);
3115extern void init_editfns (void); 3120extern void init_editfns (void);
3116const char *get_system_name (void); 3121const char *get_system_name (void);
3117extern void syms_of_editfns (void); 3122extern void syms_of_editfns (void);
3118extern void set_time_zone_rule (const char *); 3123extern void set_time_zone_rule (const char *);
3119 3124
3120/* Defined in buffer.c. */ 3125/* Defined in buffer.c. */
3121extern int mouse_face_overlay_overlaps (Lisp_Object); 3126extern bool mouse_face_overlay_overlaps (Lisp_Object);
3122extern _Noreturn void nsberror (Lisp_Object); 3127extern _Noreturn void nsberror (Lisp_Object);
3123extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t); 3128extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t);
3124extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t); 3129extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t);
3125extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t); 3130extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t);
3126extern void report_overlay_modification (Lisp_Object, Lisp_Object, int, 3131extern void report_overlay_modification (Lisp_Object, Lisp_Object, bool,
3127 Lisp_Object, Lisp_Object, Lisp_Object); 3132 Lisp_Object, Lisp_Object, Lisp_Object);
3128extern int overlay_touches_p (ptrdiff_t); 3133extern bool overlay_touches_p (ptrdiff_t);
3129extern Lisp_Object Vbuffer_alist; 3134extern Lisp_Object Vbuffer_alist;
3130extern Lisp_Object set_buffer_if_live (Lisp_Object); 3135extern Lisp_Object set_buffer_if_live (Lisp_Object);
3131extern Lisp_Object other_buffer_safely (Lisp_Object); 3136extern Lisp_Object other_buffer_safely (Lisp_Object);
@@ -3272,7 +3277,7 @@ extern void syms_of_frame (void);
3272extern char **initial_argv; 3277extern char **initial_argv;
3273extern int initial_argc; 3278extern int initial_argc;
3274#if defined (HAVE_X_WINDOWS) || defined (HAVE_NS) 3279#if defined (HAVE_X_WINDOWS) || defined (HAVE_NS)
3275extern int display_arg; 3280extern bool display_arg;
3276#endif 3281#endif
3277extern Lisp_Object decode_env_path (const char *, const char *); 3282extern Lisp_Object decode_env_path (const char *, const char *);
3278extern Lisp_Object empty_unibyte_string, empty_multibyte_string; 3283extern Lisp_Object empty_unibyte_string, empty_multibyte_string;
@@ -3291,22 +3296,26 @@ void synchronize_system_time_locale (void);
3291#define synchronize_system_messages_locale() 3296#define synchronize_system_messages_locale()
3292#define synchronize_system_time_locale() 3297#define synchronize_system_time_locale()
3293#endif 3298#endif
3294void shut_down_emacs (int, int, Lisp_Object); 3299extern void shut_down_emacs (int, Lisp_Object);
3295/* Nonzero means don't do interactive redisplay and don't change tty modes. */ 3300
3296extern int noninteractive; 3301/* True means don't do interactive redisplay and don't change tty modes. */
3302extern bool noninteractive;
3297 3303
3298/* Nonzero means remove site-lisp directories from load-path. */ 3304/* True means remove site-lisp directories from load-path. */
3299extern int no_site_lisp; 3305extern bool no_site_lisp;
3300 3306
3301/* Pipe used to send exit notification to the daemon parent at 3307/* Pipe used to send exit notification to the daemon parent at
3302 startup. */ 3308 startup. */
3303extern int daemon_pipe[2]; 3309extern int daemon_pipe[2];
3304#define IS_DAEMON (daemon_pipe[1] != 0) 3310#define IS_DAEMON (daemon_pipe[1] != 0)
3305 3311
3306/* Nonzero means don't do use window-system-specific display code. */ 3312/* True if handling a fatal error already. */
3307extern int inhibit_window_system; 3313extern bool fatal_error_in_progress;
3308/* Nonzero means that a filter or a sentinel is running. */ 3314
3309extern int running_asynch_code; 3315/* True means don't do use window-system-specific display code. */
3316extern bool inhibit_window_system;
3317/* True means that a filter or a sentinel is running. */
3318extern bool running_asynch_code;
3310 3319
3311/* Defined in process.c. */ 3320/* Defined in process.c. */
3312extern Lisp_Object QCtype, Qlocal; 3321extern Lisp_Object QCtype, Qlocal;
@@ -3338,7 +3347,7 @@ extern void setup_process_coding_systems (Lisp_Object);
3338#ifndef DOS_NT 3347#ifndef DOS_NT
3339 _Noreturn 3348 _Noreturn
3340#endif 3349#endif
3341extern int child_setup (int, int, int, char **, int, Lisp_Object); 3350extern int child_setup (int, int, int, char **, bool, Lisp_Object);
3342extern void init_callproc_1 (void); 3351extern void init_callproc_1 (void);
3343extern void init_callproc (void); 3352extern void init_callproc (void);
3344extern void set_initial_environment (void); 3353extern void set_initial_environment (void);
@@ -3347,9 +3356,9 @@ extern void syms_of_callproc (void);
3347/* Defined in doc.c */ 3356/* Defined in doc.c */
3348extern Lisp_Object Qfunction_documentation; 3357extern Lisp_Object Qfunction_documentation;
3349extern Lisp_Object read_doc_string (Lisp_Object); 3358extern Lisp_Object read_doc_string (Lisp_Object);
3350extern Lisp_Object get_doc_string (Lisp_Object, int, int); 3359extern Lisp_Object get_doc_string (Lisp_Object, bool, bool);
3351extern void syms_of_doc (void); 3360extern void syms_of_doc (void);
3352extern int read_bytecode_char (int); 3361extern int read_bytecode_char (bool);
3353 3362
3354/* Defined in bytecode.c */ 3363/* Defined in bytecode.c */
3355extern Lisp_Object Qbytecode; 3364extern Lisp_Object Qbytecode;
@@ -3419,7 +3428,8 @@ extern void child_setup_tty (int);
3419extern void setup_pty (int); 3428extern void setup_pty (int);
3420extern int set_window_size (int, int, int); 3429extern int set_window_size (int, int, int);
3421extern EMACS_INT get_random (void); 3430extern EMACS_INT get_random (void);
3422extern void seed_random (long); 3431extern void seed_random (void *, ptrdiff_t);
3432extern void init_random (void);
3423extern int emacs_open (const char *, int, int); 3433extern int emacs_open (const char *, int, int);
3424extern int emacs_close (int); 3434extern int emacs_close (int);
3425extern ptrdiff_t emacs_read (int, char *, ptrdiff_t); 3435extern ptrdiff_t emacs_read (int, char *, ptrdiff_t);
@@ -3448,11 +3458,10 @@ extern void syms_of_ccl (void);
3448extern void syms_of_dired (void); 3458extern void syms_of_dired (void);
3449extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object, 3459extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object,
3450 Lisp_Object, Lisp_Object, 3460 Lisp_Object, Lisp_Object,
3451 int, Lisp_Object); 3461 bool, Lisp_Object);
3452 3462
3453/* Defined in term.c */ 3463/* Defined in term.c */
3454extern int *char_ins_del_vector; 3464extern int *char_ins_del_vector;
3455extern void mark_ttys (void);
3456extern void syms_of_term (void); 3465extern void syms_of_term (void);
3457extern _Noreturn void fatal (const char *msgid, ...) 3466extern _Noreturn void fatal (const char *msgid, ...)
3458 ATTRIBUTE_FORMAT_PRINTF (1, 2); 3467 ATTRIBUTE_FORMAT_PRINTF (1, 2);
@@ -3480,6 +3489,9 @@ extern Lisp_Object Qface;
3480extern Lisp_Object Qnormal; 3489extern Lisp_Object Qnormal;
3481extern Lisp_Object QCfamily, QCweight, QCslant; 3490extern Lisp_Object QCfamily, QCweight, QCslant;
3482extern Lisp_Object QCheight, QCname, QCwidth, QCforeground, QCbackground; 3491extern Lisp_Object QCheight, QCname, QCwidth, QCforeground, QCbackground;
3492extern Lisp_Object Qextra_light, Qlight, Qsemi_light, Qsemi_bold;
3493extern Lisp_Object Qbold, Qextra_bold, Qultra_bold;
3494extern Lisp_Object Qoblique, Qitalic;
3483extern Lisp_Object Vface_alternative_font_family_alist; 3495extern Lisp_Object Vface_alternative_font_family_alist;
3484extern Lisp_Object Vface_alternative_font_registry_alist; 3496extern Lisp_Object Vface_alternative_font_registry_alist;
3485extern void syms_of_xfaces (void); 3497extern void syms_of_xfaces (void);
@@ -3524,9 +3536,9 @@ void syms_of_dbusbind (void);
3524extern char *emacs_root_dir (void); 3536extern char *emacs_root_dir (void);
3525#endif /* DOS_NT */ 3537#endif /* DOS_NT */
3526 3538
3527/* Nonzero means Emacs has already been initialized. 3539/* True means Emacs has already been initialized.
3528 Used during startup to detect startup of dumped Emacs. */ 3540 Used during startup to detect startup of dumped Emacs. */
3529extern int initialized; 3541extern bool initialized;
3530 3542
3531extern int immediate_quit; /* Nonzero means ^G can quit instantly */ 3543extern int immediate_quit; /* Nonzero means ^G can quit instantly */
3532 3544
@@ -3593,7 +3605,7 @@ extern Lisp_Object safe_alloca_unwind (Lisp_Object);
3593extern void *record_xmalloc (size_t); 3605extern void *record_xmalloc (size_t);
3594 3606
3595#define USE_SAFE_ALLOCA \ 3607#define USE_SAFE_ALLOCA \
3596 ptrdiff_t sa_count = SPECPDL_INDEX (); int sa_must_free = 0 3608 ptrdiff_t sa_count = SPECPDL_INDEX (); bool sa_must_free = 0
3597 3609
3598/* SAFE_ALLOCA allocates a simple buffer. */ 3610/* SAFE_ALLOCA allocates a simple buffer. */
3599 3611
@@ -3664,6 +3676,38 @@ maybe_gc (void)
3664 Fgarbage_collect (); 3676 Fgarbage_collect ();
3665} 3677}
3666 3678
3679LISP_INLINE int
3680functionp (Lisp_Object object)
3681{
3682 if (SYMBOLP (object) && !NILP (Ffboundp (object)))
3683 {
3684 object = Findirect_function (object, Qt);
3685
3686 if (CONSP (object) && EQ (XCAR (object), Qautoload))
3687 {
3688 /* Autoloaded symbols are functions, except if they load
3689 macros or keymaps. */
3690 int i;
3691 for (i = 0; i < 4 && CONSP (object); i++)
3692 object = XCDR (object);
3693
3694 return ! (CONSP (object) && !NILP (XCAR (object)));
3695 }
3696 }
3697
3698 if (SUBRP (object))
3699 return XSUBR (object)->max_args != UNEVALLED;
3700 else if (COMPILEDP (object))
3701 return 1;
3702 else if (CONSP (object))
3703 {
3704 Lisp_Object car = XCAR (object);
3705 return EQ (car, Qlambda) || EQ (car, Qclosure);
3706 }
3707 else
3708 return 0;
3709}
3710
3667INLINE_HEADER_END 3711INLINE_HEADER_END
3668 3712
3669#endif /* EMACS_LISP_H */ 3713#endif /* EMACS_LISP_H */