Annotation of GNUtools/emacs/src/syntax.h, revision 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.