neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

syntax_defs.h (2286B)


      1 #pragma once
      2 
      3 #include "nvim/buffer_defs.h"
      4 
      5 #define SST_MIN_ENTRIES 150    // minimal size for state stack array
      6 #define SST_MAX_ENTRIES 1000   // maximal size for state stack array
      7 #define SST_FIX_STATES  7      // size of sst_stack[].
      8 #define SST_DIST        16     // normal distance between entries
      9 #define SST_INVALID    ((synstate_T *)-1)      // invalid syn_state pointer
     10 
     11 // struct passed to in_id_list()
     12 struct sp_syn {
     13  int inc_tag;                  // ":syn include" unique tag
     14  int16_t id;                   // highlight group ID of item
     15  int16_t *cont_in_list;        // cont.in group IDs, if non-zero
     16 };
     17 
     18 // Each keyword has one keyentry, which is linked in a hash list.
     19 typedef struct keyentry keyentry_T;
     20 
     21 struct keyentry {
     22  keyentry_T *ke_next;         // next entry with identical "keyword[]"
     23  struct sp_syn k_syn;          // struct passed to in_id_list()
     24  int16_t *next_list;           // ID list for next match (if non-zero)
     25  int flags;
     26  int k_char;                   // conceal substitute character
     27  char keyword[];
     28 };
     29 
     30 // Struct used to store one state of the state stack.
     31 typedef struct {
     32  int bs_idx;                    // index of pattern
     33  int bs_flags;                  // flags for pattern
     34  int bs_seqnr;                  // stores si_seqnr
     35  int bs_cchar;                  // stores si_cchar
     36  reg_extmatch_T *bs_extmatch;   // external matches from start pattern
     37 } bufstate_T;
     38 
     39 // syn_state contains the syntax state stack for the start of one line.
     40 // Used by b_sst_array[].
     41 struct syn_state {
     42  synstate_T *sst_next;        // next entry in used or free list
     43  linenr_T sst_lnum;            // line number for this state
     44  union {
     45    bufstate_T sst_stack[SST_FIX_STATES];          // short state stack
     46    garray_T sst_ga;            // growarray for long state stack
     47  } sst_union;
     48  int sst_next_flags;           // flags for sst_next_list
     49  int sst_stacksize;            // number of states on the stack
     50  int16_t *sst_next_list;       // "nextgroup" list in this state
     51                                // (this is a copy, don't free it!
     52  disptick_T sst_tick;          // tick when last displayed
     53  linenr_T sst_change_lnum;     // when non-zero, change in this line
     54                                // may have made the state invalid
     55 };