buffer_defs.h
Go to the documentation of this file.
1 #ifndef NVIM_BUFFER_DEFS_H
2 #define NVIM_BUFFER_DEFS_H
3 
4 #include <stdbool.h>
5 #include <stdint.h>
6 // for FILE
7 #include <stdio.h>
8 
9 typedef struct file_buffer buf_T; // Forward declaration
10 
11 // Reference to a buffer that stores the value of buf_free_count.
12 // bufref_valid() only needs to check "buf" when the count differs.
13 typedef struct {
15  int br_fnum;
17 } bufref_T;
18 
19 // for garray_T
20 #include "nvim/garray.h"
21 // for ScreenGrid
22 #include "nvim/grid_defs.h"
23 // for HLF_COUNT
24 #include "nvim/highlight_defs.h"
25 // for pos_T, lpos_T and linenr_T
26 #include "nvim/pos.h"
27 // for the number window-local and buffer-local options
28 #include "nvim/option_defs.h"
29 // for jump list and tag stack sizes in a buffer and mark types
30 #include "nvim/mark_defs.h"
31 // for u_header_T; needs buf_T.
32 #include "nvim/undo_defs.h"
33 // for hashtab_T
34 #include "nvim/hashtab.h"
35 // for dict_T
36 #include "nvim/eval/typval.h"
37 // for proftime_T
38 #include "nvim/profile.h"
39 // for String
40 #include "nvim/api/private/defs.h"
41 // for Map(K, V)
42 #include "nvim/map.h"
43 // for kvec
44 #include "nvim/lib/kvec.h"
45 
46 #define GETFILE_SUCCESS(x) ((x) <= 0)
47 #define MODIFIABLE(buf) (buf->b_p_ma)
48 
49 /*
50  * Flags for w_valid.
51  * These are set when something in a window structure becomes invalid, except
52  * when the cursor is moved. Call check_cursor_moved() before testing one of
53  * the flags.
54  * These are reset when that thing has been updated and is valid again.
55  *
56  * Every function that invalidates one of these must call one of the
57  * invalidate_* functions.
58  *
59  * w_valid is supposed to be used only in screen.c. From other files, use the
60  * functions that set or reset the flags.
61  *
62  * VALID_BOTLINE VALID_BOTLINE_AP
63  * on on w_botline valid
64  * off on w_botline approximated
65  * off off w_botline not valid
66  * on off not possible
67  */
68 #define VALID_WROW 0x01 /* w_wrow (window row) is valid */
69 #define VALID_WCOL 0x02 /* w_wcol (window col) is valid */
70 #define VALID_VIRTCOL 0x04 /* w_virtcol (file col) is valid */
71 #define VALID_CHEIGHT 0x08 /* w_cline_height and w_cline_folded valid */
72 #define VALID_CROW 0x10 /* w_cline_row is valid */
73 #define VALID_BOTLINE 0x20 /* w_botine and w_empty_rows are valid */
74 #define VALID_BOTLINE_AP 0x40 /* w_botine is approximated */
75 #define VALID_TOPLINE 0x80 /* w_topline is valid (for cursor position) */
76 
77 // flags for b_flags
78 #define BF_RECOVERED 0x01 // buffer has been recovered
79 #define BF_CHECK_RO 0x02 // need to check readonly when loading file
80  // into buffer (set by ":e", may be reset by
81  // ":buf")
82 #define BF_NEVERLOADED 0x04 // file has never been loaded into buffer,
83  // many variables still need to be set
84 #define BF_NOTEDITED 0x08 // Set when file name is changed after
85  // starting to edit, reset when file is
86  // written out.
87 #define BF_NEW 0x10 // file didn't exist when editing started
88 #define BF_NEW_W 0x20 // Warned for BF_NEW and file created
89 #define BF_READERR 0x40 // got errors while reading the file
90 #define BF_DUMMY 0x80 // dummy buffer, only used internally
91 #define BF_PRESERVED 0x100 // ":preserve" was used
92 
93 /* Mask to check for flags that prevent normal writing */
94 #define BF_WRITE_MASK (BF_NOTEDITED + BF_NEW + BF_READERR)
95 
96 typedef struct window_S win_T;
97 typedef struct wininfo_S wininfo_T;
98 typedef struct frame_S frame_T;
99 typedef uint16_t disptick_T; // display tick type
100 
101 // for struct memline (it needs memfile_T)
102 #include "nvim/memline_defs.h"
103 // for struct memfile, bhdr_T, blocknr_T... (it needs buf_T)
104 #include "nvim/memfile_defs.h"
105 
106 // for regprog_T. Needs win_T and buf_T.
107 #include "nvim/regexp_defs.h"
108 // for synstate_T (needs reg_extmatch_T, win_T, buf_T)
109 #include "nvim/syntax_defs.h"
110 // for signlist_T
111 #include "nvim/sign_defs.h"
112 // for bufhl_*_T
113 #include "nvim/bufhl_defs.h"
114 
115 #include "nvim/os/fs_defs.h" // for FileID
116 #include "nvim/terminal.h" // for Terminal
117 
118 /*
119  * The taggy struct is used to store the information about a :tag command.
120  */
121 typedef struct taggy {
122  char_u *tagname; /* tag name */
123  fmark_T fmark; /* cursor position BEFORE ":tag" */
124  int cur_match; /* match number */
125  int cur_fnum; /* buffer number used for cur_match */
126 } taggy_T;
127 
128 typedef struct buffblock buffblock_T;
129 typedef struct buffheader buffheader_T;
130 
131 /*
132  * structure used to store one block of the stuff/redo/recording buffers
133  */
134 struct buffblock {
135  buffblock_T *b_next; // pointer to next buffblock
136  char_u b_str[1]; // contents (actually longer)
137 };
138 
139 /*
140  * header used for the stuff buffer and the redo buffer
141  */
142 struct buffheader {
143  buffblock_T bh_first; // first (dummy) block of list
144  buffblock_T *bh_curr; // buffblock for appending
145  size_t bh_index; // index for reading
146  size_t bh_space; // space in bh_curr for appending
147 };
148 
149 typedef struct
150 {
153 } save_redo_T;
154 
155 /*
156  * Structure that contains all options that are local to a window.
157  * Used twice in a window: for the current buffer and for all buffers.
158  * Also used in wininfo_T.
159  */
160 typedef struct {
161  int wo_arab;
162 # define w_p_arab w_onebuf_opt.wo_arab /* 'arabic' */
163  int wo_bri;
164 # define w_p_bri w_onebuf_opt.wo_bri // 'breakindent'
166 # define w_p_briopt w_onebuf_opt.wo_briopt /* 'breakindentopt' */
167  int wo_diff;
168 # define w_p_diff w_onebuf_opt.wo_diff /* 'diff' */
169  long wo_fdc;
170 # define w_p_fdc w_onebuf_opt.wo_fdc /* 'foldcolumn' */
172 # define w_p_fdc_save w_onebuf_opt.wo_fdc_save /* 'foldenable' saved for diff mode */
173  int wo_fen;
174 # define w_p_fen w_onebuf_opt.wo_fen /* 'foldenable' */
176 # define w_p_fen_save w_onebuf_opt.wo_fen_save /* 'foldenable' saved for diff mode */
178 # define w_p_fdi w_onebuf_opt.wo_fdi /* 'foldignore' */
179  long wo_fdl;
180 # define w_p_fdl w_onebuf_opt.wo_fdl /* 'foldlevel' */
182 # define w_p_fdl_save w_onebuf_opt.wo_fdl_save /* 'foldlevel' state saved for diff mode */
184 # define w_p_fdm w_onebuf_opt.wo_fdm /* 'foldmethod' */
186 # define w_p_fdm_save w_onebuf_opt.wo_fdm_save /* 'fdm' saved for diff mode */
187  long wo_fml;
188 # define w_p_fml w_onebuf_opt.wo_fml /* 'foldminlines' */
189  long wo_fdn;
190 # define w_p_fdn w_onebuf_opt.wo_fdn /* 'foldnestmax' */
192 # define w_p_fde w_onebuf_opt.wo_fde /* 'foldexpr' */
194 # define w_p_fdt w_onebuf_opt.wo_fdt /* 'foldtext' */
196 # define w_p_fmr w_onebuf_opt.wo_fmr /* 'foldmarker' */
197  int wo_lbr;
198 # define w_p_lbr w_onebuf_opt.wo_lbr /* 'linebreak' */
199  int wo_list;
200 #define w_p_list w_onebuf_opt.wo_list /* 'list' */
201  int wo_nu;
202 #define w_p_nu w_onebuf_opt.wo_nu /* 'number' */
203  int wo_rnu;
204 #define w_p_rnu w_onebuf_opt.wo_rnu /* 'relativenumber' */
205  long wo_nuw;
206 # define w_p_nuw w_onebuf_opt.wo_nuw /* 'numberwidth' */
207  int wo_wfh;
208 # define w_p_wfh w_onebuf_opt.wo_wfh /* 'winfixheight' */
209  int wo_wfw;
210 # define w_p_wfw w_onebuf_opt.wo_wfw /* 'winfixwidth' */
211  int wo_pvw;
212 # define w_p_pvw w_onebuf_opt.wo_pvw /* 'previewwindow' */
213  int wo_rl;
214 # define w_p_rl w_onebuf_opt.wo_rl /* 'rightleft' */
216 # define w_p_rlc w_onebuf_opt.wo_rlc /* 'rightleftcmd' */
217  long wo_scr;
218 #define w_p_scr w_onebuf_opt.wo_scr /* 'scroll' */
219  int wo_spell;
220 # define w_p_spell w_onebuf_opt.wo_spell /* 'spell' */
221  int wo_cuc;
222 # define w_p_cuc w_onebuf_opt.wo_cuc /* 'cursorcolumn' */
223  int wo_cul;
224 # define w_p_cul w_onebuf_opt.wo_cul /* 'cursorline' */
226 # define w_p_cc w_onebuf_opt.wo_cc /* 'colorcolumn' */
228 #define w_p_stl w_onebuf_opt.wo_stl /* 'statusline' */
229  int wo_scb;
230 # define w_p_scb w_onebuf_opt.wo_scb /* 'scrollbind' */
231  int wo_diff_saved; /* options were saved for starting diff mode */
232 # define w_p_diff_saved w_onebuf_opt.wo_diff_saved
233  int wo_scb_save; /* 'scrollbind' saved for diff mode*/
234 # define w_p_scb_save w_onebuf_opt.wo_scb_save
235  int wo_wrap;
236 #define w_p_wrap w_onebuf_opt.wo_wrap /* 'wrap' */
237  int wo_wrap_save; /* 'wrap' state saved for diff mode*/
238 # define w_p_wrap_save w_onebuf_opt.wo_wrap_save
239  char_u *wo_cocu; /* 'concealcursor' */
240 # define w_p_cocu w_onebuf_opt.wo_cocu
241  long wo_cole; /* 'conceallevel' */
242 # define w_p_cole w_onebuf_opt.wo_cole
243  int wo_crb;
244 # define w_p_crb w_onebuf_opt.wo_crb /* 'cursorbind' */
245  int wo_crb_save; /* 'cursorbind' state saved for diff mode*/
246 # define w_p_crb_save w_onebuf_opt.wo_crb_save
248 # define w_p_scl w_onebuf_opt.wo_scl // 'signcolumn'
250 # define w_p_winhl w_onebuf_opt.wo_winhl // 'winhighlight'
251 
252  LastSet wo_scriptID[WV_COUNT]; // SIDs for window-local options
253 # define w_p_scriptID w_onebuf_opt.wo_scriptID
254 } winopt_T;
255 
256 /*
257  * Window info stored with a buffer.
258  *
259  * Two types of info are kept for a buffer which are associated with a
260  * specific window:
261  * 1. Each window can have a different line number associated with a buffer.
262  * 2. The window-local options for a buffer work in a similar way.
263  * The window-info is kept in a list at b_wininfo. It is kept in
264  * most-recently-used order.
265  */
266 struct wininfo_S {
267  wininfo_T *wi_next; /* next entry or NULL for last entry */
268  wininfo_T *wi_prev; /* previous entry or NULL for first entry */
269  win_T *wi_win; /* pointer to window that did set wi_fpos */
270  pos_T wi_fpos; /* last cursor position in the file */
271  bool wi_optset; /* true when wi_opt has useful values */
272  winopt_T wi_opt; /* local window options */
273  bool wi_fold_manual; /* copy of w_fold_manual */
274  garray_T wi_folds; /* clone of w_folds */
275 };
276 
277 /*
278  * Argument list: Array of file names.
279  * Used for the global argument list and the argument lists local to a window.
280  *
281  * TODO: move struct arglist to another header
282  */
283 typedef struct arglist {
284  garray_T al_ga; /* growarray with the array of file names */
285  int al_refcount; /* number of windows using this arglist */
286  int id;
287 } alist_T;
288 
289 /*
290  * For each argument remember the file name as it was given, and the buffer
291  * number that contains the expanded file name (required for when ":cd" is
292  * used.
293  *
294  * TODO: move aentry_T to another header
295  */
296 typedef struct argentry {
297  char_u *ae_fname; /* file name as specified */
298  int ae_fnum; /* buffer number with expanded file name */
299 } aentry_T;
300 
301 # define ALIST(win) (win)->w_alist
302 #define GARGLIST ((aentry_T *)global_alist.al_ga.ga_data)
303 #define ARGLIST ((aentry_T *)ALIST(curwin)->al_ga.ga_data)
304 #define WARGLIST(wp) ((aentry_T *)ALIST(wp)->al_ga.ga_data)
305 #define AARGLIST(al) ((aentry_T *)((al)->al_ga.ga_data))
306 #define GARGCOUNT (global_alist.al_ga.ga_len)
307 #define ARGCOUNT (ALIST(curwin)->al_ga.ga_len)
308 #define WARGCOUNT(wp) (ALIST(wp)->al_ga.ga_len)
309 
310 /*
311  * Used for the typeahead buffer: typebuf.
312  */
313 typedef struct {
314  char_u *tb_buf; /* buffer for typed characters */
315  char_u *tb_noremap; /* mapping flags for characters in tb_buf[] */
316  int tb_buflen; /* size of tb_buf[] */
317  int tb_off; /* current position in tb_buf[] */
318  int tb_len; /* number of valid bytes in tb_buf[] */
319  int tb_maplen; /* nr of mapped bytes in tb_buf[] */
320  int tb_silent; /* nr of silently mapped bytes in tb_buf[] */
321  int tb_no_abbr_cnt; /* nr of bytes without abbrev. in tb_buf[] */
322  int tb_change_cnt; /* nr of time tb_buf was changed; never zero */
323 } typebuf_T;
324 
325 /* Struct to hold the saved typeahead for save_typeahead(). */
326 typedef struct {
328  int typebuf_valid; /* TRUE when save_typebuf valid */
329  int old_char;
334 } tasave_T;
335 
336 /*
337  * Structure used for mappings and abbreviations.
338  */
339 typedef struct mapblock mapblock_T;
340 struct mapblock {
341  mapblock_T *m_next; /* next mapblock in list */
342  char_u *m_keys; /* mapped from, lhs */
343  char_u *m_str; /* mapped to, rhs */
344  char_u *m_orig_str; /* rhs as entered by the user */
345  int m_keylen; /* strlen(m_keys) */
346  int m_mode; /* valid mode */
347  int m_noremap; /* if non-zero no re-mapping for m_str */
348  char m_silent; /* <silent> used, don't echo commands */
349  char m_nowait; /* <nowait> used */
350  char m_expr; /* <expr> used, m_str is an expression */
351  scid_T m_script_ID; /* ID of script where map was defined */
352 };
353 
354 /*
355  * Used for highlighting in the status line.
356  */
357 struct stl_hlrec {
359  int userhl; /* 0: no HL, 1-9: User HL, < 0 for syn ID */
360 };
361 
362 /* values for b_syn_spell: what to do with toplevel text */
363 #define SYNSPL_DEFAULT 0 /* spell check if @Spell not defined */
364 #define SYNSPL_TOP 1 /* spell check toplevel text */
365 #define SYNSPL_NOTOP 2 /* don't spell check toplevel text */
366 
367 /* avoid #ifdefs for when b_spell is not available */
368 # define B_SPELL(buf) ((buf)->b_spell)
369 
370 typedef struct qf_info_S qf_info_T;
371 
372 /*
373  * Used for :syntime: timing of executing a syntax pattern.
374  */
375 typedef struct {
376  proftime_T total; /* total time used */
377  proftime_T slowest; /* time of slowest call */
378  long count; /* nr of times used */
379  long match; /* nr of times matched */
380 } syn_time_T;
381 
382 /*
383  * These are items normally related to a buffer. But when using ":ownsyntax"
384  * a window may have its own instance.
385  */
386 typedef struct {
387  hashtab_T b_keywtab; /* syntax keywords hash table */
388  hashtab_T b_keywtab_ic; /* idem, ignore case */
389  int b_syn_error; /* TRUE when error occurred in HL */
390  int b_syn_ic; /* ignore case for :syn cmds */
391  int b_syn_spell; /* SYNSPL_ values */
392  garray_T b_syn_patterns; /* table for syntax patterns */
393  garray_T b_syn_clusters; /* table for syntax clusters */
394  int b_spell_cluster_id; /* @Spell cluster ID or 0 */
395  int b_nospell_cluster_id; /* @NoSpell cluster ID or 0 */
396  int b_syn_containedin; /* TRUE when there is an item with a
397  "containedin" argument */
398  int b_syn_sync_flags; /* flags about how to sync */
399  short b_syn_sync_id; /* group to sync on */
400  long b_syn_sync_minlines; /* minimal sync lines offset */
401  long b_syn_sync_maxlines; /* maximal sync lines offset */
402  long b_syn_sync_linebreaks; /* offset for multi-line pattern */
403  char_u *b_syn_linecont_pat; /* line continuation pattern */
404  regprog_T *b_syn_linecont_prog; /* line continuation program */
406  int b_syn_linecont_ic; /* ignore-case flag for above */
407  int b_syn_topgrp; /* for ":syntax include" */
408  int b_syn_conceal; /* auto-conceal for :syn cmds */
409  int b_syn_folditems; /* number of patterns with the HL_FOLD
410  flag set */
411  /*
412  * b_sst_array[] contains the state stack for a number of lines, for the
413  * start of that line (col == 0). This avoids having to recompute the
414  * syntax state too often.
415  * b_sst_array[] is allocated to hold the state for all displayed lines,
416  * and states for 1 out of about 20 other lines.
417  * b_sst_array pointer to an array of synstate_T
418  * b_sst_len number of entries in b_sst_array[]
419  * b_sst_first pointer to first used entry in b_sst_array[] or NULL
420  * b_sst_firstfree pointer to first free entry in b_sst_array[] or NULL
421  * b_sst_freecount number of free entries in b_sst_array[]
422  * b_sst_check_lnum entries after this lnum need to be checked for
423  * validity (MAXLNUM means no check needed)
424  */
431  disptick_T b_sst_lasttick; // last display tick
432 
433  // for spell checking
434  garray_T b_langp; // list of pointers to slang_T, see spell.c
435  bool b_spell_ismw[256]; // flags: is midword char
436  char_u *b_spell_ismw_mb; // multi-byte midword chars
437  char_u *b_p_spc; // 'spellcapcheck'
438  regprog_T *b_cap_prog; // program for 'spellcapcheck'
439  char_u *b_p_spf; // 'spellfile'
440  char_u *b_p_spl; // 'spelllang'
441  int b_cjk; // all CJK letters as OK
442  char_u b_syn_chartab[32]; // syntax iskeyword option
443  char_u *b_syn_isk; // iskeyword option
444 } synblock_T;
445 
449 typedef TV_DICTITEM_STRUCT(sizeof("changedtick")) ChangedtickDictItem;
450 
451 #define BUF_HAS_QF_ENTRY 1
452 #define BUF_HAS_LL_ENTRY 2
453 
454 // Maximum number of maphash blocks we will have
455 #define MAX_MAPHASH 256
456 
457 /*
458  * buffer: structure that holds information about one file
459  *
460  * Several windows can share a single Buffer
461  * A buffer is unallocated if there is no memfile for it.
462  * A buffer is new if the associated file has never been loaded yet.
463  */
464 
465 struct file_buffer {
466  handle_T handle; // unique id for the buffer (buffer number)
467 #define b_fnum handle
468 
469  memline_T b_ml; // associated memline (also contains line count
470 
471  buf_T *b_next; /* links in list of buffers */
473 
474  int b_nwindows; /* nr of windows open on this buffer */
475 
476  int b_flags; // various BF_ flags
477  int b_locked; // Buffer is being closed or referenced, don't
478  // let autocommands wipe it out.
479 
480  //
481  // b_ffname has the full path of the file (NULL for no name).
482  // b_sfname is the name as the user typed it (or NULL).
483  // b_fname is the same as b_sfname, unless ":cd" has been done,
484  // then it is the same as b_ffname (NULL for no name).
485  //
486  char_u *b_ffname; // full path file name
487  char_u *b_sfname; // short file name
488  char_u *b_fname; // current file name
489 
492 
493  int b_changed; // 'modified': Set to true if something in the
494  // file has been changed and not written out.
495 
499  ChangedtickDictItem changedtick_di;
500 
501  varnumber_T b_last_changedtick; // b:changedtick when TextChanged or
502  // TextChangedI was last triggered.
503  varnumber_T b_last_changedtick_pum; // b:changedtick when TextChangedP was
504  // last triggered.
505 
506  bool b_saving; /* Set to true if we are in the middle of
507  saving the buffer. */
508 
509  /*
510  * Changes to a buffer require updating of the display. To minimize the
511  * work, remember changes made and update everything at once.
512  */
513  bool b_mod_set; /* true when there are changes since the last
514  time the display was updated */
515  linenr_T b_mod_top; /* topmost lnum that was changed */
516  linenr_T b_mod_bot; /* lnum below last changed line, AFTER the
517  change */
518  long b_mod_xlines; /* number of extra buffer lines inserted;
519  negative when lines were deleted */
520 
521  wininfo_T *b_wininfo; /* list of last used info for each window */
522 
523  long b_mtime; /* last change time of original file */
524  long b_mtime_read; /* last change time when reading */
525  uint64_t b_orig_size; /* size of original file in bytes */
526  int b_orig_mode; /* mode of original file */
527 
528  fmark_T b_namedm[NMARKS]; /* current named marks (mark.c) */
529 
530  /* These variables are set when VIsual_active becomes FALSE */
532  int b_visual_mode_eval; /* b_visual.vi_mode for visualmode() */
533 
534  fmark_T b_last_cursor; // cursor position when last unloading this
535  // buffer
536  fmark_T b_last_insert; // where Insert mode was left
537  fmark_T b_last_change; // position of last change: '. mark
538 
539  /*
540  * the changelist contains old change positions
541  */
543  int b_changelistlen; /* number of active entries */
544  bool b_new_change; /* set by u_savecommon() */
545 
546  /*
547  * Character table, only used in charset.c for 'iskeyword'
548  * bitset with 4*64=256 bits: 1 bit per character 0-255.
549  */
550  uint64_t b_chartab[4];
551 
552  // Table used for mappings local to a buffer.
554 
555  /* First abbreviation local to a buffer. */
557  /* User commands local to the buffer. */
559  /*
560  * start and end of an operator, also used for '[ and ']
561  */
563  pos_T b_op_start_orig; // used for Insstart_orig
565 
566  bool b_marks_read; /* Have we read ShaDa marks yet? */
567 
568  /*
569  * The following only used in undo.c.
570  */
571  u_header_T *b_u_oldhead; /* pointer to oldest header */
572  u_header_T *b_u_newhead; /* pointer to newest header; may not be valid
573  if b_u_curhead is not NULL */
574  u_header_T *b_u_curhead; /* pointer to current header */
575  int b_u_numhead; /* current number of headers */
576  bool b_u_synced; /* entry lists are synced */
577  long b_u_seq_last; /* last used undo sequence number */
578  long b_u_save_nr_last; /* counter for last file write */
579  long b_u_seq_cur; /* hu_seq of header below which we are now */
580  time_t b_u_time_cur; /* uh_time of header below which we are now */
581  long b_u_save_nr_cur; /* file write nr after which we are now */
582 
583  /*
584  * variables for "U" command in undo.c
585  */
586  char_u *b_u_line_ptr; /* saved line for "U" command */
587  linenr_T b_u_line_lnum; /* line number of line in u_line */
588  colnr_T b_u_line_colnr; /* optional column number */
589 
590  bool b_scanned; /* ^N/^P have scanned this buffer */
591 
592  // flags for use of ":lmap" and IM control
593  long b_p_iminsert; // input mode for insert
594  long b_p_imsearch; // input mode for search
595 #define B_IMODE_USE_INSERT -1 // Use b_p_iminsert value for search
596 #define B_IMODE_NONE 0 // Input via none
597 #define B_IMODE_LMAP 1 // Input via langmap
598 # define B_IMODE_LAST 1
599 
600  short b_kmap_state; /* using "lmap" mappings */
601 # define KEYMAP_INIT 1 /* 'keymap' was set, call keymap_init() */
602 # define KEYMAP_LOADED 2 /* 'keymap' mappings have been loaded */
603  garray_T b_kmap_ga; /* the keymap table */
604 
605  /*
606  * Options local to a buffer.
607  * They are here because their value depends on the type of file
608  * or contents of the file being edited.
609  */
610  bool b_p_initialized; /* set when options initialized */
611 
612  LastSet b_p_scriptID[BV_COUNT]; // SIDs for buffer-local options
613 
614  int b_p_ai;
617  unsigned int b_bkc_flags;
618  int b_p_ci;
619  int b_p_bin;
620  int b_p_bomb;
624  int b_p_bl;
625  long b_p_channel;
626  int b_p_cin;
635  int b_p_eol;
637  int b_p_et;
645  int b_p_inf;
650  uint32_t b_p_inex_flags;
652  uint32_t b_p_inde_flags;
656  uint32_t b_p_fex_flags;
658  int b_p_lisp;
661  int b_p_ml;
663  int b_p_ma;
665  int b_p_pi;
667  int b_p_ro;
668  long b_p_sw;
669  long b_p_scbk;
670  int b_p_si;
671  long b_p_sts;
674  int b_p_swf;
675  long b_p_smc;
677  long b_p_ts;
678  long b_p_tw;
681  long b_p_wm;
685 
686  // local values for options which are normally global
692  int b_p_ar;
695  unsigned b_tc_flags;
698  long b_p_ul;
699  int b_p_udf;
701 
702  /* end of buffer options */
703 
704  /* values set from b_p_cino */
735  int b_ind_js;
741 
742  linenr_T b_no_eol_lnum; /* non-zero lnum when last line of next binary
743  * write should not have an end-of-line */
744 
745  int b_start_eol; /* last line had eol when it was read */
746  int b_start_ffc; /* first char of 'ff' when edit started */
747  char_u *b_start_fenc; /* 'fileencoding' when edit started or NULL */
748  int b_bad_char; /* "++bad=" argument when edit started or 0 */
749  int b_start_bomb; /* 'bomb' when it was read */
750 
751  ScopeDictDictItem b_bufvar;
753 
754  /* When a buffer is created, it starts without a swap file. b_may_swap is
755  * then set to indicate that a swap file may be opened later. It is reset
756  * if a swap file could not be opened.
757  */
759  bool b_did_warn; /* Set to true if user has been warned on first
760  change of a read-only file */
761 
762  /* Two special kinds of buffers:
763  * help buffer - used for help files, won't use a swap file.
764  * spell buffer - used for spell info, never displayed and doesn't have a
765  * file name.
766  */
767  bool b_help; /* TRUE for help file buffer (when set b_p_bt
768  is "help") */
769  bool b_spell; /* True for a spell file buffer, most fields
770  are not used! Use the B_SPELL macro to
771  access b_spell without #ifdef. */
772 
773  synblock_T b_s; /* Info related to syntax highlighting. w_s
774  * normally points to this, but some windows
775  * may use a different synblock_T. */
776 
777  signlist_T *b_signlist; /* list of signs to draw */
778 
779  Terminal *terminal; // Terminal instance associated with the buffer
780 
781  dict_T *additional_data; // Additional data from shada file if any.
782 
783  int b_mapped_ctrl_c; // modes where CTRL-C is mapped
784 
785  BufhlInfo b_bufhl_info; // buffer stored highlights
786 
787  kvec_t(BufhlLine *) b_bufhl_move_space; // temporary space for highlights
788 
789  // array of channelids which have asked to receive updates for this
790  // buffer.
791  kvec_t(uint64_t) update_channels;
792 
793  int b_diff_failed; // internal diff failed for this buffer
794 };
795 
796 /*
797  * Stuff for diff mode.
798  */
799 # define DB_COUNT 8 // up to four buffers can be diff'ed
800 
801 /*
802  * Each diffblock defines where a block of lines starts in each of the buffers
803  * and how many lines it occupies in that buffer. When the lines are missing
804  * in the buffer the df_count[] is zero. This is all counted in
805  * buffer lines.
806  * There is always at least one unchanged line in between the diffs.
807  * Otherwise it would have been included in the diff above or below it.
808  * df_lnum[] + df_count[] is the lnum below the change. When in one buffer
809  * lines have been inserted, in the other buffer df_lnum[] is the line below
810  * the insertion and df_count[] is zero. When appending lines at the end of
811  * the buffer, df_lnum[] is one beyond the end!
812  * This is using a linked list, because the number of differences is expected
813  * to be reasonable small. The list is sorted on lnum.
814  */
815 typedef struct diffblock_S diff_T;
816 struct diffblock_S {
818  linenr_T df_lnum[DB_COUNT]; /* line number in buffer */
819  linenr_T df_count[DB_COUNT]; /* nr of inserted/changed lines */
820 };
821 
822 #define SNAP_HELP_IDX 0
823 # define SNAP_AUCMD_IDX 1
824 # define SNAP_COUNT 2
825 
830 typedef struct tabpage_S tabpage_T;
831 struct tabpage_S {
839  long tp_old_Rows;
841  long tp_ch_used;
842 
845  buf_T *(tp_diffbuf[DB_COUNT]);
848  frame_T *(tp_snapshot[SNAP_COUNT]);
849  ScopeDictDictItem tp_winvar;
852 };
853 
854 /*
855  * Structure to cache info for displayed lines in w_lines[].
856  * Each logical line has one entry.
857  * The entry tells how the logical line is currently displayed in the window.
858  * This is updated when displaying the window.
859  * When the display is changed (e.g., when clearing the screen) w_lines_valid
860  * is changed to exclude invalid entries.
861  * When making changes to the buffer, wl_valid is reset to indicate wl_size
862  * may not reflect what is actually in the buffer. When wl_valid is FALSE,
863  * the entries can only be used to count the number of displayed lines used.
864  * wl_lnum and wl_lastlnum are invalid too.
865  */
866 typedef struct w_line {
867  linenr_T wl_lnum; /* buffer line number for logical line */
868  uint16_t wl_size; /* height in screen lines */
869  char wl_valid; /* TRUE values are valid for text in buffer */
870  char wl_folded; /* TRUE when this is a range of folded lines */
871  linenr_T wl_lastlnum; /* last buffer line number for logical line */
872 } wline_T;
873 
874 /*
875  * Windows are kept in a tree of frames. Each frame has a column (FR_COL)
876  * or row (FR_ROW) layout or is a leaf, which has a window.
877  */
878 struct frame_S {
879  char fr_layout; /* FR_LEAF, FR_COL or FR_ROW */
880  int fr_width;
881  int fr_newwidth; /* new width used in win_equal_rec() */
883  int fr_newheight; /* new height used in win_equal_rec() */
884  frame_T *fr_parent; /* containing frame or NULL */
885  frame_T *fr_next; /* frame right or below in same parent, NULL
886  for first */
887  frame_T *fr_prev; /* frame left or above in same parent, NULL
888  for last */
889  /* fr_child and fr_win are mutually exclusive */
890  frame_T *fr_child; /* first contained frame */
891  win_T *fr_win; /* window that fills this frame */
892 };
893 
894 #define FR_LEAF 0 /* frame is a leaf */
895 #define FR_ROW 1 /* frame with a row of windows */
896 #define FR_COL 2 /* frame with a column of windows */
897 
898 /*
899  * Struct used for highlighting 'hlsearch' matches, matches defined by
900  * ":match" and matches defined by match functions.
901  * For 'hlsearch' there is one pattern for all windows. For ":match" and the
902  * match functions there is a different pattern for each window.
903  */
904 typedef struct {
905  regmmatch_T rm; // points to the regexp program; contains last found
906  // match (may continue in next line)
907  buf_T *buf; // the buffer to search for a match
908  linenr_T lnum; // the line to search for a match
909  int attr; // attributes to be used for a match
910  int attr_cur; // attributes currently active in win_line()
911  linenr_T first_lnum; // first lnum to search for multi-line pat
912  colnr_T startcol; // in win_line() points to char where HL starts
913  colnr_T endcol; // in win_line() points to char where HL ends
914  bool is_addpos; // position specified directly by matchaddpos()
915  proftime_T tm; // for a time limit
916 } match_T;
917 
919 #define MAXPOSMATCH 8
920 
922 typedef struct
923 {
926  int len;
927 } llpos_T;
928 
931 typedef struct posmatch posmatch_T;
932 struct posmatch
933 {
935  int cur;
938 };
939 
940 /*
941  * matchitem_T provides a linked list for storing match items for ":match" and
942  * the match functions.
943  */
944 typedef struct matchitem matchitem_T;
945 struct matchitem {
947  int id;
948  int priority;
950  int hlg_id;
955 };
956 
957 /*
958  * Structure which contains all information that belongs to a window
959  *
960  * All row numbers are relative to the start of the window, except w_winrow.
961  */
962 struct window_S {
964 
966 
968  synblock_T *w_s; /* for :ownsyntax */
969 
972 
973  int w_hl_ids[HLF_COUNT];
974  int w_hl_attrs[HLF_COUNT];
975 
977 
978  win_T *w_prev; /* link to previous window */
979  win_T *w_next; /* link to next window */
980  bool w_closing; /* window is being closed, don't let
981  autocommands close it too. */
982 
983  frame_T *w_frame; /* frame containing this window */
984 
985  pos_T w_cursor; /* cursor position in buffer */
986 
987  colnr_T w_curswant; /* The column we'd like to be at. This is
988  used to try to stay in the same column
989  for up/down cursor motions. */
990 
991  int w_set_curswant; // If set, then update w_curswant the next
992  // time through cursupdate() to the
993  // current virtual column
994 
996 
997  // the next seven are used to update the visual part
1005 
1006  /*
1007  * "w_topline", "w_leftcol" and "w_skipcol" specify the offsets for
1008  * displaying the buffer.
1009  */
1010  linenr_T w_topline; /* buffer line number of the line at the
1011  top of the window */
1012  char w_topline_was_set; /* flag set to TRUE when topline is set,
1013  e.g. by winrestview() */
1014  int w_topfill; /* number of filler lines above w_topline */
1015  int w_old_topfill; /* w_topfill at last redraw */
1016  bool w_botfill; /* true when filler lines are actually
1017  below w_topline (at end of file) */
1018  bool w_old_botfill; /* w_botfill at last redraw */
1019  colnr_T w_leftcol; /* window column number of the left most
1020  character in the window; used when
1021  'wrap' is off */
1022  colnr_T w_skipcol; /* starting column when a single line
1023  doesn't fit in the window */
1024 
1025  /*
1026  * Layout of the window in the screen.
1027  * May need to add "msg_scrolled" to "w_winrow" in rare situations.
1028  */
1029  int w_winrow; /* first row of window in screen */
1030  int w_height; /* number of rows in window, excluding
1031  status/command line(s) */
1032  int w_status_height; /* number of status lines (0 or 1) */
1033  int w_wincol; /* Leftmost column of window in screen. */
1034  int w_width; /* Width of window, excluding separation. */
1035  int w_vsep_width; /* Number of separator columns (0 or 1). */
1036 
1037  /*
1038  * === start of cached values ====
1039  */
1040  /*
1041  * Recomputing is minimized by storing the result of computations.
1042  * Use functions in screen.c to check if they are valid and to update.
1043  * w_valid is a bitfield of flags, which indicate if specific values are
1044  * valid or need to be recomputed.
1045  */
1046  int w_valid;
1047  pos_T w_valid_cursor; /* last known position of w_cursor, used
1048  to adjust w_valid */
1049  colnr_T w_valid_leftcol; /* last known w_leftcol */
1050 
1051  /*
1052  * w_cline_height is the number of physical lines taken by the buffer line
1053  * that the cursor is on. We use this to avoid extra calls to plines().
1054  */
1055  int w_cline_height; /* current size of cursor line */
1056  bool w_cline_folded; /* cursor line is folded */
1057 
1058  int w_cline_row; /* starting row of the cursor line */
1059 
1060  colnr_T w_virtcol; /* column number of the cursor in the
1061  buffer line, as opposed to the column
1062  number we're at on the screen. This
1063  makes a difference on lines which span
1064  more than one screen line or when
1065  w_leftcol is non-zero */
1066 
1067  /*
1068  * w_wrow and w_wcol specify the cursor position in the window.
1069  * This is related to positions in the window, not in the display or
1070  * buffer, thus w_wrow is relative to w_winrow.
1071  */
1072  int w_wrow, w_wcol; /* cursor position in window */
1073 
1074  linenr_T w_botline; // number of the line below the bottom of
1075  // the window
1076  int w_empty_rows; // number of ~ rows in window
1077  int w_filler_rows; // number of filler rows at the end of the
1078  // window
1079 
1080  /*
1081  * Info about the lines currently in the window is remembered to avoid
1082  * recomputing it every time. The allocated size of w_lines[] is Rows.
1083  * Only the w_lines_valid entries are actually valid.
1084  * When the display is up-to-date w_lines[0].wl_lnum is equal to w_topline
1085  * and w_lines[w_lines_valid - 1].wl_lnum is equal to w_botline.
1086  * Between changing text and updating the display w_lines[] represents
1087  * what is currently displayed. wl_valid is reset to indicated this.
1088  * This is used for efficient redrawing.
1089  */
1090  int w_lines_valid; /* number of valid entries */
1092 
1093  garray_T w_folds; /* array of nested folds */
1094  bool w_fold_manual; /* when true: some folds are opened/closed
1095  manually */
1096  bool w_foldinvalid; /* when true: folding needs to be
1097  recomputed */
1098  int w_nrwidth; /* width of 'number' and 'relativenumber'
1099  column being used */
1100 
1101  /*
1102  * === end of cached values ===
1103  */
1104 
1105  int w_redr_type; /* type of redraw to be performed on win */
1106  int w_upd_rows; /* number of window lines to update when
1107  w_redr_type is REDRAW_TOP */
1108  linenr_T w_redraw_top; /* when != 0: first line needing redraw */
1109  linenr_T w_redraw_bot; /* when != 0: last line needing redraw */
1110  int w_redr_status; /* if TRUE status line must be redrawn */
1111 
1112  /* remember what is shown in the ruler for this window (if 'ruler' set) */
1113  pos_T w_ru_cursor; /* cursor position shown in ruler */
1114  colnr_T w_ru_virtcol; /* virtcol shown in ruler */
1115  linenr_T w_ru_topline; /* topline shown in ruler */
1116  linenr_T w_ru_line_count; /* line count used for ruler */
1117  int w_ru_topfill; /* topfill shown in ruler */
1118  char w_ru_empty; /* TRUE if ruler shows 0-1 (empty line) */
1119 
1120  int w_alt_fnum; /* alternate file (for # and CTRL-^) */
1121 
1122  alist_T *w_alist; /* pointer to arglist for this window */
1123  int w_arg_idx; /* current index in argument list (can be
1124  out of range!) */
1125  int w_arg_idx_invalid; /* editing another file than w_arg_idx */
1126 
1127  char_u *w_localdir; /* absolute path of local directory or
1128  NULL */
1129  /*
1130  * Options local to a window.
1131  * They are local because they influence the layout of the window or
1132  * depend on the window layout.
1133  * There are two values: w_onebuf_opt is local to the buffer currently in
1134  * this window, w_allbuf_opt is for all buffers in this window.
1135  */
1138 
1139  /* A few options have local flags for P_INSECURE. */
1140  uint32_t w_p_stl_flags; /* flags for 'statusline' */
1141  uint32_t w_p_fde_flags; /* flags for 'foldexpr' */
1142  uint32_t w_p_fdt_flags; /* flags for 'foldtext' */
1143  int *w_p_cc_cols; /* array of columns to highlight or NULL */
1144  int w_p_brimin; /* minimum width for breakindent */
1145  int w_p_brishift; /* additional shift for breakindent */
1146  bool w_p_brisbr; /* sbr in 'briopt' */
1147 
1148  /* transform a pointer to a "onebuf" option into a "allbuf" option */
1149 #define GLOBAL_WO(p) ((char *)p + sizeof(winopt_T))
1150 
1152 
1153  ScopeDictDictItem w_winvar;
1155 
1156  int w_farsi; /* for the window dependent Farsi functions */
1157 
1158  /*
1159  * The w_prev_pcmark field is used to check whether we really did jump to
1160  * a new line after setting the w_pcmark. If not, then we revert to
1161  * using the previous w_pcmark.
1162  */
1163  pos_T w_pcmark; /* previous context mark */
1164  pos_T w_prev_pcmark; /* previous w_pcmark */
1165 
1166  /*
1167  * the jumplist contains old cursor positions
1168  */
1169  xfmark_T w_jumplist[JUMPLISTSIZE];
1170  int w_jumplistlen; /* number of active entries */
1171  int w_jumplistidx; /* current position */
1172 
1173  int w_changelistidx; /* current position in b_changelist */
1174 
1175  matchitem_T *w_match_head; /* head of match list */
1176  int w_next_match_id; /* next match ID */
1177 
1178  /*
1179  * the tagstack grows from 0 upwards:
1180  * entry 0: older
1181  * entry 1: newer
1182  * entry 2: newest
1183  */
1184  taggy_T w_tagstack[TAGSTACKSIZE]; /* the tag stack */
1185  int w_tagstackidx; /* idx just below active entry */
1186  int w_tagstacklen; /* number of tags on stack */
1187 
1188  ScreenGrid w_grid; // the grid specific to the window
1189  bool w_pos_changed; // true if window position changed
1190 
1191  /*
1192  * w_fraction is the fractional row of the cursor within the window, from
1193  * 0 at the top row to FRACTION_MULT at the last row.
1194  * w_prev_fraction_row was the actual cursor row when w_fraction was last
1195  * calculated.
1196  */
1199 
1200  linenr_T w_nrwidth_line_count; /* line count when ml_nrwidth_width
1201  * was computed. */
1202  int w_nrwidth_width; /* nr of chars to print line count. */
1203 
1204  qf_info_T *w_llist; /* Location list for this window */
1205  /*
1206  * Location list reference used in the location list window.
1207  * In a non-location list window, w_llist_ref is NULL.
1208  */
1210 };
1211 
1212 static inline int win_hl_attr(win_T *wp, int hlf)
1213 {
1214  return wp->w_hl_attrs[hlf];
1215 }
1216 
1218 #define CHANGEDTICK(buf) \
1219  (=== Include buffer.h & use buf_(get|set|inc)_changedtick ===)
1220 
1221 #endif // NVIM_BUFFER_DEFS_H
colnr_T endcol
Definition: buffer_defs.h:913
int w_set_curswant
Definition: buffer_defs.h:991
long wo_fdl
Definition: buffer_defs.h:179
int wo_rnu
Definition: buffer_defs.h:203
bool b_new_change
Definition: buffer_defs.h:544
int b_syn_topgrp
Definition: buffer_defs.h:407
linenr_T w_old_cursor_lnum
last known end of visual part
Definition: buffer_defs.h:999
int b_ind_scopedecl_code
Definition: buffer_defs.h:733
long b_p_tw
&#39;textwidth&#39;
Definition: buffer_defs.h:678
int b_orig_mode
Definition: buffer_defs.h:526
int b_syn_conceal
Definition: buffer_defs.h:408
char_u * b_p_spl
Definition: buffer_defs.h:440
linenr_T first_lnum
Definition: buffer_defs.h:911
Definition: buffer_defs.h:326
win_T * fr_win
Definition: buffer_defs.h:891
char_u * b_p_cms
&#39;commentstring&#39;
Definition: buffer_defs.h:631
ScopeDictDictItem b_bufvar
Variable for "b:" Dictionary.
Definition: buffer_defs.h:751
frame_T * w_frame
Definition: buffer_defs.h:983
char_u * wo_stl
Definition: buffer_defs.h:227
int wo_fen_save
Definition: buffer_defs.h:175
struct argentry aentry_T
long b_syn_sync_minlines
Definition: buffer_defs.h:400
Definition: quickfix.c:107
char_u * b_p_tc
&#39;tagcase&#39; local value
Definition: buffer_defs.h:694
match_T hl
struct for doing the actual highlighting
Definition: buffer_defs.h:953
garray_T b_ucmds
Definition: buffer_defs.h:558
int w_status_height
Definition: buffer_defs.h:1032
char_u * b_p_fex
&#39;formatexpr&#39;
Definition: buffer_defs.h:655
int scid_T
Type used for script ID.
Definition: typval.h:247
long count
Definition: buffer_defs.h:378
char_u * b_p_ff
&#39;fileformat&#39;
Definition: buffer_defs.h:641
colnr_T startcol
Definition: buffer_defs.h:912
Definition: buffer_defs.h:266
int b_u_numhead
Definition: buffer_defs.h:575
Definition: buffer_defs.h:134
uint16_t disptick_T
Definition: buffer_defs.h:99
fmark_T b_last_change
Definition: buffer_defs.h:537
long b_p_imsearch
Definition: buffer_defs.h:594
qf_info_T * w_llist_ref
Definition: buffer_defs.h:1209
int w_upd_rows
Definition: buffer_defs.h:1106
Definition: buffer_defs.h:831
long wo_cole
Definition: buffer_defs.h:241
linenr_T w_ru_line_count
Definition: buffer_defs.h:1116
char_u * b_p_bh
&#39;bufhidden&#39;
Definition: buffer_defs.h:621
buffheader_T sr_redobuff
Definition: buffer_defs.h:151
uint64_t b_chartab[4]
Definition: buffer_defs.h:550
int br_fnum
Definition: buffer_defs.h:15
linenr_T b_mod_bot
Definition: buffer_defs.h:516
uint32_t b_p_inex_flags
flags for &#39;includeexpr&#39;
Definition: buffer_defs.h:650
int w_hl_attrs[HLF_COUNT]
&#39;winhighlight&#39; final attrs
Definition: buffer_defs.h:974
buffheader_T save_readbuf1
Definition: buffer_defs.h:331
char_u * b_syn_isk
Definition: buffer_defs.h:443
int w_filler_rows
Definition: buffer_defs.h:1077
buffblock_T * b_next
Definition: buffer_defs.h:135
buf_T * b_next
Definition: buffer_defs.h:471
int b_p_ma
&#39;modifiable&#39;
Definition: buffer_defs.h:663
char_u * b_start_fenc
Definition: buffer_defs.h:747
int b_p_fixeol
&#39;fixendofline&#39;
Definition: buffer_defs.h:636
long tp_old_Rows
Rows when Tab page was left.
Definition: buffer_defs.h:839
int tb_silent
Definition: buffer_defs.h:320
Struct which encapsulates inode/dev_id information.
Definition: fs_defs.h:12
int b_p_et
&#39;expandtab&#39;
Definition: buffer_defs.h:637
char w_topline_was_set
Definition: buffer_defs.h:1012
proftime_T tm
Definition: buffer_defs.h:915
char_u * b_p_cpt
&#39;complete&#39;
Definition: buffer_defs.h:632
int b_ind_unclosed2
Definition: buffer_defs.h:724
char_u * b_p_keymap
&#39;keymap&#39;
Definition: buffer_defs.h:684
int b_ind_case
Definition: buffer_defs.h:713
int b_bad_char
Definition: buffer_defs.h:748
Definition: buffer_defs.h:149
buf_T * buf
Definition: buffer_defs.h:907
int wo_nu
Definition: buffer_defs.h:201
#define NMARKS
Maximum possible number of letter marks.
Definition: mark_defs.h:17
int b_locked
Definition: buffer_defs.h:477
bool is_addpos
Definition: buffer_defs.h:914
colnr_T w_old_visual_col
last known start of visual part
Definition: buffer_defs.h:1003
int w_changelistidx
Definition: buffer_defs.h:1173
synstate_T * b_sst_first
Definition: buffer_defs.h:427
char_u * ae_fname
Definition: buffer_defs.h:297
int b_start_ffc
Definition: buffer_defs.h:746
int tb_maplen
Definition: buffer_defs.h:319
int w_tagstackidx
Definition: buffer_defs.h:1185
char_u * b_p_ofu
&#39;omnifunc&#39;
Definition: buffer_defs.h:634
#define MAX_MAPHASH
Definition: buffer_defs.h:455
buffheader_T sr_old_redobuff
Definition: buffer_defs.h:152
int ae_fnum
Definition: buffer_defs.h:298
pos_T wi_fpos
Definition: buffer_defs.h:270
int m_keylen
Definition: buffer_defs.h:345
int b_syn_containedin
Definition: buffer_defs.h:396
int b_p_si
&#39;smartindent&#39;
Definition: buffer_defs.h:670
u_header_T * b_u_newhead
Definition: buffer_defs.h:572
int w_tagstacklen
Definition: buffer_defs.h:1186
int b_p_bl
&#39;buflisted&#39;
Definition: buffer_defs.h:624
int w_wrow
Definition: buffer_defs.h:1072
int wo_wfh
Definition: buffer_defs.h:207
int wo_bri
Definition: buffer_defs.h:163
char_u * b_p_bt
&#39;buftype&#39;
Definition: buffer_defs.h:622
int w_winrow
Definition: buffer_defs.h:1029
int b_p_et_nobin
b_p_et saved for binary mode
Definition: buffer_defs.h:638
int id
match ID
Definition: buffer_defs.h:947
#define JUMPLISTSIZE
Maximum number of marks in jump list.
Definition: mark_defs.h:29
long b_p_wm_nobin
b_p_wm saved for binary mode
Definition: buffer_defs.h:682
synstate_T * b_sst_array
Definition: buffer_defs.h:425
int w_nrwidth_width
Definition: buffer_defs.h:1202
char_u * b_p_def
&#39;define&#39; local value
Definition: buffer_defs.h:647
int cur
internal position counter
Definition: buffer_defs.h:935
varnumber_T b_last_changedtick
Definition: buffer_defs.h:501
handle_T handle
unique identifier for the window
Definition: buffer_defs.h:963
int b_ind_level
Definition: buffer_defs.h:705
ScopeDictDictItem w_winvar
Variable for "w:" dictionary.
Definition: buffer_defs.h:1153
int w_p_brishift
Definition: buffer_defs.h:1145
int b_ind_unclosed
Definition: buffer_defs.h:723
ChangedtickDictItem changedtick_di
Definition: buffer_defs.h:499
String save_inputbuf
Definition: buffer_defs.h:333
buf_T * b_prev
Definition: buffer_defs.h:472
int b_sst_len
Definition: buffer_defs.h:426
LastSet b_p_scriptID[BV_COUNT]
Definition: buffer_defs.h:612
garray_T w_folds
Definition: buffer_defs.h:1093
mapblock_T * m_next
Definition: buffer_defs.h:341
frame_T * tp_topframe
topframe for the windows
Definition: buffer_defs.h:834
Definition: defs.h:77
tabpage_T * tp_next
next tabpage or NULL
Definition: buffer_defs.h:833
#define DB_COUNT
Definition: buffer_defs.h:799
linenr_T lnum
line number
Definition: buffer_defs.h:924
int b_ind_scopedecl
Definition: buffer_defs.h:732
long b_p_sw
&#39;shiftwidth&#39;
Definition: buffer_defs.h:668
BufhlInfo b_bufhl_info
Definition: buffer_defs.h:785
int b_p_pi
&#39;preserveindent&#39;
Definition: buffer_defs.h:665
qf_info_T * w_llist
Definition: buffer_defs.h:1204
bool wi_optset
Definition: buffer_defs.h:271
int w_redr_status
Definition: buffer_defs.h:1110
int b_p_ml
&#39;modeline&#39;
Definition: buffer_defs.h:661
int fr_width
Definition: buffer_defs.h:880
int w_arg_idx
Definition: buffer_defs.h:1123
wininfo_T * wi_next
Definition: buffer_defs.h:267
Definition: bufhl_defs.h:24
bool w_closing
Definition: buffer_defs.h:980
int wo_wfw
Definition: buffer_defs.h:209
int old_mod_mask
Definition: buffer_defs.h:330
char w_old_visual_mode
last known VIsual_mode
Definition: buffer_defs.h:998
long tp_ch_used
Definition: buffer_defs.h:841
dict_T * b_vars
b: scope dictionary.
Definition: buffer_defs.h:752
bool w_p_brisbr
Definition: buffer_defs.h:1146
int b_ind_matching_paren
Definition: buffer_defs.h:728
int b_p_inf
&#39;infercase&#39;
Definition: buffer_defs.h:645
int b_flags
Definition: buffer_defs.h:476
ScopeDictDictItem tp_winvar
Variable for "t:" Dictionary.
Definition: buffer_defs.h:849
char_u * m_str
Definition: buffer_defs.h:343
posmatch_T pos
position matches
Definition: buffer_defs.h:952
int b_ind_first_open
Definition: buffer_defs.h:708
Definition: buffer_defs.h:932
fmark_T b_last_cursor
Definition: buffer_defs.h:534
char_u * b_ffname
Definition: buffer_defs.h:486
Definition: buffer_defs.h:357
int b_ind_if_for_while
Definition: buffer_defs.h:739
bool b_u_synced
Definition: buffer_defs.h:576
frame_T * fr_prev
Definition: buffer_defs.h:887
typebuf_T save_typebuf
Definition: buffer_defs.h:327
linenr_T b_mod_top
Definition: buffer_defs.h:515
long b_syn_sync_linebreaks
Definition: buffer_defs.h:402
dict_T * additional_data
Definition: buffer_defs.h:781
int tb_change_cnt
Definition: buffer_defs.h:322
char_u * b_p_isk
&#39;iskeyword&#39;
Definition: buffer_defs.h:646
char_u * b_p_gp
&#39;grepprg&#39; local value
Definition: buffer_defs.h:687
Definition: option_defs.h:771
char_u * b_syn_linecont_pat
Definition: buffer_defs.h:403
pos_T b_op_start
Definition: buffer_defs.h:562
u_header_T * b_u_curhead
Definition: buffer_defs.h:574
garray_T b_syn_clusters
Definition: buffer_defs.h:393
int w_height
Definition: buffer_defs.h:1030
kvec_t(BufhlLine *) b_bufhl_move_space
linenr_T wl_lastlnum
Definition: buffer_defs.h:871
char_u * wo_scl
Definition: buffer_defs.h:247
int b_ind_unclosed_wrapped
Definition: buffer_defs.h:726
char_u * b_p_kp
&#39;keywordprg&#39;
Definition: buffer_defs.h:657
bool b_spell
Definition: buffer_defs.h:769
int wo_fen
Definition: buffer_defs.h:173
synblock_T b_s
Definition: buffer_defs.h:773
struct arglist alist_T
int w_wincol
Definition: buffer_defs.h:1033
char_u * b_p_mp
&#39;makeprg&#39; local value
Definition: buffer_defs.h:688
int w_topfill
Definition: buffer_defs.h:1014
int b_nospell_cluster_id
Definition: buffer_defs.h:395
linenr_T b_sst_check_lnum
Definition: buffer_defs.h:430
Definition: option_defs.h:817
int b_p_et_nopaste
b_p_et saved for paste mode
Definition: buffer_defs.h:639
synblock_T * w_s
Definition: buffer_defs.h:968
int b_ind_java
Definition: buffer_defs.h:734
diff_T * tp_first_diff
Definition: buffer_defs.h:844
int b_p_swf
&#39;swapfile&#39;
Definition: buffer_defs.h:674
int w_ru_topfill
Definition: buffer_defs.h:1117
Definition: buffer_defs.h:142
size_t bh_index
Definition: buffer_defs.h:145
alist_T * w_alist
Definition: buffer_defs.h:1122
colnr_T col
column number
Definition: buffer_defs.h:925
frame_T * fr_next
Definition: buffer_defs.h:885
Terminal * terminal
Definition: buffer_defs.h:779
Structure defining extended mark (mark with file name attached)
Definition: mark_defs.h:43
char_u * b_p_cink
&#39;cinkeys&#39;
Definition: buffer_defs.h:628
garray_T wi_folds
Definition: buffer_defs.h:274
char_u * b_p_dict
&#39;dictionary&#39; local value
Definition: buffer_defs.h:696
long match
Definition: buffer_defs.h:379
garray_T b_kmap_ga
Definition: buffer_defs.h:603
int wo_fdl_save
Definition: buffer_defs.h:181
signlist_T * b_signlist
Definition: buffer_defs.h:777
int b_visual_mode_eval
Definition: buffer_defs.h:532
visualinfo_T b_visual
Definition: buffer_defs.h:531
int b_ind_cpp_namespace
Definition: buffer_defs.h:738
bool w_botfill
Definition: buffer_defs.h:1016
int b_p_bomb
&#39;bomb&#39;
Definition: buffer_defs.h:620
char_u * b_p_efm
&#39;errorformat&#39; local value
Definition: buffer_defs.h:689
int fr_newwidth
Definition: buffer_defs.h:881
Definition: buffer_defs.h:160
wininfo_T * wi_prev
Definition: buffer_defs.h:268
char_u * b_p_indk
&#39;indentkeys&#39;
Definition: buffer_defs.h:653
long b_p_channel
&#39;channel&#39;
Definition: buffer_defs.h:625
colnr_T w_valid_leftcol
Definition: buffer_defs.h:1049
char_u * wo_cocu
Definition: buffer_defs.h:239
fmark_T fmark
Definition: buffer_defs.h:123
hashtab_T b_keywtab
Definition: buffer_defs.h:387
linenr_T w_topline
Definition: buffer_defs.h:1010
int colnr_T
Column number type.
Definition: pos.h:9
char_u * b_p_nf
&#39;nrformats&#39;
Definition: buffer_defs.h:664
char_u * b_p_menc
&#39;makeencoding&#39;
Definition: buffer_defs.h:659
int b_syn_ic
Definition: buffer_defs.h:390
int wo_diff_saved
Definition: buffer_defs.h:231
int b_ind_case_break
Definition: buffer_defs.h:715
time_t b_u_time_cur
Definition: buffer_defs.h:580
colnr_T w_ru_virtcol
Definition: buffer_defs.h:1114
char_u * b_p_cino
&#39;cinoptions&#39;
Definition: buffer_defs.h:627
int w_next_match_id
Definition: buffer_defs.h:1176
win_T * wi_win
Definition: buffer_defs.h:269
Definition: buffer_defs.h:866
char_u * tp_localdir
Absolute path of local cwd or NULL.
Definition: buffer_defs.h:851
char_u * b_p_cfu
&#39;completefunc&#39;
Definition: buffer_defs.h:633
int w_lines_valid
Definition: buffer_defs.h:1090
long b_p_tw_nopaste
b_p_tw saved for paste mode
Definition: buffer_defs.h:680
char wl_folded
Definition: buffer_defs.h:870
#define MAXPOSMATCH
number of positions supported by matchaddpos()
Definition: buffer_defs.h:919
char fr_layout
Definition: buffer_defs.h:879
mapblock_T * b_first_abbr
Definition: buffer_defs.h:556
char m_expr
Definition: buffer_defs.h:350
int b_p_eol
&#39;endofline&#39;
Definition: buffer_defs.h:635
int b_p_cin
&#39;cindent&#39;
Definition: buffer_defs.h:626
int b_ind_open_extra
Definition: buffer_defs.h:709
unsigned int b_bkc_flags
flags for &#39;backupco
Definition: buffer_defs.h:617
int w_empty_rows
Definition: buffer_defs.h:1076
int b_ind_cpp_baseclass
Definition: buffer_defs.h:721
int b_cjk
Definition: buffer_defs.h:441
int fr_newheight
Definition: buffer_defs.h:883
int w_valid
Definition: buffer_defs.h:1046
wline_T * w_lines
Definition: buffer_defs.h:1091
int b_syn_sync_flags
Definition: buffer_defs.h:398
buffheader_T save_readbuf2
Definition: buffer_defs.h:332
bool w_pos_changed
Definition: buffer_defs.h:1189
char_u * b_p_fenc
&#39;fileencoding&#39;
Definition: buffer_defs.h:640
char_u * wo_fdm_save
Definition: buffer_defs.h:185
struct taggy taggy_T
regmmatch_T match
regexp program for pattern
Definition: buffer_defs.h:951
diff_T * df_next
Definition: buffer_defs.h:817
int b_ind_close_extra
Definition: buffer_defs.h:710
Definition: buffer_defs.h:296
char_u * b_p_mps
&#39;matchpairs&#39;
Definition: buffer_defs.h:660
char_u * tb_buf
Definition: buffer_defs.h:314
pos_T b_op_start_orig
Definition: buffer_defs.h:563
int conceal_char
cchar for Conceal highlighting
Definition: buffer_defs.h:954
int b_nwindows
Definition: buffer_defs.h:474
Structure defining single local mark.
Definition: mark_defs.h:35
Definition: buffer_defs.h:904
char m_silent
Definition: buffer_defs.h:348
long b_mod_xlines
Definition: buffer_defs.h:518
bool w_fold_manual
Definition: buffer_defs.h:1094
int w_p_brimin
Definition: buffer_defs.h:1144
int wo_wrap_save
Definition: buffer_defs.h:237
char_u * wo_cc
Definition: buffer_defs.h:225
int b_start_bomb
Definition: buffer_defs.h:749
char_u * b_p_syn
&#39;syntax&#39;
Definition: buffer_defs.h:676
garray_T al_ga
Definition: buffer_defs.h:284
Definition: buffer_defs.h:465
win_T * w_next
Definition: buffer_defs.h:979
char_u * b_p_path
&#39;path&#39; local value
Definition: buffer_defs.h:691
int br_buf_free_count
Definition: buffer_defs.h:16
linenr_T w_redraw_bot
Definition: buffer_defs.h:1109
uint32_t b_p_fex_flags
flags for &#39;formatexpr&#39;
Definition: buffer_defs.h:656
char_u * b_p_inde
&#39;indentexpr&#39;
Definition: buffer_defs.h:651
int b_ind_unclosed_whiteok
Definition: buffer_defs.h:727
proftime_T total
Definition: buffer_defs.h:376
int w_prev_fraction_row
Definition: buffer_defs.h:1198
char_u * pattern
pattern to highlight
Definition: buffer_defs.h:949
int attr
Definition: buffer_defs.h:909
bool file_id_valid
Definition: buffer_defs.h:490
Definition: buffer_defs.h:313
int cur_fnum
Definition: buffer_defs.h:125
bool b_may_swap
Definition: buffer_defs.h:758
win_T * tp_curwin
current window in this Tab page
Definition: buffer_defs.h:835
char_u * start
Definition: buffer_defs.h:358
linenr_T wl_lnum
Definition: buffer_defs.h:867
buffblock_T bh_first
Definition: buffer_defs.h:143
int wo_scb_save
Definition: buffer_defs.h:233
Definition: coverity-model.c:66
char_u * b_p_spf
Definition: buffer_defs.h:439
int b_syn_linecont_ic
Definition: buffer_defs.h:406
int m_mode
Definition: buffer_defs.h:346
Definition: garray.h:12
int tb_len
Definition: buffer_defs.h:318
int b_ind_keep_case_label
Definition: buffer_defs.h:736
regprog_T * b_syn_linecont_prog
Definition: buffer_defs.h:404
colnr_T w_curswant
Definition: buffer_defs.h:987
int b_ind_in_comment2
Definition: buffer_defs.h:720
mapblock_T * b_maphash[MAX_MAPHASH]
Definition: buffer_defs.h:553
uint64_t b_orig_size
Definition: buffer_defs.h:525
int userhl
Definition: buffer_defs.h:359
colnr_T w_virtcol
Definition: buffer_defs.h:1060
bool b_scanned
Definition: buffer_defs.h:590
int typebuf_valid
Definition: buffer_defs.h:328
char w_ru_empty
Definition: buffer_defs.h:1118
colnr_T w_old_cursor_lcol
last column for block visual part
Definition: buffer_defs.h:1001
bool b_mod_set
Definition: buffer_defs.h:513
int b_ind_in_comment
Definition: buffer_defs.h:719
int b_syn_folditems
Definition: buffer_defs.h:409
Definition: memline_defs.h:32
long w_scbind_pos
Definition: buffer_defs.h:1151
win_T * tp_prevwin
previous window in this Tab page
Definition: buffer_defs.h:836
Definition: buffer_defs.h:945
varnumber_T b_last_changedtick_pum
Definition: buffer_defs.h:503
Definition: buffer_defs.h:13
char_u * b_p_tsr
&#39;thesaurus&#39; local value
Definition: buffer_defs.h:697
linenr_T w_last_cursorline
where last &#39;cursorline&#39; was drawn
Definition: buffer_defs.h:995
Stores an identifier of a script or channel that last set an option.
Definition: option_defs.h:826
int tp_diff_invalid
list of diffs is outdated
Definition: buffer_defs.h:846
Definition: syntax_defs.h:53
int w_arg_idx_invalid
Definition: buffer_defs.h:1125
memline_T b_ml
Definition: buffer_defs.h:469
long b_p_wm_nopaste
b_p_wm saved for paste mode
Definition: buffer_defs.h:683
int b_ind_param
Definition: buffer_defs.h:716
bool b_marks_read
Definition: buffer_defs.h:566
colnr_T w_skipcol
Definition: buffer_defs.h:1022
int w_hl_needs_update
attrs need to be recalculated
Definition: buffer_defs.h:976
#define SNAP_COUNT
Definition: buffer_defs.h:824
hashtab_T b_keywtab_ic
Definition: buffer_defs.h:388
regmmatch_T rm
Definition: buffer_defs.h:905
int wo_rl
Definition: buffer_defs.h:213
int b_ind_open_left_imag
Definition: buffer_defs.h:711
buf_T * w_buffer
Definition: buffer_defs.h:965
int attr_cur
Definition: buffer_defs.h:910
int tb_buflen
Definition: buffer_defs.h:316
int b_sst_freecount
Definition: buffer_defs.h:429
int b_spell_cluster_id
Definition: buffer_defs.h:394
long b_p_ts
&#39;tabstop&#39;
Definition: buffer_defs.h:677
char_u * b_p_tags
&#39;tags&#39; local value
Definition: buffer_defs.h:693
pos_T w_prev_pcmark
Definition: buffer_defs.h:1164
pos_T b_op_end
Definition: buffer_defs.h:564
int w_hl_id_normal
&#39;winhighlight&#39; normal id
Definition: buffer_defs.h:970
char_u * wo_fde
Definition: buffer_defs.h:191
struct w_line wline_T
typedef TV_DICTITEM_STRUCT(sizeof("changedtick")) ChangedtickDictItem
int b_mapped_ctrl_c
Definition: buffer_defs.h:783
char_u * b_p_cinw
&#39;cinwords&#39;
Definition: buffer_defs.h:629
bool b_p_initialized
Definition: buffer_defs.h:610
char_u * b_p_bkc
&#39;backupco
Definition: buffer_defs.h:616
long b_p_scbk
&#39;scrollback&#39;
Definition: buffer_defs.h:669
Definition: buffer_defs.h:962
u_header_T * b_u_oldhead
Definition: buffer_defs.h:571
dict_T * w_vars
Dictionary with w: variables.
Definition: buffer_defs.h:1154
int b_ind_unclosed_noignore
Definition: buffer_defs.h:725
int tb_off
Definition: buffer_defs.h:317
long b_u_seq_cur
Definition: buffer_defs.h:579
int b_syn_spell
Definition: buffer_defs.h:391
syn_time_T b_syn_linecont_time
Definition: buffer_defs.h:405
long b_p_ul
&#39;undolevels&#39; local value
Definition: buffer_defs.h:698
fmark_T b_changelist[JUMPLISTSIZE]
Definition: buffer_defs.h:542
char_u * b_p_sua
&#39;suffixesadd&#39;
Definition: buffer_defs.h:673
int priority
match priority
Definition: buffer_defs.h:948
long wo_fdn
Definition: buffer_defs.h:189
int id
id of this arglist
Definition: buffer_defs.h:286
long b_mtime_read
Definition: buffer_defs.h:524
long b_p_smc
&#39;synmaxcol&#39;
Definition: buffer_defs.h:675
pos_T w_pcmark
Definition: buffer_defs.h:1163
uint32_t w_p_fdt_flags
Definition: buffer_defs.h:1142
fmark_T b_namedm[NMARKS]
Definition: buffer_defs.h:528
Definition: buffer_defs.h:283
handle_T handle
Definition: buffer_defs.h:466
int wo_wrap
Definition: buffer_defs.h:235
bool b_help
Definition: buffer_defs.h:767
char_u * w_localdir
Definition: buffer_defs.h:1127
char_u * m_orig_str
Definition: buffer_defs.h:344
int b_p_ar
&#39;autoread&#39; local value
Definition: buffer_defs.h:692
int wo_pvw
Definition: buffer_defs.h:211
char_u * b_p_lw
&#39;lispwords&#39; local value
Definition: buffer_defs.h:700
int b_p_ci
&#39;copyindent&#39;
Definition: buffer_defs.h:618
int b_ind_case_code
Definition: buffer_defs.h:714
short b_syn_sync_id
Definition: buffer_defs.h:399
long b_u_seq_last
Definition: buffer_defs.h:577
char_u * wo_fdi
Definition: buffer_defs.h:177
int handle_T
Definition: types.h:17
regprog_T * b_cap_prog
Definition: buffer_defs.h:438
linenr_T w_ru_topline
Definition: buffer_defs.h:1115
char_u * b_p_inex
&#39;includeexpr&#39;
Definition: buffer_defs.h:649
long linenr_T
Definition: pos.h:4
int b_syn_error
Definition: buffer_defs.h:389
bool w_cline_folded
Definition: buffer_defs.h:1056
int hlg_id
highlight group ID
Definition: buffer_defs.h:950
int wo_fdc_save
Definition: buffer_defs.h:171
int b_ind_hash_comment
Definition: buffer_defs.h:737
char_u * wo_winhl
Definition: buffer_defs.h:249
Definition: hashtab.h:62
int b_ind_comment
Definition: buffer_defs.h:718
proftime_T slowest
Definition: buffer_defs.h:377
int b_p_udf
&#39;undofile&#39;
Definition: buffer_defs.h:699
int cur_match
Definition: buffer_defs.h:124
Definition: buffer_defs.h:878
int b_p_ai_nopaste
b_p_ai saved for paste mode
Definition: buffer_defs.h:615
int b_ind_no_brace
Definition: buffer_defs.h:707
char wl_valid
Definition: buffer_defs.h:869
long b_mtime
Definition: buffer_defs.h:523
bool w_foldinvalid
Definition: buffer_defs.h:1096
Same as lpos_T, but with additional field len.
Definition: buffer_defs.h:922
linenr_T b_no_eol_lnum
Definition: buffer_defs.h:742
pos_T w_cursor
Definition: buffer_defs.h:985
int64_t varnumber_T
Type used for VimL VAR_NUMBER values.
Definition: typval.h:28
int wo_scb
Definition: buffer_defs.h:229
long b_syn_sync_maxlines
Definition: buffer_defs.h:401
linenr_T w_nrwidth_line_count
Definition: buffer_defs.h:1200
int wo_crb
Definition: buffer_defs.h:243
buf_T * br_buf
Definition: buffer_defs.h:14
long wo_scr
Definition: buffer_defs.h:217
handle_T handle
Definition: buffer_defs.h:832
int b_p_bin
&#39;binary&#39;
Definition: buffer_defs.h:619
int fr_height
Definition: buffer_defs.h:882
int wo_cul
Definition: buffer_defs.h:223
colnr_T w_old_cursor_fcol
first column for block visual part
Definition: buffer_defs.h:1000
matchitem_T * next
Definition: buffer_defs.h:946
win_T * tp_firstwin
first window in this Tab page
Definition: buffer_defs.h:837
char_u * b_p_qe
&#39;quoteescape&#39;
Definition: buffer_defs.h:666
scid_T m_script_ID
Definition: buffer_defs.h:351
Definition: buffer_defs.h:386
#define TAGSTACKSIZE
Maximum number of tags in tag stack.
Definition: mark_defs.h:32
int w_old_topfill
Definition: buffer_defs.h:1015
matchitem_T * w_match_head
Definition: buffer_defs.h:1175
bool b_saving
Definition: buffer_defs.h:506
synstate_T * b_sst_firstfree
Definition: buffer_defs.h:428
frame_T * fr_child
Definition: buffer_defs.h:890
winopt_T w_allbuf_opt
Definition: buffer_defs.h:1137
int b_changed
Definition: buffer_defs.h:493
Definition: highlight_defs.h:93
unsigned char char_u
Definition: types.h:11
ScreenGrid w_grid
Definition: buffer_defs.h:1188
Definition: undo_defs.h:34
wininfo_T * b_wininfo
Definition: buffer_defs.h:521
Definition: buffer_defs.h:340
long b_u_save_nr_cur
Definition: buffer_defs.h:581
int w_cline_row
Definition: buffer_defs.h:1058
unsigned b_tc_flags
flags for &#39;tagcase&#39;
Definition: buffer_defs.h:695
linenr_T lnum
Definition: buffer_defs.h:908
int tp_diff_update
update diffs before redrawing
Definition: buffer_defs.h:847
int b_ind_func_type
Definition: buffer_defs.h:717
char_u * b_u_line_ptr
Definition: buffer_defs.h:586
Definition: grid_defs.h:36
linenr_T toplnum
top buffer line
Definition: buffer_defs.h:936
Definition: buffer_defs.h:816
int b_ind_js
Definition: buffer_defs.h:735
colnr_T w_leftcol
Definition: buffer_defs.h:1019
int wo_list
Definition: buffer_defs.h:199
colnr_T w_old_curswant
last known value of Curswant
Definition: buffer_defs.h:1004
garray_T b_syn_patterns
Definition: buffer_defs.h:392
int w_cline_height
Definition: buffer_defs.h:1055
char_u * b_p_spc
Definition: buffer_defs.h:437
int b_diff_failed
Definition: buffer_defs.h:793
Definition: regexp_defs.h:55
long tp_old_Columns
Columns when Tab page was left.
Definition: buffer_defs.h:840
dict_T * tp_vars
Internal variables, local to tab page.
Definition: buffer_defs.h:850
int tb_no_abbr_cnt
Definition: buffer_defs.h:321
linenr_T botlnum
bottom buffer line
Definition: buffer_defs.h:937
Definition: sign_defs.h:10
int wo_lbr
Definition: buffer_defs.h:197
int w_hl_attr_normal
&#39;winhighlight&#39; normal final attrs
Definition: buffer_defs.h:971
winopt_T w_onebuf_opt
Definition: buffer_defs.h:1136
char_u * wo_rlc
Definition: buffer_defs.h:215
long b_p_tw_nobin
b_p_tw saved for binary mode
Definition: buffer_defs.h:679
char_u * b_p_ep
&#39;equalprg&#39; local value
Definition: buffer_defs.h:690
uint16_t wl_size
Definition: buffer_defs.h:868
int w_alt_fnum
Definition: buffer_defs.h:1120
int w_jumplistlen
Definition: buffer_defs.h:1170
colnr_T b_u_line_colnr
Definition: buffer_defs.h:588
buffblock_T * bh_curr
Definition: buffer_defs.h:144
Definition: pos.h:21
int b_ind_paren_prev
Definition: buffer_defs.h:729
linenr_T w_redraw_top
Definition: buffer_defs.h:1108
long b_p_sts_nopaste
b_p_sts saved for paste mode
Definition: buffer_defs.h:672
int w_nrwidth
Definition: buffer_defs.h:1098
char_u * wo_briopt
Definition: buffer_defs.h:165
long b_u_save_nr_last
Definition: buffer_defs.h:578
char_u * tb_noremap
Definition: buffer_defs.h:315
long wo_nuw
Definition: buffer_defs.h:205
garray_T b_langp
Definition: buffer_defs.h:434
int b_ind_jump_label
Definition: buffer_defs.h:712
fmark_T b_last_insert
Definition: buffer_defs.h:536
int b_start_eol
Definition: buffer_defs.h:745
int b_ind_cpp_extern_c
Definition: buffer_defs.h:740
int wo_cuc
Definition: buffer_defs.h:221
uint32_t w_p_fde_flags
Definition: buffer_defs.h:1141
long wo_fdc
Definition: buffer_defs.h:169
frame_T * fr_parent
Definition: buffer_defs.h:884
win_T * tp_lastwin
last window in this Tab page
Definition: buffer_defs.h:838
int wo_crb_save
Definition: buffer_defs.h:245
int m_noremap
Definition: buffer_defs.h:347
Definition: regexp_defs.h:70
int w_jumplistidx
Definition: buffer_defs.h:1171
pos_T w_valid_cursor
Definition: buffer_defs.h:1047
long wo_fml
Definition: buffer_defs.h:187
char_u * m_keys
Definition: buffer_defs.h:342
char_u * wo_fdm
Definition: buffer_defs.h:183
int b_ind_maxparen
Definition: buffer_defs.h:730
int w_farsi
Definition: buffer_defs.h:1156
char_u * wo_fdt
Definition: buffer_defs.h:193
bool w_old_botfill
Definition: buffer_defs.h:1018
char_u * wo_fmr
Definition: buffer_defs.h:195
int w_vsep_width
Definition: buffer_defs.h:1035
uint32_t w_p_stl_flags
Definition: buffer_defs.h:1140
int wo_diff
Definition: buffer_defs.h:167
bool b_did_warn
Definition: buffer_defs.h:759
Definition: undo_defs.h:12
int * w_p_cc_cols
Definition: buffer_defs.h:1143
char_u * b_p_inc
&#39;include&#39;
Definition: buffer_defs.h:648
winopt_T wi_opt
Definition: buffer_defs.h:272
char_u * b_p_flp
&#39;formatlistpat&#39;
Definition: buffer_defs.h:644
int wo_spell
Definition: buffer_defs.h:219
Definition: terminal.c:104
Definition: buffer_defs.h:121
long b_p_wm
&#39;wrapmargin&#39;
Definition: buffer_defs.h:681
char_u * b_p_fo
&#39;formatoptions&#39;
Definition: buffer_defs.h:643
char_u * tagname
Definition: buffer_defs.h:122
uint32_t b_p_inde_flags
flags for &#39;indentexpr&#39;
Definition: buffer_defs.h:652
int len
length: 0 - to the end of line
Definition: buffer_defs.h:926
char_u * b_spell_ismw_mb
Definition: buffer_defs.h:436
Definition: buffer_defs.h:375
long b_p_iminsert
Definition: buffer_defs.h:593
pos_T w_ru_cursor
Definition: buffer_defs.h:1113
int b_ind_maxcomment
Definition: buffer_defs.h:731
short b_kmap_state
Definition: buffer_defs.h:600
int old_char
Definition: buffer_defs.h:329
int w_fraction
Definition: buffer_defs.h:1197
size_t bh_space
Definition: buffer_defs.h:146
long b_p_sts
&#39;softtabstop&#39;
Definition: buffer_defs.h:671
int b_p_ml_nobin
b_p_ml saved for binary mode
Definition: buffer_defs.h:662
char_u * b_p_fp
&#39;formatprg&#39;
Definition: buffer_defs.h:654
linenr_T w_botline
Definition: buffer_defs.h:1074
bool wi_fold_manual
Definition: buffer_defs.h:273
char_u * b_p_com
&#39;comments&#39;
Definition: buffer_defs.h:630
uint64_t proftime_T
Definition: profile.h:7
char_u * b_p_ft
&#39;filetype&#39;
Definition: buffer_defs.h:642
win_T * w_prev
Definition: buffer_defs.h:978
int b_has_qf_entry
quickfix exists for buffer
Definition: buffer_defs.h:623
disptick_T b_sst_lasttick
Definition: buffer_defs.h:431
int wo_arab
Definition: buffer_defs.h:161
int b_p_ro
&#39;readonly&#39;
Definition: buffer_defs.h:667
int w_redr_type
Definition: buffer_defs.h:1105
int al_refcount
Definition: buffer_defs.h:285
linenr_T w_old_visual_lnum
last known start of visual part
Definition: buffer_defs.h:1002
int b_p_ai
&#39;autoindent&#39;
Definition: buffer_defs.h:614
char_u * b_fname
Definition: buffer_defs.h:488
FileID file_id
Definition: buffer_defs.h:491
int w_width
Definition: buffer_defs.h:1034
int b_changelistlen
Definition: buffer_defs.h:543
char_u * b_sfname
Definition: buffer_defs.h:487
int b_p_lisp
&#39;lisp&#39;
Definition: buffer_defs.h:658
char m_nowait
Definition: buffer_defs.h:349
linenr_T b_u_line_lnum
Definition: buffer_defs.h:587
int b_ind_continuation
Definition: buffer_defs.h:722
int b_ind_open_imag
Definition: buffer_defs.h:706