Annotation of GNUtools/emacs/src/syntax.h, revision 1.1.1.1

1.1       root        1: /* Declarations having to do with GNU Emacs syntax tables.
                      2:    Copyright (C) 1985 Free Software Foundation, Inc.
                      3: 
                      4: This file is part of GNU Emacs.
                      5: 
                      6: GNU Emacs is free software; you can redistribute it and/or modify
                      7: it under the terms of the GNU General Public License as published by
                      8: the Free Software Foundation; either version 1, or (at your option)
                      9: any later version.
                     10: 
                     11: GNU Emacs is distributed in the hope that it will be useful,
                     12: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     14: GNU General Public License for more details.
                     15: 
                     16: You should have received a copy of the GNU General Public License
                     17: along with GNU Emacs; see the file COPYING.  If not, write to
                     18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
                     19: 
                     20: 
                     21: extern Lisp_Object Qsyntax_table_p;
                     22: extern Lisp_Object Fsyntax_table_p (), Fsyntax_table (), Fset_syntax_table ();
                     23: 
                     24: /* The standard syntax table is stored where it will automatically
                     25:    be used in all new buffers.  */
                     26: #define Vstandard_syntax_table buffer_defaults.syntax_table
                     27: 
                     28: /* A syntax table is a Lisp vector of length 0400, whose elements are integers.
                     29: 
                     30: The low 8 bits of the integer is a code, as follows:
                     31: */
                     32: 
                     33: enum syntaxcode
                     34:   {
                     35:     Swhitespace, /* for a whitespace character */
                     36:     Spunct,     /* for random punctuation characters */
                     37:     Sword,      /* for a word constituent */
                     38:     Ssymbol,    /* symbol constituent but not word constituent */
                     39:     Sopen,      /* for a beginning delimiter */
                     40:     Sclose,      /* for an ending delimiter */
                     41:     Squote,     /* for a prefix character like Lisp ' */
                     42:     Sstring,    /* for a string-grouping character like Lisp " */
                     43:     Smath,      /* for delimiters like $ in Tex. */
                     44:     Sescape,    /* for a character that begins a C-style escape */
                     45:     Scharquote,  /* for a character that quotes the following character */
                     46:     Scomment,    /* for a comment-starting character */
                     47:     Sendcomment, /* for a comment-ending character */
                     48:     Smax        /* Upper bound on codes that are meaningful */
                     49:   };
                     50: 
                     51: #define SYNTAX(c) \
                     52:   ((enum syntaxcode) (XINT (XVECTOR (current_buffer->syntax_table)->contents[(unsigned char) (c)]) & 0377))
                     53: 
                     54: /* The next 8 bits of the number is a character,
                     55:  the matching delimiter in the case of Sopen or Sclose. */
                     56: 
                     57: #define SYNTAX_MATCH(c) \
                     58:   ((XINT (XVECTOR (current_buffer->syntax_table)->contents[(unsigned char) (c)]) >> 8) & 0377)
                     59: 
                     60: /* Then there are four single-bit flags that have the following meanings:
                     61:   1. This character is the first of a two-character comment-start sequence.
                     62:   2. This character is the second of a two-character comment-start sequence.
                     63:   3. This character is the first of a two-character comment-end sequence.
                     64:   4. This character is the second of a two-character comment-end sequence.
                     65:  Note that any two-character sequence whose first character has flag 1
                     66:   and whose second character has flag 2 will be interpreted as a comment start. */
                     67: 
                     68: #define SYNTAX_COMSTART_FIRST(c) \
                     69:   ((XINT (XVECTOR (current_buffer->syntax_table)->contents[(unsigned char) (c)]) >> 16) & 1)
                     70: 
                     71: #define SYNTAX_COMSTART_SECOND(c) \
                     72:   ((XINT (XVECTOR (current_buffer->syntax_table)->contents[(unsigned char) (c)]) >> 17) & 1)
                     73: 
                     74: #define SYNTAX_COMEND_FIRST(c) \
                     75:   ((XINT (XVECTOR (current_buffer->syntax_table)->contents[(unsigned char) (c)]) >> 18) & 1)
                     76: 
                     77: #define SYNTAX_COMEND_SECOND(c) \
                     78:   ((XINT (XVECTOR (current_buffer->syntax_table)->contents[(unsigned char) (c)]) >> 19) & 1)
                     79: 
                     80: /* This array, indexed by a character, contains the syntax code which that
                     81:  character signifies (as a char).  For example,
                     82:  (enum syntaxcode) syntax_spec_code['w'] is Sword. */
                     83: 
                     84: extern unsigned char syntax_spec_code[0400];

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.