#define GCTYPEBITS 3
#endif
-#if 0 /* This doesn't work on some systems that don't allow enumerators
- > INT_MAX, and it won't work for long long EMACS_INT. These
- values are now found in emacs.c as EMACS_INT variables. */
-
-/* Make these values available in GDB, which sees enums but not macros. */
-
-enum gdb_lisp_params
-{
- gdb_valbits = VALBITS,
- gdb_gctypebits = GCTYPEBITS,
- gdb_emacs_intbits = sizeof (EMACS_INT) * BITS_PER_CHAR,
-#ifdef DATA_SEG_BITS
- gdb_data_seg_bits = DATA_SEG_BITS
-#else
- gdb_data_seg_bits = 0
-#endif
-};
-
-#endif /* 0 */
-
#ifndef NO_UNION_TYPE
#ifndef WORDS_BIG_ENDIAN
The first four are duplicates for things which can be on the list,
for purposes of speed. */
- unsigned int write_protect : 1; /* Non-zero means can't modify. */
+ unsigned int write_protect : 1; /* Non-zero means can't modify. */
unsigned int visible : 1; /* Zero means don't display. */
unsigned int front_sticky : 1; /* Non-zero means text inserted just
before this interval goes into it. */
typedef struct interval *INTERVAL;
/* Complain if object is not string or buffer type */
-#define CHECK_STRING_OR_BUFFER(x, i) \
+#define CHECK_STRING_OR_BUFFER(x) \
{ if (!STRINGP ((x)) && !BUFFERP ((x))) \
x = wrong_type_argument (Qbuffer_or_string_p, (x)); }
\f
and set a symbol's value, to take defvaralias into account. */
Lisp_Object value;
- /* Function value of the symbol or Qunbound if not fcoundp. */
+ /* Function value of the symbol or Qunbound if not fboundp. */
Lisp_Object function;
/* The symbol's property list. */
#define HASH_TABLE_P(OBJ) PSEUDOVECTORP (OBJ, PVEC_HASH_TABLE)
#define GC_HASH_TABLE_P(x) GC_PSEUDOVECTORP (x, PVEC_HASH_TABLE)
-#define CHECK_HASH_TABLE(x, i) \
+#define CHECK_HASH_TABLE(x) \
do \
{ \
if (!HASH_TABLE_P ((x))) \
{
int type : 16; /* = Lisp_Misc_Intfwd */
int spacer : 16;
- int *intvar;
+ EMACS_INT *intvar;
};
/* Boolean forwarding pointer to an int variable.
#define EQ(x, y) (XFASTINT (x) == XFASTINT (y))
#define GC_EQ(x, y) (XGCTYPE (x) == XGCTYPE (y) && XPNTR (x) == XPNTR (y))
-#define CHECK_LIST(x, i) \
+#define CHECK_LIST(x) \
do { if (!CONSP ((x)) && !NILP (x)) x = wrong_type_argument (Qlistp, (x)); } while (0)
-#define CHECK_STRING(x, i) \
+#define CHECK_STRING(x) \
do { if (!STRINGP ((x))) x = wrong_type_argument (Qstringp, (x)); } while (0)
-#define CHECK_CONS(x, i) \
+#define CHECK_STRING_CAR(x) \
+ do { if (!STRINGP (XCAR (x))) XSETCAR (x, wrong_type_argument (Qstringp, XCAR (x))); } while (0)
+
+#define CHECK_CONS(x) \
do { if (!CONSP ((x))) x = wrong_type_argument (Qconsp, (x)); } while (0)
-#define CHECK_SYMBOL(x, i) \
+#define CHECK_SYMBOL(x) \
do { if (!SYMBOLP ((x))) x = wrong_type_argument (Qsymbolp, (x)); } while (0)
-#define CHECK_CHAR_TABLE(x, i) \
+#define CHECK_CHAR_TABLE(x) \
do { if (!CHAR_TABLE_P ((x))) \
x = wrong_type_argument (Qchar_table_p, (x)); } while (0)
-#define CHECK_VECTOR(x, i) \
+#define CHECK_VECTOR(x) \
do { if (!VECTORP ((x))) x = wrong_type_argument (Qvectorp, (x)); } while (0)
-#define CHECK_VECTOR_OR_CHAR_TABLE(x, i) \
+#define CHECK_VECTOR_OR_CHAR_TABLE(x) \
do { if (!VECTORP ((x)) && !CHAR_TABLE_P ((x))) \
x = wrong_type_argument (Qvector_or_char_table_p, (x)); \
} while (0)
-#define CHECK_BUFFER(x, i) \
+#define CHECK_BUFFER(x) \
do { if (!BUFFERP ((x))) x = wrong_type_argument (Qbufferp, (x)); } while (0)
-#define CHECK_WINDOW(x, i) \
+#define CHECK_WINDOW(x) \
do { if (!WINDOWP ((x))) x = wrong_type_argument (Qwindowp, (x)); } while (0)
/* This macro rejects windows on the interior of the window tree as
A window of any sort, leaf or interior, is dead iff the buffer,
vchild, and hchild members are all nil. */
-#define CHECK_LIVE_WINDOW(x, i) \
+#define CHECK_LIVE_WINDOW(x) \
do { \
if (!WINDOWP ((x)) \
|| NILP (XWINDOW ((x))->buffer)) \
x = wrong_type_argument (Qwindow_live_p, (x)); \
} while (0)
-#define CHECK_PROCESS(x, i) \
+#define CHECK_PROCESS(x) \
do { if (!PROCESSP ((x))) x = wrong_type_argument (Qprocessp, (x)); } while (0)
-#define CHECK_NUMBER(x, i) \
+#define CHECK_NUMBER(x) \
do { if (!INTEGERP ((x))) x = wrong_type_argument (Qintegerp, (x)); } while (0)
-#define CHECK_NATNUM(x, i) \
+#define CHECK_NATNUM(x) \
do { if (!NATNUMP (x)) x = wrong_type_argument (Qwholenump, (x)); } while (0)
-#define CHECK_MARKER(x, i) \
+#define CHECK_MARKER(x) \
do { if (!MARKERP ((x))) x = wrong_type_argument (Qmarkerp, (x)); } while (0)
-#define CHECK_NUMBER_COERCE_MARKER(x, i) \
+#define CHECK_NUMBER_COERCE_MARKER(x) \
do { if (MARKERP ((x))) XSETFASTINT (x, marker_position (x)); \
else if (!INTEGERP ((x))) x = wrong_type_argument (Qinteger_or_marker_p, (x)); } while (0)
#define XFLOATINT(n) extract_float((n))
-#define CHECK_FLOAT(x, i) \
+#define CHECK_FLOAT(x) \
do { if (!FLOATP (x)) \
x = wrong_type_argument (Qfloatp, (x)); } while (0)
-#define CHECK_NUMBER_OR_FLOAT(x, i) \
+#define CHECK_NUMBER_OR_FLOAT(x) \
do { if (!FLOATP (x) && !INTEGERP (x)) \
x = wrong_type_argument (Qnumberp, (x)); } while (0)
-#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x, i) \
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x) \
do { if (MARKERP (x)) XSETFASTINT (x, marker_position (x)); \
else if (!INTEGERP (x) && !FLOATP (x)) \
x = wrong_type_argument (Qnumber_or_marker_p, (x)); } while (0)
-#define CHECK_OVERLAY(x, i) \
+#define CHECK_OVERLAY(x) \
do { if (!OVERLAYP ((x))) x = wrong_type_argument (Qoverlayp, (x));} while (0)
/* Since we can't assign directly to the CAR or CDR fields of a cons
cell, use these when checking that those fields contain numbers. */
-#define CHECK_NUMBER_CAR(x, i) \
+#define CHECK_NUMBER_CAR(x) \
do { \
Lisp_Object tmp = XCAR (x); \
- CHECK_NUMBER (tmp, (i)); \
+ CHECK_NUMBER (tmp); \
XSETCAR ((x), tmp); \
} while (0)
-#define CHECK_NUMBER_CDR(x, i) \
+#define CHECK_NUMBER_CDR(x) \
do { \
Lisp_Object tmp = XCDR (x); \
- CHECK_NUMBER (tmp, (i)); \
+ CHECK_NUMBER (tmp); \
XSETCDR ((x), tmp); \
} while (0)
#if (!defined (__STDC__) && !defined (PROTOTYPES)) \
|| defined (USE_NONANSI_DEFUN)
-#ifdef DOC_STRINGS_IN_COMMENTS
-
-#define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, doc) \
- Lisp_Object fnname (); \
- struct Lisp_Subr sname = \
- { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \
- fnname, minargs, maxargs, lname, prompt, 0}; \
- Lisp_Object fnname
-
-#else /* not DOC_STRINGS_IN_COMMENTS */
-
#define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, args) \
Lisp_Object fnname (); \
struct Lisp_Subr sname = \
fnname, minargs, maxargs, lname, prompt, 0}; \
Lisp_Object fnname args
-#endif /* not DOC_STRINGS_IN_COMMENTS */
-
#else
-#ifdef DOC_STRINGS_IN_COMMENTS
-
-#define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, args) \
- Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \
- struct Lisp_Subr sname = \
- { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \
- fnname, minargs, maxargs, lname, prompt, 0}; \
- Lisp_Object fnname args
-
-#else /* not DOC_STRINGS_IN_COMMENTS */
-
/* This version of DEFUN declares a function prototype with the right
arguments, so we can catch errors with maxargs at compile-time. */
#define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, doc) \
fnname, minargs, maxargs, lname, prompt, 0}; \
Lisp_Object fnname
-#endif /* not DOC_STRINGS_IN_COMMENTS */
-
/* Note that the weird token-substitution semantics of ANSI C makes
this work for MANY and UNEVALLED. */
#define DEFUN_ARGS_MANY (int, Lisp_Object *)
|| SUBRP (OBJ))
/* defsubr (Sname);
- is how we define the symbol for function `name' at start-up time. */
+ is how we define the symbol for function `name' at start-up time. */
extern void defsubr P_ ((struct Lisp_Subr *));
#define MANY -2
extern void defvar_lisp P_ ((char *, Lisp_Object *));
extern void defvar_lisp_nopro P_ ((char *, Lisp_Object *));
extern void defvar_bool P_ ((char *, int *));
-extern void defvar_int P_ ((char *, int *));
+extern void defvar_int P_ ((char *, EMACS_INT *));
extern void defvar_per_buffer P_ ((char *, Lisp_Object *, Lisp_Object, char *));
extern void defvar_kboard P_ ((char *, int));
/* Macros we use to define forwarded Lisp variables.
These are used in the syms_of_FILENAME functions. */
-#ifdef DOC_STRINGS_IN_COMMENTS
-
-#define DEFVAR_LISP(lname, vname) defvar_lisp (lname, vname)
-#define DEFVAR_LISP_NOPRO(lname, vname) defvar_lisp_nopro (lname, vname)
-#define DEFVAR_BOOL(lname, vname) defvar_bool (lname, vname)
-#define DEFVAR_INT(lname, vname) defvar_int (lname, vname)
-#define DEFVAR_PER_BUFFER(lname, vname, type) \
- defvar_per_buffer (lname, vname, type, 0)
-#define DEFVAR_KBOARD(lname, vname) \
- defvar_kboard (lname, \
- (int)((char *)(¤t_kboard->vname) \
- - (char *)current_kboard))
-
-#else /* not DOC_STRINGS_IN_COMMENTS */
-
#define DEFVAR_LISP(lname, vname, doc) defvar_lisp (lname, vname)
#define DEFVAR_LISP_NOPRO(lname, vname, doc) defvar_lisp_nopro (lname, vname)
#define DEFVAR_BOOL(lname, vname, doc) defvar_bool (lname, vname)
(int)((char *)(¤t_kboard->vname) \
- (char *)current_kboard))
-#endif /* not DOC_STRINGS_IN_COMMENTS */
-
\f
/* Structure for recording Lisp call stack for backtrace purposes. */
extern struct specbinding *specpdl_ptr;
extern int specpdl_size;
+extern EMACS_INT max_specpdl_size;
+
#define BINDING_STACK_SIZE() (specpdl_ptr - specpdl)
/* Everything needed to describe an active condition case. */
/* Threshold for doing another gc. */
-extern int gc_cons_threshold;
+extern EMACS_INT gc_cons_threshold;
/* Structure for recording stack slots that need marking. */
#if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS
-#define GCPRO1(varname) ((void) 0)
-#define GCPRO2(varname1, varname2)((void) 0)
-#define GCPRO3(varname1, varname2, varname3) ((void) 0)
-#define GCPRO4(varname1, varname2, varname3, varname4) ((void) 0)
-#define GCPRO5(varname1, varname2, varname3, varname4, varname5) ((void) 0)
+/* Do something silly with gcproN vars just so gcc shuts up. */
+
+#define GCPRO1(varname) ((void) gcpro1)
+#define GCPRO2(varname1, varname2)(((void) gcpro2, (void) gcpro1))
+#define GCPRO3(varname1, varname2, varname3) \
+ (((void) gcpro3, (void) gcpro2, (void) gcpro1))
+#define GCPRO4(varname1, varname2, varname3, varname4) \
+ (((void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1))
+#define GCPRO5(varname1, varname2, varname3, varname4, varname5) \
+ (((void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1))
+#define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \
+ (((void) gcpro6, (void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1))
#define UNGCPRO ((void) 0)
#else /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */
gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
gcprolist = &gcpro5; }
+#define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \
+ {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
+ gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
+ gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
+ gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
+ gcpro6.next = &gcpro5; gcpro6.var = &varname6; gcpro6.nvars = 1; \
+ gcprolist = &gcpro6; }
+
#define UNGCPRO (gcprolist = gcpro1.next)
#else
gcpro5.level = gcpro_level++; \
gcprolist = &gcpro5; }
+#define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \
+ {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
+ gcpro1.level = gcpro_level; \
+ gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
+ gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
+ gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
+ gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
+ gcpro6.next = &gcpro5; gcpro6.var = &varname6; gcpro6.nvars = 1; \
+ gcpro6.level = gcpro_level++; \
+ gcprolist = &gcpro6; }
+
#define UNGCPRO \
((--gcpro_level != gcpro1.level) \
? (abort (), 0) \
EXFUN (Fread_coding_system, 2);
EXFUN (Fread_non_nil_coding_system, 1);
EXFUN (Ffind_operation_coding_system, MANY);
+EXFUN (Fupdate_coding_systems_internal, 0);
EXFUN (Fencode_coding_string, 3);
EXFUN (Fdecode_coding_string, 3);
extern Lisp_Object detect_coding_system P_ ((unsigned char *, int, int, int));
int));
/* Defined in charset.c */
-extern int nonascii_insert_offset;
+extern EMACS_INT nonascii_insert_offset;
extern Lisp_Object Vnonascii_translation_table;
EXFUN (Fchar_bytes, 1);
EXFUN (Fchar_width, 1);
extern void signal_before_change P_ ((int, int, int *));
extern void signal_after_change P_ ((int, int, int));
extern void adjust_after_replace P_ ((int, int, Lisp_Object, int, int));
+extern void adjust_after_replace_noundo P_ ((int, int, int, int, int, int));
extern void adjust_after_insert P_ ((int, int, int, int, int));
extern void replace_range P_ ((int, int, Lisp_Object, int, int, int));
extern void syms_of_insdel P_ ((void));
/* Defined in dispnew.c */
extern Lisp_Object selected_frame;
+extern EMACS_INT baud_rate;
EXFUN (Fding, 1);
EXFUN (Fredraw_frame, 1);
EXFUN (Fredraw_display, 0);
extern Lisp_Object Qinhibit_redisplay, Qdisplay;
extern Lisp_Object Qinhibit_eval_during_redisplay;
extern Lisp_Object Qmessage_truncate_lines;
+extern Lisp_Object Qcursor_in_non_selected_windows;
extern Lisp_Object Vmessage_log_max;
extern int message_enable_multibyte;
extern Lisp_Object echo_area_buffer[2];
/* 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 Vmocklisp_arguments, Qmocklisp, Qmocklisp_arguments;
extern Lisp_Object Vautoload_queue;
extern Lisp_Object Vdebug_on_error;
extern Lisp_Object Vsignaling_function;
EXFUN (Fconstrain_to_field, 5);
EXFUN (Ffield_string, 1);
EXFUN (Fdelete_field, 1);
-EXFUN (Ffield_beginning, 2);
-EXFUN (Ffield_end, 2);
+EXFUN (Ffield_beginning, 3);
+EXFUN (Ffield_end, 3);
EXFUN (Ffield_string_no_properties, 1);
extern void set_time_zone_rule P_ ((char *));
extern Lisp_Object last_minibuf_string;
extern void choose_minibuf_frame P_ ((void));
-extern int scmp P_ ((unsigned char *, unsigned char *, int));
EXFUN (Fcompleting_read, 8);
EXFUN (Fread_from_minibuffer, 7);
EXFUN (Fread_variable, 2);
extern void set_frame_buffer_list P_ ((Lisp_Object, Lisp_Object));
extern void frames_bury_buffer P_ ((Lisp_Object));
extern void syms_of_frame P_ ((void));
-extern void keys_of_frame P_ ((void));
/* defined in emacs.c */
extern Lisp_Object decode_env_path P_ ((char *, char *));
EXFUN (Fexecute_kbd_macro, 2);
extern void init_macros P_ ((void));
extern void syms_of_macros P_ ((void));
-extern void keys_of_macros P_ ((void));
/* defined in undo.c */
extern Lisp_Object Qinhibit_read_only;
EXFUN (Ffile_attributes, 1);
extern void syms_of_dired P_ ((void));
-/* Defined in mocklisp.c */
-extern void syms_of_mocklisp P_ ((void));
-
/* Defined in term.c */
extern void syms_of_term P_ ((void));
extern void fatal () NO_RETURN;
extern void init_xfns P_ ((void));
extern Lisp_Object Vx_resource_name;
EXFUN (Fxw_display_color_p, 1);
+EXFUN (Fx_file_dialog, 4);
#endif /* HAVE_X_WINDOWS */
/* Defined in xselect.c */
? 1 \
: (CONSP (obj) \
? 0 \
- : (wrong_type_argument (Qlistp, (list), 0)), 1))
+ : (wrong_type_argument (Qlistp, (list))), 1))
#define FOREACH(hare, list, tortoise, n) \
for (tortoise = hare = (list), n = 0; \
fixnum. */
#define make_fixnum_or_float(val) \
- (FIXNUM_OVERFLOW_P (val) ? make_float (val) : make_number (val))
+ (FIXNUM_OVERFLOW_P (val) \
+ ? make_float (val) \
+ : make_number ((EMACS_INT)(val)))