Mercurial > emacs
changeset 13218:d2fc560c7740
(Qsyntax_table): New variable.
(init_syntax_once): Call Fmake_char_table the new way.
Set up Qsyntax_table.
(Fsyntax_table_p): Check the `purpose' field.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 14 Oct 1995 05:52:39 +0000 |
parents | c3f879af05db |
children | 99b5164a319d |
files | src/syntax.c |
diffstat | 1 files changed, 17 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/syntax.c Sat Oct 14 03:14:39 1995 +0000 +++ b/src/syntax.c Sat Oct 14 05:52:39 1995 +0000 @@ -25,7 +25,7 @@ #include "buffer.h" #include "syntax.h" -Lisp_Object Qsyntax_table_p; +Lisp_Object Qsyntax_table_p, Qsyntax_table; static void scan_sexps_forward (); static int char_quoted (); @@ -116,7 +116,8 @@ (obj) Lisp_Object obj; { - if (CHAR_TABLE_P (obj)) + if (CHAR_TABLE_P (obj) + && XCHAR_TABLE (obj)->purpose == Qsyntax_table) return Qt; return Qnil; } @@ -1720,9 +1721,22 @@ register int i; Lisp_Object temp; + /* This has to be done here, before we call Fmake_char_table. */ + Qsyntax_table = intern ("syntax-table"); + staticpro (&Qsyntax_table); + + /* Intern this now in case it isn't already done. + Setting this variable twice is harmless. + But don't staticpro it here--that is done in alloc.c. */ + Qchar_table_extra_slots = intern ("char-table-extra-slots"); + + /* Now we are ready to set up this property, so we can + create syntax tables. */ + Fput (Qsyntax_table, Qchar_table_extra_slots, make_number (0)); + temp = Fcons (make_number ((int) Swhitespace), Qnil); - Vstandard_syntax_table = Fmake_char_table (make_number (0), temp); + Vstandard_syntax_table = Fmake_char_table (Qsyntax_table, temp); temp = Fcons (make_number ((int) Sword), Qnil); for (i = 'a'; i <= 'z'; i++)