elisp: Syntax Properties

 
 34.4 Syntax Properties
 ======================
 
 When the syntax table is not flexible enough to specify the syntax of a
 language, you can override the syntax table for specific character
 occurrences in the buffer, by applying a ‘syntax-table’ text property.
 SeeText Properties, for how to apply text properties.
 
    The valid values of ‘syntax-table’ text property are:
 
 SYNTAX-TABLE
      If the property value is a syntax table, that table is used instead
      of the current buffer’s syntax table to determine the syntax for
      the underlying text character.
 
 ‘(SYNTAX-CODE . MATCHING-CHAR)’
      A cons cell of this format is a raw syntax descriptor (SeeSyntax
      Table Internals), which directly specifies a syntax class for the
      underlying text character.
 
 ‘nil’
      If the property is ‘nil’, the character’s syntax is determined from
      the current syntax table in the usual way.
 
  -- Variable: parse-sexp-lookup-properties
      If this is non-‘nil’, the syntax scanning functions, like
      ‘forward-sexp’, pay attention to syntax text properties.  Otherwise
      they use only the current syntax table.
 
  -- Variable: syntax-propertize-function
      This variable, if non-‘nil’, should store a function for applying
      ‘syntax-table’ properties to a specified stretch of text.  It is
      intended to be used by major modes to install a function which
      applies ‘syntax-table’ properties in some mode-appropriate way.
 
      The function is called by ‘syntax-ppss’ (SeePosition Parse),
      and by Font Lock mode during syntactic fontification (See
      Syntactic Font Lock).  It is called with two arguments, START and
      END, which are the starting and ending positions of the text on
      which it should act.  It is allowed to call ‘syntax-ppss’ on any
      position before END.  However, it should not call
      ‘syntax-ppss-flush-cache’; so, it is not allowed to call
      ‘syntax-ppss’ on some position and later modify the buffer at an
      earlier position.
 
  -- Variable: syntax-propertize-extend-region-functions
      This abnormal hook is run by the syntax parsing code prior to
      calling ‘syntax-propertize-function’.  Its role is to help locate
      safe starting and ending buffer positions for passing to
      ‘syntax-propertize-function’.  For example, a major mode can add a
      function to this hook to identify multi-line syntactic constructs,
      and ensure that the boundaries do not fall in the middle of one.
 
      Each function in this hook should accept two arguments, START and
      END.  It should return either a cons cell of two adjusted buffer
      positions, ‘(NEW-START . NEW-END)’, or ‘nil’ if no adjustment is
      necessary.  The hook functions are run in turn, repeatedly, until
      they all return ‘nil’.