annotate src/structs.h @ 11757:74abb6c84984 v8.0.0761

patch 8.0.0761: options not set properly for a terminal buffer commit https://github.com/vim/vim/commit/1f2903c43109b16594d141a730659317b15f388d Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 23 19:51:01 2017 +0200 patch 8.0.0761: options not set properly for a terminal buffer Problem: Options of a buffer for a terminal window are not set properly. Solution: Add "terminal" value for 'buftype'. Make 'buftype' and 'bufhidden' not depend on the quickfix feature. Also set the buffer name and show "running" or "finished" in the window title.
author Christian Brabandt <cb@256bit.org>
date Sun, 23 Jul 2017 20:00:05 +0200
parents 1922710ee8fa
children d033653d3df8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10042
4aead6a9b7a9 commit https://github.com/vim/vim/commit/edf3f97ae2af024708ebb4ac614227327033ca47
Christian Brabandt <cb@256bit.org>
parents: 10025
diff changeset
1 /* vi:set ts=8 sts=4 sw=4 noet:
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 * VIM - Vi IMproved by Bram Moolenaar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 * Do ":help uganda" in Vim to read copying and usage conditions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6 * Do ":help credits" in Vim to see a list of people who contributed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 * This file contains various definitions of structures that are used by Vim
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 * There is something wrong in the SAS compiler that makes typedefs not
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 * valid in include files. Has been fixed in version 6.58.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 #if defined(SASC) && SASC < 658
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 typedef long linenr_T;
1872
f13849167330 updated for version 7.2-169
vimboss
parents: 1869
diff changeset
19 typedef int colnr_T;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20 typedef unsigned short short_u;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 * position in file or buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 linenr_T lnum; /* line number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29 colnr_T col; /* column number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 #ifdef FEAT_VIRTUALEDIT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 colnr_T coladd;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 } pos_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 #ifdef FEAT_VIRTUALEDIT
1869
720a59d79bcd updated for version 7.2-168
vimboss
parents: 1744
diff changeset
36 # define INIT_POS_T(l, c, ca) {l, c, ca}
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 #else
1869
720a59d79bcd updated for version 7.2-168
vimboss
parents: 1744
diff changeset
38 # define INIT_POS_T(l, c, ca) {l, c}
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 * Same, but without coladd.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 linenr_T lnum; /* line number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 colnr_T col; /* column number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 } lpos_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 * Structure used for growing arrays.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 * This is used to store information that only grows, is deleted all at
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 * once, and needs to be accessed by index. See ga_clear() and ga_grow().
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55 typedef struct growarray
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 int ga_len; /* current number of items used */
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 40
diff changeset
58 int ga_maxlen; /* maximum number of items possible */
8
7edf9b6e4c36 Various changes
vimboss
parents: 7
diff changeset
59 int ga_itemsize; /* sizeof(item) */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60 int ga_growsize; /* number of items to grow each time */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 void *ga_data; /* pointer to the first item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 } garray_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64 #define GA_EMPTY {0, 0, 0, 0, NULL}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4401
diff changeset
66 typedef struct window_S win_T;
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4401
diff changeset
67 typedef struct wininfo_S wininfo_T;
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4401
diff changeset
68 typedef struct frame_S frame_T;
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4401
diff changeset
69 typedef int scid_T; /* script ID */
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4401
diff changeset
70 typedef struct file_buffer buf_T; /* forward declaration */
11621
b8299e742f41 patch 8.0.0693: no terminal emulator support
Christian Brabandt <cb@256bit.org>
parents: 11529
diff changeset
71 typedef struct terminal_S term_T;
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents: 4401
diff changeset
72
11447
698ee9d4fe9f patch 8.0.0607: after :bwipe + :new bufref might still be valid
Christian Brabandt <cb@256bit.org>
parents: 11325
diff changeset
73 /*
698ee9d4fe9f patch 8.0.0607: after :bwipe + :new bufref might still be valid
Christian Brabandt <cb@256bit.org>
parents: 11325
diff changeset
74 * Reference to a buffer that stores the value of buf_free_count.
9475
4d8f7f8da90c commit https://github.com/vim/vim/commit/b25f9a97e9aad3cbb4bc3fe87cdbd5700f8aa0c6
Christian Brabandt <cb@256bit.org>
parents: 9414
diff changeset
75 * bufref_valid() only needs to check "buf" when the count differs.
4d8f7f8da90c commit https://github.com/vim/vim/commit/b25f9a97e9aad3cbb4bc3fe87cdbd5700f8aa0c6
Christian Brabandt <cb@256bit.org>
parents: 9414
diff changeset
76 */
4d8f7f8da90c commit https://github.com/vim/vim/commit/b25f9a97e9aad3cbb4bc3fe87cdbd5700f8aa0c6
Christian Brabandt <cb@256bit.org>
parents: 9414
diff changeset
77 typedef struct {
4d8f7f8da90c commit https://github.com/vim/vim/commit/b25f9a97e9aad3cbb4bc3fe87cdbd5700f8aa0c6
Christian Brabandt <cb@256bit.org>
parents: 9414
diff changeset
78 buf_T *br_buf;
11447
698ee9d4fe9f patch 8.0.0607: after :bwipe + :new bufref might still be valid
Christian Brabandt <cb@256bit.org>
parents: 11325
diff changeset
79 int br_fnum;
9475
4d8f7f8da90c commit https://github.com/vim/vim/commit/b25f9a97e9aad3cbb4bc3fe87cdbd5700f8aa0c6
Christian Brabandt <cb@256bit.org>
parents: 9414
diff changeset
80 int br_buf_free_count;
4d8f7f8da90c commit https://github.com/vim/vim/commit/b25f9a97e9aad3cbb4bc3fe87cdbd5700f8aa0c6
Christian Brabandt <cb@256bit.org>
parents: 9414
diff changeset
81 } bufref_T;
4d8f7f8da90c commit https://github.com/vim/vim/commit/b25f9a97e9aad3cbb4bc3fe87cdbd5700f8aa0c6
Christian Brabandt <cb@256bit.org>
parents: 9414
diff changeset
82
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 * This is here because regexp.h needs pos_T and below regprog_T is used.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 #include "regexp.h"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 * This is here because gui.h needs the pos_T and win_T, and win_T needs gui.h
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 * for scrollbar_T.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 #ifdef FEAT_GUI
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 # include "gui.h"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 # ifdef FEAT_XCLIPBOARD
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 # include <X11/Intrinsic.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 # endif
9939
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9885
diff changeset
98 # define guicolor_T long
8969
c83e2c1e7f2b commit https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd
Christian Brabandt <cb@256bit.org>
parents: 8863
diff changeset
99 # define INVALCOLOR ((guicolor_T)0x1ffffff)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 * marks: positions in a file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
104 * (a normal mark is a lnum/col pair, the same as a file position)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107 /* (Note: for EBCDIC there are more than 26, because there are gaps in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108 * alphabet coding. To minimize changes to the code, I decided to just
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109 * increase the number of possible marks. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110 #define NMARKS ('z' - 'a' + 1) /* max. # of named marks */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111 #define JUMPLISTSIZE 100 /* max. # of marks in jump list */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
112 #define TAGSTACKSIZE 20 /* max. # of tags in tag stack */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 typedef struct filemark
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116 pos_T mark; /* cursor position */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117 int fnum; /* file number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118 } fmark_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
119
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
120 /* Xtended file mark: also has a file name */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
121 typedef struct xfilemark
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
122 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123 fmark_T fmark;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124 char_u *fname; /* file name, used when fnum == 0 */
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 9240
diff changeset
125 #ifdef FEAT_VIMINFO
9347
25c562442f8c commit https://github.com/vim/vim/commit/f4fba6dcd508cb369ffa6916d9cb3fcf3d7ed548
Christian Brabandt <cb@256bit.org>
parents: 9284
diff changeset
126 time_T time_set;
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 9240
diff changeset
127 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128 } xfmark_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131 * The taggy struct is used to store the information about a :tag command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 typedef struct taggy
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135 char_u *tagname; /* tag name */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136 fmark_T fmark; /* cursor position BEFORE ":tag" */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
137 int cur_match; /* match number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138 int cur_fnum; /* buffer number used for cur_match */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
139 } taggy_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
140
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
141 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
142 * Structure that contains all options that are local to a window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
143 * Used twice in a window: for the current buffer and for all buffers.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144 * Also used in wininfo_T.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
145 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
146 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148 #ifdef FEAT_ARABIC
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149 int wo_arab;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150 # define w_p_arab w_onebuf_opt.wo_arab /* 'arabic' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151 #endif
5995
ef83b423ebf7 updated for version 7.4.338
Bram Moolenaar <bram@vim.org>
parents: 5979
diff changeset
152 #ifdef FEAT_LINEBREAK
ef83b423ebf7 updated for version 7.4.338
Bram Moolenaar <bram@vim.org>
parents: 5979
diff changeset
153 int wo_bri;
ef83b423ebf7 updated for version 7.4.338
Bram Moolenaar <bram@vim.org>
parents: 5979
diff changeset
154 # define w_p_bri w_onebuf_opt.wo_bri /* 'breakindent' */
6243
54194bd6ed60 updated for version 7.4.456
Bram Moolenaar <bram@vim.org>
parents: 6122
diff changeset
155 char_u *wo_briopt;
5995
ef83b423ebf7 updated for version 7.4.338
Bram Moolenaar <bram@vim.org>
parents: 5979
diff changeset
156 # define w_p_briopt w_onebuf_opt.wo_briopt /* 'breakindentopt' */
ef83b423ebf7 updated for version 7.4.338
Bram Moolenaar <bram@vim.org>
parents: 5979
diff changeset
157 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
158 #ifdef FEAT_DIFF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
159 int wo_diff;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
160 # define w_p_diff w_onebuf_opt.wo_diff /* 'diff' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
161 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
162 #ifdef FEAT_FOLDING
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 long wo_fdc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
164 # define w_p_fdc w_onebuf_opt.wo_fdc /* 'foldcolumn' */
5102
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
165 int wo_fdc_save;
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
166 # define w_p_fdc_save w_onebuf_opt.wo_fdc_save /* 'foldenable' saved for diff mode */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167 int wo_fen;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 # define w_p_fen w_onebuf_opt.wo_fen /* 'foldenable' */
5102
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
169 int wo_fen_save;
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
170 # define w_p_fen_save w_onebuf_opt.wo_fen_save /* 'foldenable' saved for diff mode */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 char_u *wo_fdi;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 # define w_p_fdi w_onebuf_opt.wo_fdi /* 'foldignore' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173 long wo_fdl;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 # define w_p_fdl w_onebuf_opt.wo_fdl /* 'foldlevel' */
5102
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
175 int wo_fdl_save;
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
176 # define w_p_fdl_save w_onebuf_opt.wo_fdl_save /* 'foldlevel' state saved for diff mode */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 char_u *wo_fdm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178 # define w_p_fdm w_onebuf_opt.wo_fdm /* 'foldmethod' */
5102
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
179 char_u *wo_fdm_save;
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
180 # define w_p_fdm_save w_onebuf_opt.wo_fdm_save /* 'fdm' saved for diff mode */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
181 long wo_fml;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182 # define w_p_fml w_onebuf_opt.wo_fml /* 'foldminlines' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
183 long wo_fdn;
707
111b7dcc8a17 updated for version 7.0213
vimboss
parents: 699
diff changeset
184 # define w_p_fdn w_onebuf_opt.wo_fdn /* 'foldnestmax' */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
185 # ifdef FEAT_EVAL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186 char_u *wo_fde;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187 # define w_p_fde w_onebuf_opt.wo_fde /* 'foldexpr' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
188 char_u *wo_fdt;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189 # define w_p_fdt w_onebuf_opt.wo_fdt /* 'foldtext' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191 char_u *wo_fmr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
192 # define w_p_fmr w_onebuf_opt.wo_fmr /* 'foldmarker' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
193 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194 #ifdef FEAT_LINEBREAK
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195 int wo_lbr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196 # define w_p_lbr w_onebuf_opt.wo_lbr /* 'linebreak' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
198 int wo_list;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199 #define w_p_list w_onebuf_opt.wo_list /* 'list' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 int wo_nu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 #define w_p_nu w_onebuf_opt.wo_nu /* 'number' */
2178
c6f1aa1e9f32 Add 'relativenumber' patch from Markus Heidelberg.
Bram Moolenaar <bram@vim.org>
parents: 2171
diff changeset
202 int wo_rnu;
c6f1aa1e9f32 Add 'relativenumber' patch from Markus Heidelberg.
Bram Moolenaar <bram@vim.org>
parents: 2171
diff changeset
203 #define w_p_rnu w_onebuf_opt.wo_rnu /* 'relativenumber' */
13
24d5189d3956 updated for version 7.0005
vimboss
parents: 12
diff changeset
204 #ifdef FEAT_LINEBREAK
24d5189d3956 updated for version 7.0005
vimboss
parents: 12
diff changeset
205 long wo_nuw;
24d5189d3956 updated for version 7.0005
vimboss
parents: 12
diff changeset
206 # define w_p_nuw w_onebuf_opt.wo_nuw /* 'numberwidth' */
24d5189d3956 updated for version 7.0005
vimboss
parents: 12
diff changeset
207 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208 #if defined(FEAT_WINDOWS)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 int wo_wfh;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210 # define w_p_wfh w_onebuf_opt.wo_wfh /* 'winfixheight' */
782
d20041a02ee5 updated for version 7.0228
vimboss
parents: 777
diff changeset
211 int wo_wfw;
d20041a02ee5 updated for version 7.0228
vimboss
parents: 777
diff changeset
212 # define w_p_wfw w_onebuf_opt.wo_wfw /* 'winfixwidth' */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
213 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214 #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
215 int wo_pvw;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
216 # define w_p_pvw w_onebuf_opt.wo_pvw /* 'previewwindow' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218 #ifdef FEAT_RIGHTLEFT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
219 int wo_rl;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
220 # define w_p_rl w_onebuf_opt.wo_rl /* 'rightleft' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221 char_u *wo_rlc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
222 # define w_p_rlc w_onebuf_opt.wo_rlc /* 'rightleftcmd' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
223 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
224 long wo_scr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
225 #define w_p_scr w_onebuf_opt.wo_scr /* 'scroll' */
744
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
226 #ifdef FEAT_SPELL
221
7fd4b5df33be updated for version 7.0062
vimboss
parents: 205
diff changeset
227 int wo_spell;
744
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
228 # define w_p_spell w_onebuf_opt.wo_spell /* 'spell' */
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
229 #endif
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
230 #ifdef FEAT_SYN_HL
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
231 int wo_cuc;
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
232 # define w_p_cuc w_onebuf_opt.wo_cuc /* 'cursorcolumn' */
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
233 int wo_cul;
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
234 # define w_p_cul w_onebuf_opt.wo_cul /* 'cursorline' */
2314
233eb4412f5d Added 'colorcolumn' option. Partly by Gregor Uhlenheuer.
Bram Moolenaar <bram@vim.org>
parents: 2281
diff changeset
235 char_u *wo_cc;
233eb4412f5d Added 'colorcolumn' option. Partly by Gregor Uhlenheuer.
Bram Moolenaar <bram@vim.org>
parents: 2281
diff changeset
236 # define w_p_cc w_onebuf_opt.wo_cc /* 'colorcolumn' */
221
7fd4b5df33be updated for version 7.0062
vimboss
parents: 205
diff changeset
237 #endif
40
f1d2a58883b9 updated for version 7.0024
vimboss
parents: 26
diff changeset
238 #ifdef FEAT_STL_OPT
f1d2a58883b9 updated for version 7.0024
vimboss
parents: 26
diff changeset
239 char_u *wo_stl;
f1d2a58883b9 updated for version 7.0024
vimboss
parents: 26
diff changeset
240 #define w_p_stl w_onebuf_opt.wo_stl /* 'statusline' */
f1d2a58883b9 updated for version 7.0024
vimboss
parents: 26
diff changeset
241 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
242 #ifdef FEAT_SCROLLBIND
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
243 int wo_scb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
244 # define w_p_scb w_onebuf_opt.wo_scb /* 'scrollbind' */
5102
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
245 int wo_diff_saved; /* options were saved for starting diff mode */
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
246 # define w_p_diff_saved w_onebuf_opt.wo_diff_saved
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
247 int wo_scb_save; /* 'scrollbind' saved for diff mode*/
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
248 # define w_p_scb_save w_onebuf_opt.wo_scb_save
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
249 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
250 int wo_wrap;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
251 #define w_p_wrap w_onebuf_opt.wo_wrap /* 'wrap' */
5102
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
252 #ifdef FEAT_DIFF
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
253 int wo_wrap_save; /* 'wrap' state saved for diff mode*/
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
254 # define w_p_wrap_save w_onebuf_opt.wo_wrap_save
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
255 #endif
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
256 #ifdef FEAT_CONCEAL
2378
85b7dc8da5eb Add the 'concealcursor' option to decide when the cursor line is to be
Bram Moolenaar <bram@vim.org>
parents: 2360
diff changeset
257 char_u *wo_cocu; /* 'concealcursor' */
85b7dc8da5eb Add the 'concealcursor' option to decide when the cursor line is to be
Bram Moolenaar <bram@vim.org>
parents: 2360
diff changeset
258 # define w_p_cocu w_onebuf_opt.wo_cocu
85b7dc8da5eb Add the 'concealcursor' option to decide when the cursor line is to be
Bram Moolenaar <bram@vim.org>
parents: 2360
diff changeset
259 long wo_cole; /* 'conceallevel' */
85b7dc8da5eb Add the 'concealcursor' option to decide when the cursor line is to be
Bram Moolenaar <bram@vim.org>
parents: 2360
diff changeset
260 # define w_p_cole w_onebuf_opt.wo_cole
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
261 #endif
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
262 #ifdef FEAT_CURSORBIND
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
263 int wo_crb;
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
264 # define w_p_crb w_onebuf_opt.wo_crb /* 'cursorbind' */
5102
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
265 int wo_crb_save; /* 'cursorbind' state saved for diff mode*/
11d0c6df1d7b updated for version 7.3.1294
Bram Moolenaar <bram@vim.org>
parents: 5041
diff changeset
266 # define w_p_crb_save w_onebuf_opt.wo_crb_save
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
267 #endif
9852
4eea48b76d03 commit https://github.com/vim/vim/commit/95ec9d6a6ab3117d60ff638670a803d43974ba51
Christian Brabandt <cb@256bit.org>
parents: 9810
diff changeset
268 #ifdef FEAT_SIGNS
4eea48b76d03 commit https://github.com/vim/vim/commit/95ec9d6a6ab3117d60ff638670a803d43974ba51
Christian Brabandt <cb@256bit.org>
parents: 9810
diff changeset
269 char_u *wo_scl;
4eea48b76d03 commit https://github.com/vim/vim/commit/95ec9d6a6ab3117d60ff638670a803d43974ba51
Christian Brabandt <cb@256bit.org>
parents: 9810
diff changeset
270 # define w_p_scl w_onebuf_opt.wo_scl /* 'signcolumn' */
4eea48b76d03 commit https://github.com/vim/vim/commit/95ec9d6a6ab3117d60ff638670a803d43974ba51
Christian Brabandt <cb@256bit.org>
parents: 9810
diff changeset
271 #endif
11621
b8299e742f41 patch 8.0.0693: no terminal emulator support
Christian Brabandt <cb@256bit.org>
parents: 11529
diff changeset
272 #ifdef FEAT_TERMINAL
11660
16dab1cd56f2 patch 8.0.0712: the terminal implementation is incomplete
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
273 char_u *wo_tk;
16dab1cd56f2 patch 8.0.0712: the terminal implementation is incomplete
Christian Brabandt <cb@256bit.org>
parents: 11639
diff changeset
274 #define w_p_tk w_onebuf_opt.wo_tk /* 'termkey' */
11621
b8299e742f41 patch 8.0.0693: no terminal emulator support
Christian Brabandt <cb@256bit.org>
parents: 11529
diff changeset
275 char_u *wo_tms;
b8299e742f41 patch 8.0.0693: no terminal emulator support
Christian Brabandt <cb@256bit.org>
parents: 11529
diff changeset
276 #define w_p_tms w_onebuf_opt.wo_tms /* 'termsize' */
b8299e742f41 patch 8.0.0693: no terminal emulator support
Christian Brabandt <cb@256bit.org>
parents: 11529
diff changeset
277 #endif
694
07d199fe02ed updated for version 7.0209
vimboss
parents: 692
diff changeset
278
07d199fe02ed updated for version 7.0209
vimboss
parents: 692
diff changeset
279 #ifdef FEAT_EVAL
07d199fe02ed updated for version 7.0209
vimboss
parents: 692
diff changeset
280 int wo_scriptID[WV_COUNT]; /* SIDs for window-local options */
07d199fe02ed updated for version 7.0209
vimboss
parents: 692
diff changeset
281 # define w_p_scriptID w_onebuf_opt.wo_scriptID
07d199fe02ed updated for version 7.0209
vimboss
parents: 692
diff changeset
282 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
283 } winopt_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
284
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
285 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
286 * Window info stored with a buffer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
287 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
288 * Two types of info are kept for a buffer which are associated with a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
289 * specific window:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
290 * 1. Each window can have a different line number associated with a buffer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
291 * 2. The window-local options for a buffer work in a similar way.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
292 * The window-info is kept in a list at b_wininfo. It is kept in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
293 * most-recently-used order.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
294 */
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 659
diff changeset
295 struct wininfo_S
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
296 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
297 wininfo_T *wi_next; /* next entry or NULL for last entry */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
298 wininfo_T *wi_prev; /* previous entry or NULL for first entry */
2150
4269a0673478 updated for version 7.2.432
Bram Moolenaar <bram@zimbu.org>
parents: 1965
diff changeset
299 win_T *wi_win; /* pointer to window that did set wi_fpos */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
300 pos_T wi_fpos; /* last cursor position in the file */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
301 int wi_optset; /* TRUE when wi_opt has useful values */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
302 winopt_T wi_opt; /* local window options */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
303 #ifdef FEAT_FOLDING
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
304 int wi_fold_manual; /* copy of w_fold_manual */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
305 garray_T wi_folds; /* clone of w_folds */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
306 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
307 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
308
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
309 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
310 * Info used to pass info about a fold from the fold-detection code to the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
311 * code that displays the foldcolumn.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
312 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
313 typedef struct foldinfo
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
314 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
315 int fi_level; /* level of the fold; when this is zero the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
316 other fields are invalid */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
317 int fi_lnum; /* line number where fold starts */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
318 int fi_low_level; /* lowest fold level that starts in the same
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
319 line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
320 } foldinfo_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
321
692
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
322 /* Structure to store info about the Visual area. */
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
323 typedef struct
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
324 {
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
325 pos_T vi_start; /* start pos of last VIsual */
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
326 pos_T vi_end; /* end position of last VIsual */
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
327 int vi_mode; /* VIsual_mode of last VIsual */
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
328 colnr_T vi_curswant; /* MAXCOL from w_curswant */
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
329 } visualinfo_T;
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
330
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
331 /*
1216
35a1d7bd6191 updated for version 7.1b
vimboss
parents: 934
diff changeset
332 * structures used for undo
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
333 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
334
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
335 typedef struct u_entry u_entry_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
336 typedef struct u_header u_header_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
337 struct u_entry
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
338 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
339 u_entry_T *ue_next; /* pointer to next entry in list */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
340 linenr_T ue_top; /* number of line above undo block */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
341 linenr_T ue_bot; /* number of line below undo block */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
342 linenr_T ue_lcount; /* linecount when u_save called */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
343 char_u **ue_array; /* array of lines in undo block */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
344 long ue_size; /* number of lines in ue_array */
1415
20b52d44daaf updated for version 7.1-130
vimboss
parents: 1352
diff changeset
345 #ifdef U_DEBUG
20b52d44daaf updated for version 7.1-130
vimboss
parents: 1352
diff changeset
346 int ue_magic; /* magic number to check allocation */
20b52d44daaf updated for version 7.1-130
vimboss
parents: 1352
diff changeset
347 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
348 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
349
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
350 struct u_header
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
351 {
2242
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
352 /* The following have a pointer and a number. The number is used when
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
353 * reading the undo file in u_read_undo() */
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
354 union {
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
355 u_header_T *ptr; /* pointer to next undo header in list */
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
356 long seq;
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
357 } uh_next;
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
358 union {
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
359 u_header_T *ptr; /* pointer to previous header in list */
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
360 long seq;
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
361 } uh_prev;
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
362 union {
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
363 u_header_T *ptr; /* pointer to next header for alt. redo */
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
364 long seq;
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
365 } uh_alt_next;
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
366 union {
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
367 u_header_T *ptr; /* pointer to previous header for alt. redo */
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
368 long seq;
bc4685345719 Don't use pointers to store numbers, use a union.
Bram Moolenaar <bram@vim.org>
parents: 2241
diff changeset
369 } uh_alt_prev;
753
ac005a544e24 updated for version 7.0223
vimboss
parents: 744
diff changeset
370 long uh_seq; /* sequence number, higher == newer undo */
ac005a544e24 updated for version 7.0223
vimboss
parents: 744
diff changeset
371 int uh_walk; /* used by undo_time() */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
372 u_entry_T *uh_entry; /* pointer to first entry */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
373 u_entry_T *uh_getbot_entry; /* pointer to where ue_bot must be set */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
374 pos_T uh_cursor; /* cursor position before saving */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
375 #ifdef FEAT_VIRTUALEDIT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
376 long uh_cursor_vcol;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
377 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
378 int uh_flags; /* see below */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
379 pos_T uh_namedm[NMARKS]; /* marks before undo/after redo */
692
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
380 visualinfo_T uh_visual; /* Visual areas before undo/after redo */
9347
25c562442f8c commit https://github.com/vim/vim/commit/f4fba6dcd508cb369ffa6916d9cb3fcf3d7ed548
Christian Brabandt <cb@256bit.org>
parents: 9284
diff changeset
381 time_T uh_time; /* timestamp when the change was made */
2281
e41433ea71df Added ":earlier 1f" and ":later 1f".
Bram Moolenaar <bram@vim.org>
parents: 2280
diff changeset
382 long uh_save_nr; /* set when the file was saved after the
e41433ea71df Added ":earlier 1f" and ":later 1f".
Bram Moolenaar <bram@vim.org>
parents: 2280
diff changeset
383 changes in this block */
1415
20b52d44daaf updated for version 7.1-130
vimboss
parents: 1352
diff changeset
384 #ifdef U_DEBUG
20b52d44daaf updated for version 7.1-130
vimboss
parents: 1352
diff changeset
385 int uh_magic; /* magic number to check allocation */
20b52d44daaf updated for version 7.1-130
vimboss
parents: 1352
diff changeset
386 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
387 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
388
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
389 /* values for uh_flags */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
390 #define UH_CHANGED 0x01 /* b_changed flag before undo/after redo */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
391 #define UH_EMPTYBUF 0x02 /* buffer was empty */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
392
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
393 /*
1216
35a1d7bd6191 updated for version 7.1b
vimboss
parents: 934
diff changeset
394 * structures used in undo.c
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
395 */
5684
136f05449f29 updated for version 7.4.188
Bram Moolenaar <bram@vim.org>
parents: 5680
diff changeset
396 #if VIM_SIZEOF_INT > 2
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
397 # define ALIGN_LONG /* longword alignment and use filler byte */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
398 # define ALIGN_SIZE (sizeof(long))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
399 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
400 # define ALIGN_SIZE (sizeof(short))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
401 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
402
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
403 #define ALIGN_MASK (ALIGN_SIZE - 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
404
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
405 typedef struct m_info minfo_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
406
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
407 /*
2171
e12b9d992389 updated for version 7.2.436
Bram Moolenaar <bram@vim.org>
parents: 2150
diff changeset
408 * structure used to link chunks in one of the free chunk lists.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
409 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
410 struct m_info
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
411 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
412 #ifdef ALIGN_LONG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
413 long_u m_size; /* size of the chunk (including m_info) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
414 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
415 short_u m_size; /* size of the chunk (including m_info) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
416 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
417 minfo_T *m_next; /* pointer to next free chunk in the list */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
418 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
419
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
420 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
421 * things used in memfile.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
422 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
423
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
424 typedef struct block_hdr bhdr_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
425 typedef struct memfile memfile_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
426 typedef long blocknr_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
427
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
428 /*
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
429 * mf_hashtab_T is a chained hashtable with blocknr_T key and arbitrary
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
430 * structures as items. This is an intrusive data structure: we require
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
431 * that items begin with mf_hashitem_T which contains the key and linked
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
432 * list pointers. List of items in each bucket is doubly-linked.
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
433 */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
434
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
435 typedef struct mf_hashitem_S mf_hashitem_T;
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
436
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
437 struct mf_hashitem_S
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
438 {
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
439 mf_hashitem_T *mhi_next;
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
440 mf_hashitem_T *mhi_prev;
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
441 blocknr_T mhi_key;
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
442 };
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
443
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
444 #define MHT_INIT_SIZE 64
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
445
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
446 typedef struct mf_hashtab_S
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
447 {
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
448 long_u mht_mask; /* mask used for hash value (nr of items
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
449 * in array is "mht_mask" + 1) */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
450 long_u mht_count; /* nr of items inserted into hashtable */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
451 mf_hashitem_T **mht_buckets; /* points to mht_small_buckets or
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
452 *dynamically allocated array */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
453 mf_hashitem_T *mht_small_buckets[MHT_INIT_SIZE]; /* initial buckets */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
454 char mht_fixed; /* non-zero value forbids growth */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
455 } mf_hashtab_T;
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
456
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
457 /*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
458 * for each (previously) used block in the memfile there is one block header.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
459 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
460 * The block may be linked in the used list OR in the free list.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
461 * The used blocks are also kept in hash lists.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
462 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
463 * The used list is a doubly linked list, most recently used block first.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 * The blocks in the used list have a block of memory allocated.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
465 * mf_used_count is the number of pages in the used list.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
466 * The hash lists are used to quickly find a block in the used list.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
467 * The free list is a single linked list, not sorted.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
468 * The blocks in the free list have no block of memory allocated and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
469 * the contents of the block in the file (if any) is irrelevant.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
470 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
471
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
472 struct block_hdr
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
473 {
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
474 mf_hashitem_T bh_hashitem; /* header for hash table and key */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
475 #define bh_bnum bh_hashitem.mhi_key /* block number, part of bh_hashitem */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
476
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
477 bhdr_T *bh_next; /* next block_hdr in free or used list */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
478 bhdr_T *bh_prev; /* previous block_hdr in used list */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
479 char_u *bh_data; /* pointer to memory (for used block) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
480 int bh_page_count; /* number of pages in this block */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
481
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
482 #define BH_DIRTY 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
483 #define BH_LOCKED 2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
484 char bh_flags; /* BH_DIRTY or BH_LOCKED */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
485 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
486
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
487 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
488 * when a block with a negative number is flushed to the file, it gets
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
489 * a positive number. Because the reference to the block is still the negative
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
490 * number, we remember the translation to the new positive number in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
491 * double linked trans lists. The structure is the same as the hash lists.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
492 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
493 typedef struct nr_trans NR_TRANS;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
494
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
495 struct nr_trans
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
496 {
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
497 mf_hashitem_T nt_hashitem; /* header for hash table and key */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
498 #define nt_old_bnum nt_hashitem.mhi_key /* old, negative, number */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
499
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
500 blocknr_T nt_new_bnum; /* new, positive, number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
501 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
502
5649
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
503
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
504 typedef struct buffblock buffblock_T;
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
505 typedef struct buffheader buffheader_T;
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
506
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
507 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
508 * structure used to store one block of the stuff/redo/recording buffers
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
509 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
510 struct buffblock
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
511 {
5649
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
512 buffblock_T *b_next; /* pointer to next buffblock */
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
513 char_u b_str[1]; /* contents (actually longer) */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
514 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
515
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
516 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
517 * header used for the stuff buffer and the redo buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
518 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
519 struct buffheader
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
520 {
5649
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
521 buffblock_T bh_first; /* first (dummy) block of list */
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
522 buffblock_T *bh_curr; /* buffblock for appending */
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
523 int bh_index; /* index for reading */
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
524 int bh_space; /* space in bh_curr for appending */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
525 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
526
11325
77f3b7316d8b patch 8.0.0548: saving the redo buffer only works one time
Christian Brabandt <cb@256bit.org>
parents: 11087
diff changeset
527 typedef struct
77f3b7316d8b patch 8.0.0548: saving the redo buffer only works one time
Christian Brabandt <cb@256bit.org>
parents: 11087
diff changeset
528 {
77f3b7316d8b patch 8.0.0548: saving the redo buffer only works one time
Christian Brabandt <cb@256bit.org>
parents: 11087
diff changeset
529 buffheader_T sr_redobuff;
77f3b7316d8b patch 8.0.0548: saving the redo buffer only works one time
Christian Brabandt <cb@256bit.org>
parents: 11087
diff changeset
530 buffheader_T sr_old_redobuff;
77f3b7316d8b patch 8.0.0548: saving the redo buffer only works one time
Christian Brabandt <cb@256bit.org>
parents: 11087
diff changeset
531 } save_redo_T;
77f3b7316d8b patch 8.0.0548: saving the redo buffer only works one time
Christian Brabandt <cb@256bit.org>
parents: 11087
diff changeset
532
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
533 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
534 * used for completion on the command line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
535 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
536 typedef struct expand
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
537 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
538 int xp_context; /* type of expansion */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
539 char_u *xp_pattern; /* start of item to expand */
1965
8d1db3e3ac5f updated for version 7.2-262
vimboss
parents: 1944
diff changeset
540 int xp_pattern_len; /* bytes in xp_pattern before cursor */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
541 #if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
542 char_u *xp_arg; /* completion function */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
543 int xp_scriptID; /* SID for completion function */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
544 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
545 int xp_backslash; /* one of the XP_BS_ values */
632
b6632d553df3 updated for version 7.0182
vimboss
parents: 625
diff changeset
546 #ifndef BACKSLASH_IN_FILENAME
2511
2f5b709a6470 Fixed: on MS-Windows completion of shell commands didn't work.
Bram Moolenaar <bram@vim.org>
parents: 2425
diff changeset
547 int xp_shell; /* TRUE for a shell command, more
2f5b709a6470 Fixed: on MS-Windows completion of shell commands didn't work.
Bram Moolenaar <bram@vim.org>
parents: 2425
diff changeset
548 characters need to be escaped */
632
b6632d553df3 updated for version 7.0182
vimboss
parents: 625
diff changeset
549 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
550 int xp_numfiles; /* number of files found by
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
551 file name completion */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
552 char_u **xp_files; /* list of files */
5033
7aa4e0822dec updated for version 7.3.1260
Bram Moolenaar <bram@vim.org>
parents: 4861
diff changeset
553 char_u *xp_line; /* text being completed */
7aa4e0822dec updated for version 7.3.1260
Bram Moolenaar <bram@vim.org>
parents: 4861
diff changeset
554 int xp_col; /* cursor position in line */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
555 } expand_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
556
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
557 /* values for xp_backslash */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
558 #define XP_BS_NONE 0 /* nothing special for backslashes */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
559 #define XP_BS_ONE 1 /* uses one backslash before a space */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
560 #define XP_BS_THREE 2 /* uses three backslashes before a space */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
561
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
562 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
563 * Command modifiers ":vertical", ":browse", ":confirm" and ":hide" set a flag.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
564 * This needs to be saved for recursive commands, put them in a structure for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
565 * easy manipulation.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
566 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
567 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
568 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
569 int hide; /* TRUE when ":hide" was used */
1733
5a7384b9ca66 updated for version 7.2-031
vimboss
parents: 1692
diff changeset
570 # ifdef FEAT_BROWSE_CMD
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
571 int browse; /* TRUE to invoke file dialog */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
572 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
573 # ifdef FEAT_WINDOWS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
574 int split; /* flags for win_split() */
683
a39b8af64334 updated for version 7.0205
vimboss
parents: 681
diff changeset
575 int tab; /* > 0 when ":tab" was used */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
576 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
577 # if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
578 int confirm; /* TRUE to invoke yes/no dialog */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
579 # endif
22
cc049b00ee70 updated for version 7.0014
vimboss
parents: 14
diff changeset
580 int keepalt; /* TRUE when ":keepalt" was used */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
581 int keepmarks; /* TRUE when ":keepmarks" was used */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
582 int keepjumps; /* TRUE when ":keepjumps" was used */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
583 int lockmarks; /* TRUE when ":lockmarks" was used */
5467
6367a766027d updated for version 7.4.083
Bram Moolenaar <bram@vim.org>
parents: 5446
diff changeset
584 int keeppatterns; /* TRUE when ":keeppatterns" was used */
5737
e25a04c1c515 updated for version 7.4.213
Bram Moolenaar <bram@vim.org>
parents: 5735
diff changeset
585 int noswapfile; /* TRUE when ":noswapfile" was used */
590
de152391f6f9 updated for version 7.0167
vimboss
parents: 574
diff changeset
586 # ifdef FEAT_AUTOCMD
de152391f6f9 updated for version 7.0167
vimboss
parents: 574
diff changeset
587 char_u *save_ei; /* saved value of 'eventignore' */
de152391f6f9 updated for version 7.0167
vimboss
parents: 574
diff changeset
588 # endif
9941
e975914c17e9 commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents: 9939
diff changeset
589 regmatch_T filter_regmatch; /* set by :filter /pat/ */
9980
b222552cf0c4 commit https://github.com/vim/vim/commit/d29459baa61819e59961804ed258efac5733ec70
Christian Brabandt <cb@256bit.org>
parents: 9955
diff changeset
590 int filter_force; /* set for :filter! */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
591 } cmdmod_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
592
2267
c08f91142c41 Crypt the swapfile.
Bram Moolenaar <bram@vim.org>
parents: 2250
diff changeset
593 #define MF_SEED_LEN 8
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
594
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
595 struct memfile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
596 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
597 char_u *mf_fname; /* name of the file */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
598 char_u *mf_ffname; /* idem, full path */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
599 int mf_fd; /* file descriptor */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
600 bhdr_T *mf_free_first; /* first block_hdr in free list */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
601 bhdr_T *mf_used_first; /* mru block_hdr in used list */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
602 bhdr_T *mf_used_last; /* lru block_hdr in used list */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
603 unsigned mf_used_count; /* number of pages in used list */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
604 unsigned mf_used_count_max; /* maximum number of pages in memory */
2730
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
605 mf_hashtab_T mf_hash; /* hash lists */
e0a90042318d updated for version 7.3.143
Bram Moolenaar <bram@vim.org>
parents: 2707
diff changeset
606 mf_hashtab_T mf_trans; /* trans lists */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
607 blocknr_T mf_blocknr_max; /* highest positive block number + 1*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
608 blocknr_T mf_blocknr_min; /* lowest negative block number - 1 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
609 blocknr_T mf_neg_count; /* number of negative blocks numbers */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
610 blocknr_T mf_infile_count; /* number of pages in the file */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
611 unsigned mf_page_size; /* number of bytes in a page */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
612 int mf_dirty; /* TRUE if there are dirty blocks */
2267
c08f91142c41 Crypt the swapfile.
Bram Moolenaar <bram@vim.org>
parents: 2250
diff changeset
613 #ifdef FEAT_CRYPT
5905
662ae48e7e24 updated for version 7.4.295
Bram Moolenaar <bram@vim.org>
parents: 5737
diff changeset
614 buf_T *mf_buffer; /* buffer this memfile is for */
2267
c08f91142c41 Crypt the swapfile.
Bram Moolenaar <bram@vim.org>
parents: 2250
diff changeset
615 char_u mf_seed[MF_SEED_LEN]; /* seed for encryption */
c08f91142c41 Crypt the swapfile.
Bram Moolenaar <bram@vim.org>
parents: 2250
diff changeset
616
c08f91142c41 Crypt the swapfile.
Bram Moolenaar <bram@vim.org>
parents: 2250
diff changeset
617 /* Values for key, method and seed used for reading data blocks when
c08f91142c41 Crypt the swapfile.
Bram Moolenaar <bram@vim.org>
parents: 2250
diff changeset
618 * updating for a newly set key or method. Only when mf_old_key != NULL. */
c08f91142c41 Crypt the swapfile.
Bram Moolenaar <bram@vim.org>
parents: 2250
diff changeset
619 char_u *mf_old_key;
c08f91142c41 Crypt the swapfile.
Bram Moolenaar <bram@vim.org>
parents: 2250
diff changeset
620 int mf_old_cm;
c08f91142c41 Crypt the swapfile.
Bram Moolenaar <bram@vim.org>
parents: 2250
diff changeset
621 char_u mf_old_seed[MF_SEED_LEN];
c08f91142c41 Crypt the swapfile.
Bram Moolenaar <bram@vim.org>
parents: 2250
diff changeset
622 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
623 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
624
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
625 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
626 * things used in memline.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
627 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
628 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
629 * When searching for a specific line, we remember what blocks in the tree
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
630 * are the branches leading to that block. This is stored in ml_stack. Each
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
631 * entry is a pointer to info in a block (may be data block or pointer block)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
632 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
633 typedef struct info_pointer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
634 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
635 blocknr_T ip_bnum; /* block number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
636 linenr_T ip_low; /* lowest lnum in this block */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
637 linenr_T ip_high; /* highest lnum in this block */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
638 int ip_index; /* index for block with current lnum */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
639 } infoptr_T; /* block/index pair */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
640
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
641 #ifdef FEAT_BYTEOFF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
642 typedef struct ml_chunksize
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
643 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
644 int mlcs_numlines;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
645 long mlcs_totalsize;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
646 } chunksize_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
647
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
648 /* Flags when calling ml_updatechunk() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
649
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
650 #define ML_CHNK_ADDLINE 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
651 #define ML_CHNK_DELLINE 2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
652 #define ML_CHNK_UPDLINE 3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
653 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
654
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
655 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
656 * the memline structure holds all the information about a memline
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
657 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
658 typedef struct memline
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
659 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
660 linenr_T ml_line_count; /* number of lines in the buffer */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
661
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
662 memfile_T *ml_mfp; /* pointer to associated memfile */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
663
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
664 #define ML_EMPTY 1 /* empty buffer */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
665 #define ML_LINE_DIRTY 2 /* cached line was changed and allocated */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
666 #define ML_LOCKED_DIRTY 4 /* ml_locked was changed */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
667 #define ML_LOCKED_POS 8 /* ml_locked needs positive block number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
668 int ml_flags;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
669
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
670 infoptr_T *ml_stack; /* stack of pointer blocks (array of IPTRs) */
6933
62ba356c2d4e patch 7.4.785
Bram Moolenaar <bram@vim.org>
parents: 6751
diff changeset
671 int ml_stack_top; /* current top of ml_stack */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
672 int ml_stack_size; /* total number of entries in ml_stack */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
673
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
674 linenr_T ml_line_lnum; /* line number of cached line, 0 if not valid */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
675 char_u *ml_line_ptr; /* pointer to cached line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
676
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
677 bhdr_T *ml_locked; /* block used by last ml_get */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
678 linenr_T ml_locked_low; /* first line in ml_locked */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
679 linenr_T ml_locked_high; /* last line in ml_locked */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
680 int ml_locked_lineadd; /* number of lines inserted in ml_locked */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
681 #ifdef FEAT_BYTEOFF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
682 chunksize_T *ml_chunksize;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
683 int ml_numchunks;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
684 int ml_usedchunks;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
685 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
686 } memline_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
687
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
688 #if defined(FEAT_SIGNS) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
689 typedef struct signlist signlist_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
690
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
691 struct signlist
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
692 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
693 int id; /* unique identifier for each placed sign */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
694 linenr_T lnum; /* line number which has this sign */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
695 int typenr; /* typenr of sign */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
696 signlist_T *next; /* next signlist entry */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
697 # ifdef FEAT_NETBEANS_INTG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
698 signlist_T *prev; /* previous entry -- for easy reordering */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
699 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
700 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
701
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
702 /* type argument for buf_getsigntype() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
703 #define SIGN_ANY 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
704 #define SIGN_LINEHL 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
705 #define SIGN_ICON 2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
706 #define SIGN_TEXT 3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
707 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
708
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
709 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
710 * Argument list: Array of file names.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
711 * Used for the global argument list and the argument lists local to a window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
712 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
713 typedef struct arglist
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
714 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
715 garray_T al_ga; /* growarray with the array of file names */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
716 int al_refcount; /* number of windows using this arglist */
5942
66eead134d68 updated for version 7.4.312
Bram Moolenaar <bram@vim.org>
parents: 5905
diff changeset
717 int id; /* id of this arglist */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
718 } alist_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
719
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
720 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
721 * For each argument remember the file name as it was given, and the buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
722 * number that contains the expanded file name (required for when ":cd" is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
723 * used.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
724 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
725 typedef struct argentry
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
726 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
727 char_u *ae_fname; /* file name as specified */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
728 int ae_fnum; /* buffer number with expanded file name */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
729 } aentry_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
730
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
731 #ifdef FEAT_WINDOWS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
732 # define ALIST(win) (win)->w_alist
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
733 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
734 # define ALIST(win) (&global_alist)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
735 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
736 #define GARGLIST ((aentry_T *)global_alist.al_ga.ga_data)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
737 #define ARGLIST ((aentry_T *)ALIST(curwin)->al_ga.ga_data)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
738 #define WARGLIST(wp) ((aentry_T *)ALIST(wp)->al_ga.ga_data)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
739 #define AARGLIST(al) ((aentry_T *)((al)->al_ga.ga_data))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
740 #define GARGCOUNT (global_alist.al_ga.ga_len)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
741 #define ARGCOUNT (ALIST(curwin)->al_ga.ga_len)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
742 #define WARGCOUNT(wp) (ALIST(wp)->al_ga.ga_len)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
743
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
744 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
745 * A list used for saving values of "emsg_silent". Used by ex_try() to save the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
746 * value of "emsg_silent" if it was non-zero. When this is done, the CSF_SILENT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
747 * flag below is set.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
748 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
749
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
750 typedef struct eslist_elem eslist_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
751 struct eslist_elem
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
752 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
753 int saved_emsg_silent; /* saved value of "emsg_silent" */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
754 eslist_T *next; /* next element on the list */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
755 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
756
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
757 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
758 * For conditional commands a stack is kept of nested conditionals.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
759 * When cs_idx < 0, there is no conditional command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
760 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
761 #define CSTACK_LEN 50
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
762
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
763 struct condstack
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
764 {
75
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
765 short cs_flags[CSTACK_LEN]; /* CSF_ flags */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
766 char cs_pending[CSTACK_LEN]; /* CSTP_: what's pending in ":finally"*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
767 union {
75
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
768 void *csp_rv[CSTACK_LEN]; /* return typeval for pending return */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
769 void *csp_ex[CSTACK_LEN]; /* exception for pending throw */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
770 } cs_pend;
79
e918d3e340a4 updated for version 7.0032
vimboss
parents: 75
diff changeset
771 void *cs_forinfo[CSTACK_LEN]; /* info used by ":for" */
75
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
772 int cs_line[CSTACK_LEN]; /* line nr of ":while"/":for" line */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
773 int cs_idx; /* current entry, or -1 if none */
75
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
774 int cs_looplevel; /* nr of nested ":while"s and ":for"s */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
775 int cs_trylevel; /* nr of nested ":try"s */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
776 eslist_T *cs_emsg_silent_list; /* saved values of "emsg_silent" */
75
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
777 char cs_lflags; /* loop flags: CSL_ flags */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
778 };
75
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
779 # define cs_rettv cs_pend.csp_rv
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
780 # define cs_exception cs_pend.csp_ex
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
781
79
e918d3e340a4 updated for version 7.0032
vimboss
parents: 75
diff changeset
782 /* There is no CSF_IF, the lack of CSF_WHILE, CSF_FOR and CSF_TRY means ":if"
e918d3e340a4 updated for version 7.0032
vimboss
parents: 75
diff changeset
783 * was used. */
75
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
784 # define CSF_TRUE 0x0001 /* condition was TRUE */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
785 # define CSF_ACTIVE 0x0002 /* current state is active */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
786 # define CSF_ELSE 0x0004 /* ":else" has been passed */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
787 # define CSF_WHILE 0x0008 /* is a ":while" */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
788 # define CSF_FOR 0x0010 /* is a ":for" */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
789
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
790 # define CSF_TRY 0x0100 /* is a ":try" */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
791 # define CSF_FINALLY 0x0200 /* ":finally" has been passed */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
792 # define CSF_THROWN 0x0400 /* exception thrown to this try conditional */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
793 # define CSF_CAUGHT 0x0800 /* exception caught by this try conditional */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
794 # define CSF_SILENT 0x1000 /* "emsg_silent" reset by ":try" */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
795 /* Note that CSF_ELSE is only used when CSF_TRY and CSF_WHILE are unset
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
796 * (an ":if"), and CSF_SILENT is only used when CSF_TRY is set. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
797
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
798 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
799 * What's pending for being reactivated at the ":endtry" of this try
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
800 * conditional:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
801 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
802 # define CSTP_NONE 0 /* nothing pending in ":finally" clause */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
803 # define CSTP_ERROR 1 /* an error is pending */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
804 # define CSTP_INTERRUPT 2 /* an interrupt is pending */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
805 # define CSTP_THROW 4 /* a throw is pending */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
806 # define CSTP_BREAK 8 /* ":break" is pending */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
807 # define CSTP_CONTINUE 16 /* ":continue" is pending */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
808 # define CSTP_RETURN 24 /* ":return" is pending */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
809 # define CSTP_FINISH 32 /* ":finish" is pending */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
810
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
811 /*
75
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
812 * Flags for the cs_lflags item in struct condstack.
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
813 */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
814 # define CSL_HAD_LOOP 1 /* just found ":while" or ":for" */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
815 # define CSL_HAD_ENDLOOP 2 /* just found ":endwhile" or ":endfor" */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
816 # define CSL_HAD_CONT 4 /* just found ":continue" */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
817 # define CSL_HAD_FINA 8 /* just found ":finally" */
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
818
388f285bda1b updated for version 7.0031
vimboss
parents: 68
diff changeset
819 /*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
820 * A list of error messages that can be converted to an exception. "throw_msg"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
821 * is only set in the first element of the list. Usually, it points to the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
822 * original message stored in that element, but sometimes it points to a later
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
823 * message in the list. See cause_errthrow() below.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
824 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
825 struct msglist
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
826 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
827 char_u *msg; /* original message */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
828 char_u *throw_msg; /* msg to throw: usually original one */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
829 struct msglist *next; /* next of several messages in a row */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
830 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
831
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
832 /*
10361
147f45c283e1 commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Christian Brabandt <cb@256bit.org>
parents: 10311
diff changeset
833 * The exception types.
147f45c283e1 commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Christian Brabandt <cb@256bit.org>
parents: 10311
diff changeset
834 */
147f45c283e1 commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Christian Brabandt <cb@256bit.org>
parents: 10311
diff changeset
835 typedef enum
147f45c283e1 commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Christian Brabandt <cb@256bit.org>
parents: 10311
diff changeset
836 {
147f45c283e1 commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Christian Brabandt <cb@256bit.org>
parents: 10311
diff changeset
837 ET_USER, /* exception caused by ":throw" command */
147f45c283e1 commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Christian Brabandt <cb@256bit.org>
parents: 10311
diff changeset
838 ET_ERROR, /* error exception */
147f45c283e1 commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Christian Brabandt <cb@256bit.org>
parents: 10311
diff changeset
839 ET_INTERRUPT /* interrupt exception triggered by Ctrl-C */
147f45c283e1 commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Christian Brabandt <cb@256bit.org>
parents: 10311
diff changeset
840 } except_type_T;
147f45c283e1 commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Christian Brabandt <cb@256bit.org>
parents: 10311
diff changeset
841
147f45c283e1 commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Christian Brabandt <cb@256bit.org>
parents: 10311
diff changeset
842 /*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
843 * Structure describing an exception.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
844 * (don't use "struct exception", it's used by the math library).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
845 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
846 typedef struct vim_exception except_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
847 struct vim_exception
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
848 {
10361
147f45c283e1 commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Christian Brabandt <cb@256bit.org>
parents: 10311
diff changeset
849 except_type_T type; /* exception type */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
850 char_u *value; /* exception value */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
851 struct msglist *messages; /* message(s) causing error exception */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
852 char_u *throw_name; /* name of the throw point */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
853 linenr_T throw_lnum; /* line number of the throw point */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
854 except_T *caught; /* next exception on the caught stack */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
855 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
856
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
857 /*
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 22
diff changeset
858 * Structure to save the error/interrupt/exception state between calls to
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 22
diff changeset
859 * enter_cleanup() and leave_cleanup(). Must be allocated as an automatic
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 22
diff changeset
860 * variable by the (common) caller of these functions.
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 22
diff changeset
861 */
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 22
diff changeset
862 typedef struct cleanup_stuff cleanup_T;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 22
diff changeset
863 struct cleanup_stuff
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 22
diff changeset
864 {
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 22
diff changeset
865 int pending; /* error/interrupt/exception state */
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 22
diff changeset
866 except_T *exception; /* exception value */
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 22
diff changeset
867 };
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
868
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
869 #ifdef FEAT_SYN_HL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
870 /* struct passed to in_id_list() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
871 struct sp_syn
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
872 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
873 int inc_tag; /* ":syn include" unique tag */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
874 short id; /* highlight group ID of item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
875 short *cont_in_list; /* cont.in group IDs, if non-zero */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
876 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
877
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
878 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
879 * Each keyword has one keyentry, which is linked in a hash list.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
880 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
881 typedef struct keyentry keyentry_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
882
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
883 struct keyentry
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
884 {
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
885 keyentry_T *ke_next; /* next entry with identical "keyword[]" */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
886 struct sp_syn k_syn; /* struct passed to in_id_list() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
887 short *next_list; /* ID list for next match (if non-zero) */
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
888 int flags;
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
889 int k_char; /* conceal substitute character */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
890 char_u keyword[1]; /* actually longer */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
891 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
892
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
893 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
894 * Struct used to store one state of the state stack.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
895 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
896 typedef struct buf_state
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
897 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
898 int bs_idx; /* index of pattern */
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
899 int bs_flags; /* flags for pattern */
2425
b5ee68272ae5 Fix: concealed regions didn't get redrawn correctly when moving the cursor
Bram Moolenaar <bram@vim.org>
parents: 2419
diff changeset
900 #ifdef FEAT_CONCEAL
b5ee68272ae5 Fix: concealed regions didn't get redrawn correctly when moving the cursor
Bram Moolenaar <bram@vim.org>
parents: 2419
diff changeset
901 int bs_seqnr; /* stores si_seqnr */
b5ee68272ae5 Fix: concealed regions didn't get redrawn correctly when moving the cursor
Bram Moolenaar <bram@vim.org>
parents: 2419
diff changeset
902 int bs_cchar; /* stores si_cchar */
b5ee68272ae5 Fix: concealed regions didn't get redrawn correctly when moving the cursor
Bram Moolenaar <bram@vim.org>
parents: 2419
diff changeset
903 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
904 reg_extmatch_T *bs_extmatch; /* external matches from start pattern */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
905 } bufstate_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
906
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
907 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
908 * syn_state contains the syntax state stack for the start of one line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
909 * Used by b_sst_array[].
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
910 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
911 typedef struct syn_state synstate_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
912
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
913 struct syn_state
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
914 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
915 synstate_T *sst_next; /* next entry in used or free list */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
916 linenr_T sst_lnum; /* line number for this state */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
917 union
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
918 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
919 bufstate_T sst_stack[SST_FIX_STATES]; /* short state stack */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
920 garray_T sst_ga; /* growarray for long state stack */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
921 } sst_union;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
922 int sst_next_flags; /* flags for sst_next_list */
2171
e12b9d992389 updated for version 7.2.436
Bram Moolenaar <bram@vim.org>
parents: 2150
diff changeset
923 int sst_stacksize; /* number of states on the stack */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
924 short *sst_next_list; /* "nextgroup" list in this state
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
925 * (this is a copy, don't free it! */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
926 disptick_T sst_tick; /* tick when last displayed */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
927 linenr_T sst_change_lnum;/* when non-zero, change in this line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
928 * may have made the state invalid */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
929 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
930 #endif /* FEAT_SYN_HL */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
931
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
932 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
933 * Structure shared between syntax.c, screen.c and gui_x11.c.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
934 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
935 typedef struct attr_entry
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
936 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
937 short ae_attr; /* HL_BOLD, etc. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
938 union
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
939 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
940 struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
941 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
942 char_u *start; /* start escape sequence */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
943 char_u *stop; /* stop escape sequence */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
944 } term;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
945 struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
946 {
685
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 683
diff changeset
947 /* These colors need to be > 8 bits to hold 256. */
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 683
diff changeset
948 short_u fg_color; /* foreground color number */
d7e33248b9c8 updated for version 7.0206
vimboss
parents: 683
diff changeset
949 short_u bg_color; /* background color number */
9027
773d627cac0b commit https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162
Christian Brabandt <cb@256bit.org>
parents: 8969
diff changeset
950 # ifdef FEAT_TERMGUICOLORS
9939
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9885
diff changeset
951 guicolor_T fg_rgb; /* foreground color RGB */
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9885
diff changeset
952 guicolor_T bg_rgb; /* background color RGB */
8969
c83e2c1e7f2b commit https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd
Christian Brabandt <cb@256bit.org>
parents: 8863
diff changeset
953 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
954 } cterm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
955 # ifdef FEAT_GUI
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
956 struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
957 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
958 guicolor_T fg_color; /* foreground color handle */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
959 guicolor_T bg_color; /* background color handle */
205
d292c40ca788 updated for version 7.0060
vimboss
parents: 168
diff changeset
960 guicolor_T sp_color; /* special color handle */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
961 GuiFont font; /* font handle */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
962 # ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
963 GuiFontset fontset; /* fontset handle */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
964 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
965 } gui;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
966 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
967 } ae_u;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
968 } attrentry_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
969
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
970 #ifdef USE_ICONV
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
971 # ifdef HAVE_ICONV_H
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
972 # include <iconv.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
973 # else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
974 # if defined(MACOS_X)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
975 # include <sys/errno.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
976 # define EILSEQ ENOENT /* MacOS X does not have EILSEQ */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
977 typedef struct _iconv_t *iconv_t;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
978 # else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
979 # if defined(MACOS_CLASSIC)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
980 typedef struct _iconv_t *iconv_t;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
981 # define EINVAL 22
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
982 # define E2BIG 7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
983 # define ENOENT 2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
984 # define EFAULT 14
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
985 # define EILSEQ 123
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
986 # else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
987 # include <errno.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
988 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
989 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
990 typedef void *iconv_t;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
991 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
992 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
993
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
994 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
995 * Used for the typeahead buffer: typebuf.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
996 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
997 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
998 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
999 char_u *tb_buf; /* buffer for typed characters */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1000 char_u *tb_noremap; /* mapping flags for characters in tb_buf[] */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1001 int tb_buflen; /* size of tb_buf[] */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1002 int tb_off; /* current position in tb_buf[] */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1003 int tb_len; /* number of valid bytes in tb_buf[] */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1004 int tb_maplen; /* nr of mapped bytes in tb_buf[] */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1005 int tb_silent; /* nr of silently mapped bytes in tb_buf[] */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1006 int tb_no_abbr_cnt; /* nr of bytes without abbrev. in tb_buf[] */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1007 int tb_change_cnt; /* nr of time tb_buf was changed; never zero */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1008 } typebuf_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1009
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1010 /* Struct to hold the saved typeahead for save_typeahead(). */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1011 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1012 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1013 typebuf_T save_typebuf;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1014 int typebuf_valid; /* TRUE when save_typebuf valid */
1928
7caa503b63a9 updated for version 7.2-225
vimboss
parents: 1906
diff changeset
1015 int old_char;
7caa503b63a9 updated for version 7.2-225
vimboss
parents: 1906
diff changeset
1016 int old_mod_mask;
5649
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
1017 buffheader_T save_readbuf1;
beb037a6c270 updated for version 7.4.171
Bram Moolenaar <bram@vim.org>
parents: 5477
diff changeset
1018 buffheader_T save_readbuf2;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1019 #ifdef USE_INPUT_BUF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1020 char_u *save_inputbuf;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1021 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1022 } tasave_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1023
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1024 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1025 * Used for conversion of terminal I/O and script files.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1026 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1027 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1028 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1029 int vc_type; /* zero or one of the CONV_ values */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1030 int vc_factor; /* max. expansion factor */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1031 # ifdef WIN3264
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1032 int vc_cpfrom; /* codepage to convert from (CONV_CODEPAGE) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1033 int vc_cpto; /* codepage to convert to (CONV_CODEPAGE) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1034 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1035 # ifdef USE_ICONV
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1036 iconv_t vc_fd; /* for CONV_ICONV */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1037 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1038 int vc_fail; /* fail for invalid char, don't use '?' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1039 } vimconv_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1040
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1041 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1042 * Structure used for reading from the viminfo file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1043 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1044 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1045 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1046 char_u *vir_line; /* text of the current line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1047 FILE *vir_fd; /* file descriptor */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1048 #ifdef FEAT_MBYTE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1049 vimconv_T vir_conv; /* encoding conversion */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1050 #endif
9240
636cfa97200e commit https://github.com/vim/vim/commit/45d2eeaad66939348893b9254171067b0457cd9d
Christian Brabandt <cb@256bit.org>
parents: 9215
diff changeset
1051 int vir_version; /* viminfo version detected or -1 */
7664
1fded31d9e04 commit https://github.com/vim/vim/commit/b20e334859334be35de4b295023a2b49bdabbfa9
Christian Brabandt <cb@256bit.org>
parents: 7266
diff changeset
1052 garray_T vir_barlines; /* lines starting with | */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1053 } vir_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1054
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1055 #define CONV_NONE 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1056 #define CONV_TO_UTF8 1
26
404aac550f35 updated for version 7.0017
vimboss
parents: 24
diff changeset
1057 #define CONV_9_TO_UTF8 2
404aac550f35 updated for version 7.0017
vimboss
parents: 24
diff changeset
1058 #define CONV_TO_LATIN1 3
404aac550f35 updated for version 7.0017
vimboss
parents: 24
diff changeset
1059 #define CONV_TO_LATIN9 4
404aac550f35 updated for version 7.0017
vimboss
parents: 24
diff changeset
1060 #define CONV_ICONV 5
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1061 #ifdef WIN3264
26
404aac550f35 updated for version 7.0017
vimboss
parents: 24
diff changeset
1062 # define CONV_CODEPAGE 10 /* codepage -> codepage */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1063 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1064 #ifdef MACOS_X
26
404aac550f35 updated for version 7.0017
vimboss
parents: 24
diff changeset
1065 # define CONV_MAC_LATIN1 20
404aac550f35 updated for version 7.0017
vimboss
parents: 24
diff changeset
1066 # define CONV_LATIN1_MAC 21
404aac550f35 updated for version 7.0017
vimboss
parents: 24
diff changeset
1067 # define CONV_MAC_UTF8 22
404aac550f35 updated for version 7.0017
vimboss
parents: 24
diff changeset
1068 # define CONV_UTF8_MAC 23
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1069 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1070
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1071 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1072 * Structure used for mappings and abbreviations.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1073 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1074 typedef struct mapblock mapblock_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1075 struct mapblock
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1076 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1077 mapblock_T *m_next; /* next mapblock in list */
2610
6c05b5e5c1be updated for version 7.3.032
Bram Moolenaar <bram@vim.org>
parents: 2511
diff changeset
1078 char_u *m_keys; /* mapped from, lhs */
6c05b5e5c1be updated for version 7.3.032
Bram Moolenaar <bram@vim.org>
parents: 2511
diff changeset
1079 char_u *m_str; /* mapped to, rhs */
6c05b5e5c1be updated for version 7.3.032
Bram Moolenaar <bram@vim.org>
parents: 2511
diff changeset
1080 char_u *m_orig_str; /* rhs as entered by the user */
5041
558c815e1a38 updated for version 7.3.1264
Bram Moolenaar <bram@vim.org>
parents: 5033
diff changeset
1081 int m_keylen; /* strlen(m_keys) */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1082 int m_mode; /* valid mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1083 int m_noremap; /* if non-zero no re-mapping for m_str */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1084 char m_silent; /* <silent> used, don't echo commands */
5041
558c815e1a38 updated for version 7.3.1264
Bram Moolenaar <bram@vim.org>
parents: 5033
diff changeset
1085 char m_nowait; /* <nowait> used */
481
66080ac5dab7 updated for version 7.0130
vimboss
parents: 422
diff changeset
1086 #ifdef FEAT_EVAL
724
a35dce0cabc5 updated for version 7.0220
vimboss
parents: 707
diff changeset
1087 char m_expr; /* <expr> used, m_str is an expression */
481
66080ac5dab7 updated for version 7.0130
vimboss
parents: 422
diff changeset
1088 scid_T m_script_ID; /* ID of script where map was defined */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1089 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1090 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1091
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1092 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1093 * Used for highlighting in the status line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1094 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1095 struct stl_hlrec
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1096 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1097 char_u *start;
680
5b101ff9d4c4 updated for version 7.0203
vimboss
parents: 677
diff changeset
1098 int userhl; /* 0: no HL, 1-9: User HL, < 0 for syn ID */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1099 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1100
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1101
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1102 /*
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1103 * Syntax items - usually buffer-specific.
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1104 */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1105
123
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1106 /* Item for a hashtable. "hi_key" can be one of three values:
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1107 * NULL: Never been used
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1108 * HI_KEY_REMOVED: Entry was removed
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1109 * Otherwise: Used item, pointer to the actual key; this usually is
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1110 * inside the item, subtract an offset to locate the item.
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1111 * This reduces the size of hashitem by 1/3.
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1112 */
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1113 typedef struct hashitem_S
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1114 {
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1115 long_u hi_hash; /* cached hash number of hi_key */
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1116 char_u *hi_key;
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1117 } hashitem_T;
123
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1118
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1119 /* The address of "hash_removed" is used as a magic number for hi_key to
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1120 * indicate a removed item. */
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1121 #define HI_KEY_REMOVED &hash_removed
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1122 #define HASHITEM_EMPTY(hi) ((hi)->hi_key == NULL || (hi)->hi_key == &hash_removed)
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1123
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1124 /* Initial size for a hashtable. Our items are relatively small and growing
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1125 * is expensive, thus use 16 as a start. Must be a power of 2. */
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1126 #define HT_INIT_SIZE 16
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1127
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1128 typedef struct hashtable_S
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1129 {
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1130 long_u ht_mask; /* mask used for hash value (nr of items in
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1131 * array is "ht_mask" + 1) */
140
8ecb0db93e9a updated for version 7.0045
vimboss
parents: 133
diff changeset
1132 long_u ht_used; /* number of items used */
8ecb0db93e9a updated for version 7.0045
vimboss
parents: 133
diff changeset
1133 long_u ht_filled; /* number of items used + removed */
123
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1134 int ht_locked; /* counter for hash_lock() */
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1135 int ht_error; /* when set growing failed, can't add more
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1136 items before growing works */
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1137 hashitem_T *ht_array; /* points to the array, allocated when it's
123
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1138 not "ht_smallarray" */
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1139 hashitem_T ht_smallarray[HT_INIT_SIZE]; /* initial array */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1140 } hashtab_T;
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1141
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1142 typedef long_u hash_T; /* Type for hi_hash */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1143
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1144
9389
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1145 #ifdef FEAT_NUM64
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1146 /* Use 64-bit Number. */
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1147 # ifdef WIN3264
10025
068f397d0da4 commit https://github.com/vim/vim/commit/d90b6c02e2900576fb37d95b5e4f4a32b2d7383f
Christian Brabandt <cb@256bit.org>
parents: 9980
diff changeset
1148 # ifdef PROTO
068f397d0da4 commit https://github.com/vim/vim/commit/d90b6c02e2900576fb37d95b5e4f4a32b2d7383f
Christian Brabandt <cb@256bit.org>
parents: 9980
diff changeset
1149 typedef long varnumber_T;
068f397d0da4 commit https://github.com/vim/vim/commit/d90b6c02e2900576fb37d95b5e4f4a32b2d7383f
Christian Brabandt <cb@256bit.org>
parents: 9980
diff changeset
1150 typedef unsigned long uvarnumber_T;
10658
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1151 #define VARNUM_MIN LONG_MIN
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1152 #define VARNUM_MAX LONG_MAX
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1153 #define UVARNUM_MAX ULONG_MAX
10025
068f397d0da4 commit https://github.com/vim/vim/commit/d90b6c02e2900576fb37d95b5e4f4a32b2d7383f
Christian Brabandt <cb@256bit.org>
parents: 9980
diff changeset
1154 # else
9389
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1155 typedef __int64 varnumber_T;
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1156 typedef unsigned __int64 uvarnumber_T;
10658
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1157 #define VARNUM_MIN _I64_MIN
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1158 #define VARNUM_MAX _I64_MAX
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1159 #define UVARNUM_MAX _UI64_MAX
10025
068f397d0da4 commit https://github.com/vim/vim/commit/d90b6c02e2900576fb37d95b5e4f4a32b2d7383f
Christian Brabandt <cb@256bit.org>
parents: 9980
diff changeset
1160 # endif
9389
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1161 # elif defined(HAVE_STDINT_H)
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1162 typedef int64_t varnumber_T;
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1163 typedef uint64_t uvarnumber_T;
10658
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1164 #define VARNUM_MIN INT64_MIN
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1165 #define VARNUM_MAX INT64_MAX
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1166 #define UVARNUM_MAX UINT64_MAX
9389
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1167 # else
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1168 typedef long varnumber_T;
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1169 typedef unsigned long uvarnumber_T;
10658
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1170 #define VARNUM_MIN LONG_MIN
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1171 #define VARNUM_MAX LONG_MAX
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1172 #define UVARNUM_MAX ULONG_MAX
9389
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1173 # endif
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1174 #else
9389
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1175 /* Use 32-bit Number. */
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1176 # if VIM_SIZEOF_INT <= 3 /* use long if int is smaller than 32 bits */
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1177 typedef long varnumber_T;
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1178 typedef unsigned long uvarnumber_T;
10658
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1179 #define VARNUM_MIN LONG_MIN
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1180 #define VARNUM_MAX LONG_MAX
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1181 #define UVARNUM_MAX ULONG_MAX
9389
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1182 # else
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1183 typedef int varnumber_T;
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1184 typedef unsigned int uvarnumber_T;
10658
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1185 #define VARNUM_MIN INT_MIN
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1186 #define VARNUM_MAX INT_MAX
77d66e9ac0ab patch 8.0.0219: ubsan reports errors for overflow
Christian Brabandt <cb@256bit.org>
parents: 10579
diff changeset
1187 #define UVARNUM_MAX UINT_MAX
9389
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1188 # endif
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1189 #endif
9389
32e34e574716 commit https://github.com/vim/vim/commit/22fcfad29276bd5f317faf516637dcd491b96a12
Christian Brabandt <cb@256bit.org>
parents: 9387
diff changeset
1190
1622
149d8b46404c updated for version 7.2a
vimboss
parents: 1521
diff changeset
1191 typedef double float_T;
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1192
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1193 typedef struct listvar_S list_T;
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1194 typedef struct dictvar_S dict_T;
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1195 typedef struct partial_S partial_T;
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1196
7957
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1197 typedef struct jobvar_S job_T;
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1198 typedef struct readq_S readq_T;
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1199 typedef struct jsonq_S jsonq_T;
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1200 typedef struct cbq_S cbq_T;
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1201 typedef struct channel_S channel_T;
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1202
7943
e875f0fbd9c0 commit https://github.com/vim/vim/commit/a03f23351588f04276469cd7742b7ec655bb604b
Christian Brabandt <cb@256bit.org>
parents: 7883
diff changeset
1203 typedef enum
e875f0fbd9c0 commit https://github.com/vim/vim/commit/a03f23351588f04276469cd7742b7ec655bb604b
Christian Brabandt <cb@256bit.org>
parents: 7883
diff changeset
1204 {
e875f0fbd9c0 commit https://github.com/vim/vim/commit/a03f23351588f04276469cd7742b7ec655bb604b
Christian Brabandt <cb@256bit.org>
parents: 7883
diff changeset
1205 VAR_UNKNOWN = 0,
7957
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1206 VAR_NUMBER, /* "v_number" is used */
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1207 VAR_STRING, /* "v_string" is used */
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1208 VAR_FUNC, /* "v_string" is function name */
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1209 VAR_PARTIAL, /* "v_partial" is used */
7957
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1210 VAR_LIST, /* "v_list" is used */
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1211 VAR_DICT, /* "v_dict" is used */
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1212 VAR_FLOAT, /* "v_float" is used */
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1213 VAR_SPECIAL, /* "v_number" is used */
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1214 VAR_JOB, /* "v_job" is used */
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1215 VAR_CHANNEL /* "v_channel" is used */
7943
e875f0fbd9c0 commit https://github.com/vim/vim/commit/a03f23351588f04276469cd7742b7ec655bb604b
Christian Brabandt <cb@256bit.org>
parents: 7883
diff changeset
1216 } vartype_T;
e875f0fbd9c0 commit https://github.com/vim/vim/commit/a03f23351588f04276469cd7742b7ec655bb604b
Christian Brabandt <cb@256bit.org>
parents: 7883
diff changeset
1217
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1218 /*
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1219 * Structure to hold an internal variable without a name.
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1220 */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1221 typedef struct
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1222 {
7943
e875f0fbd9c0 commit https://github.com/vim/vim/commit/a03f23351588f04276469cd7742b7ec655bb604b
Christian Brabandt <cb@256bit.org>
parents: 7883
diff changeset
1223 vartype_T v_type;
148
72aefd4c1e0d updated for version 7.0046
vimboss
parents: 140
diff changeset
1224 char v_lock; /* see below: VAR_LOCKED, VAR_FIXED */
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1225 union
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1226 {
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1227 varnumber_T v_number; /* number value */
1622
149d8b46404c updated for version 7.2a
vimboss
parents: 1521
diff changeset
1228 #ifdef FEAT_FLOAT
149d8b46404c updated for version 7.2a
vimboss
parents: 1521
diff changeset
1229 float_T v_float; /* floating number value */
149d8b46404c updated for version 7.2a
vimboss
parents: 1521
diff changeset
1230 #endif
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1231 char_u *v_string; /* string value (can be NULL!) */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1232 list_T *v_list; /* list value (can be NULL!) */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1233 dict_T *v_dict; /* dict value (can be NULL!) */
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1234 partial_T *v_partial; /* closure: function with args */
8493
caed4b2d305f commit https://github.com/vim/vim/commit/509ce2a558e7e0c03242e32e844255af52f1c821
Christian Brabandt <cb@256bit.org>
parents: 8491
diff changeset
1235 #ifdef FEAT_JOB_CHANNEL
7957
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1236 job_T *v_job; /* job value (can be NULL!) */
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1237 channel_T *v_channel; /* channel value (can be NULL!) */
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1238 #endif
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1239 } vval;
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1240 } typval_T;
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1241
3687
085f14642fe8 updated for version 7.3.603
Bram Moolenaar <bram@vim.org>
parents: 3570
diff changeset
1242 /* Values for "dv_scope". */
085f14642fe8 updated for version 7.3.603
Bram Moolenaar <bram@vim.org>
parents: 3570
diff changeset
1243 #define VAR_SCOPE 1 /* a:, v:, s:, etc. scope dictionaries */
085f14642fe8 updated for version 7.3.603
Bram Moolenaar <bram@vim.org>
parents: 3570
diff changeset
1244 #define VAR_DEF_SCOPE 2 /* l:, g: scope dictionaries: here funcrefs are not
085f14642fe8 updated for version 7.3.603
Bram Moolenaar <bram@vim.org>
parents: 3570
diff changeset
1245 allowed to mask existing functions */
085f14642fe8 updated for version 7.3.603
Bram Moolenaar <bram@vim.org>
parents: 3570
diff changeset
1246
148
72aefd4c1e0d updated for version 7.0046
vimboss
parents: 140
diff changeset
1247 /* Values for "v_lock". */
72aefd4c1e0d updated for version 7.0046
vimboss
parents: 140
diff changeset
1248 #define VAR_LOCKED 1 /* locked with lock(), can use unlock() */
72aefd4c1e0d updated for version 7.0046
vimboss
parents: 140
diff changeset
1249 #define VAR_FIXED 2 /* locked forever */
72aefd4c1e0d updated for version 7.0046
vimboss
parents: 140
diff changeset
1250
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1251 /*
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1252 * Structure to hold an item of a list: an internal variable without a name.
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1253 */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1254 typedef struct listitem_S listitem_T;
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1255
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1256 struct listitem_S
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1257 {
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1258 listitem_T *li_next; /* next item in list */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1259 listitem_T *li_prev; /* previous item in list */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1260 typval_T li_tv; /* type and value of the variable */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1261 };
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1262
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1263 /*
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1264 * Struct used by those that are using an item in a list.
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1265 */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1266 typedef struct listwatch_S listwatch_T;
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1267
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1268 struct listwatch_S
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1269 {
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1270 listitem_T *lw_item; /* item being watched */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1271 listwatch_T *lw_next; /* next watcher */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1272 };
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1273
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1274 /*
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1275 * Structure to hold info about a list.
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1276 */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1277 struct listvar_S
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1278 {
370
3a21825ad207 updated for version 7.0095
vimboss
parents: 344
diff changeset
1279 listitem_T *lv_first; /* first item, NULL if none */
3a21825ad207 updated for version 7.0095
vimboss
parents: 344
diff changeset
1280 listitem_T *lv_last; /* last item, NULL if none */
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1281 int lv_refcount; /* reference count */
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
1282 int lv_len; /* number of items */
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1283 listwatch_T *lv_watch; /* first watcher, NULL if none */
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
1284 int lv_idx; /* cached index of an item */
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
1285 listitem_T *lv_idx_item; /* when not NULL item at index "lv_idx" */
164
8b0ee9d57d7f updated for version 7.0050
vimboss
parents: 161
diff changeset
1286 int lv_copyID; /* ID used by deepcopy() */
8b0ee9d57d7f updated for version 7.0050
vimboss
parents: 161
diff changeset
1287 list_T *lv_copylist; /* copied list used by deepcopy() */
148
72aefd4c1e0d updated for version 7.0046
vimboss
parents: 140
diff changeset
1288 char lv_lock; /* zero, VAR_LOCKED, VAR_FIXED */
510
b47114409935 updated for version 7.0143
vimboss
parents: 502
diff changeset
1289 list_T *lv_used_next; /* next list in used lists list */
370
3a21825ad207 updated for version 7.0095
vimboss
parents: 344
diff changeset
1290 list_T *lv_used_prev; /* previous list in used lists list */
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1291 };
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1292
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1293 /*
9626
172131507c85 commit https://github.com/vim/vim/commit/df48fb456fb6bf63d94cad9b302ff01d8ee8d311
Christian Brabandt <cb@256bit.org>
parents: 9608
diff changeset
1294 * Static list with 10 items. Use init_static_list() to initialize.
172131507c85 commit https://github.com/vim/vim/commit/df48fb456fb6bf63d94cad9b302ff01d8ee8d311
Christian Brabandt <cb@256bit.org>
parents: 9608
diff changeset
1295 */
172131507c85 commit https://github.com/vim/vim/commit/df48fb456fb6bf63d94cad9b302ff01d8ee8d311
Christian Brabandt <cb@256bit.org>
parents: 9608
diff changeset
1296 typedef struct {
172131507c85 commit https://github.com/vim/vim/commit/df48fb456fb6bf63d94cad9b302ff01d8ee8d311
Christian Brabandt <cb@256bit.org>
parents: 9608
diff changeset
1297 list_T sl_list; /* must be first */
172131507c85 commit https://github.com/vim/vim/commit/df48fb456fb6bf63d94cad9b302ff01d8ee8d311
Christian Brabandt <cb@256bit.org>
parents: 9608
diff changeset
1298 listitem_T sl_items[10];
172131507c85 commit https://github.com/vim/vim/commit/df48fb456fb6bf63d94cad9b302ff01d8ee8d311
Christian Brabandt <cb@256bit.org>
parents: 9608
diff changeset
1299 } staticList10_T;
172131507c85 commit https://github.com/vim/vim/commit/df48fb456fb6bf63d94cad9b302ff01d8ee8d311
Christian Brabandt <cb@256bit.org>
parents: 9608
diff changeset
1300
172131507c85 commit https://github.com/vim/vim/commit/df48fb456fb6bf63d94cad9b302ff01d8ee8d311
Christian Brabandt <cb@256bit.org>
parents: 9608
diff changeset
1301 /*
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1302 * Structure to hold an item of a Dictionary.
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1303 * Also used for a variable.
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1304 * The key is copied into "di_key" to avoid an extra alloc/free for it.
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1305 */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1306 struct dictitem_S
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1307 {
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1308 typval_T di_tv; /* type and value of the variable */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1309 char_u di_flags; /* flags (only used for variable) */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1310 char_u di_key[1]; /* key (actually longer!) */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1311 };
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1312 typedef struct dictitem_S dictitem_T;
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1313
8718
f1840a719771 commit https://github.com/vim/vim/commit/bee6c0cf86a75faa2aa893f2c9db82fd944a89a5
Christian Brabandt <cb@256bit.org>
parents: 8674
diff changeset
1314 /* A dictitem with a 16 character key (plus NUL). */
f1840a719771 commit https://github.com/vim/vim/commit/bee6c0cf86a75faa2aa893f2c9db82fd944a89a5
Christian Brabandt <cb@256bit.org>
parents: 8674
diff changeset
1315 struct dictitem16_S
f1840a719771 commit https://github.com/vim/vim/commit/bee6c0cf86a75faa2aa893f2c9db82fd944a89a5
Christian Brabandt <cb@256bit.org>
parents: 8674
diff changeset
1316 {
f1840a719771 commit https://github.com/vim/vim/commit/bee6c0cf86a75faa2aa893f2c9db82fd944a89a5
Christian Brabandt <cb@256bit.org>
parents: 8674
diff changeset
1317 typval_T di_tv; /* type and value of the variable */
f1840a719771 commit https://github.com/vim/vim/commit/bee6c0cf86a75faa2aa893f2c9db82fd944a89a5
Christian Brabandt <cb@256bit.org>
parents: 8674
diff changeset
1318 char_u di_flags; /* flags (only used for variable) */
f1840a719771 commit https://github.com/vim/vim/commit/bee6c0cf86a75faa2aa893f2c9db82fd944a89a5
Christian Brabandt <cb@256bit.org>
parents: 8674
diff changeset
1319 char_u di_key[17]; /* key */
f1840a719771 commit https://github.com/vim/vim/commit/bee6c0cf86a75faa2aa893f2c9db82fd944a89a5
Christian Brabandt <cb@256bit.org>
parents: 8674
diff changeset
1320 };
f1840a719771 commit https://github.com/vim/vim/commit/bee6c0cf86a75faa2aa893f2c9db82fd944a89a5
Christian Brabandt <cb@256bit.org>
parents: 8674
diff changeset
1321 typedef struct dictitem16_S dictitem16_T;
f1840a719771 commit https://github.com/vim/vim/commit/bee6c0cf86a75faa2aa893f2c9db82fd944a89a5
Christian Brabandt <cb@256bit.org>
parents: 8674
diff changeset
1322
6751
f5b262981753 patch 7.4.698
Bram Moolenaar <bram@vim.org>
parents: 6689
diff changeset
1323 #define DI_FLAGS_RO 1 /* "di_flags" value: read-only variable */
f5b262981753 patch 7.4.698
Bram Moolenaar <bram@vim.org>
parents: 6689
diff changeset
1324 #define DI_FLAGS_RO_SBX 2 /* "di_flags" value: read-only in the sandbox */
f5b262981753 patch 7.4.698
Bram Moolenaar <bram@vim.org>
parents: 6689
diff changeset
1325 #define DI_FLAGS_FIX 4 /* "di_flags" value: fixed: no :unlet or remove() */
f5b262981753 patch 7.4.698
Bram Moolenaar <bram@vim.org>
parents: 6689
diff changeset
1326 #define DI_FLAGS_LOCK 8 /* "di_flags" value: locked variable */
f5b262981753 patch 7.4.698
Bram Moolenaar <bram@vim.org>
parents: 6689
diff changeset
1327 #define DI_FLAGS_ALLOC 16 /* "di_flags" value: separately allocated */
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1328
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1329 /*
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1330 * Structure to hold info about a Dictionary.
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1331 */
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1332 struct dictvar_S
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1333 {
148
72aefd4c1e0d updated for version 7.0046
vimboss
parents: 140
diff changeset
1334 char dv_lock; /* zero, VAR_LOCKED, VAR_FIXED */
3687
085f14642fe8 updated for version 7.3.603
Bram Moolenaar <bram@vim.org>
parents: 3570
diff changeset
1335 char dv_scope; /* zero, VAR_SCOPE, VAR_DEF_SCOPE */
4861
e79a20f07daa updated for version 7.3.1177
Bram Moolenaar <bram@vim.org>
parents: 4766
diff changeset
1336 int dv_refcount; /* reference count */
e79a20f07daa updated for version 7.3.1177
Bram Moolenaar <bram@vim.org>
parents: 4766
diff changeset
1337 int dv_copyID; /* ID used by deepcopy() */
e79a20f07daa updated for version 7.3.1177
Bram Moolenaar <bram@vim.org>
parents: 4766
diff changeset
1338 hashtab_T dv_hashtab; /* hashtab that refers to the items */
e79a20f07daa updated for version 7.3.1177
Bram Moolenaar <bram@vim.org>
parents: 4766
diff changeset
1339 dict_T *dv_copydict; /* copied dict used by deepcopy() */
370
3a21825ad207 updated for version 7.0095
vimboss
parents: 344
diff changeset
1340 dict_T *dv_used_next; /* next dict in used dicts list */
3a21825ad207 updated for version 7.0095
vimboss
parents: 344
diff changeset
1341 dict_T *dv_used_prev; /* previous dict in used dicts list */
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1342 };
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
1343
9723
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1344 #if defined(FEAT_EVAL) || defined(PROTO)
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1345 typedef struct funccall_S funccall_T;
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1346
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1347 /*
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1348 * Structure to hold info for a user function.
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1349 */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1350 typedef struct
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1351 {
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1352 int uf_varargs; /* variable nr of arguments */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1353 int uf_flags;
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1354 int uf_calls; /* nr of active calls */
10815
f883a1224396 patch 8.0.0297: double free on exit when using a closure
Christian Brabandt <cb@256bit.org>
parents: 10658
diff changeset
1355 int uf_cleared; /* func_clear() was already called */
9723
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1356 garray_T uf_args; /* arguments */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1357 garray_T uf_lines; /* function lines */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1358 #ifdef FEAT_PROFILE
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1359 int uf_profiling; /* TRUE when func is being profiled */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1360 /* profiling the function as a whole */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1361 int uf_tm_count; /* nr of calls */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1362 proftime_T uf_tm_total; /* time spent in function + children */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1363 proftime_T uf_tm_self; /* time spent in function itself */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1364 proftime_T uf_tm_children; /* time spent in children this call */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1365 /* profiling the function per line */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1366 int *uf_tml_count; /* nr of times line was executed */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1367 proftime_T *uf_tml_total; /* time spent in a line + children */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1368 proftime_T *uf_tml_self; /* time spent in a line itself */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1369 proftime_T uf_tml_start; /* start time for current line */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1370 proftime_T uf_tml_children; /* time spent in children for this line */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1371 proftime_T uf_tml_wait; /* start wait time for current line */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1372 int uf_tml_idx; /* index of line being timed; -1 if none */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1373 int uf_tml_execed; /* line being timed was executed */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1374 #endif
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1375 scid_T uf_script_ID; /* ID of script where function was defined,
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1376 used for s: variables */
9733
59565cdd7261 commit https://github.com/vim/vim/commit/8dd3a43d75550e9b5736066124c97697564f769e
Christian Brabandt <cb@256bit.org>
parents: 9729
diff changeset
1377 int uf_refcount; /* reference count, see func_name_refcount() */
9723
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1378 funccall_T *uf_scoped; /* l: local variables for closure */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1379 char_u uf_name[1]; /* name of function (actually longer); can
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1380 start with <SNR>123_ (<SNR> is K_SPECIAL
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1381 KS_EXTRA KE_SNR) */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1382 } ufunc_T;
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1383
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1384 #define MAX_FUNC_ARGS 20 /* maximum number of function arguments */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1385 #define VAR_SHORT_LEN 20 /* short variable name length */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1386 #define FIXVAR_CNT 12 /* number of fixed variables */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1387
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1388 /* structure to hold info for a function that is currently being executed. */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1389 struct funccall_S
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1390 {
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1391 ufunc_T *func; /* function being called */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1392 int linenr; /* next line to be executed */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1393 int returned; /* ":return" used */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1394 struct /* fixed variables for arguments */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1395 {
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1396 dictitem_T var; /* variable (without room for name) */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1397 char_u room[VAR_SHORT_LEN]; /* room for the name */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1398 } fixvar[FIXVAR_CNT];
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1399 dict_T l_vars; /* l: local function variables */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1400 dictitem_T l_vars_var; /* variable for l: scope */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1401 dict_T l_avars; /* a: argument variables */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1402 dictitem_T l_avars_var; /* variable for a: scope */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1403 list_T l_varlist; /* list for a:000 */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1404 listitem_T l_listitems[MAX_FUNC_ARGS]; /* listitems for a:000 */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1405 typval_T *rettv; /* return value */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1406 linenr_T breakpoint; /* next line with breakpoint or zero */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1407 int dbg_tick; /* debug_tick when breakpoint was set */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1408 int level; /* top nesting level of executed function */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1409 #ifdef FEAT_PROFILE
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1410 proftime_T prof_child; /* time spent in a child */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1411 #endif
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1412 funccall_T *caller; /* calling function or NULL */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1413
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1414 /* for closure */
9733
59565cdd7261 commit https://github.com/vim/vim/commit/8dd3a43d75550e9b5736066124c97697564f769e
Christian Brabandt <cb@256bit.org>
parents: 9729
diff changeset
1415 int fc_refcount; /* number of user functions that reference this
59565cdd7261 commit https://github.com/vim/vim/commit/8dd3a43d75550e9b5736066124c97697564f769e
Christian Brabandt <cb@256bit.org>
parents: 9729
diff changeset
1416 * funccal */
9723
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1417 int fc_copyID; /* for garbage collection */
9733
59565cdd7261 commit https://github.com/vim/vim/commit/8dd3a43d75550e9b5736066124c97697564f769e
Christian Brabandt <cb@256bit.org>
parents: 9729
diff changeset
1418 garray_T fc_funcs; /* list of ufunc_T* which keep a reference to
59565cdd7261 commit https://github.com/vim/vim/commit/8dd3a43d75550e9b5736066124c97697564f769e
Christian Brabandt <cb@256bit.org>
parents: 9729
diff changeset
1419 * "func" */
9723
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1420 };
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1421
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1422 /*
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1423 * Struct used by trans_function_name()
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1424 */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1425 typedef struct
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1426 {
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1427 dict_T *fd_dict; /* Dictionary used */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1428 char_u *fd_newkey; /* new key in "dict" in allocated memory */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1429 dictitem_T *fd_di; /* Dictionary item used */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1430 } funcdict_T;
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1431
9729
02ba9b2f80e8 commit https://github.com/vim/vim/commit/acadbeabe1dafb314ae5fdba0432f313e55bb3a2
Christian Brabandt <cb@256bit.org>
parents: 9723
diff changeset
1432 #else
02ba9b2f80e8 commit https://github.com/vim/vim/commit/acadbeabe1dafb314ae5fdba0432f313e55bb3a2
Christian Brabandt <cb@256bit.org>
parents: 9723
diff changeset
1433 /* dummy typedefs for function prototypes */
02ba9b2f80e8 commit https://github.com/vim/vim/commit/acadbeabe1dafb314ae5fdba0432f313e55bb3a2
Christian Brabandt <cb@256bit.org>
parents: 9723
diff changeset
1434 typedef struct
02ba9b2f80e8 commit https://github.com/vim/vim/commit/acadbeabe1dafb314ae5fdba0432f313e55bb3a2
Christian Brabandt <cb@256bit.org>
parents: 9723
diff changeset
1435 {
02ba9b2f80e8 commit https://github.com/vim/vim/commit/acadbeabe1dafb314ae5fdba0432f313e55bb3a2
Christian Brabandt <cb@256bit.org>
parents: 9723
diff changeset
1436 int dummy;
02ba9b2f80e8 commit https://github.com/vim/vim/commit/acadbeabe1dafb314ae5fdba0432f313e55bb3a2
Christian Brabandt <cb@256bit.org>
parents: 9723
diff changeset
1437 } ufunc_T;
02ba9b2f80e8 commit https://github.com/vim/vim/commit/acadbeabe1dafb314ae5fdba0432f313e55bb3a2
Christian Brabandt <cb@256bit.org>
parents: 9723
diff changeset
1438 typedef struct
02ba9b2f80e8 commit https://github.com/vim/vim/commit/acadbeabe1dafb314ae5fdba0432f313e55bb3a2
Christian Brabandt <cb@256bit.org>
parents: 9723
diff changeset
1439 {
02ba9b2f80e8 commit https://github.com/vim/vim/commit/acadbeabe1dafb314ae5fdba0432f313e55bb3a2
Christian Brabandt <cb@256bit.org>
parents: 9723
diff changeset
1440 int dummy;
02ba9b2f80e8 commit https://github.com/vim/vim/commit/acadbeabe1dafb314ae5fdba0432f313e55bb3a2
Christian Brabandt <cb@256bit.org>
parents: 9723
diff changeset
1441 } funcdict_T;
9723
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1442 #endif
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1443
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1444 struct partial_S
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1445 {
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1446 int pt_refcount; /* reference count */
9723
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1447 char_u *pt_name; /* function name; when NULL use
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1448 * pt_func->uf_name */
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1449 ufunc_T *pt_func; /* function pointer; when NULL lookup function
80ac9cf77c9b commit https://github.com/vim/vim/commit/437bafe4c8a83ed71ee006eda7f54b65a90f0d4c
Christian Brabandt <cb@256bit.org>
parents: 9626
diff changeset
1450 * with pt_name */
9104
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 9085
diff changeset
1451 int pt_auto; /* when TRUE the partial was created for using
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 9085
diff changeset
1452 dict.member in handle_subscript() */
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1453 int pt_argc; /* number of arguments */
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1454 typval_T *pt_argv; /* arguments in allocated array */
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1455 dict_T *pt_dict; /* dict for "self" */
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1456 };
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1457
10386
d3f0946b4a80 commit https://github.com/vim/vim/commit/7df915d113ac1981792c50e8b000c9f5f784b78b
Christian Brabandt <cb@256bit.org>
parents: 10361
diff changeset
1458 /* Status of a job. Order matters! */
7957
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1459 typedef enum
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1460 {
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1461 JOB_FAILED,
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1462 JOB_STARTED,
10386
d3f0946b4a80 commit https://github.com/vim/vim/commit/7df915d113ac1981792c50e8b000c9f5f784b78b
Christian Brabandt <cb@256bit.org>
parents: 10361
diff changeset
1463 JOB_ENDED, /* detected job done */
d3f0946b4a80 commit https://github.com/vim/vim/commit/7df915d113ac1981792c50e8b000c9f5f784b78b
Christian Brabandt <cb@256bit.org>
parents: 10361
diff changeset
1464 JOB_FINISHED /* job done and cleanup done */
7957
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1465 } jobstatus_T;
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1466
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1467 /*
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1468 * Structure to hold info about a Job.
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1469 */
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1470 struct jobvar_S
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1471 {
8170
a0ffb1f3dedc commit https://github.com/vim/vim/commit/65edff8f51e9e54f85407bdb9156ae8e3e1b76a1
Christian Brabandt <cb@256bit.org>
parents: 8165
diff changeset
1472 job_T *jv_next;
a0ffb1f3dedc commit https://github.com/vim/vim/commit/65edff8f51e9e54f85407bdb9156ae8e3e1b76a1
Christian Brabandt <cb@256bit.org>
parents: 8165
diff changeset
1473 job_T *jv_prev;
7957
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1474 #ifdef UNIX
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1475 pid_t jv_pid;
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1476 #endif
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1477 #ifdef WIN32
8023
75e0831549f1 commit https://github.com/vim/vim/commit/76467dfcafcf295fd987f712730774c6f55317d3
Christian Brabandt <cb@256bit.org>
parents: 8015
diff changeset
1478 PROCESS_INFORMATION jv_proc_info;
10311
931422d27b69 commit https://github.com/vim/vim/commit/14207f487c9e79a913256a41e3e9716b03b46955
Christian Brabandt <cb@256bit.org>
parents: 10304
diff changeset
1479 HANDLE jv_job_object;
7957
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1480 #endif
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1481 jobstatus_T jv_status;
8170
a0ffb1f3dedc commit https://github.com/vim/vim/commit/65edff8f51e9e54f85407bdb9156ae8e3e1b76a1
Christian Brabandt <cb@256bit.org>
parents: 8165
diff changeset
1482 char_u *jv_stoponexit; /* allocated */
8176
477c1d855698 commit https://github.com/vim/vim/commit/eab089d22f172ddd2d33367a998e68c2f1c6c989
Christian Brabandt <cb@256bit.org>
parents: 8174
diff changeset
1483 int jv_exitval;
8174
f2286ff0c102 commit https://github.com/vim/vim/commit/ee1cffc07a42441924c5353af7fd7ab6e97e5aae
Christian Brabandt <cb@256bit.org>
parents: 8170
diff changeset
1484 char_u *jv_exit_cb; /* allocated */
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1485 partial_T *jv_exit_partial;
7957
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1486
8386
3b9a306724ec commit https://github.com/vim/vim/commit/014069a7ac51557e531eb3c8b94e36f2193f6c21
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
1487 buf_T *jv_in_buf; /* buffer from "in-name" */
3b9a306724ec commit https://github.com/vim/vim/commit/014069a7ac51557e531eb3c8b94e36f2193f6c21
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
1488
7957
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1489 int jv_refcount; /* reference count */
8863
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8761
diff changeset
1490 int jv_copyID;
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8761
diff changeset
1491
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1492 channel_T *jv_channel; /* channel for I/O, reference counted */
7957
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1493 };
b74549818500 commit https://github.com/vim/vim/commit/835dc636a5350f610b62f110227d2363b5b2880a
Christian Brabandt <cb@256bit.org>
parents: 7943
diff changeset
1494
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1495 /*
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1496 * Structures to hold info about a Channel.
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1497 */
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1498 struct readq_S
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1499 {
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1500 char_u *rq_buffer;
9215
d2d44592467d commit https://github.com/vim/vim/commit/9ed96efb3d47d46e9637da04656efff715102407
Christian Brabandt <cb@256bit.org>
parents: 9201
diff changeset
1501 long_u rq_buflen;
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1502 readq_T *rq_next;
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1503 readq_T *rq_prev;
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1504 };
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1505
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1506 struct jsonq_S
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1507 {
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1508 typval_T *jq_value;
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1509 jsonq_T *jq_next;
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1510 jsonq_T *jq_prev;
10426
acfc83aca8ee commit https://github.com/vim/vim/commit/958dc6923d341390531888058495569d73c356c3
Christian Brabandt <cb@256bit.org>
parents: 10404
diff changeset
1511 int jq_no_callback; /* TRUE when no callback was found */
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1512 };
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1513
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1514 struct cbq_S
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1515 {
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1516 char_u *cq_callback;
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1517 partial_T *cq_partial;
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1518 int cq_seq_nr;
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1519 cbq_T *cq_next;
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1520 cbq_T *cq_prev;
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1521 };
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1522
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1523 /* mode for a channel */
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1524 typedef enum
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1525 {
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1526 MODE_NL = 0,
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1527 MODE_RAW,
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1528 MODE_JSON,
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1529 MODE_JS
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1530 } ch_mode_T;
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1531
8674
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1532 typedef enum {
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1533 JIO_PIPE, /* default */
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1534 JIO_NULL,
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1535 JIO_FILE,
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1536 JIO_BUFFER,
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1537 JIO_OUT
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1538 } job_io_T;
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1539
8049
15253130abd8 commit https://github.com/vim/vim/commit/16eb4f88000cfdba68df6c421fe44e7e029ba53e
Christian Brabandt <cb@256bit.org>
parents: 8047
diff changeset
1540 /* Ordering matters, it is used in for loops: IN is last, only SOCK/OUT/ERR
15253130abd8 commit https://github.com/vim/vim/commit/16eb4f88000cfdba68df6c421fe44e7e029ba53e
Christian Brabandt <cb@256bit.org>
parents: 8047
diff changeset
1541 * are polled. */
10259
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1542 typedef enum {
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1543 PART_SOCK = 0,
8151
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1544 #define CH_SOCK_FD ch_part[PART_SOCK].ch_fd
8493
caed4b2d305f commit https://github.com/vim/vim/commit/509ce2a558e7e0c03242e32e844255af52f1c821
Christian Brabandt <cb@256bit.org>
parents: 8491
diff changeset
1545 #ifdef FEAT_JOB_CHANNEL
10259
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1546 PART_OUT,
8151
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1547 # define CH_OUT_FD ch_part[PART_OUT].ch_fd
10259
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1548 PART_ERR,
8151
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1549 # define CH_ERR_FD ch_part[PART_ERR].ch_fd
10259
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1550 PART_IN,
8151
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1551 # define CH_IN_FD ch_part[PART_IN].ch_fd
8047
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1552 #endif
10259
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1553 PART_COUNT
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1554 } ch_part_T;
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1555
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1556 #define INVALID_FD (-1)
8047
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1557
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1558 /* The per-fd info for a channel. */
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1559 typedef struct {
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1560 sock_T ch_fd; /* socket/stdin/stdout/stderr, -1 if not used */
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1561
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1562 # if defined(UNIX) && !defined(HAVE_SELECT)
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1563 int ch_poll_idx; /* used by channel_poll_setup() */
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1564 # endif
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1565
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1566 #ifdef FEAT_GUI_X11
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1567 XtInputId ch_inputHandler; /* Cookie for input */
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1568 #endif
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1569 #ifdef FEAT_GUI_GTK
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1570 gint ch_inputHandler; /* Cookie for input */
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1571 #endif
8151
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1572
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1573 ch_mode_T ch_mode;
8674
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1574 job_io_T ch_io;
8151
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1575 int ch_timeout; /* request timeout in msec */
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1576
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1577 readq_T ch_head; /* header for circular raw read queue */
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1578 jsonq_T ch_json_head; /* header for circular json read queue */
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1579 int ch_block_id; /* ID that channel_read_json_block() is
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1580 waiting for */
10845
c31782d57569 patch 8.0.0312: failure when a channel receives a split json message
Christian Brabandt <cb@256bit.org>
parents: 10815
diff changeset
1581 /* When ch_wait_len is non-zero use ch_deadline to wait for incomplete
c31782d57569 patch 8.0.0312: failure when a channel receives a split json message
Christian Brabandt <cb@256bit.org>
parents: 10815
diff changeset
1582 * message to be complete. The value is the length of the incomplete
c31782d57569 patch 8.0.0312: failure when a channel receives a split json message
Christian Brabandt <cb@256bit.org>
parents: 10815
diff changeset
1583 * message when the deadline was set. If it gets longer (something was
c31782d57569 patch 8.0.0312: failure when a channel receives a split json message
Christian Brabandt <cb@256bit.org>
parents: 10815
diff changeset
1584 * received) the deadline is reset. */
c31782d57569 patch 8.0.0312: failure when a channel receives a split json message
Christian Brabandt <cb@256bit.org>
parents: 10815
diff changeset
1585 size_t ch_wait_len;
8655
1eb302bf2475 commit https://github.com/vim/vim/commit/ba61ac0d61f46de7d29c64bb0de6d25c2e378be0
Christian Brabandt <cb@256bit.org>
parents: 8643
diff changeset
1586 #ifdef WIN32
1eb302bf2475 commit https://github.com/vim/vim/commit/ba61ac0d61f46de7d29c64bb0de6d25c2e378be0
Christian Brabandt <cb@256bit.org>
parents: 8643
diff changeset
1587 DWORD ch_deadline;
1eb302bf2475 commit https://github.com/vim/vim/commit/ba61ac0d61f46de7d29c64bb0de6d25c2e378be0
Christian Brabandt <cb@256bit.org>
parents: 8643
diff changeset
1588 #else
1eb302bf2475 commit https://github.com/vim/vim/commit/ba61ac0d61f46de7d29c64bb0de6d25c2e378be0
Christian Brabandt <cb@256bit.org>
parents: 8643
diff changeset
1589 struct timeval ch_deadline;
1eb302bf2475 commit https://github.com/vim/vim/commit/ba61ac0d61f46de7d29c64bb0de6d25c2e378be0
Christian Brabandt <cb@256bit.org>
parents: 8643
diff changeset
1590 #endif
8761
f8707ec9efe4 commit https://github.com/vim/vim/commit/8b877ac38e96424a08a8b8eb713ef4b3cf0064be
Christian Brabandt <cb@256bit.org>
parents: 8755
diff changeset
1591 int ch_block_write; /* for testing: 0 when not used, -1 when write
f8707ec9efe4 commit https://github.com/vim/vim/commit/8b877ac38e96424a08a8b8eb713ef4b3cf0064be
Christian Brabandt <cb@256bit.org>
parents: 8755
diff changeset
1592 * does not block, 1 simulate blocking */
8151
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1593
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1594 cbq_T ch_cb_head; /* dummy node for per-request callbacks */
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1595 char_u *ch_callback; /* call when a msg is not handled */
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1596 partial_T *ch_partial;
8386
3b9a306724ec commit https://github.com/vim/vim/commit/014069a7ac51557e531eb3c8b94e36f2193f6c21
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
1597
9487
69ed2c9d34a6 commit https://github.com/vim/vim/commit/7c0a2f367f2507669560b1a66423155c70d2e75b
Christian Brabandt <cb@256bit.org>
parents: 9475
diff changeset
1598 bufref_T ch_bufref; /* buffer to read from or write to */
9147
053bc64433ec commit https://github.com/vim/vim/commit/9f5842e63fc63d438cbffcec503e072a06f74dc2
Christian Brabandt <cb@256bit.org>
parents: 9104
diff changeset
1599 int ch_nomodifiable; /* TRUE when buffer can be 'nomodifiable' */
053bc64433ec commit https://github.com/vim/vim/commit/9f5842e63fc63d438cbffcec503e072a06f74dc2
Christian Brabandt <cb@256bit.org>
parents: 9104
diff changeset
1600 int ch_nomod_error; /* TRUE when e_modifiable was given */
8761
f8707ec9efe4 commit https://github.com/vim/vim/commit/8b877ac38e96424a08a8b8eb713ef4b3cf0064be
Christian Brabandt <cb@256bit.org>
parents: 8755
diff changeset
1601 int ch_buf_append; /* write appended lines instead top-bot */
8386
3b9a306724ec commit https://github.com/vim/vim/commit/014069a7ac51557e531eb3c8b94e36f2193f6c21
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
1602 linenr_T ch_buf_top; /* next line to send */
3b9a306724ec commit https://github.com/vim/vim/commit/014069a7ac51557e531eb3c8b94e36f2193f6c21
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
1603 linenr_T ch_buf_bot; /* last line to send */
8151
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1604 } chanpart_T;
8047
7c74cafac0a1 commit https://github.com/vim/vim/commit/7b3ca76a451b10d238ef946f3231762e0bd988e9
Christian Brabandt <cb@256bit.org>
parents: 8041
diff changeset
1605
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1606 struct channel_S {
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1607 channel_T *ch_next;
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1608 channel_T *ch_prev;
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1609
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1610 int ch_id; /* ID of the channel */
8667
8c80c21a1885 commit https://github.com/vim/vim/commit/e9d6a298df6108e2044b1f0da5a2712f0c51c7d9
Christian Brabandt <cb@256bit.org>
parents: 8655
diff changeset
1611 int ch_last_msg_id; /* ID of the last message */
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1612
10259
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1613 chanpart_T ch_part[PART_COUNT]; /* info for socket, out, err and in */
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1614
8674
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1615 char *ch_hostname; /* only for socket, allocated */
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1616 int ch_port; /* only for socket */
4a4d5815a974 commit https://github.com/vim/vim/commit/580984e026a46ea0c29789897b701057423b4923
Christian Brabandt <cb@256bit.org>
parents: 8667
diff changeset
1617
10259
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1618 int ch_to_be_closed; /* bitset of readable fds to be closed.
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1619 * When all readable fds have been closed,
a09db7a4afe0 commit https://github.com/vim/vim/commit/dc0ccaee68ca24d10050117fbec757ad33590a17
Christian Brabandt <cb@256bit.org>
parents: 10147
diff changeset
1620 * set to (1 << PART_COUNT). */
9085
d362e6df1deb commit https://github.com/vim/vim/commit/fb6ffc732e65dbc459c89247ff78134402f1a18b
Christian Brabandt <cb@256bit.org>
parents: 9083
diff changeset
1621 int ch_to_be_freed; /* When TRUE channel must be freed when it's
d362e6df1deb commit https://github.com/vim/vim/commit/fb6ffc732e65dbc459c89247ff78134402f1a18b
Christian Brabandt <cb@256bit.org>
parents: 9083
diff changeset
1622 * safe to invoke callbacks. */
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1623 int ch_error; /* When TRUE an error was reported. Avoids
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1624 * giving pages full of error messages when
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1625 * the other side has exited, only mention the
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1626 * first error until the connection works
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1627 * again. */
8049
15253130abd8 commit https://github.com/vim/vim/commit/16eb4f88000cfdba68df6c421fe44e7e029ba53e
Christian Brabandt <cb@256bit.org>
parents: 8047
diff changeset
1628
8210
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1629 void (*ch_nb_close_cb)(void);
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1630 /* callback for Netbeans when channel is
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1631 * closed */
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1632
8151
aa845d10c6fb commit https://github.com/vim/vim/commit/42d38a2db17e70312d073095257555c27a5f9443
Christian Brabandt <cb@256bit.org>
parents: 8124
diff changeset
1633 char_u *ch_callback; /* call when any msg is not handled */
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1634 partial_T *ch_partial;
8210
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1635 char_u *ch_close_cb; /* call when channel is closed */
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1636 partial_T *ch_close_partial;
10426
acfc83aca8ee commit https://github.com/vim/vim/commit/958dc6923d341390531888058495569d73c356c3
Christian Brabandt <cb@256bit.org>
parents: 10404
diff changeset
1637 int ch_drop_never;
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1638
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1639 job_T *ch_job; /* Job that uses this channel; this does not
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1640 * count as a reference to avoid a circular
8863
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8761
diff changeset
1641 * reference, the job refers to the channel. */
8259
99a70c3b902f commit https://github.com/vim/vim/commit/46c85439c966d7ed39fb3d711d4d6c61ac964647
Christian Brabandt <cb@256bit.org>
parents: 8222
diff changeset
1642 int ch_job_killed; /* TRUE when there was a job and it was killed
99a70c3b902f commit https://github.com/vim/vim/commit/46c85439c966d7ed39fb3d711d4d6c61ac964647
Christian Brabandt <cb@256bit.org>
parents: 8222
diff changeset
1643 * or we know it died. */
8041
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1644
c6443e78cf2d commit https://github.com/vim/vim/commit/7707344ddec9069b495b2a5ed41f2104466fc88b
Christian Brabandt <cb@256bit.org>
parents: 8031
diff changeset
1645 int ch_refcount; /* reference count */
8863
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8761
diff changeset
1646 int ch_copyID;
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1647 };
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1648
8210
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1649 #define JO_MODE 0x0001 /* channel mode */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1650 #define JO_IN_MODE 0x0002 /* stdin mode */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1651 #define JO_OUT_MODE 0x0004 /* stdout mode */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1652 #define JO_ERR_MODE 0x0008 /* stderr mode */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1653 #define JO_CALLBACK 0x0010 /* channel callback */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1654 #define JO_OUT_CALLBACK 0x0020 /* stdout callback */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1655 #define JO_ERR_CALLBACK 0x0040 /* stderr callback */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1656 #define JO_CLOSE_CALLBACK 0x0080 /* close callback */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1657 #define JO_WAITTIME 0x0100 /* only for ch_open() */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1658 #define JO_TIMEOUT 0x0200 /* all timeouts */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1659 #define JO_OUT_TIMEOUT 0x0400 /* stdout timeouts */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1660 #define JO_ERR_TIMEOUT 0x0800 /* stderr timeouts */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1661 #define JO_PART 0x1000 /* "part" */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1662 #define JO_ID 0x2000 /* "id" */
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1663 #define JO_STOPONEXIT 0x4000 /* "stoponexit" */
8540
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1664 #define JO_EXIT_CB 0x8000 /* "exit_cb" */
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1665 #define JO_OUT_IO 0x10000 /* "out_io" */
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1666 #define JO_ERR_IO 0x20000 /* "err_io" (JO_OUT_IO << 1) */
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1667 #define JO_IN_IO 0x40000 /* "in_io" (JO_OUT_IO << 2) */
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1668 #define JO_OUT_NAME 0x80000 /* "out_name" */
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1669 #define JO_ERR_NAME 0x100000 /* "err_name" (JO_OUT_NAME << 1) */
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1670 #define JO_IN_NAME 0x200000 /* "in_name" (JO_OUT_NAME << 2) */
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1671 #define JO_IN_TOP 0x400000 /* "in_top" */
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1672 #define JO_IN_BOT 0x800000 /* "in_bot" */
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1673 #define JO_OUT_BUF 0x1000000 /* "out_buf" */
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1674 #define JO_ERR_BUF 0x2000000 /* "err_buf" (JO_OUT_BUF << 1) */
fec8655cf1bf commit https://github.com/vim/vim/commit/d6c2f0526064eef6f8917d2bad00df707d79ea16
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
1675 #define JO_IN_BUF 0x4000000 /* "in_buf" (JO_OUT_BUF << 2) */
8491
daebcbd87bd3 commit https://github.com/vim/vim/commit/de27989157f35172b25f9e01e0c147ed8f6ae3ce
Christian Brabandt <cb@256bit.org>
parents: 8477
diff changeset
1676 #define JO_CHANNEL 0x8000000 /* "channel" */
8761
f8707ec9efe4 commit https://github.com/vim/vim/commit/8b877ac38e96424a08a8b8eb713ef4b3cf0064be
Christian Brabandt <cb@256bit.org>
parents: 8755
diff changeset
1677 #define JO_BLOCK_WRITE 0x10000000 /* "block_write" */
9147
053bc64433ec commit https://github.com/vim/vim/commit/9f5842e63fc63d438cbffcec503e072a06f74dc2
Christian Brabandt <cb@256bit.org>
parents: 9104
diff changeset
1678 #define JO_OUT_MODIFIABLE 0x20000000 /* "out_modifiable" */
053bc64433ec commit https://github.com/vim/vim/commit/9f5842e63fc63d438cbffcec503e072a06f74dc2
Christian Brabandt <cb@256bit.org>
parents: 9104
diff changeset
1679 #define JO_ERR_MODIFIABLE 0x40000000 /* "err_modifiable" (JO_OUT_ << 1) */
8761
f8707ec9efe4 commit https://github.com/vim/vim/commit/8b877ac38e96424a08a8b8eb713ef4b3cf0064be
Christian Brabandt <cb@256bit.org>
parents: 8755
diff changeset
1680 #define JO_ALL 0x7fffffff
8124
310dd635e8c9 commit https://github.com/vim/vim/commit/40ea1da14ba196a23309789852e1b663fd92e3a8
Christian Brabandt <cb@256bit.org>
parents: 8094
diff changeset
1681
10147
65afd399ffa7 commit https://github.com/vim/vim/commit/169ebb080454357279ad5ad21ac532deaec605e8
Christian Brabandt <cb@256bit.org>
parents: 10122
diff changeset
1682 #define JO2_OUT_MSG 0x0001 /* "out_msg" */
65afd399ffa7 commit https://github.com/vim/vim/commit/169ebb080454357279ad5ad21ac532deaec605e8
Christian Brabandt <cb@256bit.org>
parents: 10122
diff changeset
1683 #define JO2_ERR_MSG 0x0002 /* "err_msg" (JO_OUT_ << 1) */
65afd399ffa7 commit https://github.com/vim/vim/commit/169ebb080454357279ad5ad21ac532deaec605e8
Christian Brabandt <cb@256bit.org>
parents: 10122
diff changeset
1684 #define JO2_ALL 0x0003
65afd399ffa7 commit https://github.com/vim/vim/commit/169ebb080454357279ad5ad21ac532deaec605e8
Christian Brabandt <cb@256bit.org>
parents: 10122
diff changeset
1685
8165
973686665238 commit https://github.com/vim/vim/commit/b6b5252bcde68b296858bc090cb424493635dfec
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
1686 #define JO_MODE_ALL (JO_MODE + JO_IN_MODE + JO_OUT_MODE + JO_ERR_MODE)
8210
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1687 #define JO_CB_ALL \
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1688 (JO_CALLBACK + JO_OUT_CALLBACK + JO_ERR_CALLBACK + JO_CLOSE_CALLBACK)
8165
973686665238 commit https://github.com/vim/vim/commit/b6b5252bcde68b296858bc090cb424493635dfec
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
1689 #define JO_TIMEOUT_ALL (JO_TIMEOUT + JO_OUT_TIMEOUT + JO_ERR_TIMEOUT)
973686665238 commit https://github.com/vim/vim/commit/b6b5252bcde68b296858bc090cb424493635dfec
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
1690
8084
3ea56a74077f commit https://github.com/vim/vim/commit/9a6e33a19b18f20c25b73392cd2faa3ec4890c8c
Christian Brabandt <cb@256bit.org>
parents: 8059
diff changeset
1691 /*
8094
18a3f0f05244 commit https://github.com/vim/vim/commit/910b8aac5dc4693c4508b7acd2cef0bbfac04242
Christian Brabandt <cb@256bit.org>
parents: 8084
diff changeset
1692 * Options for job and channel commands.
8084
3ea56a74077f commit https://github.com/vim/vim/commit/9a6e33a19b18f20c25b73392cd2faa3ec4890c8c
Christian Brabandt <cb@256bit.org>
parents: 8059
diff changeset
1693 */
3ea56a74077f commit https://github.com/vim/vim/commit/9a6e33a19b18f20c25b73392cd2faa3ec4890c8c
Christian Brabandt <cb@256bit.org>
parents: 8059
diff changeset
1694 typedef struct
3ea56a74077f commit https://github.com/vim/vim/commit/9a6e33a19b18f20c25b73392cd2faa3ec4890c8c
Christian Brabandt <cb@256bit.org>
parents: 8059
diff changeset
1695 {
8124
310dd635e8c9 commit https://github.com/vim/vim/commit/40ea1da14ba196a23309789852e1b663fd92e3a8
Christian Brabandt <cb@256bit.org>
parents: 8094
diff changeset
1696 int jo_set; /* JO_ bits for values that were set */
10147
65afd399ffa7 commit https://github.com/vim/vim/commit/169ebb080454357279ad5ad21ac532deaec605e8
Christian Brabandt <cb@256bit.org>
parents: 10122
diff changeset
1697 int jo_set2; /* JO2_ bits for values that were set */
8124
310dd635e8c9 commit https://github.com/vim/vim/commit/40ea1da14ba196a23309789852e1b663fd92e3a8
Christian Brabandt <cb@256bit.org>
parents: 8094
diff changeset
1698
310dd635e8c9 commit https://github.com/vim/vim/commit/40ea1da14ba196a23309789852e1b663fd92e3a8
Christian Brabandt <cb@256bit.org>
parents: 8094
diff changeset
1699 ch_mode_T jo_mode;
8165
973686665238 commit https://github.com/vim/vim/commit/b6b5252bcde68b296858bc090cb424493635dfec
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
1700 ch_mode_T jo_in_mode;
973686665238 commit https://github.com/vim/vim/commit/b6b5252bcde68b296858bc090cb424493635dfec
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
1701 ch_mode_T jo_out_mode;
973686665238 commit https://github.com/vim/vim/commit/b6b5252bcde68b296858bc090cb424493635dfec
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
1702 ch_mode_T jo_err_mode;
8267
108d30ed34ba commit https://github.com/vim/vim/commit/187db50d0499aecf4cfd42fb4db0a1bebf61c8cd
Christian Brabandt <cb@256bit.org>
parents: 8259
diff changeset
1703
108d30ed34ba commit https://github.com/vim/vim/commit/187db50d0499aecf4cfd42fb4db0a1bebf61c8cd
Christian Brabandt <cb@256bit.org>
parents: 8259
diff changeset
1704 job_io_T jo_io[4]; /* PART_OUT, PART_ERR, PART_IN */
108d30ed34ba commit https://github.com/vim/vim/commit/187db50d0499aecf4cfd42fb4db0a1bebf61c8cd
Christian Brabandt <cb@256bit.org>
parents: 8259
diff changeset
1705 char_u jo_io_name_buf[4][NUMBUFLEN];
108d30ed34ba commit https://github.com/vim/vim/commit/187db50d0499aecf4cfd42fb4db0a1bebf61c8cd
Christian Brabandt <cb@256bit.org>
parents: 8259
diff changeset
1706 char_u *jo_io_name[4]; /* not allocated! */
8477
c08c6d19db4d commit https://github.com/vim/vim/commit/29fd03878c41526a586d77b3f3cd7938d26297af
Christian Brabandt <cb@256bit.org>
parents: 8455
diff changeset
1707 int jo_io_buf[4];
11723
1922710ee8fa patch 8.0.0744: terminal window does not use a pty
Christian Brabandt <cb@256bit.org>
parents: 11713
diff changeset
1708 int jo_pty;
9147
053bc64433ec commit https://github.com/vim/vim/commit/9f5842e63fc63d438cbffcec503e072a06f74dc2
Christian Brabandt <cb@256bit.org>
parents: 9104
diff changeset
1709 int jo_modifiable[4];
10147
65afd399ffa7 commit https://github.com/vim/vim/commit/169ebb080454357279ad5ad21ac532deaec605e8
Christian Brabandt <cb@256bit.org>
parents: 10122
diff changeset
1710 int jo_message[4];
8491
daebcbd87bd3 commit https://github.com/vim/vim/commit/de27989157f35172b25f9e01e0c147ed8f6ae3ce
Christian Brabandt <cb@256bit.org>
parents: 8477
diff changeset
1711 channel_T *jo_channel;
8267
108d30ed34ba commit https://github.com/vim/vim/commit/187db50d0499aecf4cfd42fb4db0a1bebf61c8cd
Christian Brabandt <cb@256bit.org>
parents: 8259
diff changeset
1712
8386
3b9a306724ec commit https://github.com/vim/vim/commit/014069a7ac51557e531eb3c8b94e36f2193f6c21
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
1713 linenr_T jo_in_top;
3b9a306724ec commit https://github.com/vim/vim/commit/014069a7ac51557e531eb3c8b94e36f2193f6c21
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
1714 linenr_T jo_in_bot;
3b9a306724ec commit https://github.com/vim/vim/commit/014069a7ac51557e531eb3c8b94e36f2193f6c21
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
1715
8124
310dd635e8c9 commit https://github.com/vim/vim/commit/40ea1da14ba196a23309789852e1b663fd92e3a8
Christian Brabandt <cb@256bit.org>
parents: 8094
diff changeset
1716 char_u *jo_callback; /* not allocated! */
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1717 partial_T *jo_partial; /* not referenced! */
8165
973686665238 commit https://github.com/vim/vim/commit/b6b5252bcde68b296858bc090cb424493635dfec
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
1718 char_u *jo_out_cb; /* not allocated! */
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1719 partial_T *jo_out_partial; /* not referenced! */
8165
973686665238 commit https://github.com/vim/vim/commit/b6b5252bcde68b296858bc090cb424493635dfec
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
1720 char_u *jo_err_cb; /* not allocated! */
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1721 partial_T *jo_err_partial; /* not referenced! */
8210
b717dae2f26d commit https://github.com/vim/vim/commit/4e221c99e85ed40c98892068a01270b9e7492d98
Christian Brabandt <cb@256bit.org>
parents: 8176
diff changeset
1722 char_u *jo_close_cb; /* not allocated! */
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1723 partial_T *jo_close_partial; /* not referenced! */
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1724 char_u *jo_exit_cb; /* not allocated! */
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents: 8534
diff changeset
1725 partial_T *jo_exit_partial; /* not referenced! */
10426
acfc83aca8ee commit https://github.com/vim/vim/commit/958dc6923d341390531888058495569d73c356c3
Christian Brabandt <cb@256bit.org>
parents: 10404
diff changeset
1726 int jo_drop_never;
8124
310dd635e8c9 commit https://github.com/vim/vim/commit/40ea1da14ba196a23309789852e1b663fd92e3a8
Christian Brabandt <cb@256bit.org>
parents: 8094
diff changeset
1727 int jo_waittime;
310dd635e8c9 commit https://github.com/vim/vim/commit/40ea1da14ba196a23309789852e1b663fd92e3a8
Christian Brabandt <cb@256bit.org>
parents: 8094
diff changeset
1728 int jo_timeout;
8165
973686665238 commit https://github.com/vim/vim/commit/b6b5252bcde68b296858bc090cb424493635dfec
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
1729 int jo_out_timeout;
973686665238 commit https://github.com/vim/vim/commit/b6b5252bcde68b296858bc090cb424493635dfec
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
1730 int jo_err_timeout;
8761
f8707ec9efe4 commit https://github.com/vim/vim/commit/8b877ac38e96424a08a8b8eb713ef4b3cf0064be
Christian Brabandt <cb@256bit.org>
parents: 8755
diff changeset
1731 int jo_block_write; /* for testing only */
8157
74b44d06d3c7 commit https://github.com/vim/vim/commit/6f3a544228c1faf92211cbaf8bbedb1dff883f90
Christian Brabandt <cb@256bit.org>
parents: 8151
diff changeset
1732 int jo_part;
74b44d06d3c7 commit https://github.com/vim/vim/commit/6f3a544228c1faf92211cbaf8bbedb1dff883f90
Christian Brabandt <cb@256bit.org>
parents: 8151
diff changeset
1733 int jo_id;
8170
a0ffb1f3dedc commit https://github.com/vim/vim/commit/65edff8f51e9e54f85407bdb9156ae8e3e1b76a1
Christian Brabandt <cb@256bit.org>
parents: 8165
diff changeset
1734 char_u jo_soe_buf[NUMBUFLEN];
a0ffb1f3dedc commit https://github.com/vim/vim/commit/65edff8f51e9e54f85407bdb9156ae8e3e1b76a1
Christian Brabandt <cb@256bit.org>
parents: 8165
diff changeset
1735 char_u *jo_stoponexit;
11713
2ec27561dd76 patch 8.0.0739: terminal resizing doesn't work well.
Christian Brabandt <cb@256bit.org>
parents: 11660
diff changeset
1736
2ec27561dd76 patch 8.0.0739: terminal resizing doesn't work well.
Christian Brabandt <cb@256bit.org>
parents: 11660
diff changeset
1737 #ifdef FEAT_TERMINAL
2ec27561dd76 patch 8.0.0739: terminal resizing doesn't work well.
Christian Brabandt <cb@256bit.org>
parents: 11660
diff changeset
1738 /* when non-zero run the job in a terminal window of this size */
2ec27561dd76 patch 8.0.0739: terminal resizing doesn't work well.
Christian Brabandt <cb@256bit.org>
parents: 11660
diff changeset
1739 int jo_term_rows;
2ec27561dd76 patch 8.0.0739: terminal resizing doesn't work well.
Christian Brabandt <cb@256bit.org>
parents: 11660
diff changeset
1740 int jo_term_cols;
2ec27561dd76 patch 8.0.0739: terminal resizing doesn't work well.
Christian Brabandt <cb@256bit.org>
parents: 11660
diff changeset
1741 #endif
8084
3ea56a74077f commit https://github.com/vim/vim/commit/9a6e33a19b18f20c25b73392cd2faa3ec4890c8c
Christian Brabandt <cb@256bit.org>
parents: 8059
diff changeset
1742 } jobopt_T;
3ea56a74077f commit https://github.com/vim/vim/commit/9a6e33a19b18f20c25b73392cd2faa3ec4890c8c
Christian Brabandt <cb@256bit.org>
parents: 8059
diff changeset
1743
8031
ece323e2b57f commit https://github.com/vim/vim/commit/6463ca229cb9412581419497924c85fcbfc854ab
Christian Brabandt <cb@256bit.org>
parents: 8023
diff changeset
1744
6565
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1745 /* structure used for explicit stack while garbage collecting hash tables */
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1746 typedef struct ht_stack_S
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1747 {
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1748 hashtab_T *ht;
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1749 struct ht_stack_S *prev;
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1750 } ht_stack_T;
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1751
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1752 /* structure used for explicit stack while garbage collecting lists */
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1753 typedef struct list_stack_S
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1754 {
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1755 list_T *list;
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1756 struct list_stack_S *prev;
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1757 } list_stack_T;
38add5a3d617 updated for version 7.4.609
Bram Moolenaar <bram@vim.org>
parents: 6482
diff changeset
1758
419
f713fc55bf7b updated for version 7.0109
vimboss
parents: 410
diff changeset
1759 /* values for b_syn_spell: what to do with toplevel text */
f713fc55bf7b updated for version 7.0109
vimboss
parents: 410
diff changeset
1760 #define SYNSPL_DEFAULT 0 /* spell check if @Spell not defined */
f713fc55bf7b updated for version 7.0109
vimboss
parents: 410
diff changeset
1761 #define SYNSPL_TOP 1 /* spell check toplevel text */
f713fc55bf7b updated for version 7.0109
vimboss
parents: 410
diff changeset
1762 #define SYNSPL_NOTOP 2 /* don't spell check toplevel text */
f713fc55bf7b updated for version 7.0109
vimboss
parents: 410
diff changeset
1763
625
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
1764 /* avoid #ifdefs for when b_spell is not available */
744
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
1765 #ifdef FEAT_SPELL
625
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
1766 # define B_SPELL(buf) ((buf)->b_spell)
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
1767 #else
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
1768 # define B_SPELL(buf) (0)
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
1769 #endif
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
1770
800
d8f905020502 updated for version 7.0b
vimboss
parents: 790
diff changeset
1771 #ifdef FEAT_QUICKFIX
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 632
diff changeset
1772 typedef struct qf_info_S qf_info_T;
800
d8f905020502 updated for version 7.0b
vimboss
parents: 790
diff changeset
1773 #endif
123
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 119
diff changeset
1774
4766
ec24ff78a79c updated for version 7.3.1130
Bram Moolenaar <bram@vim.org>
parents: 4764
diff changeset
1775 #ifdef FEAT_PROFILE
4764
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1776 /*
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1777 * Used for :syntime: timing of executing a syntax pattern.
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1778 */
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1779 typedef struct {
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1780 proftime_T total; /* total time used */
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1781 proftime_T slowest; /* time of slowest call */
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1782 long count; /* nr of times used */
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1783 long match; /* nr of times matched */
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1784 } syn_time_T;
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1785 #endif
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1786
6122
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1787 #ifdef FEAT_CRYPT
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1788 /*
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1789 * Structure to hold the type of encryption and the state of encryption or
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1790 * decryption.
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1791 */
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1792 typedef struct {
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1793 int method_nr;
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1794 void *method_state; /* method-specific state information */
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1795 } cryptstate_T;
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1796
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1797 /* values for method_nr */
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1798 # define CRYPT_M_ZIP 0
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1799 # define CRYPT_M_BF 1
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1800 # define CRYPT_M_BF2 2
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1801 # define CRYPT_M_COUNT 3 /* number of crypt methods */
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1802 #endif
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1803
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
1804
3570
e7ff3251dfa1 updated for version 7.3.545
Bram Moolenaar <bram@vim.org>
parents: 3312
diff changeset
1805 /*
e7ff3251dfa1 updated for version 7.3.545
Bram Moolenaar <bram@vim.org>
parents: 3312
diff changeset
1806 * These are items normally related to a buffer. But when using ":ownsyntax"
e7ff3251dfa1 updated for version 7.3.545
Bram Moolenaar <bram@vim.org>
parents: 3312
diff changeset
1807 * a window may have its own instance.
e7ff3251dfa1 updated for version 7.3.545
Bram Moolenaar <bram@vim.org>
parents: 3312
diff changeset
1808 */
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1809 typedef struct {
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1810 #ifdef FEAT_SYN_HL
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1811 hashtab_T b_keywtab; /* syntax keywords hash table */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1812 hashtab_T b_keywtab_ic; /* idem, ignore case */
4352
04736b4030ec updated for version 7.3.925
Bram Moolenaar <bram@vim.org>
parents: 4287
diff changeset
1813 int b_syn_error; /* TRUE when error occurred in HL */
11529
998d2cf59caa patch 8.0.0647: syntax highlighting can make cause a freeze
Christian Brabandt <cb@256bit.org>
parents: 11447
diff changeset
1814 # ifdef FEAT_RELTIME
998d2cf59caa patch 8.0.0647: syntax highlighting can make cause a freeze
Christian Brabandt <cb@256bit.org>
parents: 11447
diff changeset
1815 int b_syn_slow; /* TRUE when 'redrawtime' reached */
998d2cf59caa patch 8.0.0647: syntax highlighting can make cause a freeze
Christian Brabandt <cb@256bit.org>
parents: 11447
diff changeset
1816 # endif
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1817 int b_syn_ic; /* ignore case for :syn cmds */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1818 int b_syn_spell; /* SYNSPL_ values */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1819 garray_T b_syn_patterns; /* table for syntax patterns */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1820 garray_T b_syn_clusters; /* table for syntax clusters */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1821 int b_spell_cluster_id; /* @Spell cluster ID or 0 */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1822 int b_nospell_cluster_id; /* @NoSpell cluster ID or 0 */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1823 int b_syn_containedin; /* TRUE when there is an item with a
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1824 "containedin" argument */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1825 int b_syn_sync_flags; /* flags about how to sync */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1826 short b_syn_sync_id; /* group to sync on */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1827 long b_syn_sync_minlines; /* minimal sync lines offset */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1828 long b_syn_sync_maxlines; /* maximal sync lines offset */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1829 long b_syn_sync_linebreaks; /* offset for multi-line pattern */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1830 char_u *b_syn_linecont_pat; /* line continuation pattern */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1831 regprog_T *b_syn_linecont_prog; /* line continuation program */
4766
ec24ff78a79c updated for version 7.3.1130
Bram Moolenaar <bram@vim.org>
parents: 4764
diff changeset
1832 #ifdef FEAT_PROFILE
4764
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1833 syn_time_T b_syn_linecont_time;
f824cb97eb92 updated for version 7.3.1129
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
1834 #endif
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1835 int b_syn_linecont_ic; /* ignore-case flag for above */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1836 int b_syn_topgrp; /* for ":syntax include" */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1837 # ifdef FEAT_CONCEAL
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1838 int b_syn_conceal; /* auto-conceal for :syn cmds */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1839 # endif
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1840 # ifdef FEAT_FOLDING
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1841 int b_syn_folditems; /* number of patterns with the HL_FOLD
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1842 flag set */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1843 # endif
2419
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1844 /*
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1845 * b_sst_array[] contains the state stack for a number of lines, for the
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1846 * start of that line (col == 0). This avoids having to recompute the
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1847 * syntax state too often.
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1848 * b_sst_array[] is allocated to hold the state for all displayed lines,
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1849 * and states for 1 out of about 20 other lines.
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1850 * b_sst_array pointer to an array of synstate_T
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1851 * b_sst_len number of entries in b_sst_array[]
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1852 * b_sst_first pointer to first used entry in b_sst_array[] or NULL
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1853 * b_sst_firstfree pointer to first free entry in b_sst_array[] or NULL
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1854 * b_sst_freecount number of free entries in b_sst_array[]
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1855 * b_sst_check_lnum entries after this lnum need to be checked for
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1856 * validity (MAXLNUM means no check needed)
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1857 */
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1858 synstate_T *b_sst_array;
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1859 int b_sst_len;
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1860 synstate_T *b_sst_first;
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1861 synstate_T *b_sst_firstfree;
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1862 int b_sst_freecount;
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1863 linenr_T b_sst_check_lnum;
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1864 short_u b_sst_lasttick; /* last display tick */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1865 #endif /* FEAT_SYN_HL */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1866
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1867 #ifdef FEAT_SPELL
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1868 /* for spell checking */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1869 garray_T b_langp; /* list of pointers to slang_T, see spell.c */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1870 char_u b_spell_ismw[256];/* flags: is midword char */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1871 # ifdef FEAT_MBYTE
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1872 char_u *b_spell_ismw_mb; /* multi-byte midword chars */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1873 # endif
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1874 char_u *b_p_spc; /* 'spellcapcheck' */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1875 regprog_T *b_cap_prog; /* program for 'spellcapcheck' */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1876 char_u *b_p_spf; /* 'spellfile' */
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1877 char_u *b_p_spl; /* 'spelllang' */
5477
853a76c7fded updated for version 7.4.088
Bram Moolenaar <bram@vim.org>
parents: 5467
diff changeset
1878 # ifdef FEAT_MBYTE
853a76c7fded updated for version 7.4.088
Bram Moolenaar <bram@vim.org>
parents: 5467
diff changeset
1879 int b_cjk; /* all CJK letters as OK */
853a76c7fded updated for version 7.4.088
Bram Moolenaar <bram@vim.org>
parents: 5467
diff changeset
1880 # endif
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1881 #endif
2419
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1882 #if !defined(FEAT_SYN_HL) && !defined(FEAT_SPELL)
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1883 int dummy;
f579b934f51d Fix build warnings and problems for tiny/small Win32 build. (Mike Williams)
Bram Moolenaar <bram@vim.org>
parents: 2378
diff changeset
1884 #endif
7687
61354fabf8a2 commit https://github.com/vim/vim/commit/b8060fe862f684b591f9ac679eac5b2594d6c5a0
Christian Brabandt <cb@256bit.org>
parents: 7664
diff changeset
1885 char_u b_syn_chartab[32]; /* syntax iskeyword option */
61354fabf8a2 commit https://github.com/vim/vim/commit/b8060fe862f684b591f9ac679eac5b2594d6c5a0
Christian Brabandt <cb@256bit.org>
parents: 7664
diff changeset
1886 char_u *b_syn_isk; /* iskeyword option */
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1887 } synblock_T;
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1888
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
1889
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1890 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1891 * buffer: structure that holds information about one file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1892 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1893 * Several windows can share a single Buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1894 * A buffer is unallocated if there is no memfile for it.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1895 * A buffer is new if the associated file has never been loaded yet.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1896 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1897
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1898 struct file_buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1899 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1900 memline_T b_ml; /* associated memline (also contains line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1901 count) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1902
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1903 buf_T *b_next; /* links in list of buffers */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1904 buf_T *b_prev;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1905
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1906 int b_nwindows; /* nr of windows open on this buffer */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1907
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1908 int b_flags; /* various BF_ flags */
3570
e7ff3251dfa1 updated for version 7.3.545
Bram Moolenaar <bram@vim.org>
parents: 3312
diff changeset
1909 #ifdef FEAT_AUTOCMD
10106
58e6dd1d8be3 commit https://github.com/vim/vim/commit/e0ab94e7123ca7855f45919114d948ef2bc1e8c3
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
1910 int b_locked; /* Buffer is being closed or referenced, don't
58e6dd1d8be3 commit https://github.com/vim/vim/commit/e0ab94e7123ca7855f45919114d948ef2bc1e8c3
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
1911 let autocommands wipe it out. */
3570
e7ff3251dfa1 updated for version 7.3.545
Bram Moolenaar <bram@vim.org>
parents: 3312
diff changeset
1912 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1913
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1914 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1915 * b_ffname has the full path of the file (NULL for no name).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1916 * b_sfname is the name as the user typed it (or NULL).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1917 * b_fname is the same as b_sfname, unless ":cd" has been done,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1918 * then it is the same as b_ffname (NULL for no name).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1919 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1920 char_u *b_ffname; /* full path file name */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1921 char_u *b_sfname; /* short file name */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1922 char_u *b_fname; /* current file name */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1923
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1924 #ifdef UNIX
1873
6c7719f94811 updated for version 7.2-170
vimboss
parents: 1872
diff changeset
1925 int b_dev_valid; /* TRUE when b_dev has a valid number */
6c7719f94811 updated for version 7.2-170
vimboss
parents: 1872
diff changeset
1926 dev_t b_dev; /* device number */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1927 ino_t b_ino; /* inode number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1928 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1929 #ifdef FEAT_CW_EDITOR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1930 FSSpec b_FSSpec; /* MacOS File Identification */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1931 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1932 #ifdef VMS
22
cc049b00ee70 updated for version 7.0014
vimboss
parents: 14
diff changeset
1933 char b_fab_rfm; /* Record format */
cc049b00ee70 updated for version 7.0014
vimboss
parents: 14
diff changeset
1934 char b_fab_rat; /* Record attribute */
cc049b00ee70 updated for version 7.0014
vimboss
parents: 14
diff changeset
1935 unsigned int b_fab_mrs; /* Max record size */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1936 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1937 int b_fnum; /* buffer number for this file. */
9511
c2e904cc064f commit https://github.com/vim/vim/commit/480778b805bd8bdc5d657560230e9c50feda1d0f
Christian Brabandt <cb@256bit.org>
parents: 9487
diff changeset
1938 char_u b_key[VIM_SIZEOF_INT * 2 + 1];
c2e904cc064f commit https://github.com/vim/vim/commit/480778b805bd8bdc5d657560230e9c50feda1d0f
Christian Brabandt <cb@256bit.org>
parents: 9487
diff changeset
1939 /* key used for buf_hashtab, holds b_fnum as
c2e904cc064f commit https://github.com/vim/vim/commit/480778b805bd8bdc5d657560230e9c50feda1d0f
Christian Brabandt <cb@256bit.org>
parents: 9487
diff changeset
1940 hex string */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1941
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1942 int b_changed; /* 'modified': Set to TRUE if something in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1943 file has been changed and not written out. */
10952
835604f3c37a patch 8.0.0365: might free a dict item that wasn't allocated
Christian Brabandt <cb@256bit.org>
parents: 10889
diff changeset
1944 dictitem16_T b_ct_di; /* holds the b:changedtick value in
835604f3c37a patch 8.0.0365: might free a dict item that wasn't allocated
Christian Brabandt <cb@256bit.org>
parents: 10889
diff changeset
1945 b_ct_di.di_tv.vval.v_number;
10889
5780bd3a5a7e patch 8.0.0334: can't access b:changedtick from a dict reference
Christian Brabandt <cb@256bit.org>
parents: 10845
diff changeset
1946 incremented for each change, also for undo */
10952
835604f3c37a patch 8.0.0365: might free a dict item that wasn't allocated
Christian Brabandt <cb@256bit.org>
parents: 10889
diff changeset
1947 #define CHANGEDTICK(buf) ((buf)->b_ct_di.di_tv.vval.v_number)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1948
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1949 int b_saving; /* Set to TRUE if we are in the middle of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1950 saving the buffer. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1951
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1952 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1953 * Changes to a buffer require updating of the display. To minimize the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1954 * work, remember changes made and update everything at once.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1955 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1956 int b_mod_set; /* TRUE when there are changes since the last
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1957 time the display was updated */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1958 linenr_T b_mod_top; /* topmost lnum that was changed */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1959 linenr_T b_mod_bot; /* lnum below last changed line, AFTER the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1960 change */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1961 long b_mod_xlines; /* number of extra buffer lines inserted;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1962 negative when lines were deleted */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1963
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1964 wininfo_T *b_wininfo; /* list of last used info for each window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1965
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1966 long b_mtime; /* last change time of original file */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1967 long b_mtime_read; /* last change time when reading */
9387
f094d4085014 commit https://github.com/vim/vim/commit/8767f52fbfd4f053ce00a978227c95f1d7d323fe
Christian Brabandt <cb@256bit.org>
parents: 9347
diff changeset
1968 off_T b_orig_size; /* size of original file in bytes */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1969 int b_orig_mode; /* mode of original file */
9414
1003973c99df commit https://github.com/vim/vim/commit/ab9c89b68dcbdb3fbda8c5a50dd90caca64f1bfd
Christian Brabandt <cb@256bit.org>
parents: 9389
diff changeset
1970 #ifdef FEAT_VIMINFO
1003973c99df commit https://github.com/vim/vim/commit/ab9c89b68dcbdb3fbda8c5a50dd90caca64f1bfd
Christian Brabandt <cb@256bit.org>
parents: 9389
diff changeset
1971 time_T b_last_used; /* time when the buffer was last used; used
1003973c99df commit https://github.com/vim/vim/commit/ab9c89b68dcbdb3fbda8c5a50dd90caca64f1bfd
Christian Brabandt <cb@256bit.org>
parents: 9389
diff changeset
1972 * for viminfo */
1003973c99df commit https://github.com/vim/vim/commit/ab9c89b68dcbdb3fbda8c5a50dd90caca64f1bfd
Christian Brabandt <cb@256bit.org>
parents: 9389
diff changeset
1973 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1974
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1975 pos_T b_namedm[NMARKS]; /* current named marks (mark.c) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1976
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1977 /* These variables are set when VIsual_active becomes FALSE */
692
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
1978 visualinfo_T b_visual;
5735
50dbef5e774a updated for version 7.4.212
Bram Moolenaar <bram@vim.org>
parents: 5712
diff changeset
1979 #ifdef FEAT_EVAL
692
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
1980 int b_visual_mode_eval; /* b_visual.vi_mode for visualmode() */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1981 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1982
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1983 pos_T b_last_cursor; /* cursor position when last unloading this
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1984 buffer */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1985 pos_T b_last_insert; /* where Insert mode was left */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1986 pos_T b_last_change; /* position of last change: '. mark */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1987
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1988 #ifdef FEAT_JUMPLIST
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1989 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1990 * the changelist contains old change positions
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1991 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1992 pos_T b_changelist[JUMPLISTSIZE];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1993 int b_changelistlen; /* number of active entries */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1994 int b_new_change; /* set by u_savecommon() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1995 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1996
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1997 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1998 * Character table, only used in charset.c for 'iskeyword'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1999 * 32 bytes of 8 bits: 1 bit per character 0-255.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2000 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2001 char_u b_chartab[32];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2002
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2003 #ifdef FEAT_LOCALMAP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2004 /* Table used for mappings local to a buffer. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2005 mapblock_T *(b_maphash[256]);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2006
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2007 /* First abbreviation local to a buffer. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2008 mapblock_T *b_first_abbr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2009 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2010 #ifdef FEAT_USR_CMDS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2011 /* User commands local to the buffer. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2012 garray_T b_ucmds;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2013 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2014 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2015 * start and end of an operator, also used for '[ and ']
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2016 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2017 pos_T b_op_start;
5680
4d12112c5efa updated for version 7.4.186
Bram Moolenaar <bram@vim.org>
parents: 5649
diff changeset
2018 pos_T b_op_start_orig; /* used for Insstart_orig */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2019 pos_T b_op_end;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2020
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2021 #ifdef FEAT_VIMINFO
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2022 int b_marks_read; /* Have we read viminfo marks yet? */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2023 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2024
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2025 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2026 * The following only used in undo.c.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2027 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2028 u_header_T *b_u_oldhead; /* pointer to oldest header */
760
08360213aa1d updated for version 7.0224
vimboss
parents: 753
diff changeset
2029 u_header_T *b_u_newhead; /* pointer to newest header; may not be valid
08360213aa1d updated for version 7.0224
vimboss
parents: 753
diff changeset
2030 if b_u_curhead is not NULL */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2031 u_header_T *b_u_curhead; /* pointer to current header */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2032 int b_u_numhead; /* current number of headers */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2033 int b_u_synced; /* entry lists are synced */
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 760
diff changeset
2034 long b_u_seq_last; /* last used undo sequence number */
2281
e41433ea71df Added ":earlier 1f" and ":later 1f".
Bram Moolenaar <bram@vim.org>
parents: 2280
diff changeset
2035 long b_u_save_nr_last; /* counter for last file write */
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 760
diff changeset
2036 long b_u_seq_cur; /* hu_seq of header below which we are now */
9347
25c562442f8c commit https://github.com/vim/vim/commit/f4fba6dcd508cb369ffa6916d9cb3fcf3d7ed548
Christian Brabandt <cb@256bit.org>
parents: 9284
diff changeset
2037 time_T b_u_time_cur; /* uh_time of header below which we are now */
2281
e41433ea71df Added ":earlier 1f" and ":later 1f".
Bram Moolenaar <bram@vim.org>
parents: 2280
diff changeset
2038 long b_u_save_nr_cur; /* file write nr after which we are now */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2039
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2040 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2041 * variables for "U" command in undo.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2042 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2043 char_u *b_u_line_ptr; /* saved line for "U" command */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2044 linenr_T b_u_line_lnum; /* line number of line in u_line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2045 colnr_T b_u_line_colnr; /* optional column number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2046
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2047 #ifdef FEAT_INS_EXPAND
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2048 int b_scanned; /* ^N/^P have scanned this buffer */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2049 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2050
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2051 /* flags for use of ":lmap" and IM control */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2052 long b_p_iminsert; /* input mode for insert */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2053 long b_p_imsearch; /* input mode for search */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2054 #define B_IMODE_USE_INSERT -1 /* Use b_p_iminsert value for search */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2055 #define B_IMODE_NONE 0 /* Input via none */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2056 #define B_IMODE_LMAP 1 /* Input via langmap */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2057 #ifndef USE_IM_CONTROL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2058 # define B_IMODE_LAST 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2059 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2060 # define B_IMODE_IM 2 /* Input via input method */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2061 # define B_IMODE_LAST 2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2062 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2063
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2064 #ifdef FEAT_KEYMAP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2065 short b_kmap_state; /* using "lmap" mappings */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2066 # define KEYMAP_INIT 1 /* 'keymap' was set, call keymap_init() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2067 # define KEYMAP_LOADED 2 /* 'keymap' mappings have been loaded */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2068 garray_T b_kmap_ga; /* the keymap table */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2069 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2070
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2071 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2072 * Options local to a buffer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2073 * They are here because their value depends on the type of file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2074 * or contents of the file being edited.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2075 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2076 int b_p_initialized; /* set when options initialized */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2077
694
07d199fe02ed updated for version 7.0209
vimboss
parents: 692
diff changeset
2078 #ifdef FEAT_EVAL
07d199fe02ed updated for version 7.0209
vimboss
parents: 692
diff changeset
2079 int b_p_scriptID[BV_COUNT]; /* SIDs for buffer-local options */
07d199fe02ed updated for version 7.0209
vimboss
parents: 692
diff changeset
2080 #endif
07d199fe02ed updated for version 7.0209
vimboss
parents: 692
diff changeset
2081
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2082 int b_p_ai; /* 'autoindent' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2083 int b_p_ai_nopaste; /* b_p_ai saved for paste mode */
6243
54194bd6ed60 updated for version 7.4.456
Bram Moolenaar <bram@vim.org>
parents: 6122
diff changeset
2084 char_u *b_p_bkc; /* 'backupcopy' */
54194bd6ed60 updated for version 7.4.456
Bram Moolenaar <bram@vim.org>
parents: 6122
diff changeset
2085 unsigned b_bkc_flags; /* flags for 'backupcopy' */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2086 int b_p_ci; /* 'copyindent' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2087 int b_p_bin; /* 'binary' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2088 #ifdef FEAT_MBYTE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2089 int b_p_bomb; /* 'bomb' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2090 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2091 char_u *b_p_bh; /* 'bufhidden' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2092 char_u *b_p_bt; /* 'buftype' */
11757
74abb6c84984 patch 8.0.0761: options not set properly for a terminal buffer
Christian Brabandt <cb@256bit.org>
parents: 11723
diff changeset
2093 #ifdef FEAT_QUICKFIX
9608
fa64afb99dda commit https://github.com/vim/vim/commit/c1542744e788d96fed24dd421f43009288092504
Christian Brabandt <cb@256bit.org>
parents: 9562
diff changeset
2094 #define BUF_HAS_QF_ENTRY 1
fa64afb99dda commit https://github.com/vim/vim/commit/c1542744e788d96fed24dd421f43009288092504
Christian Brabandt <cb@256bit.org>
parents: 9562
diff changeset
2095 #define BUF_HAS_LL_ENTRY 2
9201
692e156c7023 commit https://github.com/vim/vim/commit/2f095a4bc4d786e0ac834f48dd18a94fe2d140e3
Christian Brabandt <cb@256bit.org>
parents: 9151
diff changeset
2096 int b_has_qf_entry;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2097 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2098 int b_p_bl; /* 'buflisted' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2099 #ifdef FEAT_CINDENT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2100 int b_p_cin; /* 'cindent' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2101 char_u *b_p_cino; /* 'cinoptions' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2102 char_u *b_p_cink; /* 'cinkeys' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2103 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2104 #if defined(FEAT_CINDENT) || defined(FEAT_SMARTINDENT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2105 char_u *b_p_cinw; /* 'cinwords' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2106 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2107 #ifdef FEAT_COMMENTS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2108 char_u *b_p_com; /* 'comments' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2109 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2110 #ifdef FEAT_FOLDING
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2111 char_u *b_p_cms; /* 'commentstring' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2112 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2113 #ifdef FEAT_INS_EXPAND
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2114 char_u *b_p_cpt; /* 'complete' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2115 #endif
12
bdeee1504ac1 updated for version 7.0004
vimboss
parents: 11
diff changeset
2116 #ifdef FEAT_COMPL_FUNC
bdeee1504ac1 updated for version 7.0004
vimboss
parents: 11
diff changeset
2117 char_u *b_p_cfu; /* 'completefunc' */
523
a7ae7e043e43 updated for version 7.0146
vimboss
parents: 510
diff changeset
2118 char_u *b_p_ofu; /* 'omnifunc' */
12
bdeee1504ac1 updated for version 7.0004
vimboss
parents: 11
diff changeset
2119 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2120 int b_p_eol; /* 'endofline' */
6933
62ba356c2d4e patch 7.4.785
Bram Moolenaar <bram@vim.org>
parents: 6751
diff changeset
2121 int b_p_fixeol; /* 'fixendofline' */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2122 int b_p_et; /* 'expandtab' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2123 int b_p_et_nobin; /* b_p_et saved for binary mode */
7113
83b3261352b3 commit https://github.com/vim/vim/commit/54f018cd5994c3ffcd0740526e56db6934edf1f2
Christian Brabandt <cb@256bit.org>
parents: 6947
diff changeset
2124 int b_p_et_nopaste; /* b_p_et saved for paste mode */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2125 #ifdef FEAT_MBYTE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2126 char_u *b_p_fenc; /* 'fileencoding' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2127 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2128 char_u *b_p_ff; /* 'fileformat' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2129 #ifdef FEAT_AUTOCMD
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2130 char_u *b_p_ft; /* 'filetype' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2131 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2132 char_u *b_p_fo; /* 'formatoptions' */
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 40
diff changeset
2133 char_u *b_p_flp; /* 'formatlistpat' */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2134 int b_p_inf; /* 'infercase' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2135 char_u *b_p_isk; /* 'iskeyword' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2136 #ifdef FEAT_FIND_ID
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2137 char_u *b_p_def; /* 'define' local value */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2138 char_u *b_p_inc; /* 'include' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2139 # ifdef FEAT_EVAL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2140 char_u *b_p_inex; /* 'includeexpr' */
681
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2141 long_u b_p_inex_flags; /* flags for 'includeexpr' */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2142 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2143 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2144 #if defined(FEAT_CINDENT) && defined(FEAT_EVAL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2145 char_u *b_p_inde; /* 'indentexpr' */
681
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2146 long_u b_p_inde_flags; /* flags for 'indentexpr' */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2147 char_u *b_p_indk; /* 'indentkeys' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2148 #endif
10579
688b97124d23 patch 8.0.0179: cannot have a local value for 'formatprg'
Christian Brabandt <cb@256bit.org>
parents: 10426
diff changeset
2149 char_u *b_p_fp; /* 'formatprg' */
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 659
diff changeset
2150 #if defined(FEAT_EVAL)
9090f866cd57 updated for version 7.0197
vimboss
parents: 659
diff changeset
2151 char_u *b_p_fex; /* 'formatexpr' */
681
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2152 long_u b_p_fex_flags; /* flags for 'formatexpr' */
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 659
diff changeset
2153 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2154 #ifdef FEAT_CRYPT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2155 char_u *b_p_key; /* 'key' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2156 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2157 char_u *b_p_kp; /* 'keywordprg' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2158 #ifdef FEAT_LISP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2159 int b_p_lisp; /* 'lisp' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2160 #endif
11063
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 10952
diff changeset
2161 #ifdef FEAT_MBYTE
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 10952
diff changeset
2162 char_u *b_p_menc; /* 'makeencoding' */
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 10952
diff changeset
2163 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2164 char_u *b_p_mps; /* 'matchpairs' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2165 int b_p_ml; /* 'modeline' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2166 int b_p_ml_nobin; /* b_p_ml saved for binary mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2167 int b_p_ma; /* 'modifiable' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2168 char_u *b_p_nf; /* 'nrformats' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2169 int b_p_pi; /* 'preserveindent' */
12
bdeee1504ac1 updated for version 7.0004
vimboss
parents: 11
diff changeset
2170 #ifdef FEAT_TEXTOBJ
bdeee1504ac1 updated for version 7.0004
vimboss
parents: 11
diff changeset
2171 char_u *b_p_qe; /* 'quoteescape' */
bdeee1504ac1 updated for version 7.0004
vimboss
parents: 11
diff changeset
2172 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2173 int b_p_ro; /* 'readonly' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2174 long b_p_sw; /* 'shiftwidth' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2175 int b_p_sn; /* 'shortname' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2176 #ifdef FEAT_SMARTINDENT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2177 int b_p_si; /* 'smartindent' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2178 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2179 long b_p_sts; /* 'softtabstop' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2180 long b_p_sts_nopaste; /* b_p_sts saved for paste mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2181 #ifdef FEAT_SEARCHPATH
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2182 char_u *b_p_sua; /* 'suffixesadd' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2183 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2184 int b_p_swf; /* 'swapfile' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2185 #ifdef FEAT_SYN_HL
410
c60ba877860b updated for version 7.0107
vimboss
parents: 386
diff changeset
2186 long b_p_smc; /* 'synmaxcol' */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2187 char_u *b_p_syn; /* 'syntax' */
744
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
2188 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2189 long b_p_ts; /* 'tabstop' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2190 int b_p_tx; /* 'textmode' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2191 long b_p_tw; /* 'textwidth' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2192 long b_p_tw_nobin; /* b_p_tw saved for binary mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2193 long b_p_tw_nopaste; /* b_p_tw saved for paste mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2194 long b_p_wm; /* 'wrapmargin' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2195 long b_p_wm_nobin; /* b_p_wm saved for binary mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2196 long b_p_wm_nopaste; /* b_p_wm saved for paste mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2197 #ifdef FEAT_KEYMAP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2198 char_u *b_p_keymap; /* 'keymap' */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2199 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2200
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2201 /* local values for options which are normally global */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2202 #ifdef FEAT_QUICKFIX
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2203 char_u *b_p_gp; /* 'grepprg' local value */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2204 char_u *b_p_mp; /* 'makeprg' local value */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2205 char_u *b_p_efm; /* 'errorformat' local value */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2206 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2207 char_u *b_p_ep; /* 'equalprg' local value */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2208 char_u *b_p_path; /* 'path' local value */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2209 int b_p_ar; /* 'autoread' local value */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2210 char_u *b_p_tags; /* 'tags' local value */
7266
6ba7182fb7bd commit https://github.com/vim/vim/commit/0f6562e9036f889185dff49a75c7fc5ffb28b307
Christian Brabandt <cb@256bit.org>
parents: 7113
diff changeset
2211 char_u *b_p_tc; /* 'tagcase' local value */
6ba7182fb7bd commit https://github.com/vim/vim/commit/0f6562e9036f889185dff49a75c7fc5ffb28b307
Christian Brabandt <cb@256bit.org>
parents: 7113
diff changeset
2212 unsigned b_tc_flags; /* flags for 'tagcase' */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2213 #ifdef FEAT_INS_EXPAND
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2214 char_u *b_p_dict; /* 'dictionary' local value */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2215 char_u *b_p_tsr; /* 'thesaurus' local value */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2216 #endif
5446
d0595545e98a updated for version 7.4.073
Bram Moolenaar <bram@vim.org>
parents: 5438
diff changeset
2217 long b_p_ul; /* 'undolevels' local value */
2214
f8222d1f9a73 Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents: 2184
diff changeset
2218 #ifdef FEAT_PERSISTENT_UNDO
f8222d1f9a73 Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents: 2184
diff changeset
2219 int b_p_udf; /* 'undofile' */
f8222d1f9a73 Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents: 2184
diff changeset
2220 #endif
5712
06e5f65c34d8 updated for version 7.4.201
Bram Moolenaar <bram@vim.org>
parents: 5684
diff changeset
2221 #ifdef FEAT_LISP
06e5f65c34d8 updated for version 7.4.201
Bram Moolenaar <bram@vim.org>
parents: 5684
diff changeset
2222 char_u *b_p_lw; /* 'lispwords' local value */
06e5f65c34d8 updated for version 7.4.201
Bram Moolenaar <bram@vim.org>
parents: 5684
diff changeset
2223 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2224
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2225 /* end of buffer options */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2226
5438
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2227 #ifdef FEAT_CINDENT
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2228 /* values set from b_p_cino */
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2229 int b_ind_level;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2230 int b_ind_open_imag;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2231 int b_ind_no_brace;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2232 int b_ind_first_open;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2233 int b_ind_open_extra;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2234 int b_ind_close_extra;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2235 int b_ind_open_left_imag;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2236 int b_ind_jump_label;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2237 int b_ind_case;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2238 int b_ind_case_code;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2239 int b_ind_case_break;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2240 int b_ind_param;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2241 int b_ind_func_type;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2242 int b_ind_comment;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2243 int b_ind_in_comment;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2244 int b_ind_in_comment2;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2245 int b_ind_cpp_baseclass;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2246 int b_ind_continuation;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2247 int b_ind_unclosed;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2248 int b_ind_unclosed2;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2249 int b_ind_unclosed_noignore;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2250 int b_ind_unclosed_wrapped;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2251 int b_ind_unclosed_whiteok;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2252 int b_ind_matching_paren;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2253 int b_ind_paren_prev;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2254 int b_ind_maxparen;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2255 int b_ind_maxcomment;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2256 int b_ind_scopedecl;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2257 int b_ind_scopedecl_code;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2258 int b_ind_java;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2259 int b_ind_js;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2260 int b_ind_keep_case_label;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2261 int b_ind_hash_comment;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2262 int b_ind_cpp_namespace;
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2263 int b_ind_if_for_while;
11087
242e0617aa51 patch 8.0.0431: 'cinoptions' cannot set indent for extern block
Christian Brabandt <cb@256bit.org>
parents: 11063
diff changeset
2264 int b_ind_cpp_extern_c;
5438
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2265 #endif
878ed73c7070 updated for version 7.4.069
Bram Moolenaar <bram@vim.org>
parents: 5102
diff changeset
2266
2707
cd3f52531f6c updated for version 7.3.124
Bram Moolenaar <bram@vim.org>
parents: 2610
diff changeset
2267 linenr_T b_no_eol_lnum; /* non-zero lnum when last line of next binary
cd3f52531f6c updated for version 7.3.124
Bram Moolenaar <bram@vim.org>
parents: 2610
diff changeset
2268 * write should not have an end-of-line */
cd3f52531f6c updated for version 7.3.124
Bram Moolenaar <bram@vim.org>
parents: 2610
diff changeset
2269
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2270 int b_start_eol; /* last line had eol when it was read */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2271 int b_start_ffc; /* first char of 'ff' when edit started */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2272 #ifdef FEAT_MBYTE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2273 char_u *b_start_fenc; /* 'fileencoding' when edit started or NULL */
613
53114ef7778f updated for version 7.0174
vimboss
parents: 590
diff changeset
2274 int b_bad_char; /* "++bad=" argument when edit started or 0 */
1352
c544a3507e83 updated for version 7.1-066
vimboss
parents: 1326
diff changeset
2275 int b_start_bomb; /* 'bomb' when it was read */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2276 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2277
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2278 #ifdef FEAT_EVAL
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
2279 dictitem_T b_bufvar; /* variable for "b:" Dictionary */
4287
dc3efb6d5a08 updated for version 7.3.893
Bram Moolenaar <bram@vim.org>
parents: 3687
diff changeset
2280 dict_T *b_vars; /* internal variables, local to buffer */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2281 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2282
790
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
2283 #if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
2284 char_u *b_p_bexpr; /* 'balloonexpr' local value */
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
2285 long_u b_p_bexpr_flags;/* flags for 'balloonexpr' */
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
2286 #endif
2360
d8e4b27cef80 Change 'cryptmethod' from a number to a string option. Make it global-local.
Bram Moolenaar <bram@vim.org>
parents: 2348
diff changeset
2287 #ifdef FEAT_CRYPT
d8e4b27cef80 Change 'cryptmethod' from a number to a string option. Make it global-local.
Bram Moolenaar <bram@vim.org>
parents: 2348
diff changeset
2288 char_u *b_p_cm; /* 'cryptmethod' */
d8e4b27cef80 Change 'cryptmethod' from a number to a string option. Make it global-local.
Bram Moolenaar <bram@vim.org>
parents: 2348
diff changeset
2289 #endif
790
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
2290
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2291 /* When a buffer is created, it starts without a swap file. b_may_swap is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2292 * then set to indicate that a swap file may be opened later. It is reset
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2293 * if a swap file could not be opened.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2294 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2295 int b_may_swap;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2296 int b_did_warn; /* Set to 1 if user has been warned on first
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2297 change of a read-only file */
625
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2298
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2299 /* Two special kinds of buffers:
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2300 * help buffer - used for help files, won't use a swap file.
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2301 * spell buffer - used for spell info, never displayed and doesn't have a
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2302 * file name.
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2303 */
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2304 int b_help; /* TRUE for help file buffer (when set b_p_bt
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2305 is "help") */
744
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
2306 #ifdef FEAT_SPELL
625
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2307 int b_spell; /* TRUE for a spell file buffer, most fields
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2308 are not used! Use the B_SPELL macro to
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2309 access b_spell without #ifdef. */
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 613
diff changeset
2310 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2311
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2312 int b_shortname; /* this file has an 8.3 file name */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2313
14
946da5994c01 updated for version 7.0006
vimboss
parents: 13
diff changeset
2314 #ifdef FEAT_MZSCHEME
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2315 void *b_mzscheme_ref; /* The MzScheme reference to this buffer */
14
946da5994c01 updated for version 7.0006
vimboss
parents: 13
diff changeset
2316 #endif
946da5994c01 updated for version 7.0006
vimboss
parents: 13
diff changeset
2317
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2318 #ifdef FEAT_PERL
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2319 void *b_perl_private;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2320 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2321
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2322 #ifdef FEAT_PYTHON
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2323 void *b_python_ref; /* The Python reference to this buffer */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2324 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2325
2329
ad2889f48843 Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents: 2314
diff changeset
2326 #ifdef FEAT_PYTHON3
ad2889f48843 Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents: 2314
diff changeset
2327 void *b_python3_ref; /* The Python3 reference to this buffer */
ad2889f48843 Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents: 2314
diff changeset
2328 #endif
ad2889f48843 Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents: 2314
diff changeset
2329
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2330 #ifdef FEAT_TCL
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2331 void *b_tcl_ref;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2332 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2333
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2334 #ifdef FEAT_RUBY
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2335 void *b_ruby_ref;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2336 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2337
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
2338 #if defined(FEAT_SYN_HL) || defined(FEAT_SPELL)
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
2339 synblock_T b_s; /* Info related to syntax highlighting. w_s
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
2340 * normally points to this, but some windows
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
2341 * may use a different synblock_T. */
744
07f7b4a7755c updated for version 7.0222
vimboss
parents: 731
diff changeset
2342 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2343
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2344 #ifdef FEAT_SIGNS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2345 signlist_T *b_signlist; /* list of signs to draw */
6689
97cc4ee3e095 updated for version 7.4.669
Bram Moolenaar <bram@vim.org>
parents: 6679
diff changeset
2346 # ifdef FEAT_NETBEANS_INTG
97cc4ee3e095 updated for version 7.4.669
Bram Moolenaar <bram@vim.org>
parents: 6679
diff changeset
2347 int b_has_sign_column; /* Flag that is set when a first sign is
97cc4ee3e095 updated for version 7.4.669
Bram Moolenaar <bram@vim.org>
parents: 6679
diff changeset
2348 * added and remains set until the end of
97cc4ee3e095 updated for version 7.4.669
Bram Moolenaar <bram@vim.org>
parents: 6679
diff changeset
2349 * the netbeans session. */
97cc4ee3e095 updated for version 7.4.669
Bram Moolenaar <bram@vim.org>
parents: 6679
diff changeset
2350 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2351 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2352
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2353 #ifdef FEAT_NETBEANS_INTG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2354 int b_netbeans_file; /* TRUE when buffer is owned by NetBeans */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2355 int b_was_netbeans_file;/* TRUE if b_netbeans_file was once set */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2356 #endif
8493
caed4b2d305f commit https://github.com/vim/vim/commit/509ce2a558e7e0c03242e32e844255af52f1c821
Christian Brabandt <cb@256bit.org>
parents: 8491
diff changeset
2357 #ifdef FEAT_JOB_CHANNEL
8422
5d2c84be23b5 commit https://github.com/vim/vim/commit/99ef06296f3c37490511c03786a2c8672e015c56
Christian Brabandt <cb@256bit.org>
parents: 8386
diff changeset
2358 int b_write_to_channel; /* TRUE when appended lines are written to
5d2c84be23b5 commit https://github.com/vim/vim/commit/99ef06296f3c37490511c03786a2c8672e015c56
Christian Brabandt <cb@256bit.org>
parents: 8386
diff changeset
2359 * a channel. */
5d2c84be23b5 commit https://github.com/vim/vim/commit/99ef06296f3c37490511c03786a2c8672e015c56
Christian Brabandt <cb@256bit.org>
parents: 8386
diff changeset
2360 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2361
6122
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
2362 #ifdef FEAT_CRYPT
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
2363 cryptstate_T *b_cryptstate; /* Encryption state while reading or writing
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
2364 * the file. NULL when not using encryption. */
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
2365 #endif
6482
ccb6962585f1 updated for version 7.4.569
Bram Moolenaar <bram@vim.org>
parents: 6243
diff changeset
2366 int b_mapped_ctrl_c; /* modes where CTRL-C is mapped */
6122
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
2367
11621
b8299e742f41 patch 8.0.0693: no terminal emulator support
Christian Brabandt <cb@256bit.org>
parents: 11529
diff changeset
2368 #ifdef FEAT_TERMINAL
b8299e742f41 patch 8.0.0693: no terminal emulator support
Christian Brabandt <cb@256bit.org>
parents: 11529
diff changeset
2369 term_T *b_term; /* When not NULL this buffer is for a terminal
b8299e742f41 patch 8.0.0693: no terminal emulator support
Christian Brabandt <cb@256bit.org>
parents: 11529
diff changeset
2370 * window. */
b8299e742f41 patch 8.0.0693: no terminal emulator support
Christian Brabandt <cb@256bit.org>
parents: 11529
diff changeset
2371 #endif
b8299e742f41 patch 8.0.0693: no terminal emulator support
Christian Brabandt <cb@256bit.org>
parents: 11529
diff changeset
2372
6122
18ac55444b37 updated for version 7.4.399
Bram Moolenaar <bram@vim.org>
parents: 5995
diff changeset
2373 }; /* file_buffer */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2374
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2375
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2376 #ifdef FEAT_DIFF
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2377 /*
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2378 * Stuff for diff mode.
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2379 */
9955
f52b263fb3f0 commit https://github.com/vim/vim/commit/015efc32c1add6269099364835ddf85ff257b3c6
Christian Brabandt <cb@256bit.org>
parents: 9941
diff changeset
2380 # define DB_COUNT 8 /* up to eight buffers can be diff'ed */
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2381
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2382 /*
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2383 * Each diffblock defines where a block of lines starts in each of the buffers
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2384 * and how many lines it occupies in that buffer. When the lines are missing
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2385 * in the buffer the df_count[] is zero. This is all counted in
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2386 * buffer lines.
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2387 * There is always at least one unchanged line in between the diffs.
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2388 * Otherwise it would have been included in the diff above or below it.
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2389 * df_lnum[] + df_count[] is the lnum below the change. When in one buffer
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2390 * lines have been inserted, in the other buffer df_lnum[] is the line below
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2391 * the insertion and df_count[] is zero. When appending lines at the end of
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2392 * the buffer, df_lnum[] is one beyond the end!
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2393 * This is using a linked list, because the number of differences is expected
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2394 * to be reasonable small. The list is sorted on lnum.
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2395 */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2396 typedef struct diffblock_S diff_T;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2397 struct diffblock_S
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2398 {
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2399 diff_T *df_next;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2400 linenr_T df_lnum[DB_COUNT]; /* line number in buffer */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2401 linenr_T df_count[DB_COUNT]; /* nr of inserted/changed lines */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2402 };
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2403 #endif
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2404
1906
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
2405 #define SNAP_HELP_IDX 0
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
2406 #ifdef FEAT_AUTOCMD
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
2407 # define SNAP_AUCMD_IDX 1
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
2408 # define SNAP_COUNT 2
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
2409 #else
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
2410 # define SNAP_COUNT 1
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
2411 #endif
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
2412
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2413 /*
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2414 * Tab pages point to the top frame of each tab page.
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2415 * Note: Most values are NOT valid for the current tab page! Use "curwin",
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2416 * "firstwin", etc. for that. "tp_topframe" is always valid and can be
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2417 * compared against "topframe" to find the current tab page.
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2418 */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2419 typedef struct tabpage_S tabpage_T;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2420 struct tabpage_S
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2421 {
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2422 tabpage_T *tp_next; /* next tabpage or NULL */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2423 frame_T *tp_topframe; /* topframe for the windows */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2424 win_T *tp_curwin; /* current window in this Tab page */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2425 win_T *tp_prevwin; /* previous window in this Tab page */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2426 win_T *tp_firstwin; /* first window in this Tab page */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2427 win_T *tp_lastwin; /* last window in this Tab page */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2428 long tp_old_Rows; /* Rows when Tab page was left */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2429 long tp_old_Columns; /* Columns when Tab page was left */
824
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
2430 long tp_ch_used; /* value of 'cmdheight' when frame size
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
2431 was set */
790
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
2432 #ifdef FEAT_GUI
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
2433 int tp_prev_which_scrollbars[3];
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
2434 /* previous value of which_scrollbars */
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
2435 #endif
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2436 #ifdef FEAT_DIFF
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2437 diff_T *tp_first_diff;
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2438 buf_T *(tp_diffbuf[DB_COUNT]);
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2439 int tp_diff_invalid; /* list of diffs is outdated */
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2440 #endif
1906
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
2441 frame_T *(tp_snapshot[SNAP_COUNT]); /* window layout snapshots */
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 800
diff changeset
2442 #ifdef FEAT_EVAL
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 800
diff changeset
2443 dictitem_T tp_winvar; /* variable for "t:" Dictionary */
4287
dc3efb6d5a08 updated for version 7.3.893
Bram Moolenaar <bram@vim.org>
parents: 3687
diff changeset
2444 dict_T *tp_vars; /* internal variables, local to tab page */
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 800
diff changeset
2445 #endif
4401
cfd76908da25 updated for version 7.3.949
Bram Moolenaar <bram@vim.org>
parents: 4352
diff changeset
2446
cfd76908da25 updated for version 7.3.949
Bram Moolenaar <bram@vim.org>
parents: 4352
diff changeset
2447 #ifdef FEAT_PYTHON
cfd76908da25 updated for version 7.3.949
Bram Moolenaar <bram@vim.org>
parents: 4352
diff changeset
2448 void *tp_python_ref; /* The Python value for this tab page */
cfd76908da25 updated for version 7.3.949
Bram Moolenaar <bram@vim.org>
parents: 4352
diff changeset
2449 #endif
cfd76908da25 updated for version 7.3.949
Bram Moolenaar <bram@vim.org>
parents: 4352
diff changeset
2450
cfd76908da25 updated for version 7.3.949
Bram Moolenaar <bram@vim.org>
parents: 4352
diff changeset
2451 #ifdef FEAT_PYTHON3
cfd76908da25 updated for version 7.3.949
Bram Moolenaar <bram@vim.org>
parents: 4352
diff changeset
2452 void *tp_python3_ref; /* The Python value for this tab page */
cfd76908da25 updated for version 7.3.949
Bram Moolenaar <bram@vim.org>
parents: 4352
diff changeset
2453 #endif
673
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2454 };
513866ffe6af updated for version 7.0200
vimboss
parents: 671
diff changeset
2455
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2456 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2457 * Structure to cache info for displayed lines in w_lines[].
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2458 * Each logical line has one entry.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2459 * The entry tells how the logical line is currently displayed in the window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2460 * This is updated when displaying the window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2461 * When the display is changed (e.g., when clearing the screen) w_lines_valid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2462 * is changed to exclude invalid entries.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2463 * When making changes to the buffer, wl_valid is reset to indicate wl_size
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2464 * may not reflect what is actually in the buffer. When wl_valid is FALSE,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2465 * the entries can only be used to count the number of displayed lines used.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2466 * wl_lnum and wl_lastlnum are invalid too.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2467 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2468 typedef struct w_line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2469 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2470 linenr_T wl_lnum; /* buffer line number for logical line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2471 short_u wl_size; /* height in screen lines */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2472 char wl_valid; /* TRUE values are valid for text in buffer */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2473 #ifdef FEAT_FOLDING
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2474 char wl_folded; /* TRUE when this is a range of folded lines */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2475 linenr_T wl_lastlnum; /* last buffer line number for logical line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2476 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2477 } wline_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2478
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2479 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2480 * Windows are kept in a tree of frames. Each frame has a column (FR_COL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2481 * or row (FR_ROW) layout or is a leaf, which has a window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2482 */
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 659
diff changeset
2483 struct frame_S
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2484 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2485 char fr_layout; /* FR_LEAF, FR_COL or FR_ROW */
8643
24b43dd167eb commit https://github.com/vim/vim/commit/44a2f923c00f1384c9ecde12fb5b4711bc20702e
Christian Brabandt <cb@256bit.org>
parents: 8577
diff changeset
2486 #ifdef FEAT_WINDOWS
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2487 int fr_width;
782
d20041a02ee5 updated for version 7.0228
vimboss
parents: 777
diff changeset
2488 int fr_newwidth; /* new width used in win_equal_rec() */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2489 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2490 int fr_height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2491 int fr_newheight; /* new height used in win_equal_rec() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2492 frame_T *fr_parent; /* containing frame or NULL */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2493 frame_T *fr_next; /* frame right or below in same parent, NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2494 for first */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2495 frame_T *fr_prev; /* frame left or above in same parent, NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2496 for last */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2497 /* fr_child and fr_win are mutually exclusive */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2498 frame_T *fr_child; /* first contained frame */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2499 win_T *fr_win; /* window that fills this frame */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2500 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2501
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2502 #define FR_LEAF 0 /* frame is a leaf */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2503 #define FR_ROW 1 /* frame with a row of windows */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2504 #define FR_COL 2 /* frame with a column of windows */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2505
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2506 /*
1326
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2507 * Struct used for highlighting 'hlsearch' matches, matches defined by
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2508 * ":match" and matches defined by match functions.
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2509 * For 'hlsearch' there is one pattern for all windows. For ":match" and the
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2510 * match functions there is a different pattern for each window.
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2511 */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2512 typedef struct
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2513 {
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2514 regmmatch_T rm; /* points to the regexp program; contains last found
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2515 match (may continue in next line) */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2516 buf_T *buf; /* the buffer to search for a match */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2517 linenr_T lnum; /* the line to search for a match */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2518 int attr; /* attributes to be used for a match */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2519 int attr_cur; /* attributes currently active in win_line() */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2520 linenr_T first_lnum; /* first lnum to search for multi-line pat */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2521 colnr_T startcol; /* in win_line() points to char where HL starts */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2522 colnr_T endcol; /* in win_line() points to char where HL ends */
9885
4e8b05fa12c6 commit https://github.com/vim/vim/commit/4f416e41243ca151b95d39d81ce23d00b1484755
Christian Brabandt <cb@256bit.org>
parents: 9852
diff changeset
2523 int is_addpos; /* position specified directly by
4e8b05fa12c6 commit https://github.com/vim/vim/commit/4f416e41243ca151b95d39d81ce23d00b1484755
Christian Brabandt <cb@256bit.org>
parents: 9852
diff changeset
2524 matchaddpos(). TRUE/FALSE */
1521
cc4fe241baa3 updated for version 7.1-236
vimboss
parents: 1415
diff changeset
2525 #ifdef FEAT_RELTIME
cc4fe241baa3 updated for version 7.1-236
vimboss
parents: 1415
diff changeset
2526 proftime_T tm; /* for a time limit */
cc4fe241baa3 updated for version 7.1-236
vimboss
parents: 1415
diff changeset
2527 #endif
1326
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2528 } match_T;
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2529
5979
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2530 /* number of positions supported by matchaddpos() */
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2531 #define MAXPOSMATCH 8
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2532
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2533 /*
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2534 * Same as lpos_T, but with additional field len.
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2535 */
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2536 typedef struct
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2537 {
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2538 linenr_T lnum; /* line number */
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2539 colnr_T col; /* column number */
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2540 int len; /* length: 0 - to the end of line */
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2541 } llpos_T;
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2542
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2543 /*
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2544 * posmatch_T provides an array for storing match items for matchaddpos()
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2545 * function.
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2546 */
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2547 typedef struct posmatch posmatch_T;
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2548 struct posmatch
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2549 {
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2550 llpos_T pos[MAXPOSMATCH]; /* array of positions */
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2551 int cur; /* internal position counter */
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2552 linenr_T toplnum; /* top buffer line */
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2553 linenr_T botlnum; /* bottom buffer line */
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2554 };
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2555
1326
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2556 /*
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2557 * matchitem_T provides a linked list for storing match items for ":match" and
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2558 * the match functions.
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2559 */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2560 typedef struct matchitem matchitem_T;
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2561 struct matchitem
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2562 {
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2563 matchitem_T *next;
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2564 int id; /* match ID */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2565 int priority; /* match priority */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2566 char_u *pattern; /* pattern to highlight */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2567 int hlg_id; /* highlight group ID */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2568 regmmatch_T match; /* regexp program for pattern */
5979
f9fa2e506b9f updated for version 7.4.330
Bram Moolenaar <bram@vim.org>
parents: 5942
diff changeset
2569 posmatch_T pos; /* position matches */
1326
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2570 match_T hl; /* struct for doing the actual highlighting */
6947
1efa7c2b9368 patch 7.4.792
Bram Moolenaar <bram@vim.org>
parents: 6933
diff changeset
2571 #ifdef FEAT_CONCEAL
1efa7c2b9368 patch 7.4.792
Bram Moolenaar <bram@vim.org>
parents: 6933
diff changeset
2572 int conceal_char; /* cchar for Conceal highlighting */
1efa7c2b9368 patch 7.4.792
Bram Moolenaar <bram@vim.org>
parents: 6933
diff changeset
2573 #endif
1326
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2574 };
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2575
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2576 /*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2577 * Structure which contains all information that belongs to a window
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2578 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2579 * All row numbers are relative to the start of the window, except w_winrow.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2580 */
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 659
diff changeset
2581 struct window_S
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2582 {
8534
485d4d8a97f6 commit https://github.com/vim/vim/commit/86edef664efccbfe685906c854b9cdd04e56f2d5
Christian Brabandt <cb@256bit.org>
parents: 8493
diff changeset
2583 int w_id; /* unique window ID */
485d4d8a97f6 commit https://github.com/vim/vim/commit/86edef664efccbfe685906c854b9cdd04e56f2d5
Christian Brabandt <cb@256bit.org>
parents: 8493
diff changeset
2584
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2585 buf_T *w_buffer; /* buffer we are a window into (used
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2586 often, keep it the first item!) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2587
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
2588 #if defined(FEAT_SYN_HL) || defined(FEAT_SPELL)
3312
b7811ab264bf updated for version 7.3.423
Bram Moolenaar <bram@vim.org>
parents: 2834
diff changeset
2589 synblock_T *w_s; /* for :ownsyntax */
2250
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
2590 #endif
1bac28a53fae Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents: 2242
diff changeset
2591
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2592 #ifdef FEAT_WINDOWS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2593 win_T *w_prev; /* link to previous window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2594 win_T *w_next; /* link to next window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2595 #endif
3570
e7ff3251dfa1 updated for version 7.3.545
Bram Moolenaar <bram@vim.org>
parents: 3312
diff changeset
2596 #ifdef FEAT_AUTOCMD
e7ff3251dfa1 updated for version 7.3.545
Bram Moolenaar <bram@vim.org>
parents: 3312
diff changeset
2597 int w_closing; /* window is being closed, don't let
e7ff3251dfa1 updated for version 7.3.545
Bram Moolenaar <bram@vim.org>
parents: 3312
diff changeset
2598 autocommands close it too. */
e7ff3251dfa1 updated for version 7.3.545
Bram Moolenaar <bram@vim.org>
parents: 3312
diff changeset
2599 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2600
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2601 frame_T *w_frame; /* frame containing this window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2602
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2603 pos_T w_cursor; /* cursor position in buffer */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2604
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2605 colnr_T w_curswant; /* The column we'd like to be at. This is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2606 used to try to stay in the same column
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2607 for up/down cursor motions. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2608
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2609 int w_set_curswant; /* If set, then update w_curswant the next
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2610 time through cursupdate() to the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2611 current virtual column */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2612
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2613 /*
7266
6ba7182fb7bd commit https://github.com/vim/vim/commit/0f6562e9036f889185dff49a75c7fc5ffb28b307
Christian Brabandt <cb@256bit.org>
parents: 7113
diff changeset
2614 * the next seven are used to update the visual part
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2615 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2616 char w_old_visual_mode; /* last known VIsual_mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2617 linenr_T w_old_cursor_lnum; /* last known end of visual part */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2618 colnr_T w_old_cursor_fcol; /* first column for block visual part */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2619 colnr_T w_old_cursor_lcol; /* last column for block visual part */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2620 linenr_T w_old_visual_lnum; /* last known start of visual part */
422
169f2a51b527 updated for version 7.0110
vimboss
parents: 419
diff changeset
2621 colnr_T w_old_visual_col; /* last known start of visual part */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2622 colnr_T w_old_curswant; /* last known value of Curswant */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2623
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2624 /*
1744
feb9b4215853 updated for version 7.2-042
vimboss
parents: 1733
diff changeset
2625 * "w_topline", "w_leftcol" and "w_skipcol" specify the offsets for
feb9b4215853 updated for version 7.2-042
vimboss
parents: 1733
diff changeset
2626 * displaying the buffer.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2627 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2628 linenr_T w_topline; /* buffer line number of the line at the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2629 top of the window */
1744
feb9b4215853 updated for version 7.2-042
vimboss
parents: 1733
diff changeset
2630 #ifdef FEAT_AUTOCMD
feb9b4215853 updated for version 7.2-042
vimboss
parents: 1733
diff changeset
2631 char w_topline_was_set; /* flag set to TRUE when topline is set,
feb9b4215853 updated for version 7.2-042
vimboss
parents: 1733
diff changeset
2632 e.g. by winrestview() */
feb9b4215853 updated for version 7.2-042
vimboss
parents: 1733
diff changeset
2633 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2634 #ifdef FEAT_DIFF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2635 int w_topfill; /* number of filler lines above w_topline */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2636 int w_old_topfill; /* w_topfill at last redraw */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2637 int w_botfill; /* TRUE when filler lines are actually
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2638 below w_topline (at end of file) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2639 int w_old_botfill; /* w_botfill at last redraw */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2640 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2641 colnr_T w_leftcol; /* window column number of the left most
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2642 character in the window; used when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2643 'wrap' is off */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2644 colnr_T w_skipcol; /* starting column when a single line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2645 doesn't fit in the window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2646
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2647 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2648 * Layout of the window in the screen.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2649 * May need to add "msg_scrolled" to "w_winrow" in rare situations.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2650 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2651 #ifdef FEAT_WINDOWS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2652 int w_winrow; /* first row of window in screen */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2653 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2654 int w_height; /* number of rows in window, excluding
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2655 status/command line(s) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2656 #ifdef FEAT_WINDOWS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2657 int w_status_height; /* number of status lines (0 or 1) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2658 int w_wincol; /* Leftmost column of window in screen.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2659 use W_WINCOL() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2660 int w_width; /* Width of window, excluding separation.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2661 use W_WIDTH() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2662 int w_vsep_width; /* Number of separator columns (0 or 1).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2663 use W_VSEP_WIDTH() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2664 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2665
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2666 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2667 * === start of cached values ====
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2668 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2669 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2670 * Recomputing is minimized by storing the result of computations.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2671 * Use functions in screen.c to check if they are valid and to update.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2672 * w_valid is a bitfield of flags, which indicate if specific values are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2673 * valid or need to be recomputed. See screen.c for values.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2674 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2675 int w_valid;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2676 pos_T w_valid_cursor; /* last known position of w_cursor, used
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2677 to adjust w_valid */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2678 colnr_T w_valid_leftcol; /* last known w_leftcol */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2679
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2680 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2681 * w_cline_height is the number of physical lines taken by the buffer line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2682 * that the cursor is on. We use this to avoid extra calls to plines().
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2683 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2684 int w_cline_height; /* current size of cursor line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2685 #ifdef FEAT_FOLDING
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2686 int w_cline_folded; /* cursor line is folded */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2687 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2688
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2689 int w_cline_row; /* starting row of the cursor line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2690
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2691 colnr_T w_virtcol; /* column number of the cursor in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2692 buffer line, as opposed to the column
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2693 number we're at on the screen. This
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2694 makes a difference on lines which span
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2695 more than one screen line or when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2696 w_leftcol is non-zero */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2697
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2698 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2699 * w_wrow and w_wcol specify the cursor position in the window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2700 * This is related to positions in the window, not in the display or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2701 * buffer, thus w_wrow is relative to w_winrow.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2702 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2703 int w_wrow, w_wcol; /* cursor position in window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2704
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2705 linenr_T w_botline; /* number of the line below the bottom of
9201
692e156c7023 commit https://github.com/vim/vim/commit/2f095a4bc4d786e0ac834f48dd18a94fe2d140e3
Christian Brabandt <cb@256bit.org>
parents: 9151
diff changeset
2706 the window */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2707 int w_empty_rows; /* number of ~ rows in window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2708 #ifdef FEAT_DIFF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2709 int w_filler_rows; /* number of filler rows at the end of the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2710 window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2711 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2712
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2713 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2714 * Info about the lines currently in the window is remembered to avoid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2715 * recomputing it every time. The allocated size of w_lines[] is Rows.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2716 * Only the w_lines_valid entries are actually valid.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2717 * When the display is up-to-date w_lines[0].wl_lnum is equal to w_topline
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2718 * and w_lines[w_lines_valid - 1].wl_lnum is equal to w_botline.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2719 * Between changing text and updating the display w_lines[] represents
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2720 * what is currently displayed. wl_valid is reset to indicated this.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2721 * This is used for efficient redrawing.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2722 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2723 int w_lines_valid; /* number of valid entries */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2724 wline_T *w_lines;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2725
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2726 #ifdef FEAT_FOLDING
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2727 garray_T w_folds; /* array of nested folds */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2728 char w_fold_manual; /* when TRUE: some folds are opened/closed
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2729 manually */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2730 char w_foldinvalid; /* when TRUE: folding needs to be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2731 recomputed */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2732 #endif
13
24d5189d3956 updated for version 7.0005
vimboss
parents: 12
diff changeset
2733 #ifdef FEAT_LINEBREAK
2178
c6f1aa1e9f32 Add 'relativenumber' patch from Markus Heidelberg.
Bram Moolenaar <bram@vim.org>
parents: 2171
diff changeset
2734 int w_nrwidth; /* width of 'number' and 'relativenumber'
c6f1aa1e9f32 Add 'relativenumber' patch from Markus Heidelberg.
Bram Moolenaar <bram@vim.org>
parents: 2171
diff changeset
2735 column being used */
13
24d5189d3956 updated for version 7.0005
vimboss
parents: 12
diff changeset
2736 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2737
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2738 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2739 * === end of cached values ===
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2740 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2741
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2742 int w_redr_type; /* type of redraw to be performed on win */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2743 int w_upd_rows; /* number of window lines to update when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2744 w_redr_type is REDRAW_TOP */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2745 linenr_T w_redraw_top; /* when != 0: first line needing redraw */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2746 linenr_T w_redraw_bot; /* when != 0: last line needing redraw */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2747 #ifdef FEAT_WINDOWS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2748 int w_redr_status; /* if TRUE status line must be redrawn */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2749 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2750
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2751 #ifdef FEAT_CMDL_INFO
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2752 /* remember what is shown in the ruler for this window (if 'ruler' set) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2753 pos_T w_ru_cursor; /* cursor position shown in ruler */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2754 colnr_T w_ru_virtcol; /* virtcol shown in ruler */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2755 linenr_T w_ru_topline; /* topline shown in ruler */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2756 linenr_T w_ru_line_count; /* line count used for ruler */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2757 # ifdef FEAT_DIFF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2758 int w_ru_topfill; /* topfill shown in ruler */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2759 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2760 char w_ru_empty; /* TRUE if ruler shows 0-1 (empty line) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2761 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2762
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2763 int w_alt_fnum; /* alternate file (for # and CTRL-^) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2764
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2765 #ifdef FEAT_WINDOWS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2766 alist_T *w_alist; /* pointer to arglist for this window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2767 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2768 int w_arg_idx; /* current index in argument list (can be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2769 out of range!) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2770 int w_arg_idx_invalid; /* editing another file than w_arg_idx */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2771
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2772 char_u *w_localdir; /* absolute path of local directory or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2773 NULL */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2774 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2775 * Options local to a window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2776 * They are local because they influence the layout of the window or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2777 * depend on the window layout.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2778 * There are two values: w_onebuf_opt is local to the buffer currently in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2779 * this window, w_allbuf_opt is for all buffers in this window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2780 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2781 winopt_T w_onebuf_opt;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2782 winopt_T w_allbuf_opt;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2783
681
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2784 /* A few options have local flags for P_INSECURE. */
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2785 #ifdef FEAT_STL_OPT
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2786 long_u w_p_stl_flags; /* flags for 'statusline' */
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2787 #endif
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2788 #ifdef FEAT_EVAL
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2789 long_u w_p_fde_flags; /* flags for 'foldexpr' */
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2790 long_u w_p_fdt_flags; /* flags for 'foldtext' */
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2791 #endif
2314
233eb4412f5d Added 'colorcolumn' option. Partly by Gregor Uhlenheuer.
Bram Moolenaar <bram@vim.org>
parents: 2281
diff changeset
2792 #ifdef FEAT_SYN_HL
233eb4412f5d Added 'colorcolumn' option. Partly by Gregor Uhlenheuer.
Bram Moolenaar <bram@vim.org>
parents: 2281
diff changeset
2793 int *w_p_cc_cols; /* array of columns to highlight or NULL */
233eb4412f5d Added 'colorcolumn' option. Partly by Gregor Uhlenheuer.
Bram Moolenaar <bram@vim.org>
parents: 2281
diff changeset
2794 #endif
5995
ef83b423ebf7 updated for version 7.4.338
Bram Moolenaar <bram@vim.org>
parents: 5979
diff changeset
2795 #ifdef FEAT_LINEBREAK
ef83b423ebf7 updated for version 7.4.338
Bram Moolenaar <bram@vim.org>
parents: 5979
diff changeset
2796 int w_p_brimin; /* minimum width for breakindent */
ef83b423ebf7 updated for version 7.4.338
Bram Moolenaar <bram@vim.org>
parents: 5979
diff changeset
2797 int w_p_brishift; /* additional shift for breakindent */
ef83b423ebf7 updated for version 7.4.338
Bram Moolenaar <bram@vim.org>
parents: 5979
diff changeset
2798 int w_p_brisbr; /* sbr in 'briopt' */
ef83b423ebf7 updated for version 7.4.338
Bram Moolenaar <bram@vim.org>
parents: 5979
diff changeset
2799 #endif
681
9364d114ed8d updated for version 7.0204
vimboss
parents: 680
diff changeset
2800
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2801 /* transform a pointer to a "onebuf" option into a "allbuf" option */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2802 #define GLOBAL_WO(p) ((char *)p + sizeof(winopt_T))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2803
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2804 #ifdef FEAT_SCROLLBIND
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2805 long w_scbind_pos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2806 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2807
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2808 #ifdef FEAT_EVAL
133
bcb347a8f934 updated for version 7.0044
vimboss
parents: 123
diff changeset
2809 dictitem_T w_winvar; /* variable for "w:" Dictionary */
4287
dc3efb6d5a08 updated for version 7.3.893
Bram Moolenaar <bram@vim.org>
parents: 3687
diff changeset
2810 dict_T *w_vars; /* internal variables, local to window */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2811 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2812
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2813 #if defined(FEAT_RIGHTLEFT) && defined(FEAT_FKMAP)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2814 int w_farsi; /* for the window dependent Farsi functions */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2815 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2816
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2817 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2818 * The w_prev_pcmark field is used to check whether we really did jump to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2819 * a new line after setting the w_pcmark. If not, then we revert to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2820 * using the previous w_pcmark.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2821 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2822 pos_T w_pcmark; /* previous context mark */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2823 pos_T w_prev_pcmark; /* previous w_pcmark */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2824
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2825 #ifdef FEAT_JUMPLIST
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2826 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2827 * the jumplist contains old cursor positions
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2828 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2829 xfmark_T w_jumplist[JUMPLISTSIZE];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2830 int w_jumplistlen; /* number of active entries */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2831 int w_jumplistidx; /* current position */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2832
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2833 int w_changelistidx; /* current position in b_changelist */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2834 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2835
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2836 #ifdef FEAT_SEARCH_EXTRA
1326
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2837 matchitem_T *w_match_head; /* head of match list */
22886f3d882d updated for version 7.1-040
vimboss
parents: 1216
diff changeset
2838 int w_next_match_id; /* next match ID */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2839 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2840
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2841 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2842 * the tagstack grows from 0 upwards:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2843 * entry 0: older
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2844 * entry 1: newer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2845 * entry 2: newest
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2846 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2847 taggy_T w_tagstack[TAGSTACKSIZE]; /* the tag stack */
1216
35a1d7bd6191 updated for version 7.1b
vimboss
parents: 934
diff changeset
2848 int w_tagstackidx; /* idx just below active entry */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2849 int w_tagstacklen; /* number of tags on stack */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2850
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2851 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2852 * w_fraction is the fractional row of the cursor within the window, from
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2853 * 0 at the top row to FRACTION_MULT at the last row.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2854 * w_prev_fraction_row was the actual cursor row when w_fraction was last
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2855 * calculated.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2856 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2857 int w_fraction;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2858 int w_prev_fraction_row;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2859
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2860 #ifdef FEAT_GUI
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2861 scrollbar_T w_scrollbars[2]; /* vert. Scrollbars for this window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2862 #endif
13
24d5189d3956 updated for version 7.0005
vimboss
parents: 12
diff changeset
2863 #ifdef FEAT_LINEBREAK
24d5189d3956 updated for version 7.0005
vimboss
parents: 12
diff changeset
2864 linenr_T w_nrwidth_line_count; /* line count when ml_nrwidth_width
24d5189d3956 updated for version 7.0005
vimboss
parents: 12
diff changeset
2865 * was computed. */
6679
27d9a4d8c168 updated for version 7.4.664
Bram Moolenaar <bram@vim.org>
parents: 6565
diff changeset
2866 long w_nuw_cached; /* 'numberwidth' option cached */
13
24d5189d3956 updated for version 7.0005
vimboss
parents: 12
diff changeset
2867 int w_nrwidth_width; /* nr of chars to print line count. */
24d5189d3956 updated for version 7.0005
vimboss
parents: 12
diff changeset
2868 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2869
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 632
diff changeset
2870 #ifdef FEAT_QUICKFIX
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 632
diff changeset
2871 qf_info_T *w_llist; /* Location list for this window */
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 632
diff changeset
2872 /*
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 632
diff changeset
2873 * Location list reference used in the location list window.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 632
diff changeset
2874 * In a non-location list window, w_llist_ref is NULL.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 632
diff changeset
2875 */
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 632
diff changeset
2876 qf_info_T *w_llist_ref;
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 632
diff changeset
2877 #endif
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 632
diff changeset
2878
14
946da5994c01 updated for version 7.0006
vimboss
parents: 13
diff changeset
2879
946da5994c01 updated for version 7.0006
vimboss
parents: 13
diff changeset
2880 #ifdef FEAT_MZSCHEME
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2881 void *w_mzscheme_ref; /* The MzScheme value for this window */
14
946da5994c01 updated for version 7.0006
vimboss
parents: 13
diff changeset
2882 #endif
946da5994c01 updated for version 7.0006
vimboss
parents: 13
diff changeset
2883
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2884 #ifdef FEAT_PERL
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2885 void *w_perl_private;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2886 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2887
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2888 #ifdef FEAT_PYTHON
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2889 void *w_python_ref; /* The Python value for this window */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2890 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2891
2329
ad2889f48843 Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents: 2314
diff changeset
2892 #ifdef FEAT_PYTHON3
ad2889f48843 Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents: 2314
diff changeset
2893 void *w_python3_ref; /* The Python value for this window */
ad2889f48843 Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents: 2314
diff changeset
2894 #endif
ad2889f48843 Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents: 2314
diff changeset
2895
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2896 #ifdef FEAT_TCL
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2897 void *w_tcl_ref;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2898 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2899
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2900 #ifdef FEAT_RUBY
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2901 void *w_ruby_ref;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2902 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2903 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2904
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2905 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2906 * Arguments for operators.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2907 */
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2908 typedef struct oparg_S
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2909 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2910 int op_type; /* current pending operator type */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2911 int regname; /* register to use for the operator */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2912 int motion_type; /* type of the current cursor motion */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2913 int motion_force; /* force motion type: 'v', 'V' or CTRL-V */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2914 int use_reg_one; /* TRUE if delete uses reg 1 even when not
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2915 linewise */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2916 int inclusive; /* TRUE if char motion is inclusive (only
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2917 valid when motion_type is MCHAR */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2918 int end_adjusted; /* backuped b_op_end one char (only used by
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2919 do_format()) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2920 pos_T start; /* start of the operator */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2921 pos_T end; /* end of the operator */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2922 pos_T cursor_start; /* cursor position before motion for "gw" */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2923
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2924 long line_count; /* number of lines from op_start to op_end
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2925 (inclusive) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2926 int empty; /* op_start and op_end the same (only used by
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2927 do_change()) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2928 int is_VIsual; /* operator on Visual area */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2929 int block_mode; /* current operator is Visual block mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2930 colnr_T start_vcol; /* start col for block mode operator */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2931 colnr_T end_vcol; /* end col for block mode operator */
1692
c8c47cc9dab1 updated for version 7.2b-025
vimboss
parents: 1622
diff changeset
2932 #ifdef FEAT_AUTOCMD
c8c47cc9dab1 updated for version 7.2b-025
vimboss
parents: 1622
diff changeset
2933 long prev_opcount; /* ca.opcount saved for K_CURSORHOLD */
c8c47cc9dab1 updated for version 7.2b-025
vimboss
parents: 1622
diff changeset
2934 long prev_count0; /* ca.count0 saved for K_CURSORHOLD */
c8c47cc9dab1 updated for version 7.2b-025
vimboss
parents: 1622
diff changeset
2935 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2936 } oparg_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2937
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2938 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2939 * Arguments for Normal mode commands.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2940 */
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 482
diff changeset
2941 typedef struct cmdarg_S
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2942 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2943 oparg_T *oap; /* Operator arguments */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2944 int prechar; /* prefix character (optional, always 'g') */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2945 int cmdchar; /* command character */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2946 int nchar; /* next command character (optional) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2947 #ifdef FEAT_MBYTE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2948 int ncharC1; /* first composing character (optional) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2949 int ncharC2; /* second composing character (optional) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2950 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2951 int extra_char; /* yet another character (optional) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2952 long opcount; /* count before an operator */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2953 long count0; /* count before command, default 0 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2954 long count1; /* count before command, default 1 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2955 int arg; /* extra argument from nv_cmds[] */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2956 int retval; /* return: CA_* values */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2957 char_u *searchbuf; /* return: pointer to search pattern or NULL */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2958 } cmdarg_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2959
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2960 /* values for retval: */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2961 #define CA_COMMAND_BUSY 1 /* skip restarting edit() once */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2962 #define CA_NO_ADJ_OP_END 2 /* don't adjust operator end */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2963
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2964 #ifdef CURSOR_SHAPE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2965 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2966 * struct to store values from 'guicursor' and 'mouseshape'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2967 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2968 /* Indexes in shape_table[] */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2969 #define SHAPE_IDX_N 0 /* Normal mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2970 #define SHAPE_IDX_V 1 /* Visual mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2971 #define SHAPE_IDX_I 2 /* Insert mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2972 #define SHAPE_IDX_R 3 /* Replace mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2973 #define SHAPE_IDX_C 4 /* Command line Normal mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2974 #define SHAPE_IDX_CI 5 /* Command line Insert mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2975 #define SHAPE_IDX_CR 6 /* Command line Replace mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2976 #define SHAPE_IDX_O 7 /* Operator-pending mode */
2171
e12b9d992389 updated for version 7.2.436
Bram Moolenaar <bram@vim.org>
parents: 2150
diff changeset
2977 #define SHAPE_IDX_VE 8 /* Visual mode with 'selection' exclusive */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2978 #define SHAPE_IDX_CLINE 9 /* On command line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2979 #define SHAPE_IDX_STATUS 10 /* A status line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2980 #define SHAPE_IDX_SDRAG 11 /* dragging a status line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2981 #define SHAPE_IDX_VSEP 12 /* A vertical separator line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2982 #define SHAPE_IDX_VDRAG 13 /* dragging a vertical separator line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2983 #define SHAPE_IDX_MORE 14 /* Hit-return or More */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2984 #define SHAPE_IDX_MOREL 15 /* Hit-return or More in last line */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2985 #define SHAPE_IDX_SM 16 /* showing matching paren */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2986 #define SHAPE_IDX_COUNT 17
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2987
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2988 #define SHAPE_BLOCK 0 /* block cursor */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2989 #define SHAPE_HOR 1 /* horizontal bar cursor */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2990 #define SHAPE_VER 2 /* vertical bar cursor */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2991
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2992 #define MSHAPE_NUMBERED 1000 /* offset for shapes identified by number */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2993 #define MSHAPE_HIDE 1 /* hide mouse pointer */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2994
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2995 #define SHAPE_MOUSE 1 /* used for mouse pointer shape */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2996 #define SHAPE_CURSOR 2 /* used for text cursor shape */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2997
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2998 typedef struct cursor_entry
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2999 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3000 int shape; /* one of the SHAPE_ defines */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3001 int mshape; /* one of the MSHAPE defines */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3002 int percentage; /* percentage of cell for bar */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3003 long blinkwait; /* blinking, wait time before blinking starts */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3004 long blinkon; /* blinking, on time */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3005 long blinkoff; /* blinking, off time */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3006 int id; /* highlight group ID */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3007 int id_lm; /* highlight group ID for :lmap mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3008 char *name; /* mode name (fixed) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3009 char used_for; /* SHAPE_MOUSE and/or SHAPE_CURSOR */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3010 } cursorentry_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3011 #endif /* CURSOR_SHAPE */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3012
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3013 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3014
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3015 /* Indices into vimmenu_T->strings[] and vimmenu_T->noremap[] for each mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3016 #define MENU_INDEX_INVALID -1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3017 #define MENU_INDEX_NORMAL 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3018 #define MENU_INDEX_VISUAL 1
790
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
3019 #define MENU_INDEX_SELECT 2
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
3020 #define MENU_INDEX_OP_PENDING 3
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
3021 #define MENU_INDEX_INSERT 4
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
3022 #define MENU_INDEX_CMDLINE 5
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
3023 #define MENU_INDEX_TIP 6
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
3024 #define MENU_MODES 7
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3025
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3026 /* Menu modes */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3027 #define MENU_NORMAL_MODE (1 << MENU_INDEX_NORMAL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3028 #define MENU_VISUAL_MODE (1 << MENU_INDEX_VISUAL)
790
c8680debe1cc updated for version 7.0230
vimboss
parents: 786
diff changeset
3029 #define MENU_SELECT_MODE (1 << MENU_INDEX_SELECT)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3030 #define MENU_OP_PENDING_MODE (1 << MENU_INDEX_OP_PENDING)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3031 #define MENU_INSERT_MODE (1 << MENU_INDEX_INSERT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3032 #define MENU_CMDLINE_MODE (1 << MENU_INDEX_CMDLINE)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3033 #define MENU_TIP_MODE (1 << MENU_INDEX_TIP)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3034 #define MENU_ALL_MODES ((1 << MENU_INDEX_TIP) - 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3035 /*note MENU_INDEX_TIP is not a 'real' mode*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3036
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3037 /* Start a menu name with this to not include it on the main menu bar */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3038 #define MNU_HIDDEN_CHAR ']'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3039
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3040 typedef struct VimMenu vimmenu_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3041
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3042 struct VimMenu
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3043 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3044 int modes; /* Which modes is this menu visible for? */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3045 int enabled; /* for which modes the menu is enabled */
2150
4269a0673478 updated for version 7.2.432
Bram Moolenaar <bram@zimbu.org>
parents: 1965
diff changeset
3046 char_u *name; /* Name of menu, possibly translated */
4269a0673478 updated for version 7.2.432
Bram Moolenaar <bram@zimbu.org>
parents: 1965
diff changeset
3047 char_u *dname; /* Displayed Name ("name" without '&') */
4269a0673478 updated for version 7.2.432
Bram Moolenaar <bram@zimbu.org>
parents: 1965
diff changeset
3048 #ifdef FEAT_MULTI_LANG
4269a0673478 updated for version 7.2.432
Bram Moolenaar <bram@zimbu.org>
parents: 1965
diff changeset
3049 char_u *en_name; /* "name" untranslated, NULL when "name"
4269a0673478 updated for version 7.2.432
Bram Moolenaar <bram@zimbu.org>
parents: 1965
diff changeset
3050 * was not translated */
4269a0673478 updated for version 7.2.432
Bram Moolenaar <bram@zimbu.org>
parents: 1965
diff changeset
3051 char_u *en_dname; /* "dname" untranslated, NULL when "dname"
4269a0673478 updated for version 7.2.432
Bram Moolenaar <bram@zimbu.org>
parents: 1965
diff changeset
3052 * was not translated */
4269a0673478 updated for version 7.2.432
Bram Moolenaar <bram@zimbu.org>
parents: 1965
diff changeset
3053 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3054 int mnemonic; /* mnemonic key (after '&') */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3055 char_u *actext; /* accelerator text (after TAB) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3056 int priority; /* Menu order priority */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3057 #ifdef FEAT_GUI
7807
1a5d34492798 commit https://github.com/vim/vim/commit/d99df423c559d85c17779b3685426c489554908c
Christian Brabandt <cb@256bit.org>
parents: 7712
diff changeset
3058 void (*cb)(vimmenu_T *); /* Call-back routine */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3059 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3060 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3061 char_u *iconfile; /* name of file for icon or NULL */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3062 int iconidx; /* icon index (-1 if not set) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3063 int icon_builtin; /* icon names is BuiltIn{nr} */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3064 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3065 char_u *strings[MENU_MODES]; /* Mapped string for each mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3066 int noremap[MENU_MODES]; /* A REMAP_ flag for each mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3067 char silent[MENU_MODES]; /* A silent flag for each mode */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3068 vimmenu_T *children; /* Children of sub-menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3069 vimmenu_T *parent; /* Parent of menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3070 vimmenu_T *next; /* Next item in menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3071 #ifdef FEAT_GUI_X11
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3072 Widget id; /* Manage this to enable item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3073 Widget submenu_id; /* If this is submenu, add children here */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3074 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3075 #ifdef FEAT_GUI_GTK
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3076 GtkWidget *id; /* Manage this to enable item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3077 GtkWidget *submenu_id; /* If this is submenu, add children here */
8218
3456e2ebebd4 commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents: 8212
diff changeset
3078 # if defined(GTK_CHECK_VERSION) && !GTK_CHECK_VERSION(3,4,0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3079 GtkWidget *tearoff_handle;
8218
3456e2ebebd4 commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents: 8212
diff changeset
3080 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3081 GtkWidget *label; /* Used by "set wak=" code. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3082 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3083 #ifdef FEAT_GUI_MOTIF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3084 int sensitive; /* turn button on/off */
50
90188be4861f updated for version 7.0028
vimboss
parents: 41
diff changeset
3085 char **xpm; /* pixmap data */
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 153
diff changeset
3086 char *xpm_fname; /* file with pixmap data */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3087 #endif
50
90188be4861f updated for version 7.0028
vimboss
parents: 41
diff changeset
3088 #ifdef FEAT_GUI_ATHENA
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3089 Pixmap image; /* Toolbar image */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3090 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3091 #ifdef FEAT_BEVAL_TIP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3092 BalloonEval *tip; /* tooltip for this menu item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3093 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3094 #ifdef FEAT_GUI_W32
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3095 UINT id; /* Id of menu item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3096 HMENU submenu_id; /* If this is submenu, add children here */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3097 HWND tearoff_handle; /* hWnd of tearoff if created */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3098 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3099 #ifdef FEAT_GUI_MAC
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3100 /* MenuHandle id; */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3101 /* short index; */ /* the item index within the father menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3102 short menu_id; /* the menu id to which this item belong */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3103 short submenu_id; /* the menu id of the children (could be
2171
e12b9d992389 updated for version 7.2.436
Bram Moolenaar <bram@vim.org>
parents: 2150
diff changeset
3104 get through some tricks) */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3105 MenuHandle menu_handle;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3106 MenuHandle submenu_handle;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3107 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3108 #ifdef FEAT_GUI_PHOTON
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3109 PtWidget_t *id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3110 PtWidget_t *submenu_id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3111 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3112 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3113 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3114 /* For generating prototypes when FEAT_MENU isn't defined. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3115 typedef int vimmenu_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3116
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3117 #endif /* FEAT_MENU */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3118
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3119 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3120 * Struct to save values in before executing autocommands for a buffer that is
934
e44efb3af0d5 updated for version 7.0-060
vimboss
parents: 824
diff changeset
3121 * not the current buffer. Without FEAT_AUTOCMD only "curbuf" is remembered.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3122 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3123 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3124 {
1906
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
3125 buf_T *save_curbuf; /* saved curbuf */
934
e44efb3af0d5 updated for version 7.0-060
vimboss
parents: 824
diff changeset
3126 #ifdef FEAT_AUTOCMD
1944
40a8e388692b updated for version 7.2-241
vimboss
parents: 1928
diff changeset
3127 int use_aucmd_win; /* using aucmd_win */
1906
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
3128 win_T *save_curwin; /* saved curwin */
ff9ecf14efe3 updated for version 7.2-203
vimboss
parents: 1879
diff changeset
3129 win_T *new_curwin; /* new curwin */
9487
69ed2c9d34a6 commit https://github.com/vim/vim/commit/7c0a2f367f2507669560b1a66423155c70d2e75b
Christian Brabandt <cb@256bit.org>
parents: 9475
diff changeset
3130 bufref_T new_curbuf; /* new curbuf */
1944
40a8e388692b updated for version 7.2-241
vimboss
parents: 1928
diff changeset
3131 char_u *globaldir; /* saved value of globaldir */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3132 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3133 } aco_save_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3134
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3135 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3136 * Generic option table item, only used for printer at the moment.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3137 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3138 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3139 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3140 const char *name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3141 int hasnum;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3142 long number;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3143 char_u *string; /* points into option string */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3144 int strlen;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3145 int present;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3146 } option_table_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3147
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3148 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3149 * Structure to hold printing color and font attributes.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3150 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3151 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3152 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3153 long_u fg_color;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3154 long_u bg_color;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3155 int bold;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3156 int italic;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3157 int underline;
205
d292c40ca788 updated for version 7.0060
vimboss
parents: 168
diff changeset
3158 int undercurl;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3159 } prt_text_attr_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3160
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3161 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3162 * Structure passed back to the generic printer code.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3163 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3164 typedef struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3165 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3166 int n_collated_copies;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3167 int n_uncollated_copies;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3168 int duplex;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3169 int chars_per_line;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3170 int lines_per_page;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3171 int has_color;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3172 prt_text_attr_T number;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3173 #ifdef FEAT_SYN_HL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3174 int modec;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3175 int do_syntax;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3176 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3177 int user_abort;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3178 char_u *jobname;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3179 #ifdef FEAT_POSTSCRIPT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3180 char_u *outfile;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3181 char_u *arguments;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3182 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3183 } prt_settings_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3184
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3185 #define PRINT_NUMBER_WIDTH 8
659
d6a69271cb9a updated for version 7.0194
vimboss
parents: 644
diff changeset
3186
d6a69271cb9a updated for version 7.0194
vimboss
parents: 644
diff changeset
3187 /*
d6a69271cb9a updated for version 7.0194
vimboss
parents: 644
diff changeset
3188 * Used for popup menu items.
d6a69271cb9a updated for version 7.0194
vimboss
parents: 644
diff changeset
3189 */
d6a69271cb9a updated for version 7.0194
vimboss
parents: 644
diff changeset
3190 typedef struct
d6a69271cb9a updated for version 7.0194
vimboss
parents: 644
diff changeset
3191 {
d6a69271cb9a updated for version 7.0194
vimboss
parents: 644
diff changeset
3192 char_u *pum_text; /* main menu text */
731
02c12b042aec updated for version 7.0221
vimboss
parents: 724
diff changeset
3193 char_u *pum_kind; /* extra kind text (may be truncated) */
659
d6a69271cb9a updated for version 7.0194
vimboss
parents: 644
diff changeset
3194 char_u *pum_extra; /* extra menu text (may be truncated) */
d6a69271cb9a updated for version 7.0194
vimboss
parents: 644
diff changeset
3195 char_u *pum_info; /* extra info */
d6a69271cb9a updated for version 7.0194
vimboss
parents: 644
diff changeset
3196 } pumitem_T;
692
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3197
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3198 /*
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3199 * Structure used for get_tagfname().
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3200 */
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3201 typedef struct
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3202 {
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3203 char_u *tn_tags; /* value of 'tags' when starting */
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3204 char_u *tn_np; /* current position in tn_tags */
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3205 int tn_did_filefind_init;
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3206 int tn_hf_idx;
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3207 void *tn_search_ctx;
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3208 } tagname_T;
a28f83d37113 updated for version 7.0208
vimboss
parents: 685
diff changeset
3209
786
8f6a426bc1e0 updated for version 7.0229
vimboss
parents: 782
diff changeset
3210 /*
8f6a426bc1e0 updated for version 7.0229
vimboss
parents: 782
diff changeset
3211 * Array indexes used for cptext argument of ins_compl_add().
8f6a426bc1e0 updated for version 7.0229
vimboss
parents: 782
diff changeset
3212 */
8f6a426bc1e0 updated for version 7.0229
vimboss
parents: 782
diff changeset
3213 #define CPT_ABBR 0 /* "abbr" */
8f6a426bc1e0 updated for version 7.0229
vimboss
parents: 782
diff changeset
3214 #define CPT_MENU 1 /* "menu" */
8f6a426bc1e0 updated for version 7.0229
vimboss
parents: 782
diff changeset
3215 #define CPT_KIND 2 /* "kind" */
8f6a426bc1e0 updated for version 7.0229
vimboss
parents: 782
diff changeset
3216 #define CPT_INFO 3 /* "info" */
8f6a426bc1e0 updated for version 7.0229
vimboss
parents: 782
diff changeset
3217 #define CPT_COUNT 4 /* Number of entries */
2214
f8222d1f9a73 Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents: 2184
diff changeset
3218
f8222d1f9a73 Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents: 2184
diff changeset
3219 typedef struct {
f8222d1f9a73 Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents: 2184
diff changeset
3220 UINT32_T total[2];
f8222d1f9a73 Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents: 2184
diff changeset
3221 UINT32_T state[8];
f8222d1f9a73 Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents: 2184
diff changeset
3222 char_u buffer[64];
f8222d1f9a73 Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents: 2184
diff changeset
3223 } context_sha256_T;
7712
bce3b5ddb393 commit https://github.com/vim/vim/commit/520e1e41f35b063ede63b41738c82d6636e78c34
Christian Brabandt <cb@256bit.org>
parents: 7687
diff changeset
3224
bce3b5ddb393 commit https://github.com/vim/vim/commit/520e1e41f35b063ede63b41738c82d6636e78c34
Christian Brabandt <cb@256bit.org>
parents: 7687
diff changeset
3225 /*
bce3b5ddb393 commit https://github.com/vim/vim/commit/520e1e41f35b063ede63b41738c82d6636e78c34
Christian Brabandt <cb@256bit.org>
parents: 7687
diff changeset
3226 * Structure used for reading in json_decode().
bce3b5ddb393 commit https://github.com/vim/vim/commit/520e1e41f35b063ede63b41738c82d6636e78c34
Christian Brabandt <cb@256bit.org>
parents: 7687
diff changeset
3227 */
7883
98a96e0ca73b commit https://github.com/vim/vim/commit/56ead341a75e1a0395eee94a3280c67e2278a57e
Christian Brabandt <cb@256bit.org>
parents: 7868
diff changeset
3228 struct js_reader
7712
bce3b5ddb393 commit https://github.com/vim/vim/commit/520e1e41f35b063ede63b41738c82d6636e78c34
Christian Brabandt <cb@256bit.org>
parents: 7687
diff changeset
3229 {
bce3b5ddb393 commit https://github.com/vim/vim/commit/520e1e41f35b063ede63b41738c82d6636e78c34
Christian Brabandt <cb@256bit.org>
parents: 7687
diff changeset
3230 char_u *js_buf; /* text to be decoded */
7883
98a96e0ca73b commit https://github.com/vim/vim/commit/56ead341a75e1a0395eee94a3280c67e2278a57e
Christian Brabandt <cb@256bit.org>
parents: 7868
diff changeset
3231 char_u *js_end; /* NUL in js_buf */
7712
bce3b5ddb393 commit https://github.com/vim/vim/commit/520e1e41f35b063ede63b41738c82d6636e78c34
Christian Brabandt <cb@256bit.org>
parents: 7687
diff changeset
3232 int js_used; /* bytes used from js_buf */
7883
98a96e0ca73b commit https://github.com/vim/vim/commit/56ead341a75e1a0395eee94a3280c67e2278a57e
Christian Brabandt <cb@256bit.org>
parents: 7868
diff changeset
3233 int (*js_fill)(struct js_reader *);
98a96e0ca73b commit https://github.com/vim/vim/commit/56ead341a75e1a0395eee94a3280c67e2278a57e
Christian Brabandt <cb@256bit.org>
parents: 7868
diff changeset
3234 /* function to fill the buffer or NULL;
98a96e0ca73b commit https://github.com/vim/vim/commit/56ead341a75e1a0395eee94a3280c67e2278a57e
Christian Brabandt <cb@256bit.org>
parents: 7868
diff changeset
3235 * return TRUE when the buffer was filled */
98a96e0ca73b commit https://github.com/vim/vim/commit/56ead341a75e1a0395eee94a3280c67e2278a57e
Christian Brabandt <cb@256bit.org>
parents: 7868
diff changeset
3236 void *js_cookie; /* can be used by js_fill */
8755
7038ec89d1fd commit https://github.com/vim/vim/commit/46c00a6565b8f1f4b7b1041d03eaceaf6ffc4aee
Christian Brabandt <cb@256bit.org>
parents: 8718
diff changeset
3237 int js_cookie_arg; /* can be used by js_fill */
7883
98a96e0ca73b commit https://github.com/vim/vim/commit/56ead341a75e1a0395eee94a3280c67e2278a57e
Christian Brabandt <cb@256bit.org>
parents: 7868
diff changeset
3238 };
98a96e0ca73b commit https://github.com/vim/vim/commit/56ead341a75e1a0395eee94a3280c67e2278a57e
Christian Brabandt <cb@256bit.org>
parents: 7868
diff changeset
3239 typedef struct js_reader js_read_T;
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3240
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3241 typedef struct timer_S timer_T;
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3242 struct timer_S
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3243 {
10122
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10106
diff changeset
3244 long tr_id;
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3245 #ifdef FEAT_TIMERS
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3246 timer_T *tr_next;
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3247 timer_T *tr_prev;
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3248 proftime_T tr_due; /* when the callback is to be invoked */
10122
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10106
diff changeset
3249 char tr_firing; /* when TRUE callback is being called */
3db463d4df25 commit https://github.com/vim/vim/commit/75537a93e985ef32e6c267b06ce93629855dd983
Christian Brabandt <cb@256bit.org>
parents: 10106
diff changeset
3250 char tr_paused; /* when TRUE callback is not invoked */
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3251 int tr_repeat; /* number of times to repeat, -1 forever */
9802
4cb5ab124239 commit https://github.com/vim/vim/commit/a8e691d44937fd9d72dcbad2b8c673682277f13d
Christian Brabandt <cb@256bit.org>
parents: 9733
diff changeset
3252 long tr_interval; /* msec */
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3253 char_u *tr_callback; /* allocated */
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3254 partial_T *tr_partial;
11639
71d7b5ed08a0 patch 8.0.0702: an error in a timer can make Vim unusable
Christian Brabandt <cb@256bit.org>
parents: 11621
diff changeset
3255 int tr_emsg_count;
8577
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3256 #endif
63dc856bd13d commit https://github.com/vim/vim/commit/975b5271eed4fa0500c24a8f37be0b1797cb9db7
Christian Brabandt <cb@256bit.org>
parents: 8540
diff changeset
3257 };
9542
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3258
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3259 /* Maximum number of commands from + or -c arguments. */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3260 #define MAX_ARG_CMDS 10
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3261
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3262 /* values for "window_layout" */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3263 #define WIN_HOR 1 /* "-o" horizontally split windows */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3264 #define WIN_VER 2 /* "-O" vertically split windows */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3265 #define WIN_TABS 3 /* "-p" windows on tab pages */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3266
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3267 /* Struct for various parameters passed between main() and other functions. */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3268 typedef struct
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3269 {
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3270 int argc;
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3271 char **argv;
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3272
9802
4cb5ab124239 commit https://github.com/vim/vim/commit/a8e691d44937fd9d72dcbad2b8c673682277f13d
Christian Brabandt <cb@256bit.org>
parents: 9733
diff changeset
3273 char_u *fname; /* first file to edit */
4cb5ab124239 commit https://github.com/vim/vim/commit/a8e691d44937fd9d72dcbad2b8c673682277f13d
Christian Brabandt <cb@256bit.org>
parents: 9733
diff changeset
3274
9542
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3275 int evim_mode; /* started as "evim" */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3276 char_u *use_vimrc; /* vimrc from -u argument */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3277
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3278 int n_commands; /* no. of commands from + or -c */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3279 char_u *commands[MAX_ARG_CMDS]; /* commands from + or -c arg. */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3280 char_u cmds_tofree[MAX_ARG_CMDS]; /* commands that need free() */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3281 int n_pre_commands; /* no. of commands from --cmd */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3282 char_u *pre_commands[MAX_ARG_CMDS]; /* commands from --cmd argument */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3283
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3284 int edit_type; /* type of editing to do */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3285 char_u *tagname; /* tag from -t argument */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3286 #ifdef FEAT_QUICKFIX
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3287 char_u *use_ef; /* 'errorfile' from -q argument */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3288 #endif
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3289
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3290 int want_full_screen;
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3291 int not_a_term; /* no warning for missing term? */
10404
65e0537a4560 commit https://github.com/vim/vim/commit/2cab0e191055a8145ccd46cd52869fbb9798b971
Christian Brabandt <cb@256bit.org>
parents: 10386
diff changeset
3292 int tty_fail; /* exit if not a tty */
9542
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3293 char_u *term; /* specified terminal name */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3294 #ifdef FEAT_CRYPT
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3295 int ask_for_key; /* -x argument */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3296 #endif
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3297 int no_swap_file; /* "-n" argument used */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3298 #ifdef FEAT_EVAL
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3299 int use_debug_break_level;
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3300 #endif
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3301 #ifdef FEAT_WINDOWS
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3302 int window_count; /* number of windows to use */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3303 int window_layout; /* 0, WIN_HOR, WIN_VER or WIN_TABS */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3304 #endif
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3305
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3306 #ifdef FEAT_CLIENTSERVER
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3307 int serverArg; /* TRUE when argument for a server */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3308 char_u *serverName_arg; /* cmdline arg for server name */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3309 char_u *serverStr; /* remote server command */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3310 char_u *serverStrEnc; /* encoding of serverStr */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3311 char_u *servername; /* allocated name for our server */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3312 #endif
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3313 #if !defined(UNIX)
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3314 # define EXPAND_FILENAMES
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3315 int literal; /* don't expand file names */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3316 #endif
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3317 #ifdef MSWIN
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3318 int full_path; /* file name argument was full path */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3319 #endif
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3320 #ifdef FEAT_DIFF
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3321 int diff_mode; /* start with 'diff' set */
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3322 #endif
00ee8d8c2e0c commit https://github.com/vim/vim/commit/502ae4ba63561c98ac69af26cd9883bfd18d225f
Christian Brabandt <cb@256bit.org>
parents: 9511
diff changeset
3323 } mparm_T;
9562
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3324
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3325 /*
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3326 * Structure returned by get_lval() and used by set_var_lval().
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3327 * For a plain name:
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3328 * "name" points to the variable name.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3329 * "exp_name" is NULL.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3330 * "tv" is NULL
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3331 * For a magic braces name:
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3332 * "name" points to the expanded variable name.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3333 * "exp_name" is non-NULL, to be freed later.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3334 * "tv" is NULL
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3335 * For an index in a list:
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3336 * "name" points to the (expanded) variable name.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3337 * "exp_name" NULL or non-NULL, to be freed later.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3338 * "tv" points to the (first) list item value
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3339 * "li" points to the (first) list item
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3340 * "range", "n1", "n2" and "empty2" indicate what items are used.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3341 * For an existing Dict item:
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3342 * "name" points to the (expanded) variable name.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3343 * "exp_name" NULL or non-NULL, to be freed later.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3344 * "tv" points to the dict item value
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3345 * "newkey" is NULL
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3346 * For a non-existing Dict item:
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3347 * "name" points to the (expanded) variable name.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3348 * "exp_name" NULL or non-NULL, to be freed later.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3349 * "tv" points to the Dictionary typval_T
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3350 * "newkey" is the key for the new item.
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3351 */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3352 typedef struct lval_S
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3353 {
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3354 char_u *ll_name; /* start of variable name (can be NULL) */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3355 char_u *ll_exp_name; /* NULL or expanded name in allocated memory. */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3356 typval_T *ll_tv; /* Typeval of item being used. If "newkey"
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3357 isn't NULL it's the Dict to which to add
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3358 the item. */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3359 listitem_T *ll_li; /* The list item or NULL. */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3360 list_T *ll_list; /* The list or NULL. */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3361 int ll_range; /* TRUE when a [i:j] range was used */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3362 long ll_n1; /* First index for list */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3363 long ll_n2; /* Second index for list range */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3364 int ll_empty2; /* Second index is empty: [i:] */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3365 dict_T *ll_dict; /* The Dictionary or NULL */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3366 dictitem_T *ll_di; /* The dictitem or NULL */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3367 char_u *ll_newkey; /* New key for Dict in alloc. mem or NULL. */
86af4a48c00a commit https://github.com/vim/vim/commit/a9b579f3d7463720a316e11e77a7a9fbb9267986
Christian Brabandt <cb@256bit.org>
parents: 9542
diff changeset
3368 } lval_T;