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