1: /* Declarations having to do with GNU Emacs syntax tables.
2: Copyright (C) 1985 Richard M. Stallman.
3:
4: This file is part of GNU Emacs.
5:
6: GNU Emacs is distributed in the hope that it will be useful,
7: but WITHOUT ANY WARRANTY. No author or distributor
8: accepts responsibility to anyone for the consequences of using it
9: or for whether it serves any particular purpose or works at all,
10: unless he says so in writing. Refer to the GNU Emacs General Public
11: License for full details.
12:
13: Everyone is granted permission to copy, modify and redistribute
14: GNU Emacs, but only under the conditions described in the
15: GNU Emacs General Public License. A copy of this license is
16: supposed to have been given to you along with GNU Emacs so you
17: can know your rights and responsibilities. It should be in a
18: file named COPYING. Among other things, the copyright notice
19: and this notice must be preserved on all copies. */
20:
21:
22: extern Lisp_Object Qsyntax_table_p;
23: extern Lisp_Object Fsyntax_table_p (), Fsyntax_table (), Fset_syntax_table ();
24:
25: extern Lisp_Object Vstandard_syntax_table;
26:
27: /* A syntax table is a Lisp vector of length 0400, whose elements are integers.
28:
29: The low 8 bits of the integer is a code, as follows:
30: */
31:
32: enum syntaxcode
33: {
34: Swhitespace, /* for a whitespace character */
35: Spunct, /* for random punctuation characters */
36: Sword, /* for a word constituent */
37: Ssymbol, /* symbol constituent but not word constituent */
38: Sopen, /* for a beginning delimiter */
39: Sclose, /* for an ending delimiter */
40: Squote, /* for a prefix character like Lisp ' */
41: Sstring, /* for a string-grouping character like Lisp " */
42: Smath, /* for delimiters like $ in Tex. */
43: Sescape, /* for a character that begins a C-style escape */
44: Scharquote, /* for a character that quotes the following character */
45: Scomment, /* for a comment-starting character */
46: Sendcomment, /* for a comment-ending character */
47: Smax /* Upper bound on codes that are meaningful */
48: };
49:
50: #define SYNTAX(c) \
51: ((enum syntaxcode) (XINT (bf_cur->syntax_table_v->contents[c]) & 0377))
52:
53: /* The next 8 bits of the number is a character,
54: the matching delimiter in the case of Sopen or Sclose. */
55:
56: #define SYNTAX_MATCH(c) \
57: ((XINT (bf_cur->syntax_table_v->contents[c]) >> 8) & 0377)
58:
59: /* Then there are four single-bit flags that have the following meanings:
60: 1. This character is the first of a two-character comment-start sequence.
61: 2. This character is the second of a two-character comment-start sequence.
62: 3. This character is the first of a two-character comment-end sequence.
63: 4. This character is the second of a two-character comment-end sequence.
64: Note that any two-character sequence whose first character has flag 1
65: and whose second character has flag 2 will be interpreted as a comment start. */
66:
67: #define SYNTAX_COMSTART_FIRST(c) \
68: ((XINT (bf_cur->syntax_table_v->contents[c]) >> 16) & 1)
69:
70: #define SYNTAX_COMSTART_SECOND(c) \
71: ((XINT (bf_cur->syntax_table_v->contents[c]) >> 17) & 1)
72:
73: #define SYNTAX_COMEND_FIRST(c) \
74: ((XINT (bf_cur->syntax_table_v->contents[c]) >> 18) & 1)
75:
76: #define SYNTAX_COMEND_SECOND(c) \
77: ((XINT (bf_cur->syntax_table_v->contents[c]) >> 19) & 1)
78:
79: /* This array, indexed by a character, contains the syntax code which that
80: character signifies (as a char). For example,
81: (enum syntaxcode) syntax_spec_code['w'] is Sword. */
82:
83: extern char syntax_spec_code[0400];
Defined enum's
Defined macros
SYNTAX
defined in line
50; used 53 times
- in /usr/src/new/emacs/src/casefiddle.c line
64,
121
- in /usr/src/new/emacs/src/cmds.c line
281-283(2),
299
- in /usr/src/new/emacs/src/minibuf.c line
850
- in /usr/src/new/emacs/src/regex.c line
742,
748,
756,
762,
1272-1273(2),
1282-1283(2),
1290-1293(2),
1299-1303(2),
1337,
1348-1358(3)
- in /usr/src/new/emacs/src/search.c line
602-607(3),
617-619(2),
771,
784,
837
- in /usr/src/new/emacs/src/syntax.c line
150,
358,
365,
380,
387,
446,
471-473(2),
496,
531-533(2),
568,
589-590(2),
620,
675,
732,
823,
851-853(2),
879,
919-921(2)
Usage of this include