File: //home/ubuntu/neovim/build/src/nvim/auto/syntax.c.generated.h
#define DEFINE_FUNC_ATTRIBUTES
#include "nvim/func_attr.h"
#undef DEFINE_FUNC_ATTRIBUTES
static void clear_syn_state(synstate_T *p);
static void clear_current_state(void);
static void syn_sync(win_T *wp, linenr_T start_lnum, synstate_T *last_valid);
static void save_chartab(char *chartab);
static void restore_chartab(char *chartab);
static int syn_match_linecont(linenr_T lnum);
static void syn_start_line(void);
static void syn_update_ends(_Bool startofline);
static void syn_stack_free_block(synblock_T *block);
static void syn_stack_alloc(void);
static void syn_stack_apply_changes_block(synblock_T *block, buf_T *buf);
static _Bool syn_stack_cleanup(void);
static void syn_stack_free_entry(synblock_T *block, synstate_T *p);
static synstate_T *syn_stack_find_entry(linenr_T lnum);
static synstate_T *store_current_state(void);
static void load_current_state(synstate_T *from);
static _Bool syn_stack_equal(synstate_T *sp);
static void invalidate_current_state(void);
static void validate_current_state(void);
static _Bool syn_finish_line(const _Bool syncing);
static int syn_current_attr(const _Bool syncing, const _Bool displaying, _Bool *const can_spell, const _Bool keep_state);
static _Bool did_match_already(int idx, garray_T *gap);
static stateitem_T *push_next_match(void);
static void check_state_ends(void);
static void update_si_attr(int idx);
static void check_keepend(void);
static void update_si_end(stateitem_T *sip, int startcol, _Bool force);
static void push_current_state(int idx);
static void pop_current_state(void);
static void find_endpos(int idx, lpos_T *startpos, lpos_T *m_endpos, lpos_T *hl_endpos, int *flagsp, lpos_T *end_endpos, int *end_idx, reg_extmatch_T *start_ext);
static void limit_pos(lpos_T *pos, lpos_T *limit);
static void limit_pos_zero(lpos_T *pos, lpos_T *limit);
static void syn_add_end_off(lpos_T *result, regmmatch_T *regmatch, synpat_T *spp, int idx, int extra);
static void syn_add_start_off(lpos_T *result, regmmatch_T *regmatch, synpat_T *spp, int idx, int extra);
static char *syn_getcurline(void);
static colnr_T syn_getcurline_len(void);
static _Bool syn_regexec(regmmatch_T *rmp, linenr_T lnum, colnr_T col, syn_time_T *st);
static int check_keyword_id(char *const line, const int startcol, int *const endcolp, int *const flagsp, int16_t **const next_listp, stateitem_T *const cur_si, int *const ccharp);
static keyentry_T *match_keyword(char *keyword, hashtab_T *ht, stateitem_T *cur_si);
static void syn_cmd_conceal(exarg_T *eap, int syncing);
static void syn_cmd_case(exarg_T *eap, int syncing);
static void syn_cmd_foldlevel(exarg_T *eap, int syncing);
static void syn_cmd_spell(exarg_T *eap, int syncing);
static void syn_cmd_iskeyword(exarg_T *eap, int syncing);
static void syntax_sync_clear(void);
static void syn_remove_pattern(synblock_T *block, int idx);
static void syn_clear_pattern(synblock_T *block, int i);
static void syn_clear_cluster(synblock_T *block, int i);
static void syn_cmd_clear(exarg_T *eap, int syncing);
static void syn_clear_one(const int id, const _Bool syncing);
static void syn_cmd_on(exarg_T *eap, int syncing);
static void syn_cmd_reset(exarg_T *eap, int syncing);
static void syn_cmd_manual(exarg_T *eap, int syncing);
static void syn_cmd_off(exarg_T *eap, int syncing);
static void syn_cmd_onoff(exarg_T *eap, char *name) FUNC_ATTR_NONNULL_ALL;
static void syn_cmd_list(exarg_T *eap, int syncing);
static void syn_lines_msg(void);
static void syn_match_msg(void);
static void syn_list_one(const int id, const _Bool syncing, const _Bool link_only);
static void syn_list_flags(keyvalue_T *nlist, size_t nr_entries, int flags, int attr);
static void syn_list_cluster(int id);
static void put_id_list(const char *const name, const int16_t *const list, const int attr);
static void put_pattern(const char *const s, const int c, const synpat_T *const spp, const int attr);
static _Bool syn_list_keywords(const int id, const hashtab_T *const ht, _Bool did_header, const int attr);
static void syn_clear_keyword(int id, hashtab_T *ht);
static void clear_keywtab(hashtab_T *ht);
static void add_keyword(char *const name, size_t namelen, const int id, const int flags, int16_t *const cont_in_list, int16_t *const next_list, const int conceal_char);
static char *get_group_name(char *arg, char **name_end);
static char *get_syn_options(char *arg, syn_opt_arg_T *opt, int *conceal_char, int skip);
static void syn_incl_toplevel(int id, int *flagsp);
static void syn_cmd_include(exarg_T *eap, int syncing);
static void syn_cmd_keyword(exarg_T *eap, int syncing);
static void syn_cmd_match(exarg_T *eap, int syncing);
static void syn_cmd_region(exarg_T *eap, int syncing);
static int syn_compare_stub(const void *const v1, const void *const v2);
static void syn_combine_list(int16_t **const clstr1, int16_t **const clstr2, const int list_op);
static int syn_scl_name2id(char *name);
static int syn_scl_namen2id(char *linep, int len);
static int syn_check_cluster(char *pp, int len);
static int syn_add_cluster(char *name);
static void syn_cmd_cluster(exarg_T *eap, int syncing);
static void init_syn_patterns(void);
static char *get_syn_pattern(char *arg, synpat_T *ci);
static void syn_cmd_sync(exarg_T *eap, int syncing);
static int get_id_list(char **const arg, const int keylen, int16_t **const list, const _Bool skip);
static int16_t *copy_id_list(const int16_t *const list);
static int in_id_list(stateitem_T *cur_si, int16_t *list, struct sp_syn *ssp, int contained);
static int syn_cur_foldlevel(void);
static void syn_clear_time(syn_time_T *st);
static void syntime_clear(void);
static int syn_compare_syntime(const void *v1, const void *v2);
static void syntime_report(void);
#define DEFINE_EMPTY_ATTRIBUTES
#include "nvim/func_attr.h" // IWYU pragma: export