annotate src/mark.c @ 33004:50e7d33c40f9 v9.0.1794

patch 9.0.1794: autoconf: not correctly detecing include dirs Commit: https://github.com/vim/vim/commit/74e1dada4199b2d9e68ccaafdb7895c85b4b08f1 Author: Illia Bobyr <illia.bobyr@gmail.com> Date: Sun Aug 27 18:26:54 2023 +0200 patch 9.0.1794: autoconf: not correctly detecing include dirs Problem: autoconf: not correctly detecing include dirs Solution: make use of python3 to generate includedirs configure: Python3: Use sysconfig for -I It seems better to use tools provided by Python for determining the include directories, rather than construct them "manually". Current system is broken when using virtual environments for python 3.11.4. It used to work before, but now it detects a incorrect value for `-I`. It would probably make sense to switch to a similar logic for lib folders, that is for the `-l` switch. There are also `sysconfig.get_config_h_filename()` and `sysconfig.get_makefile_filename()`, that could replace more Python specific logic in the current `configure{.ac,}`. sysconfig provides the necessary tools since Python 2.7. closes: #12889 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Illia Bobyr <illia.bobyr@gmail.com>
author Christian Brabandt <cb@256bit.org>
date Sun, 27 Aug 2023 18:45:03 +0200
parents 8201b0fcea02
children 1f3bcb7f3bd0
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: 9649
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 * See README.txt for an overview of the Vim source code.
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 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 * mark.c: functions for setting marks and jumping to them
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 #include "vim.h"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 * This file contains routines to maintain and manipulate marks.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 * If a named file mark's lnum is non-zero, it is valid.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 * If a named file mark's fnum is non-zero, it is for an existing buffer,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 * otherwise it is from .viminfo and namedfm[n].fname is the file name.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 * There are marks 'A - 'Z (set by user) and '0 to '9 (set when writing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 * viminfo).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 */
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
27 static xfmark_T namedfm[NMARKS + EXTRA_MARKS]; // marks with file nr
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28
17789
0f7ae8010787 patch 8.1.1891: functions used in one file are global
Bram Moolenaar <Bram@vim.org>
parents: 17464
diff changeset
29 static void fname2fnum(xfmark_T *fm);
7803
37c929c4a073 commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents: 5735
diff changeset
30 static void fmarks_check_one(xfmark_T *fm, char_u *name, buf_T *buf);
37c929c4a073 commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents: 5735
diff changeset
31 static char_u *mark_line(pos_T *mp, int lead_len);
37c929c4a073 commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents: 5735
diff changeset
32 static void show_one_mark(int, char_u *, pos_T *, char_u *, int current);
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
33 static void mark_adjust_internal(linenr_T line1, linenr_T line2, long amount,
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
34 long amount_after, int adjust_folds);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 /*
706
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
37 * Set named mark "c" at current cursor position.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 * Returns OK on success, FAIL if bad name given.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 int
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
41 setmark(int c)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 {
706
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
43 return setmark_pos(c, &curwin->w_cursor, curbuf->b_fnum);
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
44 }
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
45
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
46 /*
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
47 * Set named mark "c" to position "pos".
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
48 * When "c" is upper case use file "fnum".
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
49 * Returns OK on success, FAIL if bad name given.
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
50 */
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
51 int
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
52 setmark_pos(int c, pos_T *pos, int fnum)
706
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
53 {
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 int i;
10730
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
55 buf_T *buf;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
57 // Check for a special key (may cause islower() to crash).
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 if (c < 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 if (c == '\'' || c == '`')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 {
706
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
63 if (pos == &curwin->w_cursor)
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
64 {
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
65 setpcmark();
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
66 // keep it even when the cursor doesn't move
706
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
67 curwin->w_prev_pcmark = curwin->w_pcmark;
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
68 }
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
69 else
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
70 curwin->w_pcmark = *pos;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73
10730
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
74 buf = buflist_findnr(fnum);
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
75 if (buf == NULL)
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
76 return FAIL;
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
77
1533
8abc0abf8cbd updated for version 7.1-248
vimboss
parents: 1480
diff changeset
78 if (c == '"')
8abc0abf8cbd updated for version 7.1-248
vimboss
parents: 1480
diff changeset
79 {
10730
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
80 buf->b_last_cursor = *pos;
1533
8abc0abf8cbd updated for version 7.1-248
vimboss
parents: 1480
diff changeset
81 return OK;
8abc0abf8cbd updated for version 7.1-248
vimboss
parents: 1480
diff changeset
82 }
8abc0abf8cbd updated for version 7.1-248
vimboss
parents: 1480
diff changeset
83
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
84 // Allow setting '[ and '] for an autocommand that simulates reading a
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
85 // file.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 if (c == '[')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 {
10730
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
88 buf->b_op_start = *pos;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 if (c == ']')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 {
10730
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
93 buf->b_op_end = *pos;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96
5265
cd971e951b06 updated for version 7.4b.009
Bram Moolenaar <bram@vim.org>
parents: 4092
diff changeset
97 if (c == '<' || c == '>')
3660
bdf7f3e4c763 updated for version 7.3.590
Bram Moolenaar <bram@vim.org>
parents: 2712
diff changeset
98 {
5265
cd971e951b06 updated for version 7.4b.009
Bram Moolenaar <bram@vim.org>
parents: 4092
diff changeset
99 if (c == '<')
10730
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
100 buf->b_visual.vi_start = *pos;
5265
cd971e951b06 updated for version 7.4b.009
Bram Moolenaar <bram@vim.org>
parents: 4092
diff changeset
101 else
10730
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
102 buf->b_visual.vi_end = *pos;
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
103 if (buf->b_visual.vi_mode == NUL)
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
104 // Visual_mode has not yet been set, use a sane default.
10730
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
105 buf->b_visual.vi_mode = 'v';
3660
bdf7f3e4c763 updated for version 7.3.590
Bram Moolenaar <bram@vim.org>
parents: 2712
diff changeset
106 return OK;
bdf7f3e4c763 updated for version 7.3.590
Bram Moolenaar <bram@vim.org>
parents: 2712
diff changeset
107 }
bdf7f3e4c763 updated for version 7.3.590
Bram Moolenaar <bram@vim.org>
parents: 2712
diff changeset
108
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
109 if (ASCII_ISLOWER(c))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111 i = c - 'a';
10730
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
112 buf->b_namedm[i] = *pos;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 }
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
115 if (ASCII_ISUPPER(c) || VIM_ISDIGIT(c))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116 {
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
117 if (VIM_ISDIGIT(c))
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
118 i = c - '0' + NMARKS;
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
119 else
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
120 i = c - 'A';
706
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
121 namedfm[i].fmark.mark = *pos;
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
122 namedfm[i].fmark.fnum = fnum;
13244
ac42c4b11dbc patch 8.0.1496: clearing a pointer takes two lines
Christian Brabandt <cb@256bit.org>
parents: 12477
diff changeset
123 VIM_CLEAR(namedfm[i].fname);
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
124 #ifdef FEAT_VIMINFO
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
125 namedfm[i].time_set = vim_time();
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
126 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
127 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 * Set the previous context mark to the current position and add it to the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134 * jump list.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
137 setpcmark(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
139 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
140 xfmark_T *fm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
141
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
142 // for :global the mark is set only once
22699
e82579016863 patch 8.2.1898: command modifier parsing always uses global cmdmod
Bram Moolenaar <Bram@vim.org>
parents: 21403
diff changeset
143 if (global_busy || listcmd_busy || (cmdmod.cmod_flags & CMOD_KEEPJUMPS))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
145
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
146 curwin->w_prev_pcmark = curwin->w_pcmark;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 curwin->w_pcmark = curwin->w_cursor;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
149 // If jumplist is full: remove oldest entry
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150 if (++curwin->w_jumplistlen > JUMPLISTSIZE)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
152 curwin->w_jumplistlen = JUMPLISTSIZE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
153 vim_free(curwin->w_jumplist[0].fname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
154 for (i = 1; i < JUMPLISTSIZE; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
155 curwin->w_jumplist[i - 1] = curwin->w_jumplist[i];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
156 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157 curwin->w_jumplistidx = curwin->w_jumplistlen;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
158 fm = &curwin->w_jumplist[curwin->w_jumplistlen - 1];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
159
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
160 fm->fmark.mark = curwin->w_pcmark;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
161 fm->fmark.fnum = curbuf->b_fnum;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
162 fm->fname = NULL;
26532
255bc9a08e58 patch 8.2.3795: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 26439
diff changeset
163 #ifdef FEAT_VIMINFO
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
164 fm->time_set = vim_time();
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
166 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169 * To change context, call setpcmark(), then move the current position to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 * where ever, then call checkpcmark(). This ensures that the previous
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 * context will only be changed if the cursor moved to a different line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 * If pcmark was deleted (with "dG") the previous mark is restored.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
175 checkpcmark(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 if (curwin->w_prev_pcmark.lnum != 0
11121
778c10516955 patch 8.0.0448: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents: 10730
diff changeset
178 && (EQUAL_POS(curwin->w_pcmark, curwin->w_cursor)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
179 || curwin->w_pcmark.lnum == 0))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180 curwin->w_pcmark = curwin->w_prev_pcmark;
25998
902aab6dc499 patch 8.2.3532: the previous '' mark is restored after moving the cursor
Bram Moolenaar <Bram@vim.org>
parents: 25384
diff changeset
181 curwin->w_prev_pcmark.lnum = 0; // it has been checked
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
183
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
184 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
185 * move "count" positions in the jump list (count may be negative)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187 pos_T *
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
188 movemark(int count)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190 pos_T *pos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191 xfmark_T *jmp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
192
13278
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
193 cleanup_jumplist(curwin, TRUE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
195 if (curwin->w_jumplistlen == 0) // nothing to jump to
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196 return (pos_T *)NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
198 for (;;)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 if (curwin->w_jumplistidx + count < 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 || curwin->w_jumplistidx + count >= curwin->w_jumplistlen)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202 return (pos_T *)NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205 * if first CTRL-O or CTRL-I command after a jump, add cursor position
1188
2a276274c592 updated for version 7.1b
vimboss
parents: 706
diff changeset
206 * to list. Careful: If there are duplicates (CTRL-O immediately after
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207 * starting Vim on a file), another entry may have been removed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 if (curwin->w_jumplistidx == curwin->w_jumplistlen)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
211 setpcmark();
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
212 --curwin->w_jumplistidx; // skip the new entry
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
213 if (curwin->w_jumplistidx + count < 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214 return (pos_T *)NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
215 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
216
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217 curwin->w_jumplistidx += count;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
219 jmp = curwin->w_jumplist + curwin->w_jumplistidx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
220 if (jmp->fmark.fnum == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221 fname2fnum(jmp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
222 if (jmp->fmark.fnum != curbuf->b_fnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
223 {
30389
14c0d0c72bcd patch 9.0.0530: using freed memory when autocmd changes mark
Bram Moolenaar <Bram@vim.org>
parents: 29239
diff changeset
224 // Make a copy, an autocommand may make "jmp" invalid.
14c0d0c72bcd patch 9.0.0530: using freed memory when autocmd changes mark
Bram Moolenaar <Bram@vim.org>
parents: 29239
diff changeset
225 fmark_T fmark = jmp->fmark;
14c0d0c72bcd patch 9.0.0530: using freed memory when autocmd changes mark
Bram Moolenaar <Bram@vim.org>
parents: 29239
diff changeset
226
14c0d0c72bcd patch 9.0.0530: using freed memory when autocmd changes mark
Bram Moolenaar <Bram@vim.org>
parents: 29239
diff changeset
227 // jump to the file with the mark
14c0d0c72bcd patch 9.0.0530: using freed memory when autocmd changes mark
Bram Moolenaar <Bram@vim.org>
parents: 29239
diff changeset
228 if (buflist_findnr(fmark.fnum) == NULL)
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
229 { // Skip this one ..
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
230 count += count < 0 ? -1 : 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
231 continue;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
232 }
30389
14c0d0c72bcd patch 9.0.0530: using freed memory when autocmd changes mark
Bram Moolenaar <Bram@vim.org>
parents: 29239
diff changeset
233 if (buflist_getfile(fmark.fnum, fmark.mark.lnum, 0, FALSE) == FAIL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
234 return (pos_T *)NULL;
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
235 // Set lnum again, autocommands my have changed it
30389
14c0d0c72bcd patch 9.0.0530: using freed memory when autocmd changes mark
Bram Moolenaar <Bram@vim.org>
parents: 29239
diff changeset
236 curwin->w_cursor = fmark.mark;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
237 pos = (pos_T *)-1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
238 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
239 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
240 pos = &(jmp->fmark.mark);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
241 return pos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
242 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
243 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
244
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
245 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
246 * Move "count" positions in the changelist (count may be negative).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
247 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
248 pos_T *
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
249 movechangelist(int count)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
250 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
251 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
252
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
253 if (curbuf->b_changelistlen == 0) // nothing to jump to
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
254 return (pos_T *)NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
255
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
256 n = curwin->w_changelistidx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
257 if (n + count < 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
258 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
259 if (n == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
260 return (pos_T *)NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
261 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
262 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
263 else if (n + count >= curbuf->b_changelistlen)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
264 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
265 if (n == curbuf->b_changelistlen - 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
266 return (pos_T *)NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
267 n = curbuf->b_changelistlen - 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
268 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
269 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
270 n += count;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
271 curwin->w_changelistidx = n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
272 return curbuf->b_changelist + n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
273 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
274
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
275 /*
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
276 * Find mark "c" in buffer pointed to by "buf".
706
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
277 * If "changefile" is TRUE it's allowed to edit another file for '0, 'A, etc.
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
278 * If "fnum" is not NULL store the fnum there for '0, 'A etc., don't edit
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
279 * another file.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
280 * Returns:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
281 * - pointer to pos_T if found. lnum is 0 when mark not set, -1 when mark is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
282 * in another file which can't be gotten. (caller needs to check lnum!)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
283 * - NULL if there is no mark called 'c'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
284 * - -1 if mark is in other file and jumped there (only if changefile is TRUE)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
285 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
286 pos_T *
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
287 getmark_buf(buf_T *buf, int c, int changefile)
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
288 {
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
289 return getmark_buf_fnum(buf, c, changefile, NULL);
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
290 }
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
291
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
292 pos_T *
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
293 getmark(int c, int changefile)
706
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
294 {
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
295 return getmark_buf_fnum(curbuf, c, changefile, NULL);
706
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
296 }
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
297
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
298 pos_T *
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
299 getmark_buf_fnum(
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
300 buf_T *buf,
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
301 int c,
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
302 int changefile,
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
303 int *fnum)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
304 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
305 pos_T *posp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
306 pos_T *startp, *endp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
307 static pos_T pos_copy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
308
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
309 posp = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
310
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
311 // Check for special key, can't be a mark name and might cause islower()
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
312 // to crash.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
313 if (c < 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
314 return posp;
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
315 if (c > '~') // check for islower()/isupper()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
316 ;
27490
fb4c30606b4a patch 8.2.4273: the EBCDIC support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 27018
diff changeset
317 else if (c == '\'' || c == '`') // previous context mark
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
318 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
319 pos_copy = curwin->w_pcmark; // need to make a copy because
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
320 posp = &pos_copy; // w_pcmark may be changed soon
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
321 }
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
322 else if (c == '"') // to pos when leaving buffer
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
323 posp = &(buf->b_last_cursor);
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
324 else if (c == '^') // to where Insert mode stopped
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
325 posp = &(buf->b_last_insert);
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
326 else if (c == '.') // to where last change was made
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
327 posp = &(buf->b_last_change);
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
328 else if (c == '[') // to start of previous operator
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
329 posp = &(buf->b_op_start);
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
330 else if (c == ']') // to end of previous operator
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
331 posp = &(buf->b_op_end);
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
332 else if (c == '{' || c == '}') // to previous/next paragraph
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
333 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
334 pos_T pos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
335 oparg_T oa;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
336 int slcb = listcmd_busy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
337
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
338 pos = curwin->w_cursor;
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
339 listcmd_busy = TRUE; // avoid that '' is changed
503
c9ec7077a195 updated for version 7.0141
vimboss
parents: 358
diff changeset
340 if (findpar(&oa.inclusive,
c9ec7077a195 updated for version 7.0141
vimboss
parents: 358
diff changeset
341 c == '}' ? FORWARD : BACKWARD, 1L, NUL, FALSE))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
342 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
343 pos_copy = curwin->w_cursor;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
344 posp = &pos_copy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
345 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
346 curwin->w_cursor = pos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
347 listcmd_busy = slcb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
348 }
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
349 else if (c == '(' || c == ')') // to previous/next sentence
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
350 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
351 pos_T pos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
352 int slcb = listcmd_busy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
353
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
354 pos = curwin->w_cursor;
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
355 listcmd_busy = TRUE; // avoid that '' is changed
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
356 if (findsent(c == ')' ? FORWARD : BACKWARD, 1L))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
357 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
358 pos_copy = curwin->w_cursor;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
359 posp = &pos_copy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
360 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
361 curwin->w_cursor = pos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
362 listcmd_busy = slcb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
363 }
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
364 else if (c == '<' || c == '>') // start/end of visual area
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
365 {
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
366 startp = &buf->b_visual.vi_start;
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
367 endp = &buf->b_visual.vi_end;
11121
778c10516955 patch 8.0.0448: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents: 10730
diff changeset
368 if (((c == '<') == LT_POS(*startp, *endp) || endp->lnum == 0)
10730
44e9340dc604 patch 8.0.0255: setpos() does not use the buffer argument for all marks
Christian Brabandt <cb@256bit.org>
parents: 10285
diff changeset
369 && startp->lnum != 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
370 posp = startp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
371 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
372 posp = endp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
373 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
374 * For Visual line mode, set mark at begin or end of line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
375 */
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
376 if (buf->b_visual.vi_mode == 'V')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
377 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
378 pos_copy = *posp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
379 posp = &pos_copy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
380 if (c == '<')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
381 pos_copy.col = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
382 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
383 pos_copy.col = MAXCOL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
384 pos_copy.coladd = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
385 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
386 }
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
387 else if (ASCII_ISLOWER(c)) // normal named mark
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
388 {
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
389 posp = &(buf->b_namedm[c - 'a']);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
390 }
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
391 else if (ASCII_ISUPPER(c) || VIM_ISDIGIT(c)) // named file mark
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
392 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
393 if (VIM_ISDIGIT(c))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
394 c = c - '0' + NMARKS;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
395 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
396 c -= 'A';
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
397 posp = &(namedfm[c].fmark.mark);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
398
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
399 if (namedfm[c].fmark.fnum == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
400 fname2fnum(&namedfm[c]);
706
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
401
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
402 if (fnum != NULL)
ef3b59af4207 updated for version 7.0213
vimboss
parents: 690
diff changeset
403 *fnum = namedfm[c].fmark.fnum;
4043
80b041b994d1 updated for version 7.3.776
Bram Moolenaar <bram@vim.org>
parents: 3660
diff changeset
404 else if (namedfm[c].fmark.fnum != buf->b_fnum)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
405 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
406 // mark is in another file
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
407 posp = &pos_copy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
408
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
409 if (namedfm[c].fmark.mark.lnum != 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
410 && changefile && namedfm[c].fmark.fnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
411 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
412 if (buflist_getfile(namedfm[c].fmark.fnum,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
413 (linenr_T)1, GETF_SETMARK, FALSE) == OK)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
414 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
415 // Set the lnum now, autocommands could have changed it
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
416 curwin->w_cursor = namedfm[c].fmark.mark;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
417 return (pos_T *)-1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
418 }
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
419 pos_copy.lnum = -1; // can't get file
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
420 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
421 else
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
422 pos_copy.lnum = 0; // mark exists, but is not valid in
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
423 // current buffer
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
424 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
425 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
426
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
427 return posp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
428 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
429
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
430 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
431 * Search for the next named mark in the current file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
432 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
433 * Returns pointer to pos_T of the next mark or NULL if no mark is found.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
434 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
435 pos_T *
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
436 getnextmark(
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
437 pos_T *startpos, // where to start
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
438 int dir, // direction for search
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
439 int begin_line)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
440 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
441 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
442 pos_T *result = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
443 pos_T pos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
444
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
445 pos = *startpos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
446
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
447 // When searching backward and leaving the cursor on the first non-blank,
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
448 // position must be in a previous line.
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
449 // When searching forward and leaving the cursor on the first non-blank,
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
450 // position must be in a next line.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
451 if (dir == BACKWARD && begin_line)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
452 pos.col = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
453 else if (dir == FORWARD && begin_line)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
454 pos.col = MAXCOL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
455
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
456 for (i = 0; i < NMARKS; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
457 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
458 if (curbuf->b_namedm[i].lnum > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
459 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
460 if (dir == FORWARD)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
461 {
11121
778c10516955 patch 8.0.0448: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents: 10730
diff changeset
462 if ((result == NULL || LT_POS(curbuf->b_namedm[i], *result))
778c10516955 patch 8.0.0448: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents: 10730
diff changeset
463 && LT_POS(pos, curbuf->b_namedm[i]))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 result = &curbuf->b_namedm[i];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
465 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
466 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
467 {
11121
778c10516955 patch 8.0.0448: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents: 10730
diff changeset
468 if ((result == NULL || LT_POS(*result, curbuf->b_namedm[i]))
778c10516955 patch 8.0.0448: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents: 10730
diff changeset
469 && LT_POS(curbuf->b_namedm[i], pos))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
470 result = &curbuf->b_namedm[i];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
471 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
472 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
473 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
474
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
475 return result;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
476 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
477
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
478 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
479 * For an xtended filemark: set the fnum from the fname.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
480 * This is used for marks obtained from the .viminfo file. It's postponed
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
481 * until the mark is used to avoid a long startup delay.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
482 */
17789
0f7ae8010787 patch 8.1.1891: functions used in one file are global
Bram Moolenaar <Bram@vim.org>
parents: 17464
diff changeset
483 static void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
484 fname2fnum(xfmark_T *fm)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
485 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
486 char_u *p;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
487
31728
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
488 if (fm->fname == NULL)
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
489 return;
1480
801d55448282 updated for version 7.1-195
vimboss
parents: 1188
diff changeset
490
31728
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
491 /*
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
492 * First expand "~/" in the file name to the home directory.
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
493 * Don't expand the whole name, it may contain other '~' chars.
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
494 */
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
495 if (fm->fname[0] == '~' && (fm->fname[1] == '/'
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
496 #ifdef BACKSLASH_IN_FILENAME
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
497 || fm->fname[1] == '\\'
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
498 #endif
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
499 ))
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
500 {
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
501 int len;
1480
801d55448282 updated for version 7.1-195
vimboss
parents: 1188
diff changeset
502
31728
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
503 expand_env((char_u *)"~/", NameBuff, MAXPATHL);
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
504 len = (int)STRLEN(NameBuff);
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
505 vim_strncpy(NameBuff + len, fm->fname + 2, MAXPATHL - len - 1);
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
506 }
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
507 else
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
508 vim_strncpy(NameBuff, fm->fname, MAXPATHL - 1);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
509
31728
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
510 // Try to shorten the file name.
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
511 mch_dirname(IObuff, IOSIZE);
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
512 p = shorten_fname(NameBuff, IObuff);
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
513
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
514 // buflist_new() will call fmarks_check_names()
238ca27dbfd2 patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30389
diff changeset
515 (void)buflist_new(NameBuff, p, (linenr_T)1, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
516 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
517
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
518 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
519 * Check all file marks for a name that matches the file name in buf.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
520 * May replace the name with an fnum.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
521 * Used for marks that come from the .viminfo file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
522 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
523 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
524 fmarks_check_names(buf_T *buf)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
525 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
526 char_u *name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
527 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
528 win_T *wp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
529
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
530 if (buf->b_ffname == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
531 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
532
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
533 name = home_replace_save(buf, buf->b_ffname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
534 if (name == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
535 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
536
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
537 for (i = 0; i < NMARKS + EXTRA_MARKS; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
538 fmarks_check_one(&namedfm[i], name, buf);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
539
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
540 FOR_ALL_WINDOWS(wp)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
541 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
542 for (i = 0; i < wp->w_jumplistlen; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
543 fmarks_check_one(&wp->w_jumplist[i], name, buf);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
544 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
545
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
546 vim_free(name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
547 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
548
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
549 static void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
550 fmarks_check_one(xfmark_T *fm, char_u *name, buf_T *buf)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
551 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
552 if (fm->fmark.fnum == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
553 && fm->fname != NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
554 && fnamecmp(name, fm->fname) == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
555 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
556 fm->fmark.fnum = buf->b_fnum;
13244
ac42c4b11dbc patch 8.0.1496: clearing a pointer takes two lines
Christian Brabandt <cb@256bit.org>
parents: 12477
diff changeset
557 VIM_CLEAR(fm->fname);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
558 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
559 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
560
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
561 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
562 * Check a if a position from a mark is valid.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
563 * Give and error message and return FAIL if not.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
564 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
565 int
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
566 check_mark(pos_T *pos)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
567 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
568 if (pos == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
569 {
26439
b18f3b0f317c patch 8.2.3750: error messages are everywhere
Bram Moolenaar <Bram@vim.org>
parents: 25998
diff changeset
570 emsg(_(e_unknown_mark));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
571 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
572 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
573 if (pos->lnum <= 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
574 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
575 // lnum is negative if mark is in another file can can't get that
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
576 // file, error message already give then.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
577 if (pos->lnum == 0)
25064
8f2262c72178 patch 8.2.3069: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 23731
diff changeset
578 emsg(_(e_mark_not_set));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
579 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
580 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
581 if (pos->lnum > curbuf->b_ml.ml_line_count)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
582 {
25064
8f2262c72178 patch 8.2.3069: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 23731
diff changeset
583 emsg(_(e_mark_has_invalid_line_number));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
584 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
585 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
586 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
587 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
588
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
589 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
590 * clrallmarks() - clear all marks in the buffer 'buf'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
591 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
592 * Used mainly when trashing the entire buffer during ":e" type commands
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
593 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
594 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
595 clrallmarks(buf_T *buf)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
596 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
597 static int i = -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
598
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
599 if (i == -1) // first call ever: initialize
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
600 for (i = 0; i < NMARKS + 1; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
601 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
602 namedfm[i].fmark.mark.lnum = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
603 namedfm[i].fname = NULL;
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
604 #ifdef FEAT_VIMINFO
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
605 namedfm[i].time_set = 0;
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
606 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
607 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
608
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
609 for (i = 0; i < NMARKS; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
610 buf->b_namedm[i].lnum = 0;
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
611 buf->b_op_start.lnum = 0; // start/end op mark cleared
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
612 buf->b_op_end.lnum = 0;
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
613 buf->b_last_cursor.lnum = 1; // '" mark cleared
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
614 buf->b_last_cursor.col = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
615 buf->b_last_cursor.coladd = 0;
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
616 buf->b_last_insert.lnum = 0; // '^ mark cleared
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
617 buf->b_last_change.lnum = 0; // '. mark cleared
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
618 buf->b_changelistlen = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
619 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
620
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
621 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
622 * Get name of file from a filemark.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
623 * When it's in the current buffer, return the text at the mark.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
624 * Returns an allocated string.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
625 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
626 char_u *
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
627 fm_getname(fmark_T *fmark, int lead_len)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
628 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
629 if (fmark->fnum == curbuf->b_fnum) // current buffer
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
630 return mark_line(&(fmark->mark), lead_len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
631 return buflist_nr2name(fmark->fnum, FALSE, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
632 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
633
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
634 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
635 * Return the line at mark "mp". Truncate to fit in window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
636 * The returned string has been allocated.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
637 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
638 static char_u *
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
639 mark_line(pos_T *mp, int lead_len)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
640 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
641 char_u *s, *p;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
642 int len;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
643
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
644 if (mp->lnum == 0 || mp->lnum > curbuf->b_ml.ml_line_count)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
645 return vim_strsave((char_u *)"-invalid-");
14305
8a4c0ab88201 patch 8.1.0168: output of :marks is too short with multi-byte chars
Christian Brabandt <cb@256bit.org>
parents: 13278
diff changeset
646 // Allow for up to 5 bytes per character.
20830
9064044fd4f6 patch 8.2.0967: unnecessary type casts for vim_strnsave()
Bram Moolenaar <Bram@vim.org>
parents: 20635
diff changeset
647 s = vim_strnsave(skipwhite(ml_get(mp->lnum)), Columns * 5);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
648 if (s == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
649 return NULL;
14305
8a4c0ab88201 patch 8.1.0168: output of :marks is too short with multi-byte chars
Christian Brabandt <cb@256bit.org>
parents: 13278
diff changeset
650 // Truncate the line to fit it in the window.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
651 len = 0;
11127
506f5d8b7d8b patch 8.0.0451: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents: 11121
diff changeset
652 for (p = s; *p != NUL; MB_PTR_ADV(p))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
653 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
654 len += ptr2cells(p);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
655 if (len >= Columns - lead_len)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
656 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
657 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
658 *p = NUL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
659 return s;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
660 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
661
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
662 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
663 * print the marks
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
664 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
665 void
18126
f89e2e720b5b patch 8.1.2058: function for ex command is named inconsistently
Bram Moolenaar <Bram@vim.org>
parents: 17789
diff changeset
666 ex_marks(exarg_T *eap)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
667 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
668 char_u *arg = eap->arg;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
669 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
670 char_u *name;
21403
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
671 pos_T *posp, *startp, *endp;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
672
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
673 if (arg != NULL && *arg == NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
674 arg = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
675
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
676 show_one_mark('\'', arg, &curwin->w_pcmark, NULL, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
677 for (i = 0; i < NMARKS; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
678 show_one_mark(i + 'a', arg, &curbuf->b_namedm[i], NULL, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
679 for (i = 0; i < NMARKS + EXTRA_MARKS; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
680 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
681 if (namedfm[i].fmark.fnum != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
682 name = fm_getname(&namedfm[i].fmark, 15);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
683 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
684 name = namedfm[i].fname;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
685 if (name != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
686 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
687 show_one_mark(i >= NMARKS ? i - NMARKS + '0' : i + 'A',
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
688 arg, &namedfm[i].fmark.mark, name,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
689 namedfm[i].fmark.fnum == curbuf->b_fnum);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
690 if (namedfm[i].fmark.fnum != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
691 vim_free(name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
692 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
693 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
694 show_one_mark('"', arg, &curbuf->b_last_cursor, NULL, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
695 show_one_mark('[', arg, &curbuf->b_op_start, NULL, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
696 show_one_mark(']', arg, &curbuf->b_op_end, NULL, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
697 show_one_mark('^', arg, &curbuf->b_last_insert, NULL, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
698 show_one_mark('.', arg, &curbuf->b_last_change, NULL, TRUE);
21403
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
699
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
700 // Show the marks as where they will jump to.
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
701 startp = &curbuf->b_visual.vi_start;
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
702 endp = &curbuf->b_visual.vi_end;
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
703 if ((LT_POS(*startp, *endp) || endp->lnum == 0) && startp->lnum != 0)
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
704 posp = startp;
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
705 else
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
706 posp = endp;
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
707 show_one_mark('<', arg, posp, NULL, TRUE);
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
708 show_one_mark('>', arg, posp == startp ? endp : startp, NULL, TRUE);
d387121083a4 patch 8.2.1252: ":marks" may show '< and '> mixed up
Bram Moolenaar <Bram@vim.org>
parents: 20830
diff changeset
709
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
710 show_one_mark(-1, arg, NULL, NULL, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
711 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
712
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
713 static void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
714 show_one_mark(
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
715 int c,
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
716 char_u *arg,
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
717 pos_T *p,
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
718 char_u *name_arg,
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
719 int current) // in current file
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
720 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
721 static int did_title = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
722 int mustfree = FALSE;
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
723 char_u *name = name_arg;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
724
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
725 if (c == -1) // finish up
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
726 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
727 if (did_title)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
728 did_title = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
729 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
730 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
731 if (arg == NULL)
15543
dd725a8ab112 patch 8.1.0779: argument for message functions is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 15470
diff changeset
732 msg(_("No marks set"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
733 else
26897
d02d40f0261c patch 8.2.3977: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26865
diff changeset
734 semsg(_(e_no_marks_matching_str), arg);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
735 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
736 }
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
737 // don't output anything if 'q' typed at --more-- prompt
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
738 else if (!got_int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
739 && (arg == NULL || vim_strchr(arg, c) != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
740 && p->lnum != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
741 {
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
742 if (name == NULL && current)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
743 {
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
744 name = mark_line(p, 15);
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
745 mustfree = TRUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
746 }
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
747 if (!message_filtered(name))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
748 {
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
749 if (!did_title)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
750 {
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
751 // Highlight title
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
752 msg_puts_title(_("\nmark line col file/text"));
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
753 did_title = TRUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
754 }
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
755 msg_putchar('\n');
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
756 if (!got_int)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
757 {
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
758 sprintf((char *)IObuff, " %c %6ld %4d ", c, p->lnum, p->col);
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
759 msg_outtrans(IObuff);
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
760 if (name != NULL)
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
761 {
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
762 msg_outtrans_attr(name, current ? HL_ATTR(HLF_D) : 0);
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
763 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
764 }
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
765 out_flush(); // show one line at a time
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
766 }
16433
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
767 if (mustfree)
9c206a78ec04 patch 8.1.1221: filtering does not work when listing marks
Bram Moolenaar <Bram@vim.org>
parents: 15651
diff changeset
768 vim_free(name);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
769 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
770 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
771
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
772 /*
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
773 * ":delmarks[!] [marks]"
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
774 */
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
775 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
776 ex_delmarks(exarg_T *eap)
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
777 {
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
778 char_u *p;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
779 int from, to;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
780 int i;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
781 int lower;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
782 int digit;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
783 int n;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
784
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
785 if (*eap->arg == NUL && eap->forceit)
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
786 // clear all marks
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
787 clrallmarks(curbuf);
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
788 else if (eap->forceit)
26865
bce848ec8b1b patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26532
diff changeset
789 emsg(_(e_invalid_argument));
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
790 else if (*eap->arg == NUL)
26865
bce848ec8b1b patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26532
diff changeset
791 emsg(_(e_argument_required));
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
792 else
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
793 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
794 // clear specified marks only
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
795 for (p = eap->arg; *p != NUL; ++p)
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
796 {
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
797 lower = ASCII_ISLOWER(*p);
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
798 digit = VIM_ISDIGIT(*p);
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
799 if (lower || digit || ASCII_ISUPPER(*p))
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
800 {
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
801 if (p[1] == '-')
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
802 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
803 // clear range of marks
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
804 from = *p;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
805 to = p[2];
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
806 if (!(lower ? ASCII_ISLOWER(p[2])
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
807 : (digit ? VIM_ISDIGIT(p[2])
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
808 : ASCII_ISUPPER(p[2])))
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
809 || to < from)
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
810 {
26865
bce848ec8b1b patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26532
diff changeset
811 semsg(_(e_invalid_argument_str), p);
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
812 return;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
813 }
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
814 p += 2;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
815 }
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
816 else
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
817 // clear one lower case mark
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
818 from = to = *p;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
819
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
820 for (i = from; i <= to; ++i)
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
821 {
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
822 if (lower)
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
823 curbuf->b_namedm[i - 'a'].lnum = 0;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
824 else
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
825 {
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
826 if (digit)
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
827 n = i - '0' + NMARKS;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
828 else
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
829 n = i - 'A';
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
830 namedfm[n].fmark.mark.lnum = 0;
18979
de2d1820215a patch 8.2.0050: after deleting a file mark it is still in viminfo
Bram Moolenaar <Bram@vim.org>
parents: 18800
diff changeset
831 namedfm[n].fmark.fnum = 0;
13244
ac42c4b11dbc patch 8.0.1496: clearing a pointer takes two lines
Christian Brabandt <cb@256bit.org>
parents: 12477
diff changeset
832 VIM_CLEAR(namedfm[n].fname);
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
833 #ifdef FEAT_VIMINFO
18979
de2d1820215a patch 8.2.0050: after deleting a file mark it is still in viminfo
Bram Moolenaar <Bram@vim.org>
parents: 18800
diff changeset
834 namedfm[n].time_set = digit ? 0 : vim_time();
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
835 #endif
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
836 }
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
837 }
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
838 }
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
839 else
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
840 switch (*p)
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
841 {
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
842 case '"': curbuf->b_last_cursor.lnum = 0; break;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
843 case '^': curbuf->b_last_insert.lnum = 0; break;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
844 case '.': curbuf->b_last_change.lnum = 0; break;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
845 case '[': curbuf->b_op_start.lnum = 0; break;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
846 case ']': curbuf->b_op_end.lnum = 0; break;
690
0e922220d322 updated for version 7.0208
vimboss
parents: 671
diff changeset
847 case '<': curbuf->b_visual.vi_start.lnum = 0; break;
0e922220d322 updated for version 7.0208
vimboss
parents: 671
diff changeset
848 case '>': curbuf->b_visual.vi_end.lnum = 0; break;
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
849 case ' ': break;
26865
bce848ec8b1b patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26532
diff changeset
850 default: semsg(_(e_invalid_argument_str), p);
24
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
851 return;
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
852 }
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
853 }
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
854 }
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
855 }
8ff7fd162d3c updated for version 7.0016
vimboss
parents: 7
diff changeset
856
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
857 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
858 * print the jumplist
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
859 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
860 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
861 ex_jumps(exarg_T *eap UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
862 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
863 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
864 char_u *name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
865
13278
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
866 cleanup_jumplist(curwin, TRUE);
13248
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
867
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
868 // Highlight title
15543
dd725a8ab112 patch 8.1.0779: argument for message functions is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 15470
diff changeset
869 msg_puts_title(_("\n jump line col file/text"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
870 for (i = 0; i < curwin->w_jumplistlen && !got_int; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
871 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
872 if (curwin->w_jumplist[i].fmark.mark.lnum != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
873 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
874 name = fm_getname(&curwin->w_jumplist[i].fmark, 16);
14968
c5ec5ddbe814 patch 8.1.0495: :filter only supports some commands
Bram Moolenaar <Bram@vim.org>
parents: 14305
diff changeset
875
28388
320991d9812e patch 8.2.4719: ">" marker sometimes not displayed in the jumplist
Bram Moolenaar <Bram@vim.org>
parents: 28247
diff changeset
876 // Make sure to output the current indicator, even when on an wiped
320991d9812e patch 8.2.4719: ">" marker sometimes not displayed in the jumplist
Bram Moolenaar <Bram@vim.org>
parents: 28247
diff changeset
877 // out buffer. ":filter" may still skip it.
320991d9812e patch 8.2.4719: ">" marker sometimes not displayed in the jumplist
Bram Moolenaar <Bram@vim.org>
parents: 28247
diff changeset
878 if (name == NULL && i == curwin->w_jumplistidx)
320991d9812e patch 8.2.4719: ">" marker sometimes not displayed in the jumplist
Bram Moolenaar <Bram@vim.org>
parents: 28247
diff changeset
879 name = vim_strsave((char_u *)"-invalid-");
14968
c5ec5ddbe814 patch 8.1.0495: :filter only supports some commands
Bram Moolenaar <Bram@vim.org>
parents: 14305
diff changeset
880 // apply :filter /pat/ or file name not available
c5ec5ddbe814 patch 8.1.0495: :filter only supports some commands
Bram Moolenaar <Bram@vim.org>
parents: 14305
diff changeset
881 if (name == NULL || message_filtered(name))
15651
dd4e6f077874 patch 8.1.0833: memory leak when jumps output is filtered
Bram Moolenaar <Bram@vim.org>
parents: 15636
diff changeset
882 {
dd4e6f077874 patch 8.1.0833: memory leak when jumps output is filtered
Bram Moolenaar <Bram@vim.org>
parents: 15636
diff changeset
883 vim_free(name);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
884 continue;
15651
dd4e6f077874 patch 8.1.0833: memory leak when jumps output is filtered
Bram Moolenaar <Bram@vim.org>
parents: 15636
diff changeset
885 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
886
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
887 msg_putchar('\n');
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
888 if (got_int)
1702
5232b9862f23 updated for version 7.2-000
vimboss
parents: 1570
diff changeset
889 {
5232b9862f23 updated for version 7.2-000
vimboss
parents: 1570
diff changeset
890 vim_free(name);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
891 break;
1702
5232b9862f23 updated for version 7.2-000
vimboss
parents: 1570
diff changeset
892 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
893 sprintf((char *)IObuff, "%c %2d %5ld %4d ",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
894 i == curwin->w_jumplistidx ? '>' : ' ',
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
895 i > curwin->w_jumplistidx ? i - curwin->w_jumplistidx
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
896 : curwin->w_jumplistidx - i,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
897 curwin->w_jumplist[i].fmark.mark.lnum,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
898 curwin->w_jumplist[i].fmark.mark.col);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
899 msg_outtrans(IObuff);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
900 msg_outtrans_attr(name,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
901 curwin->w_jumplist[i].fmark.fnum == curbuf->b_fnum
11158
501f46f7644c patch 8.0.0466: still macros that should be all-caps
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
902 ? HL_ATTR(HLF_D) : 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
903 vim_free(name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
904 ui_breakcheck();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
905 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
906 out_flush();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
907 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
908 if (curwin->w_jumplistidx == curwin->w_jumplistlen)
15543
dd725a8ab112 patch 8.1.0779: argument for message functions is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 15470
diff changeset
909 msg_puts("\n>");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
910 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
911
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
912 void
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
913 ex_clearjumps(exarg_T *eap UNUSED)
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
914 {
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
915 free_jumplist(curwin);
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
916 curwin->w_jumplistlen = 0;
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
917 curwin->w_jumplistidx = 0;
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
918 }
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
919
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
920 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
921 * print the changelist
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
922 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
923 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
924 ex_changes(exarg_T *eap UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
925 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
926 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
927 char_u *name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
928
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
929 // Highlight title
15543
dd725a8ab112 patch 8.1.0779: argument for message functions is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 15470
diff changeset
930 msg_puts_title(_("\nchange line col text"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
931
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
932 for (i = 0; i < curbuf->b_changelistlen && !got_int; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
933 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
934 if (curbuf->b_changelist[i].lnum != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
935 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
936 msg_putchar('\n');
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
937 if (got_int)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
938 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
939 sprintf((char *)IObuff, "%c %3d %5ld %4d ",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
940 i == curwin->w_changelistidx ? '>' : ' ',
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
941 i > curwin->w_changelistidx ? i - curwin->w_changelistidx
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
942 : curwin->w_changelistidx - i,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
943 (long)curbuf->b_changelist[i].lnum,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
944 curbuf->b_changelist[i].col);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
945 msg_outtrans(IObuff);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
946 name = mark_line(&curbuf->b_changelist[i], 17);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
947 if (name == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
948 break;
11158
501f46f7644c patch 8.0.0466: still macros that should be all-caps
Christian Brabandt <cb@256bit.org>
parents: 11140
diff changeset
949 msg_outtrans_attr(name, HL_ATTR(HLF_D));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
950 vim_free(name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
951 ui_breakcheck();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
952 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
953 out_flush();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
954 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
955 if (curwin->w_changelistidx == curbuf->b_changelistlen)
15543
dd725a8ab112 patch 8.1.0779: argument for message functions is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 15470
diff changeset
956 msg_puts("\n>");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
957 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
958
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
959 #define one_adjust(add) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
960 { \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
961 lp = add; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
962 if (*lp >= line1 && *lp <= line2) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
963 { \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
964 if (amount == MAXLNUM) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
965 *lp = 0; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
966 else \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
967 *lp += amount; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
968 } \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
969 else if (amount_after && *lp > line2) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
970 *lp += amount_after; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
971 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
972
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
973 // don't delete the line, just put at first deleted line
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
974 #define one_adjust_nodel(add) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
975 { \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
976 lp = add; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
977 if (*lp >= line1 && *lp <= line2) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
978 { \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
979 if (amount == MAXLNUM) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
980 *lp = line1; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
981 else \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
982 *lp += amount; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
983 } \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
984 else if (amount_after && *lp > line2) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
985 *lp += amount_after; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
986 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
987
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
988 /*
32288
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 31728
diff changeset
989 * Adjust marks between "line1" and "line2" (inclusive) to move "amount" lines.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
990 * Must be called before changed_*(), appended_lines() or deleted_lines().
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
991 * May be called before or after changing the text.
32288
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 31728
diff changeset
992 * When deleting lines "line1" to "line2", use an "amount" of MAXLNUM: The
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 31728
diff changeset
993 * marks within this range are made invalid.
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 31728
diff changeset
994 * If "amount_after" is non-zero adjust marks after "line2".
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
995 * Example: Delete lines 34 and 35: mark_adjust(34, 35, MAXLNUM, -2);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
996 * Example: Insert two lines below 55: mark_adjust(56, MAXLNUM, 2, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
997 * or: mark_adjust(56, 55, MAXLNUM, 2);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
998 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
999 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1000 mark_adjust(
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1001 linenr_T line1,
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1002 linenr_T line2,
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1003 long amount,
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1004 long amount_after)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1005 {
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1006 mark_adjust_internal(line1, line2, amount, amount_after, TRUE);
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1007 }
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1008
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1009 void
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1010 mark_adjust_nofold(
28247
f70015784777 patch 8.2.4649: various formatting problems
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
1011 linenr_T line1,
f70015784777 patch 8.2.4649: various formatting problems
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
1012 linenr_T line2,
f70015784777 patch 8.2.4649: various formatting problems
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
1013 long amount,
f70015784777 patch 8.2.4649: various formatting problems
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
1014 long amount_after)
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1015 {
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1016 mark_adjust_internal(line1, line2, amount, amount_after, FALSE);
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1017 }
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1018
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1019 static void
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1020 mark_adjust_internal(
28247
f70015784777 patch 8.2.4649: various formatting problems
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
1021 linenr_T line1,
f70015784777 patch 8.2.4649: various formatting problems
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
1022 linenr_T line2,
f70015784777 patch 8.2.4649: various formatting problems
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
1023 long amount,
f70015784777 patch 8.2.4649: various formatting problems
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
1024 long amount_after,
f70015784777 patch 8.2.4649: various formatting problems
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
1025 int adjust_folds UNUSED)
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1026 {
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1027 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1028 int fnum = curbuf->b_fnum;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1029 linenr_T *lp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1030 win_T *win;
1863
63369d73b551 updated for version 7.2-161
vimboss
parents: 1733
diff changeset
1031 tabpage_T *tab;
15636
6f1c7e9a6393 patch 8.1.0826: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15543
diff changeset
1032 static pos_T initpos = {1, 0, 0};
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1033
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1034 if (line2 < line1 && amount_after == 0L) // nothing to do
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1035 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1036
22699
e82579016863 patch 8.2.1898: command modifier parsing always uses global cmdmod
Bram Moolenaar <Bram@vim.org>
parents: 21403
diff changeset
1037 if ((cmdmod.cmod_flags & CMOD_LOCKMARKS) == 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1038 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1039 // named marks, lower case and upper case
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1040 for (i = 0; i < NMARKS; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1041 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1042 one_adjust(&(curbuf->b_namedm[i].lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1043 if (namedfm[i].fmark.fnum == fnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1044 one_adjust_nodel(&(namedfm[i].fmark.mark.lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1045 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1046 for (i = NMARKS; i < NMARKS + EXTRA_MARKS; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1047 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1048 if (namedfm[i].fmark.fnum == fnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1049 one_adjust_nodel(&(namedfm[i].fmark.mark.lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1050 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1051
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1052 // last Insert position
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1053 one_adjust(&(curbuf->b_last_insert.lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1054
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1055 // last change position
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1056 one_adjust(&(curbuf->b_last_change.lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1057
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1058 // last cursor position, if it was set
11121
778c10516955 patch 8.0.0448: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents: 10730
diff changeset
1059 if (!EQUAL_POS(curbuf->b_last_cursor, initpos))
4092
c0cc0e0620dd updated for version 7.3.800
Bram Moolenaar <bram@vim.org>
parents: 4043
diff changeset
1060 one_adjust(&(curbuf->b_last_cursor.lnum));
c0cc0e0620dd updated for version 7.3.800
Bram Moolenaar <bram@vim.org>
parents: 4043
diff changeset
1061
c0cc0e0620dd updated for version 7.3.800
Bram Moolenaar <bram@vim.org>
parents: 4043
diff changeset
1062
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1063 // list of change positions
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1064 for (i = 0; i < curbuf->b_changelistlen; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1065 one_adjust_nodel(&(curbuf->b_changelist[i].lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1066
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1067 // Visual area
690
0e922220d322 updated for version 7.0208
vimboss
parents: 671
diff changeset
1068 one_adjust_nodel(&(curbuf->b_visual.vi_start.lnum));
0e922220d322 updated for version 7.0208
vimboss
parents: 671
diff changeset
1069 one_adjust_nodel(&(curbuf->b_visual.vi_end.lnum));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1070
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1071 #ifdef FEAT_QUICKFIX
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1072 // quickfix marks
643
d3c978b4c7ce updated for version 7.0187
vimboss
parents: 503
diff changeset
1073 qf_mark_adjust(NULL, line1, line2, amount, amount_after);
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1074 // location lists
1863
63369d73b551 updated for version 7.2-161
vimboss
parents: 1733
diff changeset
1075 FOR_ALL_TAB_WINDOWS(tab, win)
643
d3c978b4c7ce updated for version 7.0187
vimboss
parents: 503
diff changeset
1076 qf_mark_adjust(win, line1, line2, amount, amount_after);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1077 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1078
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1079 #ifdef FEAT_SIGNS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1080 sign_mark_adjust(line1, line2, amount, amount_after);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1081 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1082 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1083
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1084 // previous context mark
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1085 one_adjust(&(curwin->w_pcmark.lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1086
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1087 // previous pcmark
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1088 one_adjust(&(curwin->w_prev_pcmark.lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1089
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1090 // saved cursor for formatting
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1091 if (saved_cursor.lnum != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1092 one_adjust_nodel(&(saved_cursor.lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1093
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1094 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1095 * Adjust items in all windows related to the current buffer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1096 */
1863
63369d73b551 updated for version 7.2-161
vimboss
parents: 1733
diff changeset
1097 FOR_ALL_TAB_WINDOWS(tab, win)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1098 {
22699
e82579016863 patch 8.2.1898: command modifier parsing always uses global cmdmod
Bram Moolenaar <Bram@vim.org>
parents: 21403
diff changeset
1099 if ((cmdmod.cmod_flags & CMOD_LOCKMARKS) == 0)
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1100 // Marks in the jumplist. When deleting lines, this may create
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1101 // duplicate marks in the jumplist, they will be removed later.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1102 for (i = 0; i < win->w_jumplistlen; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1103 if (win->w_jumplist[i].fmark.fnum == fnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1104 one_adjust_nodel(&(win->w_jumplist[i].fmark.mark.lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1105
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1106 if (win->w_buffer == curbuf)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1107 {
22699
e82579016863 patch 8.2.1898: command modifier parsing always uses global cmdmod
Bram Moolenaar <Bram@vim.org>
parents: 21403
diff changeset
1108 if ((cmdmod.cmod_flags & CMOD_LOCKMARKS) == 0)
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1109 // marks in the tag stack
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1110 for (i = 0; i < win->w_tagstacklen; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1111 if (win->w_tagstack[i].fmark.fnum == fnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1112 one_adjust_nodel(&(win->w_tagstack[i].fmark.mark.lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1113
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1114 // the displayed Visual area
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1115 if (win->w_old_cursor_lnum != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1116 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1117 one_adjust_nodel(&(win->w_old_cursor_lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1118 one_adjust_nodel(&(win->w_old_visual_lnum));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1119 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1120
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1121 // topline and cursor position for windows with the same buffer
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1122 // other than the current window
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1123 if (win != curwin)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1124 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1125 if (win->w_topline >= line1 && win->w_topline <= line2)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1126 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1127 if (amount == MAXLNUM) // topline is deleted
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1128 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1129 if (line1 <= 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1130 win->w_topline = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1131 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1132 win->w_topline = line1 - 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1133 }
32288
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 31728
diff changeset
1134 else if (win->w_topline > line1)
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 31728
diff changeset
1135 // keep topline on the same line, unless inserting just
8201b0fcea02 patch 9.0.1476: lines put in non-current window are not displayed
Bram Moolenaar <Bram@vim.org>
parents: 31728
diff changeset
1136 // above it (we probably want to see that line then)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1137 win->w_topline += amount;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1138 #ifdef FEAT_DIFF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1139 win->w_topfill = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1140 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1141 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1142 else if (amount_after && win->w_topline > line2)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1143 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1144 win->w_topline += amount_after;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1145 #ifdef FEAT_DIFF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1146 win->w_topfill = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1147 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1148 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1149 if (win->w_cursor.lnum >= line1 && win->w_cursor.lnum <= line2)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1150 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1151 if (amount == MAXLNUM) // line with cursor is deleted
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1152 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1153 if (line1 <= 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1154 win->w_cursor.lnum = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1155 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1156 win->w_cursor.lnum = line1 - 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1157 win->w_cursor.col = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1158 }
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1159 else // keep cursor on the same line
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1160 win->w_cursor.lnum += amount;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1161 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1162 else if (amount_after && win->w_cursor.lnum > line2)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1163 win->w_cursor.lnum += amount_after;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1164 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1165
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1166 #ifdef FEAT_FOLDING
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1167 // adjust folds
11140
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1168 if (adjust_folds)
6b26e044b6f5 patch 8.0.0457: using :move messes up manual folds
Christian Brabandt <cb@256bit.org>
parents: 11127
diff changeset
1169 foldMarkAdjust(win, line1, line2, amount, amount_after);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1170 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1171 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1172 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1173
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1174 #ifdef FEAT_DIFF
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1175 // adjust diffs
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1176 diff_mark_adjust(line1, line2, amount, amount_after);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1177 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1178 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1179
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1180 // This code is used often, needs to be fast.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1181 #define col_adjust(pp) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1182 { \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1183 posp = pp; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1184 if (posp->lnum == lnum && posp->col >= mincol) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1185 { \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1186 posp->lnum += lnum_amount; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1187 if (col_amount < 0 && posp->col <= (colnr_T)-col_amount) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1188 posp->col = 0; \
15326
fe428bee74b3 patch 8.1.0671: cursor in the wrong column after auto-formatting
Bram Moolenaar <Bram@vim.org>
parents: 14968
diff changeset
1189 else if (posp->col < spaces_removed) \
fe428bee74b3 patch 8.1.0671: cursor in the wrong column after auto-formatting
Bram Moolenaar <Bram@vim.org>
parents: 14968
diff changeset
1190 posp->col = col_amount + spaces_removed; \
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1191 else \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1192 posp->col += col_amount; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1193 } \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1194 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1195
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1196 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1197 * Adjust marks in line "lnum" at column "mincol" and further: add
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1198 * "lnum_amount" to the line number and add "col_amount" to the column
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1199 * position.
15326
fe428bee74b3 patch 8.1.0671: cursor in the wrong column after auto-formatting
Bram Moolenaar <Bram@vim.org>
parents: 14968
diff changeset
1200 * "spaces_removed" is the number of spaces that were removed, matters when the
fe428bee74b3 patch 8.1.0671: cursor in the wrong column after auto-formatting
Bram Moolenaar <Bram@vim.org>
parents: 14968
diff changeset
1201 * cursor is inside them.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1202 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1203 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1204 mark_col_adjust(
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1205 linenr_T lnum,
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1206 colnr_T mincol,
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1207 long lnum_amount,
15326
fe428bee74b3 patch 8.1.0671: cursor in the wrong column after auto-formatting
Bram Moolenaar <Bram@vim.org>
parents: 14968
diff changeset
1208 long col_amount,
fe428bee74b3 patch 8.1.0671: cursor in the wrong column after auto-formatting
Bram Moolenaar <Bram@vim.org>
parents: 14968
diff changeset
1209 int spaces_removed)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1210 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1211 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1212 int fnum = curbuf->b_fnum;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1213 win_T *win;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1214 pos_T *posp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1215
22699
e82579016863 patch 8.2.1898: command modifier parsing always uses global cmdmod
Bram Moolenaar <Bram@vim.org>
parents: 21403
diff changeset
1216 if ((col_amount == 0L && lnum_amount == 0L)
e82579016863 patch 8.2.1898: command modifier parsing always uses global cmdmod
Bram Moolenaar <Bram@vim.org>
parents: 21403
diff changeset
1217 || (cmdmod.cmod_flags & CMOD_LOCKMARKS))
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1218 return; // nothing to do
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1219
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1220 // named marks, lower case and upper case
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1221 for (i = 0; i < NMARKS; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1222 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1223 col_adjust(&(curbuf->b_namedm[i]));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1224 if (namedfm[i].fmark.fnum == fnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1225 col_adjust(&(namedfm[i].fmark.mark));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1226 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1227 for (i = NMARKS; i < NMARKS + EXTRA_MARKS; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1228 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1229 if (namedfm[i].fmark.fnum == fnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1230 col_adjust(&(namedfm[i].fmark.mark));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1231 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1232
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1233 // last Insert position
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1234 col_adjust(&(curbuf->b_last_insert));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1235
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1236 // last change position
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1237 col_adjust(&(curbuf->b_last_change));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1238
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1239 // list of change positions
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1240 for (i = 0; i < curbuf->b_changelistlen; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1241 col_adjust(&(curbuf->b_changelist[i]));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1242
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1243 // Visual area
690
0e922220d322 updated for version 7.0208
vimboss
parents: 671
diff changeset
1244 col_adjust(&(curbuf->b_visual.vi_start));
0e922220d322 updated for version 7.0208
vimboss
parents: 671
diff changeset
1245 col_adjust(&(curbuf->b_visual.vi_end));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1246
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1247 // previous context mark
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1248 col_adjust(&(curwin->w_pcmark));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1249
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1250 // previous pcmark
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1251 col_adjust(&(curwin->w_prev_pcmark));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1252
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1253 // saved cursor for formatting
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1254 col_adjust(&saved_cursor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1255
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1256 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1257 * Adjust items in all windows related to the current buffer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1258 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1259 FOR_ALL_WINDOWS(win)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1260 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1261 // marks in the jumplist
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1262 for (i = 0; i < win->w_jumplistlen; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1263 if (win->w_jumplist[i].fmark.fnum == fnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1264 col_adjust(&(win->w_jumplist[i].fmark.mark));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1265
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1266 if (win->w_buffer == curbuf)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1267 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1268 // marks in the tag stack
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1269 for (i = 0; i < win->w_tagstacklen; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1270 if (win->w_tagstack[i].fmark.fnum == fnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1271 col_adjust(&(win->w_tagstack[i].fmark.mark));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1272
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1273 // cursor position for other windows with the same buffer
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1274 if (win != curwin)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1275 col_adjust(&win->w_cursor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1276 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1277 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1278 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1279
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1280 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1281 * When deleting lines, this may create duplicate marks in the
13248
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1282 * jumplist. They will be removed here for the specified window.
13278
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1283 * When "loadfiles" is TRUE first ensure entries have the "fnum" field set
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1284 * (this may be a bit slow).
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1285 */
13248
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1286 void
13278
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1287 cleanup_jumplist(win_T *wp, int loadfiles)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1288 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1289 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1290 int from, to;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1291
13278
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1292 if (loadfiles)
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1293 {
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1294 // If specified, load all the files from the jump list. This is
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1295 // needed to properly clean up duplicate entries, but will take some
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1296 // time.
13278
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1297 for (i = 0; i < wp->w_jumplistlen; ++i)
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1298 {
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1299 if ((wp->w_jumplist[i].fmark.fnum == 0) &&
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1300 (wp->w_jumplist[i].fmark.mark.lnum != 0))
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1301 fname2fnum(&wp->w_jumplist[i]);
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1302 }
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1303 }
28ae299c6af0 patch 8.0.1513: the jumplist is not always properly cleaned up
Christian Brabandt <cb@256bit.org>
parents: 13248
diff changeset
1304
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1305 to = 0;
13248
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1306 for (from = 0; from < wp->w_jumplistlen; ++from)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1307 {
13248
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1308 if (wp->w_jumplistidx == from)
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1309 wp->w_jumplistidx = to;
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1310 for (i = from + 1; i < wp->w_jumplistlen; ++i)
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1311 if (wp->w_jumplist[i].fmark.fnum
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1312 == wp->w_jumplist[from].fmark.fnum
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1313 && wp->w_jumplist[from].fmark.fnum != 0
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1314 && wp->w_jumplist[i].fmark.mark.lnum
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1315 == wp->w_jumplist[from].fmark.mark.lnum)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1316 break;
18800
f41b55f9357c patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18126
diff changeset
1317 if (i >= wp->w_jumplistlen) // no duplicate
13248
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1318 wp->w_jumplist[to++] = wp->w_jumplist[from];
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1319 else
13248
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1320 vim_free(wp->w_jumplist[from].fname);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1321 }
13248
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1322 if (wp->w_jumplistidx == wp->w_jumplistlen)
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1323 wp->w_jumplistidx = to;
5958573d8a72 patch 8.0.1498: getjumplist() returns duplicate entries
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
1324 wp->w_jumplistlen = to;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1325 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1326
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1327 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1328 * Copy the jumplist from window "from" to window "to".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1329 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1330 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1331 copy_jumplist(win_T *from, win_T *to)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1332 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1333 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1334
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1335 for (i = 0; i < from->w_jumplistlen; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1336 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1337 to->w_jumplist[i] = from->w_jumplist[i];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1338 if (from->w_jumplist[i].fname != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1339 to->w_jumplist[i].fname = vim_strsave(from->w_jumplist[i].fname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1340 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1341 to->w_jumplistlen = from->w_jumplistlen;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1342 to->w_jumplistidx = from->w_jumplistidx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1343 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1344
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1345 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1346 * Free items in the jumplist of window "wp".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1347 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1348 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1349 free_jumplist(win_T *wp)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1350 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1351 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1352
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1353 for (i = 0; i < wp->w_jumplistlen; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1354 vim_free(wp->w_jumplist[i].fname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1355 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1356
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1357 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1358 set_last_cursor(win_T *win)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1359 {
5417
2a72805a3038 updated for version 7.4.059
Bram Moolenaar <bram@vim.org>
parents: 5265
diff changeset
1360 if (win->w_buffer != NULL)
2a72805a3038 updated for version 7.4.059
Bram Moolenaar <bram@vim.org>
parents: 5265
diff changeset
1361 win->w_buffer->b_last_cursor = win->w_cursor;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1362 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1363
358
e111db373ca4 updated for version 7.0093
vimboss
parents: 307
diff changeset
1364 #if defined(EXITFREE) || defined(PROTO)
e111db373ca4 updated for version 7.0093
vimboss
parents: 307
diff changeset
1365 void
7827
41789f16d6b2 commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1366 free_all_marks(void)
358
e111db373ca4 updated for version 7.0093
vimboss
parents: 307
diff changeset
1367 {
e111db373ca4 updated for version 7.0093
vimboss
parents: 307
diff changeset
1368 int i;
e111db373ca4 updated for version 7.0093
vimboss
parents: 307
diff changeset
1369
e111db373ca4 updated for version 7.0093
vimboss
parents: 307
diff changeset
1370 for (i = 0; i < NMARKS + EXTRA_MARKS; i++)
e111db373ca4 updated for version 7.0093
vimboss
parents: 307
diff changeset
1371 if (namedfm[i].fmark.mark.lnum != 0)
e111db373ca4 updated for version 7.0093
vimboss
parents: 307
diff changeset
1372 vim_free(namedfm[i].fname);
e111db373ca4 updated for version 7.0093
vimboss
parents: 307
diff changeset
1373 }
e111db373ca4 updated for version 7.0093
vimboss
parents: 307
diff changeset
1374 #endif
e111db373ca4 updated for version 7.0093
vimboss
parents: 307
diff changeset
1375
27018
268f6a3511df patch 8.2.4038: various code not used when features are disabled
Bram Moolenaar <Bram@vim.org>
parents: 26897
diff changeset
1376 #if defined(FEAT_VIMINFO) || defined(PROTO)
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
1377 /*
17464
3e708b5c0509 patch 8.1.1730: wrong place for mark viminfo support
Bram Moolenaar <Bram@vim.org>
parents: 16825
diff changeset
1378 * Return a pointer to the named file marks.
9284
78712a2f687a commit https://github.com/vim/vim/commit/2d35899721da0e9359a9fe1059554f8c4ea7f0c1
Christian Brabandt <cb@256bit.org>
parents: 7827
diff changeset
1379 */
17464
3e708b5c0509 patch 8.1.1730: wrong place for mark viminfo support
Bram Moolenaar <Bram@vim.org>
parents: 16825
diff changeset
1380 xfmark_T *
3e708b5c0509 patch 8.1.1730: wrong place for mark viminfo support
Bram Moolenaar <Bram@vim.org>
parents: 16825
diff changeset
1381 get_namedfm(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1382 {
17464
3e708b5c0509 patch 8.1.1730: wrong place for mark viminfo support
Bram Moolenaar <Bram@vim.org>
parents: 16825
diff changeset
1383 return namedfm;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1384 }
27018
268f6a3511df patch 8.2.4038: various code not used when features are disabled
Bram Moolenaar <Bram@vim.org>
parents: 26897
diff changeset
1385 #endif
20615
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1386
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1387 #if defined(FEAT_EVAL) || defined(PROTO)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1388 /*
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1389 * Add information about mark 'mname' to list 'l'
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1390 */
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1391 static int
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1392 add_mark(list_T *l, char_u *mname, pos_T *pos, int bufnr, char_u *fname)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1393 {
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1394 dict_T *d;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1395 list_T *lpos;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1396
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1397 if (pos->lnum <= 0)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1398 return OK;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1399
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1400 d = dict_alloc();
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1401 if (d == NULL)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1402 return FAIL;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1403
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1404 if (list_append_dict(l, d) == FAIL)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1405 {
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1406 dict_unref(d);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1407 return FAIL;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1408 }
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1409
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1410 lpos = list_alloc();
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1411 if (lpos == NULL)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1412 return FAIL;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1413
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1414 list_append_number(lpos, bufnr);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1415 list_append_number(lpos, pos->lnum);
20635
3e36a51ff152 patch 8.2.0871: cannot use getmarklist() as a method
Bram Moolenaar <Bram@vim.org>
parents: 20615
diff changeset
1416 list_append_number(lpos, pos->col + 1);
20615
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1417 list_append_number(lpos, pos->coladd);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1418
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1419 if (dict_add_string(d, "mark", mname) == FAIL
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1420 || dict_add_list(d, "pos", lpos) == FAIL
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1421 || (fname != NULL && dict_add_string(d, "file", fname) == FAIL))
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1422 return FAIL;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1423
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1424 return OK;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1425 }
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1426
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1427 /*
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1428 * Get information about marks local to a buffer.
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1429 */
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1430 static void
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1431 get_buf_local_marks(buf_T *buf, list_T *l)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1432 {
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1433 char_u mname[3] = "' ";
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1434 int i;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1435
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1436 // Marks 'a' to 'z'
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1437 for (i = 0; i < NMARKS; ++i)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1438 {
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1439 mname[1] = 'a' + i;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1440 add_mark(l, mname, &buf->b_namedm[i], buf->b_fnum, NULL);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1441 }
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1442
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1443 // Mark '' is a window local mark and not a buffer local mark
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1444 add_mark(l, (char_u *)"''", &curwin->w_pcmark, curbuf->b_fnum, NULL);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1445
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1446 add_mark(l, (char_u *)"'\"", &buf->b_last_cursor, buf->b_fnum, NULL);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1447 add_mark(l, (char_u *)"'[", &buf->b_op_start, buf->b_fnum, NULL);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1448 add_mark(l, (char_u *)"']", &buf->b_op_end, buf->b_fnum, NULL);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1449 add_mark(l, (char_u *)"'^", &buf->b_last_insert, buf->b_fnum, NULL);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1450 add_mark(l, (char_u *)"'.", &buf->b_last_change, buf->b_fnum, NULL);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1451 add_mark(l, (char_u *)"'<", &buf->b_visual.vi_start, buf->b_fnum, NULL);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1452 add_mark(l, (char_u *)"'>", &buf->b_visual.vi_end, buf->b_fnum, NULL);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1453 }
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1454
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1455 /*
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1456 * Get information about global marks ('A' to 'Z' and '0' to '9')
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1457 */
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1458 static void
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1459 get_global_marks(list_T *l)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1460 {
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1461 char_u mname[3] = "' ";
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1462 int i;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1463 char_u *name;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1464
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1465 // Marks 'A' to 'Z' and '0' to '9'
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1466 for (i = 0; i < NMARKS + EXTRA_MARKS; ++i)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1467 {
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1468 if (namedfm[i].fmark.fnum != 0)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1469 name = buflist_nr2name(namedfm[i].fmark.fnum, TRUE, TRUE);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1470 else
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1471 name = namedfm[i].fname;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1472 if (name != NULL)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1473 {
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1474 mname[1] = i >= NMARKS ? i - NMARKS + '0' : i + 'A';
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1475 add_mark(l, mname, &namedfm[i].fmark.mark,
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1476 namedfm[i].fmark.fnum, name);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1477 if (namedfm[i].fmark.fnum != 0)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1478 vim_free(name);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1479 }
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1480 }
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1481 }
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1482
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1483 /*
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1484 * getmarklist() function
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1485 */
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1486 void
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1487 f_getmarklist(typval_T *argvars, typval_T *rettv)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1488 {
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1489 buf_T *buf = NULL;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1490
29239
da56650de132 patch 8.2.5138: various small issues
Bram Moolenaar <Bram@vim.org>
parents: 28388
diff changeset
1491 if (rettv_list_alloc(rettv) == FAIL)
20615
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1492 return;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1493
25384
e8e2c4d33b9b patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents: 25064
diff changeset
1494 if (in_vim9script() && check_for_opt_buffer_arg(argvars, 0) == FAIL)
e8e2c4d33b9b patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents: 25064
diff changeset
1495 return;
e8e2c4d33b9b patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents: 25064
diff changeset
1496
20615
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1497 if (argvars[0].v_type == VAR_UNKNOWN)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1498 {
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1499 get_global_marks(rettv->vval.v_list);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1500 return;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1501 }
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1502
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1503 buf = tv_get_buf(&argvars[0], FALSE);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1504 if (buf == NULL)
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1505 return;
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1506
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1507 get_buf_local_marks(buf, rettv->vval.v_list);
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1508 }
8eed1e9389bb patch 8.2.0861: cannot easily get all the current marks
Bram Moolenaar <Bram@vim.org>
parents: 18979
diff changeset
1509 #endif