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