mirror of
https://github.com/neovim/neovim.git
synced 2025-09-30 23:18:33 +00:00

* refactor: format all C files under nvim * refactor: disable formatting for Vim-owned files: * src/nvim/indent_c.c * src/nvim/regexp.c * src/nvim/regexp_nfa.c * src/nvim/testdir/samples/memfile_test.c
70 lines
2.5 KiB
C
70 lines
2.5 KiB
C
#ifndef NVIM_SYNTAX_DEFS_H
|
|
#define NVIM_SYNTAX_DEFS_H
|
|
|
|
#include "nvim/highlight_defs.h"
|
|
|
|
#define SST_MIN_ENTRIES 150 // minimal size for state stack array
|
|
#define SST_MAX_ENTRIES 1000 // maximal size for state stack array
|
|
#define SST_FIX_STATES 7 // size of sst_stack[].
|
|
#define SST_DIST 16 // normal distance between entries
|
|
#define SST_INVALID (synstate_T *)-1 // invalid syn_state pointer
|
|
|
|
typedef struct syn_state synstate_T;
|
|
|
|
#include "nvim/buffer_defs.h"
|
|
#include "nvim/regexp_defs.h"
|
|
|
|
// struct passed to in_id_list()
|
|
struct sp_syn {
|
|
int inc_tag; // ":syn include" unique tag
|
|
int16_t id; // highlight group ID of item
|
|
int16_t *cont_in_list; // cont.in group IDs, if non-zero
|
|
};
|
|
|
|
/*
|
|
* Each keyword has one keyentry, which is linked in a hash list.
|
|
*/
|
|
typedef struct keyentry keyentry_T;
|
|
|
|
struct keyentry {
|
|
keyentry_T *ke_next; // next entry with identical "keyword[]"
|
|
struct sp_syn k_syn; // struct passed to in_id_list()
|
|
int16_t *next_list; // ID list for next match (if non-zero)
|
|
int flags;
|
|
int k_char; // conceal substitute character
|
|
char_u keyword[1]; // actually longer
|
|
};
|
|
|
|
/*
|
|
* Struct used to store one state of the state stack.
|
|
*/
|
|
typedef struct buf_state {
|
|
int bs_idx; // index of pattern
|
|
int bs_flags; // flags for pattern
|
|
int bs_seqnr; // stores si_seqnr
|
|
int bs_cchar; // stores si_cchar
|
|
reg_extmatch_T *bs_extmatch; // external matches from start pattern
|
|
} bufstate_T;
|
|
|
|
/*
|
|
* syn_state contains the syntax state stack for the start of one line.
|
|
* Used by b_sst_array[].
|
|
*/
|
|
struct syn_state {
|
|
synstate_T *sst_next; // next entry in used or free list
|
|
linenr_T sst_lnum; // line number for this state
|
|
union {
|
|
bufstate_T sst_stack[SST_FIX_STATES]; // short state stack
|
|
garray_T sst_ga; // growarray for long state stack
|
|
} sst_union;
|
|
int sst_next_flags; // flags for sst_next_list
|
|
int sst_stacksize; // number of states on the stack
|
|
int16_t *sst_next_list; // "nextgroup" list in this state
|
|
// (this is a copy, don't free it!
|
|
disptick_T sst_tick; // tick when last displayed
|
|
linenr_T sst_change_lnum; // when non-zero, change in this line
|
|
// may have made the state invalid
|
|
};
|
|
|
|
#endif // NVIM_SYNTAX_DEFS_H
|