annotate runtime/doc/quickfix.txt @ 13016:e47e70300f30 v8.0.1384

patch 8.0.1384: not enough quickfix help; confusing winid commit https://github.com/vim/vim/commit/74240d3febd1e3bc7cf086c647c9348b20716c33 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Dec 10 15:26:15 2017 +0100 patch 8.0.1384: not enough quickfix help; confusing winid Problem: Not enough quickfix help; confusing winid. Solution: Add more examples in the help. When the quickfix window is not present, return zero for getqflist() with 'winid'. Add more tests for jumping to quickfix list entries. (Yegappan Lakshmanan, closes #2427)
author Christian Brabandt <cb@256bit.org>
date Sun, 10 Dec 2017 15:30:06 +0100
parents d91cf2e26ef0
children a6d3e2081544
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12499
d91cf2e26ef0 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 12427
diff changeset
1 *quickfix.txt* For Vim version 8.0. Last change: 2017 Sep 13
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 VIM REFERENCE MANUAL by Bram Moolenaar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 This subject is introduced in section |30.1| of the user manual.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 1. Using QuickFix commands |quickfix|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 2. The error window |quickfix-window|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 3. Using more than one list of errors |quickfix-error-lists|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 4. Using :make |:make_makeprg|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 5. Using :grep |grep|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 6. Selecting a compiler |compiler-select|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 7. The error format |error-file-format|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 8. The directory stack |quickfix-directory-stack|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 9. Specific error file formats |errorformats|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 {Vi does not have any of these commands}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 The quickfix commands are not available when the |+quickfix| feature was
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 disabled at compile time.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 =============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 1. Using QuickFix commands *quickfix* *Quickfix* *E42*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 Vim has a special mode to speedup the edit-compile-edit cycle. This is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 inspired by the quickfix option of the Manx's Aztec C compiler on the Amiga.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29 The idea is to save the error messages from the compiler in a file and use Vim
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 to jump to the errors one by one. You can examine each problem and fix it,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 without having to remember all the error messages.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
33 In Vim the quickfix commands are used more generally to find a list of
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
34 positions in files. For example, |:vimgrep| finds pattern matches. You can
231
8eec9649b7a2 updated for version 7.0064
vimboss
parents: 170
diff changeset
35 use the positions in a script with the |getqflist()| function. Thus you can
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
36 do a lot more than the edit/compile/fix cycle!
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
37
9407
619a98a67f67 commit https://github.com/vim/vim/commit/e18dbe865d190e74fb5d43ac8bc6ac22507d0223
Christian Brabandt <cb@256bit.org>
parents: 9379
diff changeset
38 If you have the error messages in a file you can start Vim with: >
619a98a67f67 commit https://github.com/vim/vim/commit/e18dbe865d190e74fb5d43ac8bc6ac22507d0223
Christian Brabandt <cb@256bit.org>
parents: 9379
diff changeset
39 vim -q filename
619a98a67f67 commit https://github.com/vim/vim/commit/e18dbe865d190e74fb5d43ac8bc6ac22507d0223
Christian Brabandt <cb@256bit.org>
parents: 9379
diff changeset
40
619a98a67f67 commit https://github.com/vim/vim/commit/e18dbe865d190e74fb5d43ac8bc6ac22507d0223
Christian Brabandt <cb@256bit.org>
parents: 9379
diff changeset
41 From inside Vim an easy way to run a command and handle the output is with the
619a98a67f67 commit https://github.com/vim/vim/commit/e18dbe865d190e74fb5d43ac8bc6ac22507d0223
Christian Brabandt <cb@256bit.org>
parents: 9379
diff changeset
42 |:make| command (see below).
619a98a67f67 commit https://github.com/vim/vim/commit/e18dbe865d190e74fb5d43ac8bc6ac22507d0223
Christian Brabandt <cb@256bit.org>
parents: 9379
diff changeset
43
619a98a67f67 commit https://github.com/vim/vim/commit/e18dbe865d190e74fb5d43ac8bc6ac22507d0223
Christian Brabandt <cb@256bit.org>
parents: 9379
diff changeset
44 The 'errorformat' option should be set to match the error messages from your
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 compiler (see |errorformat| below).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46
12427
fc3e2d5614dd patch 8.0.1093: various small quickfix issues
Christian Brabandt <cb@256bit.org>
parents: 11705
diff changeset
47 *quickfix-ID*
fc3e2d5614dd patch 8.0.1093: various small quickfix issues
Christian Brabandt <cb@256bit.org>
parents: 11705
diff changeset
48 Each quickfix list has a unique identifier called the quickfix ID and this
fc3e2d5614dd patch 8.0.1093: various small quickfix issues
Christian Brabandt <cb@256bit.org>
parents: 11705
diff changeset
49 number will not change within a Vim session. The getqflist() function can be
fc3e2d5614dd patch 8.0.1093: various small quickfix issues
Christian Brabandt <cb@256bit.org>
parents: 11705
diff changeset
50 used to get the identifier assigned to a list. There is also a quickfix list
fc3e2d5614dd patch 8.0.1093: various small quickfix issues
Christian Brabandt <cb@256bit.org>
parents: 11705
diff changeset
51 number which may change whenever more than ten lists are added to a quickfix
fc3e2d5614dd patch 8.0.1093: various small quickfix issues
Christian Brabandt <cb@256bit.org>
parents: 11705
diff changeset
52 stack.
fc3e2d5614dd patch 8.0.1093: various small quickfix issues
Christian Brabandt <cb@256bit.org>
parents: 11705
diff changeset
53
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
54 *location-list* *E776*
11160
d0a20101ecb2 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 11063
diff changeset
55 A location list is a window-local quickfix list. You get one after commands
d0a20101ecb2 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 11063
diff changeset
56 like `:lvimgrep`, `:lgrep`, `:lhelpgrep`, `:lmake`, etc., which create a
d0a20101ecb2 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 11063
diff changeset
57 location list instead of a quickfix list as the corresponding `:vimgrep`,
d0a20101ecb2 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 11063
diff changeset
58 `:grep`, `:helpgrep`, `:make` do.
d0a20101ecb2 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 11063
diff changeset
59 A location list is associated with a window and each window can have a
d0a20101ecb2 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 11063
diff changeset
60 separate location list. A location list can be associated with only one
d0a20101ecb2 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 11063
diff changeset
61 window. The location list is independent of the quickfix list.
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
62
648
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
63 When a window with a location list is split, the new window gets a copy of the
9407
619a98a67f67 commit https://github.com/vim/vim/commit/e18dbe865d190e74fb5d43ac8bc6ac22507d0223
Christian Brabandt <cb@256bit.org>
parents: 9379
diff changeset
64 location list. When there are no longer any references to a location list,
619a98a67f67 commit https://github.com/vim/vim/commit/e18dbe865d190e74fb5d43ac8bc6ac22507d0223
Christian Brabandt <cb@256bit.org>
parents: 9379
diff changeset
65 the location list is destroyed.
648
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
66
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
67 The following quickfix commands can be used. The location list commands are
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
68 similar to the quickfix commands, replacing the 'c' prefix in the quickfix
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
69 command with 'l'.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70
8673
ed7251c3e2d3 commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents: 7707
diff changeset
71 *E924*
ed7251c3e2d3 commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents: 7707
diff changeset
72 If the current window was closed by an |autocommand| while processing a
ed7251c3e2d3 commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents: 7707
diff changeset
73 location list command, it will be aborted.
ed7251c3e2d3 commit https://github.com/vim/vim/commit/e18c0b39815c5a746887a509c2cd9f11fadaba07
Christian Brabandt <cb@256bit.org>
parents: 7707
diff changeset
74
8702
39d6e4f2f748 commit https://github.com/vim/vim/commit/ffec3c53496d49668669deabc0724ec78e2274fd
Christian Brabandt <cb@256bit.org>
parents: 8673
diff changeset
75 *E925* *E926*
39d6e4f2f748 commit https://github.com/vim/vim/commit/ffec3c53496d49668669deabc0724ec78e2274fd
Christian Brabandt <cb@256bit.org>
parents: 8673
diff changeset
76 If the current quickfix or location list was changed by an |autocommand| while
39d6e4f2f748 commit https://github.com/vim/vim/commit/ffec3c53496d49668669deabc0724ec78e2274fd
Christian Brabandt <cb@256bit.org>
parents: 8673
diff changeset
77 processing a quickfix or location list command, it will be aborted.
39d6e4f2f748 commit https://github.com/vim/vim/commit/ffec3c53496d49668669deabc0724ec78e2274fd
Christian Brabandt <cb@256bit.org>
parents: 8673
diff changeset
78
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 *:cc*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80 :cc[!] [nr] Display error [nr]. If [nr] is omitted, the same
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81 error is displayed again. Without [!] this doesn't
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 work when jumping to another buffer, the current buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 has been changed, there is the only window for the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 buffer and both 'hidden' and 'autowrite' are off.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 When jumping to another buffer with [!] any changes to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 the current buffer are lost, unless 'hidden' is set or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 there is another window for this buffer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 The 'switchbuf' settings are respected when jumping
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 to a buffer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
91 *:ll*
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
92 :ll[!] [nr] Same as ":cc", except the location list for the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
93 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
94
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 *:cn* *:cnext* *E553*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 :[count]cn[ext][!] Display the [count] next error in the list that
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 includes a file name. If there are no file names at
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 all, go to the [count] next error. See |:cc| for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99 [!] and 'switchbuf'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100
647
19106f131c87 updated for version 7.0188
vimboss
parents: 644
diff changeset
101 *:lne* *:lnext*
19106f131c87 updated for version 7.0188
vimboss
parents: 644
diff changeset
102 :[count]lne[xt][!] Same as ":cnext", except the location list for the
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
103 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
104
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 :[count]cN[ext][!] *:cp* *:cprevious* *:cN* *:cNext*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106 :[count]cp[revious][!] Display the [count] previous error in the list that
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107 includes a file name. If there are no file names at
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108 all, go to the [count] previous error. See |:cc| for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109 [!] and 'switchbuf'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110
856
8cd729851562 updated for version 7.0g
vimboss
parents: 842
diff changeset
111
647
19106f131c87 updated for version 7.0188
vimboss
parents: 644
diff changeset
112 :[count]lN[ext][!] *:lp* *:lprevious* *:lN* *:lNext*
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
113 :[count]lp[revious][!] Same as ":cNext" and ":cprevious", except the location
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
114 list for the current window is used instead of the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
115 quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
116
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117 *:cnf* *:cnfile*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118 :[count]cnf[ile][!] Display the first error in the [count] next file in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
119 the list that includes a file name. If there are no
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
120 file names at all or if there is no next file, go to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
121 the [count] next error. See |:cc| for [!] and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
122 'switchbuf'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
124 *:lnf* *:lnfile*
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
125 :[count]lnf[ile][!] Same as ":cnfile", except the location list for the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
126 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
127
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128 :[count]cNf[ile][!] *:cpf* *:cpfile* *:cNf* *:cNfile*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129 :[count]cpf[ile][!] Display the last error in the [count] previous file in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130 the list that includes a file name. If there are no
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131 file names at all or if there is no next file, go to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132 the [count] previous error. See |:cc| for [!] and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 'switchbuf'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134
647
19106f131c87 updated for version 7.0188
vimboss
parents: 644
diff changeset
135
19106f131c87 updated for version 7.0188
vimboss
parents: 644
diff changeset
136 :[count]lNf[ile][!] *:lpf* *:lpfile* *:lNf* *:lNfile*
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
137 :[count]lpf[ile][!] Same as ":cNfile" and ":cpfile", except the location
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
138 list for the current window is used instead of the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
139 quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
140
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
141 *:crewind* *:cr*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
142 :cr[ewind][!] [nr] Display error [nr]. If [nr] is omitted, the FIRST
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
143 error is displayed. See |:cc|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
145 *:lrewind* *:lr*
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
146 :lr[ewind][!] [nr] Same as ":crewind", except the location list for the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
147 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
148
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149 *:cfirst* *:cfir*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150 :cfir[st][!] [nr] Same as ":crewind".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
152 *:lfirst* *:lfir*
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
153 :lfir[st][!] [nr] Same as ":lrewind".
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
154
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
155 *:clast* *:cla*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
156 :cla[st][!] [nr] Display error [nr]. If [nr] is omitted, the LAST
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157 error is displayed. See |:cc|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
158
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
159 *:llast* *:lla*
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
160 :lla[st][!] [nr] Same as ":clast", except the location list for the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
161 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
162
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 *:cq* *:cquit*
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
164 :cq[uit][!] Quit Vim with an error code, so that the compiler
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165 will not compile the same file again.
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
166 WARNING: All changes in files are lost! Also when the
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
167 [!] is not used. It works like ":qall!" |:qall|,
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
168 except that Vim returns a non-zero exit code.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 *:cf* *:cfile*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 :cf[ile][!] [errorfile] Read the error file and jump to the first error.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 This is done automatically when Vim is started with
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173 the -q option. You can use this command when you
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 keep Vim running while compiling. If you give the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175 name of the errorfile, the 'errorfile' option will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 be set to [errorfile]. See |:cc| for [!].
11063
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
177 If the encoding of the error file differs from the
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
178 'encoding' option, you can use the 'makeencoding'
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
179 option to specify the encoding.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
181 *:lf* *:lfile*
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
182 :lf[ile][!] [errorfile] Same as ":cfile", except the location list for the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
183 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
184 You can not use the -q command-line option to set
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
185 the location list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
186
856
8cd729851562 updated for version 7.0g
vimboss
parents: 842
diff changeset
187
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
188 :cg[etfile] [errorfile] *:cg* *:cgetfile*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189 Read the error file. Just like ":cfile" but don't
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190 jump to the first error.
11063
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
191 If the encoding of the error file differs from the
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
192 'encoding' option, you can use the 'makeencoding'
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
193 option to specify the encoding.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194
856
8cd729851562 updated for version 7.0g
vimboss
parents: 842
diff changeset
195
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
196 :lg[etfile] [errorfile] *:lg* *:lgetfile*
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
197 Same as ":cgetfile", except the location list for the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
198 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
199
625
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 534
diff changeset
200 *:caddf* *:caddfile*
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 534
diff changeset
201 :caddf[ile] [errorfile] Read the error file and add the errors from the
446
7472c565592a updated for version 7.0117
vimboss
parents: 445
diff changeset
202 errorfile to the current quickfix list. If a quickfix
7472c565592a updated for version 7.0117
vimboss
parents: 445
diff changeset
203 list is not present, then a new list is created.
11063
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
204 If the encoding of the error file differs from the
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
205 'encoding' option, you can use the 'makeencoding'
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
206 option to specify the encoding.
446
7472c565592a updated for version 7.0117
vimboss
parents: 445
diff changeset
207
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
208 *:laddf* *:laddfile*
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
209 :laddf[ile] [errorfile] Same as ":caddfile", except the location list for the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
210 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
211
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
212 *:cb* *:cbuffer* *E681*
1084
bf63a31b7701 updated for version 7.0-210
vimboss
parents: 874
diff changeset
213 :cb[uffer][!] [bufnr] Read the error list from the current buffer.
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
214 When [bufnr] is given it must be the number of a
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
215 loaded buffer. That buffer will then be used instead
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
216 of the current buffer.
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
217 A range can be specified for the lines to be used.
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
218 Otherwise all lines in the buffer are used.
1084
bf63a31b7701 updated for version 7.0-210
vimboss
parents: 874
diff changeset
219 See |:cc| for [!].
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
220
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
221 *:lb* *:lbuffer*
1084
bf63a31b7701 updated for version 7.0-210
vimboss
parents: 874
diff changeset
222 :lb[uffer][!] [bufnr] Same as ":cbuffer", except the location list for the
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
223 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
224
798
95dac6af3b3a updated for version 7.0232
vimboss
parents: 791
diff changeset
225 *:cgetb* *:cgetbuffer*
95dac6af3b3a updated for version 7.0232
vimboss
parents: 791
diff changeset
226 :cgetb[uffer] [bufnr] Read the error list from the current buffer. Just
95dac6af3b3a updated for version 7.0232
vimboss
parents: 791
diff changeset
227 like ":cbuffer" but don't jump to the first error.
95dac6af3b3a updated for version 7.0232
vimboss
parents: 791
diff changeset
228
95dac6af3b3a updated for version 7.0232
vimboss
parents: 791
diff changeset
229 *:lgetb* *:lgetbuffer*
95dac6af3b3a updated for version 7.0232
vimboss
parents: 791
diff changeset
230 :lgetb[uffer] [bufnr] Same as ":cgetbuffer", except the location list for
95dac6af3b3a updated for version 7.0232
vimboss
parents: 791
diff changeset
231 the current window is used instead of the quickfix
95dac6af3b3a updated for version 7.0232
vimboss
parents: 791
diff changeset
232 list.
95dac6af3b3a updated for version 7.0232
vimboss
parents: 791
diff changeset
233
5734
657ade71d395 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5690
diff changeset
234 *:cad* *:caddbuffer*
5763
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
235 :cad[dbuffer] [bufnr] Read the error list from the current buffer and add
658
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
236 the errors to the current quickfix list. If a
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
237 quickfix list is not present, then a new list is
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
238 created. Otherwise, same as ":cbuffer".
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
239
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
240 *:laddb* *:laddbuffer*
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
241 :laddb[uffer] [bufnr] Same as ":caddbuffer", except the location list for
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
242 the current window is used instead of the quickfix
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
243 list.
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
244
626
732c7ae5743e updated for version 7.0180
vimboss
parents: 625
diff changeset
245 *:cex* *:cexpr* *E777*
625
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 534
diff changeset
246 :cex[pr][!] {expr} Create a quickfix list using the result of {expr} and
2833
c869ff170ddc Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2698
diff changeset
247 jump to the first error.
c869ff170ddc Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2698
diff changeset
248 If {expr} is a String, then each new-line terminated
7701
075810b0cb6c commit https://github.com/vim/vim/commit/d6357e8f93c50f984ffd69c3a0d247d8603f86c3
Christian Brabandt <cb@256bit.org>
parents: 7418
diff changeset
249 line in the String is processed using the global value
075810b0cb6c commit https://github.com/vim/vim/commit/d6357e8f93c50f984ffd69c3a0d247d8603f86c3
Christian Brabandt <cb@256bit.org>
parents: 7418
diff changeset
250 of 'errorformat' and the result is added to the
075810b0cb6c commit https://github.com/vim/vim/commit/d6357e8f93c50f984ffd69c3a0d247d8603f86c3
Christian Brabandt <cb@256bit.org>
parents: 7418
diff changeset
251 quickfix list.
2833
c869ff170ddc Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2698
diff changeset
252 If {expr} is a List, then each String item in the list
c869ff170ddc Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2698
diff changeset
253 is processed and added to the quickfix list. Non
c869ff170ddc Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2698
diff changeset
254 String items in the List are ignored.
c869ff170ddc Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2698
diff changeset
255 See |:cc| for [!].
446
7472c565592a updated for version 7.0117
vimboss
parents: 445
diff changeset
256 Examples: >
7472c565592a updated for version 7.0117
vimboss
parents: 445
diff changeset
257 :cexpr system('grep -n xyz *')
7472c565592a updated for version 7.0117
vimboss
parents: 445
diff changeset
258 :cexpr getline(1, '$')
7472c565592a updated for version 7.0117
vimboss
parents: 445
diff changeset
259 <
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
260 *:lex* *:lexpr*
2833
c869ff170ddc Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2698
diff changeset
261 :lex[pr][!] {expr} Same as |:cexpr|, except the location list for the
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
262 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
263
800
d8f905020502 updated for version 7.0b
vimboss
parents: 798
diff changeset
264 *:cgete* *:cgetexpr*
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
265 :cgete[xpr] {expr} Create a quickfix list using the result of {expr}.
2833
c869ff170ddc Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2698
diff changeset
266 Just like |:cexpr|, but don't jump to the first error.
800
d8f905020502 updated for version 7.0b
vimboss
parents: 798
diff changeset
267
d8f905020502 updated for version 7.0b
vimboss
parents: 798
diff changeset
268 *:lgete* *:lgetexpr*
2833
c869ff170ddc Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2698
diff changeset
269 :lgete[xpr] {expr} Same as |:cgetexpr|, except the location list for the
800
d8f905020502 updated for version 7.0b
vimboss
parents: 798
diff changeset
270 current window is used instead of the quickfix list.
d8f905020502 updated for version 7.0b
vimboss
parents: 798
diff changeset
271
5734
657ade71d395 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5690
diff changeset
272 *:cadde* *:caddexpr*
5763
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
273 :cadde[xpr] {expr} Evaluate {expr} and add the resulting lines to the
625
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 534
diff changeset
274 current quickfix list. If a quickfix list is not
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 534
diff changeset
275 present, then a new list is created. The current
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 534
diff changeset
276 cursor position will not be changed. See |:cexpr| for
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 534
diff changeset
277 more information.
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 534
diff changeset
278 Example: >
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 534
diff changeset
279 :g/mypattern/caddexpr expand("%") . ":" . line(".") . ":" . getline(".")
81fe2ccc1207 updated for version 7.0179
vimboss
parents: 534
diff changeset
280 <
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
281 *:lad* *:laddexpr*
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
282 :lad[dexpr] {expr} Same as ":caddexpr", except the location list for the
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
283 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
284
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
285 *:cl* *:clist*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
286 :cl[ist] [from] [, [to]]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
287 List all errors that are valid |quickfix-valid|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
288 If numbers [from] and/or [to] are given, the respective
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
289 range of errors is listed. A negative number counts
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
290 from the last error backwards, -1 being the last error.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
291 The 'switchbuf' settings are respected when jumping
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
292 to a buffer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
293
9379
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
294 :cl[ist] +{count} List the current and next {count} valid errors. This
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
295 is similar to ":clist from from+count", where "from"
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
296 is the current error position.
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
297
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
298 :cl[ist]! [from] [, [to]]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
299 List all errors.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
300
9379
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
301 :cl[ist]! +{count} List the current and next {count} error lines. This
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
302 is useful to see unrecognized lines after the current
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
303 one. For example, if ":clist" shows:
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
304 8384 testje.java:252: error: cannot find symbol ~
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
305 Then using ":cl! +3" shows the reason:
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
306 8384 testje.java:252: error: cannot find symbol ~
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
307 8385: ZexitCode = Fmainx(); ~
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
308 8386: ^ ~
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
309 8387: symbol: method Fmainx() ~
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
310
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
311 :lli[st] [from] [, [to]] *:lli* *:llist*
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
312 Same as ":clist", except the location list for the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
313 current window is used instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
314
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
315 :lli[st]! [from] [, [to]]
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
316 List all the entries in the location list for the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
317 current window.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
318
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
319 If you insert or delete lines, mostly the correct error location is still
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
320 found because hidden marks are used. Sometimes, when the mark has been
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
321 deleted for some reason, the message "line changed" is shown to warn you that
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
322 the error location may not be correct. If you quit Vim and start again the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
323 marks are lost and the error locations may not be correct anymore.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
324
163
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
325 If vim is built with |+autocmd| support, two autocommands are available for
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
326 running commands before and after a quickfix command (':make', ':grep' and so
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
327 on) is executed. See |QuickFixCmdPre| and |QuickFixCmdPost| for details.
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
328
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
329 *QuickFixCmdPost-example*
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
330 When 'encoding' differs from the locale, the error messages may have a
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
331 different encoding from what Vim is using. To convert the messages you can
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
332 use this code: >
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
333 function QfMakeConv()
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
334 let qflist = getqflist()
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
335 for i in qflist
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
336 let i.text = iconv(i.text, "cp936", "utf-8")
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
337 endfor
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
338 call setqflist(qflist)
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
339 endfunction
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
340
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
341 au QuickfixCmdPost make call QfMakeConv()
11063
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
342 Another option is using 'makeencoding'.
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
343
13016
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
344 *quickfix-title*
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
345 Every quickfix and location list has a title. By default the title is set to
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
346 the command that created the list. The |getqflist()| and |getloclist()|
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
347 functions can be used to get the title of a quickfix and a location list
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
348 respectively. The |setqflist()| and |setloclist()| functions can be used to
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
349 modify the title of a quickfix and location list respectively. Examples: >
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
350 call setqflist([], 'a', {'title' : 'Cmd output'})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
351 echo getqflist({'title' : 1})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
352 call setloclist(3, [], 'a', {'title' : 'Cmd output'})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
353 echo getloclist(3, {'title' : 1})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
354 <
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
355 *quickfix-size*
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
356 You can get the number of entries (size) in a quickfix and a location list
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
357 using the |getqflist()| and |getloclist()| functions respectively. Examples: >
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
358 echo getqflist({'size' : 1})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
359 echo getloclist(5, {'size' : 1})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
360 <
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
361 *quickfix-context*
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
362 Any Vim type can be associated as a context with a quickfix or location list.
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
363 The |setqflist()| and the |setloclist()| functions can be used to associate a
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
364 context with a quickfix and a location list respectively. The |getqflist()|
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
365 and the |getloclist()| functions can be used to retrieve the context of a
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
366 quickifx and a location list respectively. This is useful for a Vim plugin
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
367 dealing with multiple quickfix/location lists.
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
368 Examples: >
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
369
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
370 let somectx = {'name' : 'Vim', 'type' : 'Editor'}
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
371 call setqflist([], 'a', {'context' : somectx})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
372 echo getqflist({'context' : 1})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
373
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
374 let newctx = ['red', 'green', 'blue']
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
375 call setloclist(2, [], 'a', {'id' : qfid, 'context' : newctx})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
376 echo getloclist(2, {'id' : qfid, 'context' : 1})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
377 <
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
378 *quickfix-parse*
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
379 You can parse a list of lines using 'erroformat' without creating or modifying
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
380 a quickfix list using the |getqflist()| function. Examples: >
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
381 echo getqflist({'lines' : ["F1:10:Line10", "F2:20:Line20"]})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
382 echo getqflist({'lines' : systemlist('grep -Hn quickfix *')})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
383 This returns a dictionary where the 'items' key contains the list of quickfix
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
384 entries parsed from lines. The following shows how to use a custom
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
385 'errorformat' to parse the lines without modifying the 'erroformat' option: >
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
386 echo getqflist({'efm' : '%f#%l#%m', 'lines' : ['F1#10#Line']})
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
387 <
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
388
7100
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
389 EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
390 *:cdo*
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
391 :cdo[!] {cmd} Execute {cmd} in each valid entry in the quickfix list.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
392 It works like doing this: >
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
393 :cfirst
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
394 :{cmd}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
395 :cnext
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
396 :{cmd}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
397 etc.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
398 < When the current file can't be |abandon|ed and the [!]
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
399 is not present, the command fails.
9379
b398e4e12751 commit https://github.com/vim/vim/commit/e8fea0728a2fa1fe78ef0ac90dee1a84bd7ef9fb
Christian Brabandt <cb@256bit.org>
parents: 9227
diff changeset
400 When an error is detected execution stops.
7100
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
401 The last buffer (or where an error occurred) becomes
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
402 the current buffer.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
403 {cmd} can contain '|' to concatenate several commands.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
404
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
405 Only valid entries in the quickfix list are used.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
406 A range can be used to select entries, e.g.: >
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
407 :10,$cdo cmd
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
408 < To skip entries 1 to 9.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
409
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
410 Note: While this command is executing, the Syntax
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
411 autocommand event is disabled by adding it to
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
412 'eventignore'. This considerably speeds up editing
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
413 each buffer.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
414 {not in Vi} {not available when compiled without the
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
415 |+listcmds| feature}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
416 Also see |:bufdo|, |:tabdo|, |:argdo|, |:windo|,
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
417 |:ldo|, |:cfdo| and |:lfdo|.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
418
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
419 *:cfdo*
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
420 :cfdo[!] {cmd} Execute {cmd} in each file in the quickfix list.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
421 It works like doing this: >
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
422 :cfirst
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
423 :{cmd}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
424 :cnfile
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
425 :{cmd}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
426 etc.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
427 < Otherwise it works the same as `:cdo`.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
428 {not in Vi} {not available when compiled without the
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
429 |+listcmds| feature}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
430
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
431 *:ldo*
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
432 :ld[o][!] {cmd} Execute {cmd} in each valid entry in the location list
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
433 for the current window.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
434 It works like doing this: >
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
435 :lfirst
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
436 :{cmd}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
437 :lnext
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
438 :{cmd}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
439 etc.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
440 < Only valid entries in the location list are used.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
441 Otherwise it works the same as `:cdo`.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
442 {not in Vi} {not available when compiled without the
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
443 |+listcmds| feature}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
444
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
445 *:lfdo*
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
446 :lfdo[!] {cmd} Execute {cmd} in each file in the location list for
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
447 the current window.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
448 It works like doing this: >
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
449 :lfirst
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
450 :{cmd}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
451 :lnfile
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
452 :{cmd}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
453 etc.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
454 < Otherwise it works the same as `:ldo`.
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
455 {not in Vi} {not available when compiled without the
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
456 |+listcmds| feature}
f717d96a39b3 commit https://github.com/vim/vim/commit/12969c04fe7bd27dc0cbf37709eb40a86d4a27f9
Christian Brabandt <cb@256bit.org>
parents: 5763
diff changeset
457
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
458 =============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
459 2. The error window *quickfix-window*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
460
2411
68e394361ca3 Add "q" item for 'statusline'. Add w:quickfix_title. (Lech Lorens)
Bram Moolenaar <bram@vim.org>
parents: 2365
diff changeset
461 *:cope* *:copen* *w:quickfix_title*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
462 :cope[n] [height] Open a window to show the current list of errors.
5763
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
463
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 When [height] is given, the window becomes that high
5763
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
465 (if there is room). When [height] is omitted the
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
466 window is made ten lines high.
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
467
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
468 If there already is a quickfix window, it will be made
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
469 the current window. It is not possible to open a
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
470 second quickfix window. If [height] is given the
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
471 existing window will be resized to it.
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
472
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
473 The window will contain a special buffer, with
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
474 'buftype' equal to "quickfix". Don't change this!
5763
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
475 The window will have the w:quickfix_title variable set
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
476 which will indicate the command that produced the
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
477 quickfix list. This can be used to compose a custom
c52a655d927d Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5734
diff changeset
478 status line if the value of 'statusline' is adjusted
11705
c43118ecb0a3 patch 8.0.0735: no indication that the quickfix window/buffer changed
Christian Brabandt <cb@256bit.org>
parents: 11516
diff changeset
479 properly. Whenever this buffer is modified by a
c43118ecb0a3 patch 8.0.0735: no indication that the quickfix window/buffer changed
Christian Brabandt <cb@256bit.org>
parents: 11516
diff changeset
480 quickfix command or function, the |b:changedtick|
c43118ecb0a3 patch 8.0.0735: no indication that the quickfix window/buffer changed
Christian Brabandt <cb@256bit.org>
parents: 11516
diff changeset
481 variable is incremented.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
482
647
19106f131c87 updated for version 7.0188
vimboss
parents: 644
diff changeset
483 *:lop* *:lopen*
19106f131c87 updated for version 7.0188
vimboss
parents: 644
diff changeset
484 :lop[en] [height] Open a window to show the location list for the
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
485 current window. Works only when the location list for
647
19106f131c87 updated for version 7.0188
vimboss
parents: 644
diff changeset
486 the current window is present. You can have more than
19106f131c87 updated for version 7.0188
vimboss
parents: 644
diff changeset
487 one location window opened at a time. Otherwise, it
648
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
488 acts the same as ":copen".
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
489
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
490 *:ccl* *:cclose*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
491 :ccl[ose] Close the quickfix window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
492
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
493 *:lcl* *:lclose*
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
494 :lcl[ose] Close the window showing the location list for the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
495 current window.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
496
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
497 *:cw* *:cwindow*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
498 :cw[indow] [height] Open the quickfix window when there are recognized
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
499 errors. If the window is already open and there are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
500 no recognized errors, close the window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
501
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
502 *:lw* *:lwindow*
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
503 :lw[indow] [height] Same as ":cwindow", except use the window showing the
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
504 location list for the current window.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
505
9458
374afcf9d11d commit https://github.com/vim/vim/commit/537ef08408c50e0c4104d57f74993b3b0ed9560d
Christian Brabandt <cb@256bit.org>
parents: 9432
diff changeset
506 *:cbo* *:cbottom*
9432
abb72f0b9e06 commit https://github.com/vim/vim/commit/dcb170018642ec144cd87d9d9fe076575b8d1263
Christian Brabandt <cb@256bit.org>
parents: 9407
diff changeset
507 :cbo[ttom] Put the cursor in the last line of the quickfix window
abb72f0b9e06 commit https://github.com/vim/vim/commit/dcb170018642ec144cd87d9d9fe076575b8d1263
Christian Brabandt <cb@256bit.org>
parents: 9407
diff changeset
508 and scroll to make it visible. This is useful for
abb72f0b9e06 commit https://github.com/vim/vim/commit/dcb170018642ec144cd87d9d9fe076575b8d1263
Christian Brabandt <cb@256bit.org>
parents: 9407
diff changeset
509 when errors are added by an asynchronous callback.
abb72f0b9e06 commit https://github.com/vim/vim/commit/dcb170018642ec144cd87d9d9fe076575b8d1263
Christian Brabandt <cb@256bit.org>
parents: 9407
diff changeset
510 Only call it once in a while if there are many
abb72f0b9e06 commit https://github.com/vim/vim/commit/dcb170018642ec144cd87d9d9fe076575b8d1263
Christian Brabandt <cb@256bit.org>
parents: 9407
diff changeset
511 updates to avoid a lot of redrawing.
abb72f0b9e06 commit https://github.com/vim/vim/commit/dcb170018642ec144cd87d9d9fe076575b8d1263
Christian Brabandt <cb@256bit.org>
parents: 9407
diff changeset
512
9458
374afcf9d11d commit https://github.com/vim/vim/commit/537ef08408c50e0c4104d57f74993b3b0ed9560d
Christian Brabandt <cb@256bit.org>
parents: 9432
diff changeset
513 *:lbo* *:lbottom*
374afcf9d11d commit https://github.com/vim/vim/commit/537ef08408c50e0c4104d57f74993b3b0ed9560d
Christian Brabandt <cb@256bit.org>
parents: 9432
diff changeset
514 :lbo[ttom] Same as ":cbottom", except use the window showing the
374afcf9d11d commit https://github.com/vim/vim/commit/537ef08408c50e0c4104d57f74993b3b0ed9560d
Christian Brabandt <cb@256bit.org>
parents: 9432
diff changeset
515 location list for the current window.
374afcf9d11d commit https://github.com/vim/vim/commit/537ef08408c50e0c4104d57f74993b3b0ed9560d
Christian Brabandt <cb@256bit.org>
parents: 9432
diff changeset
516
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
517 Normally the quickfix window is at the bottom of the screen. If there are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
518 vertical splits, it's at the bottom of the rightmost column of windows. To
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
519 make it always occupy the full width: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
520 :botright cwindow
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
521 You can move the window around with |window-moving| commands.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
522 For example, to move it to the top: CTRL-W K
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
523 The 'winfixheight' option will be set, which means that the window will mostly
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
524 keep its height, ignoring 'winheight' and 'equalalways'. You can change the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
525 height manually (e.g., by dragging the status line above it with the mouse).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
526
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
527 In the quickfix window, each line is one error. The line number is equal to
11516
80491a71c716 patch 8.0.0641: cannot set a separate highlighting for the quickfix line
Christian Brabandt <cb@256bit.org>
parents: 11160
diff changeset
528 the error number. The current entry is highlighted with the QuickFixLine
80491a71c716 patch 8.0.0641: cannot set a separate highlighting for the quickfix line
Christian Brabandt <cb@256bit.org>
parents: 11160
diff changeset
529 highlighting. You can change it to your liking, e.g.: >
80491a71c716 patch 8.0.0641: cannot set a separate highlighting for the quickfix line
Christian Brabandt <cb@256bit.org>
parents: 11160
diff changeset
530 :hi QuickFixLine ctermbg=Yellow guibg=Yellow
80491a71c716 patch 8.0.0641: cannot set a separate highlighting for the quickfix line
Christian Brabandt <cb@256bit.org>
parents: 11160
diff changeset
531
80491a71c716 patch 8.0.0641: cannot set a separate highlighting for the quickfix line
Christian Brabandt <cb@256bit.org>
parents: 11160
diff changeset
532 You can use ":.cc" to jump to the error under the cursor.
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
533 Hitting the <Enter> key or double-clicking the mouse on a line has the same
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
534 effect. The file containing the error is opened in the window above the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
535 quickfix window. If there already is a window for that file, it is used
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
536 instead. If the buffer in the used window has changed, and the error is in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
537 another file, jumping to the error will fail. You will first have to make
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
538 sure the window contains a buffer which can be abandoned.
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
539 *CTRL-W_<Enter>* *CTRL-W_<CR>*
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
540 You can use CTRL-W <Enter> to open a new window and jump to the error there.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
541
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
542 When the quickfix window has been filled, two autocommand events are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
543 triggered. First the 'filetype' option is set to "qf", which triggers the
651
bc95c6c4bac1 updated for version 7.0191
vimboss
parents: 648
diff changeset
544 FileType event. Then the BufReadPost event is triggered, using "quickfix" for
bc95c6c4bac1 updated for version 7.0191
vimboss
parents: 648
diff changeset
545 the buffer name. This can be used to perform some action on the listed
bc95c6c4bac1 updated for version 7.0191
vimboss
parents: 648
diff changeset
546 errors. Example: >
648
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
547 au BufReadPost quickfix setlocal modifiable
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
548 \ | silent exe 'g/^/s//\=line(".")." "/'
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
549 \ | setlocal nomodifiable
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
550 This prepends the line number to each line. Note the use of "\=" in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
551 substitute string of the ":s" command, which is used to evaluate an
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
552 expression.
651
bc95c6c4bac1 updated for version 7.0191
vimboss
parents: 648
diff changeset
553 The BufWinEnter event is also triggered, again using "quickfix" for the buffer
bc95c6c4bac1 updated for version 7.0191
vimboss
parents: 648
diff changeset
554 name.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
555
9227
ecb621205ed1 commit https://github.com/vim/vim/commit/82af8710bf8d1caeeceafb1370a052cb7d92f076
Christian Brabandt <cb@256bit.org>
parents: 8702
diff changeset
556 Note: When adding to an existing quickfix list the autocommand are not
ecb621205ed1 commit https://github.com/vim/vim/commit/82af8710bf8d1caeeceafb1370a052cb7d92f076
Christian Brabandt <cb@256bit.org>
parents: 8702
diff changeset
557 triggered.
ecb621205ed1 commit https://github.com/vim/vim/commit/82af8710bf8d1caeeceafb1370a052cb7d92f076
Christian Brabandt <cb@256bit.org>
parents: 8702
diff changeset
558
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
559 Note: Making changes in the quickfix window has no effect on the list of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
560 errors. 'modifiable' is off to avoid making changes. If you delete or insert
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
561 lines anyway, the relation between the text and the error number is messed up.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
562 If you really want to do this, you could write the contents of the quickfix
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
563 window to a file and use ":cfile" to have it parsed and used as the new error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
564 list.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
565
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
566 *location-list-window*
648
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
567 The location list window displays the entries in a location list. When you
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
568 open a location list window, it is created below the current window and
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
569 displays the location list for the current window. The location list window
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
570 is similar to the quickfix window, except that you can have more than one
651
bc95c6c4bac1 updated for version 7.0191
vimboss
parents: 648
diff changeset
571 location list window open at a time. When you use a location list command in
bc95c6c4bac1 updated for version 7.0191
vimboss
parents: 648
diff changeset
572 this window, the displayed location list is used.
648
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
573
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
574 When you select a file from the location list window, the following steps are
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
575 used to find a window to edit the file:
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
576
648
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
577 1. If a window with the location list displayed in the location list window is
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
578 present, then the file is opened in that window.
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
579 2. If the above step fails and if the file is already opened in another
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
580 window, then that window is used.
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
581 3. If the above step fails then an existing window showing a buffer with
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
582 'buftype' not set is used.
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
583 4. If the above step fails, then the file is edited in a new window.
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
584
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
585 In all of the above cases, if the location list for the selected window is not
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
586 yet set, then it is set to the location list displayed in the location list
9032e4668296 updated for version 7.0189
vimboss
parents: 647
diff changeset
587 window.
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
588
13016
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
589 *quickfix-window-ID*
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
590 You can use the |getqflist()| and |getloclist()| functions to obtain the
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
591 window ID of the quickfix window and location list window respectively (if
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
592 present). Examples: >
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
593 echo getqflist({'winid' : 1}).winid
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
594 echo getloclist(2, {'winid' : 1}).winid
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
595 <
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
596 =============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
597 3. Using more than one list of errors *quickfix-error-lists*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
598
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
599 So far has been assumed that there is only one list of errors. Actually the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
600 ten last used lists are remembered. When starting a new list, the previous
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
601 ones are automatically kept. Two commands can be used to access older error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
602 lists. They set one of the existing error lists as the current one.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
603
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
604 *:colder* *:col* *E380*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
605 :col[der] [count] Go to older error list. When [count] is given, do
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
606 this [count] times. When already at the oldest error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
607 list, an error message is given.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
608
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
609 *:lolder* *:lol*
9555
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
610 :lol[der] [count] Same as `:colder`, except use the location list for
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
611 the current window instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
612
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
613 *:cnewer* *:cnew* *E381*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
614 :cnew[er] [count] Go to newer error list. When [count] is given, do
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
615 this [count] times. When already at the newest error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
616 list, an error message is given.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
617
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
618 *:lnewer* *:lnew*
9555
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
619 :lnew[er] [count] Same as `:cnewer`, except use the location list for
644
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
620 the current window instead of the quickfix list.
e4fa26ce8769 updated for version 7.0187
vimboss
parents: 626
diff changeset
621
9555
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
622 *:chistory* *:chi*
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
623 :chi[story] Show the list of error lists. The current list is
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
624 marked with ">". The output looks like:
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
625 error list 1 of 3; 43 errors ~
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
626 > error list 2 of 3; 0 errors ~
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
627 error list 3 of 3; 15 errors ~
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
628
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
629 *:lhistory* *:lhi*
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
630 :lhi[story] Show the list of location lists, otherwise like
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
631 `:chistory`.
9560a5b782ee commit https://github.com/vim/vim/commit/42ebd066422d73cdb7bda6a1dc828a3dd022dec8
Christian Brabandt <cb@256bit.org>
parents: 9458
diff changeset
632
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
633 When adding a new error list, it becomes the current list.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
634
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
635 When ":colder" has been used and ":make" or ":grep" is used to add a new error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
636 list, one newer list is overwritten. This is especially useful if you are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
637 browsing with ":grep" |grep|. If you want to keep the more recent error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
638 lists, use ":cnewer 99" first.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
639
13016
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
640 To get the number of lists in the quickfix and location list stack, you can
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
641 use the |getqflist()| and |getloclist()| functions respectively with the list
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
642 number set to the special value '$'. Examples: >
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
643 echo getqflist({'nr' : '$'}).nr
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
644 echo getloclist(3, {'nr' : '$'}).nr
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
645 To get the number of the current list in the stack: >
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
646 echo getqflist({'nr' : 0}).nr
e47e70300f30 patch 8.0.1384: not enough quickfix help; confusing winid
Christian Brabandt <cb@256bit.org>
parents: 12499
diff changeset
647 <
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
648 =============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
649 4. Using :make *:make_makeprg*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
650
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
651 *:mak* *:make*
163
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
652 :mak[e][!] [arguments] 1. If vim was built with |+autocmd|, all relevant
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
653 |QuickFixCmdPre| autocommands are executed.
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
654 2. If the 'autowrite' option is on, write any changed
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
655 buffers
163
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
656 3. An errorfile name is made from 'makeef'. If
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
657 'makeef' doesn't contain "##", and a file with this
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
658 name already exists, it is deleted.
163
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
659 4. The program given with the 'makeprg' option is
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
660 started (default "make") with the optional
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
661 [arguments] and the output is saved in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
662 errorfile (for Unix it is also echoed on the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
663 screen).
163
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
664 5. The errorfile is read using 'errorformat'.
1167
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
665 6. If vim was built with |+autocmd|, all relevant
163
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
666 |QuickFixCmdPost| autocommands are executed.
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
667 See example below.
1167
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
668 7. If [!] is not given the first error is jumped to.
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
669 8. The errorfile is deleted.
163
06bc859d1a32 updated for version 7.0049
vimboss
parents: 123
diff changeset
670 9. You can now move through the errors with commands
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
671 like |:cnext| and |:cprevious|, see above.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
672 This command does not accept a comment, any "
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
673 characters are considered part of the arguments.
11063
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
674 If the encoding of the program output differs from the
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
675 'encoding' option, you can use the 'makeencoding'
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
676 option to specify the encoding.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
677
658
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
678 *:lmak* *:lmake*
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
679 :lmak[e][!] [arguments]
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
680 Same as ":make", except the location list for the
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
681 current window is used instead of the quickfix list.
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
682
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
683 The ":make" command executes the command given with the 'makeprg' option.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
684 This is done by passing the command to the shell given with the 'shell'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
685 option. This works almost like typing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
686
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
687 ":!{makeprg} [arguments] {shellpipe} {errorfile}".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
688
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
689 {makeprg} is the string given with the 'makeprg' option. Any command can be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
690 used, not just "make". Characters '%' and '#' are expanded as usual on a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
691 command-line. You can use "%<" to insert the current file name without
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
692 extension, or "#<" to insert the alternate file name without extension, for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
693 example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
694 :set makeprg=make\ #<.o
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
695
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
696 [arguments] is anything that is typed after ":make".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
697 {shellpipe} is the 'shellpipe' option.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
698 {errorfile} is the 'makeef' option, with ## replaced to make it unique.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
699
2072
4a1bcdd9ea55 Updated runtime files.
Bram Moolenaar <bram@zimbu.org>
parents: 2033
diff changeset
700 The placeholder "$*" can be used for the argument list in {makeprg} if the
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
701 command needs some additional characters after its arguments. The $* is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
702 replaced then by all arguments. Example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
703 :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
704 or simpler >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
705 :let &mp = 'latex \\nonstopmode \\input\{$*}'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
706 "$*" can be given multiple times, for example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
707 :set makeprg=gcc\ -o\ $*\ $*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
708
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
709 The 'shellpipe' option defaults to ">" for the Amiga, MS-DOS and Win32. This
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
710 means that the output of the compiler is saved in a file and not shown on the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
711 screen directly. For Unix "| tee" is used. The compiler output is shown on
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
712 the screen and saved in a file the same time. Depending on the shell used
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
713 "|& tee" or "2>&1| tee" is the default, so stderr output will be included.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
714
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
715 If 'shellpipe' is empty, the {errorfile} part will be omitted. This is useful
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
716 for compilers that write to an errorfile themselves (e.g., Manx's Amiga C).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
717
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
718
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
719 Using QuickFixCmdPost to fix the encoding ~
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
720
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
721 It may be that 'encoding' is set to an encoding that differs from the messages
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
722 your build program produces. This example shows how to fix this after Vim has
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
723 read the error messages: >
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
724
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
725 function QfMakeConv()
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
726 let qflist = getqflist()
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
727 for i in qflist
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
728 let i.text = iconv(i.text, "cp936", "utf-8")
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
729 endfor
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
730 call setqflist(qflist)
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
731 endfunction
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
732
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
733 au QuickfixCmdPost make call QfMakeConv()
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
734
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
735 (Example by Faque Cheng)
11063
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
736 Another option is using 'makeencoding'.
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
737
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
738 ==============================================================================
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
739 5. Using :vimgrep and :grep *grep* *lid*
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
740
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
741 Vim has two ways to find matches for a pattern: Internal and external. The
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
742 advantage of the internal grep is that it works on all systems and uses the
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
743 powerful Vim search patterns. An external grep program can be used when the
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
744 Vim grep does not do what you want.
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
745
43
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
746 The internal method will be slower, because files are read into memory. The
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
747 advantages are:
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
748 - Line separators and encoding are automatically recognized, as if a file is
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
749 being edited.
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
750 - Uses Vim search patterns. Multi-line patterns can be used.
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
751 - When plugins are enabled: compressed and remote files can be searched.
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
752 |gzip| |netrw|
717
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 716
diff changeset
753
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 716
diff changeset
754 To be able to do this Vim loads each file as if it is being edited. When
720
e180933b876a updated for version 7.0219
vimboss
parents: 717
diff changeset
755 there is no match in the file the associated buffer is wiped out again. The
717
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 716
diff changeset
756 'hidden' option is ignored here to avoid running out of memory or file
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 716
diff changeset
757 descriptors when searching many files. However, when the |:hide| command
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 716
diff changeset
758 modifier is used the buffers are kept loaded. This makes following searches
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 716
diff changeset
759 in the same files a lot faster.
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
760
2608
7d8af31066c8 Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents: 2577
diff changeset
761 Note that |:copen| (or |:lopen| for |:lgrep|) may be used to open a buffer
7d8af31066c8 Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents: 2577
diff changeset
762 containing the search results in linked form. The |:silent| command may be
2698
b6471224d2af Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents: 2608
diff changeset
763 used to suppress the default full screen grep output. The ":grep!" form of
2608
7d8af31066c8 Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents: 2577
diff changeset
764 the |:grep| command doesn't jump to the first match automatically. These
7d8af31066c8 Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents: 2577
diff changeset
765 commands can be combined to create a NewGrep command: >
7d8af31066c8 Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents: 2577
diff changeset
766
7d8af31066c8 Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents: 2577
diff changeset
767 command! -nargs=+ NewGrep execute 'silent grep! <args>' | copen 42
7d8af31066c8 Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents: 2577
diff changeset
768
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
769
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
770 5.1 using Vim's internal grep
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
771
86
8173ec1e9f1f updated for version 7.0034
vimboss
parents: 43
diff changeset
772 *:vim* *:vimgrep* *E682* *E683*
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
773 :vim[grep][!] /{pattern}/[g][j] {file} ...
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
774 Search for {pattern} in the files {file} ... and set
3682
11d40fc82f11 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3557
diff changeset
775 the error list to the matches. Files matching
11d40fc82f11 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3557
diff changeset
776 'wildignore' are ignored; files in 'suffixes' are
11d40fc82f11 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3557
diff changeset
777 searched last.
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
778 Without the 'g' flag each line is added only once.
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
779 With 'g' every match is added.
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
780
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
781 {pattern} is a Vim search pattern. Instead of
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
782 enclosing it in / any non-ID character (see
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
783 |'isident'|) can be used, so long as it does not
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
784 appear in {pattern}.
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
785 'ignorecase' applies. To overrule it put |/\c| in the
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
786 pattern to ignore case or |/\C| to match case.
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
787 'smartcase' is not used.
4197
07fef68eb018 updated for version 7.3.850
Bram Moolenaar <bram@vim.org>
parents: 3682
diff changeset
788 If {pattern} is empty (e.g. // is specified), the last
07fef68eb018 updated for version 7.3.850
Bram Moolenaar <bram@vim.org>
parents: 3682
diff changeset
789 used search pattern is used. |last-pattern|
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
790
716
8ae24f338cab updated for version 7.0217
vimboss
parents: 658
diff changeset
791 When a number is put before the command this is used
8ae24f338cab updated for version 7.0217
vimboss
parents: 658
diff changeset
792 as the maximum number of matches to find. Use
8ae24f338cab updated for version 7.0217
vimboss
parents: 658
diff changeset
793 ":1vimgrep pattern file" to find only the first.
8ae24f338cab updated for version 7.0217
vimboss
parents: 658
diff changeset
794 Useful if you only want to check if there is a match
8ae24f338cab updated for version 7.0217
vimboss
parents: 658
diff changeset
795 and quit quickly when it's found.
8ae24f338cab updated for version 7.0217
vimboss
parents: 658
diff changeset
796
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
797 Without the 'j' flag Vim jumps to the first match.
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
798 With 'j' only the quickfix list is updated.
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
799 With the [!] any changes in the current buffer are
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
800 abandoned.
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
801
123
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 97
diff changeset
802 Every second or so the searched file name is displayed
f67f8a8d81ba updated for version 7.0043
vimboss
parents: 97
diff changeset
803 to give you an idea of the progress made.
43
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
804 Examples: >
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
805 :vimgrep /an error/ *.c
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
806 :vimgrep /\<FileName\>/ *.h include/*
445
c773cb978acf updated for version 7.0116
vimboss
parents: 279
diff changeset
807 :vimgrep /myfunc/ **/*.c
c773cb978acf updated for version 7.0116
vimboss
parents: 279
diff changeset
808 < For the use of "**" see |starstar-wildcard|.
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
809
43
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
810 :vim[grep][!] {pattern} {file} ...
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
811 Like above, but instead of enclosing the pattern in a
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
812 non-ID character use a white-separated pattern. The
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
813 pattern must start with an ID character.
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
814 Example: >
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
815 :vimgrep Error *.c
f55897d6921d updated for version 7.0026
vimboss
parents: 41
diff changeset
816 <
658
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
817 *:lv* *:lvimgrep*
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
818 :lv[imgrep][!] /{pattern}/[g][j] {file} ...
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
819 :lv[imgrep][!] {pattern} {file} ...
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
820 Same as ":vimgrep", except the location list for the
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
821 current window is used instead of the quickfix list.
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
822
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
823 *:vimgrepa* *:vimgrepadd*
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
824 :vimgrepa[dd][!] /{pattern}/[g][j] {file} ...
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
825 :vimgrepa[dd][!] {pattern} {file} ...
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
826 Just like ":vimgrep", but instead of making a new list
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
827 of errors the matches are appended to the current
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
828 list.
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
829
658
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
830 *:lvimgrepa* *:lvimgrepadd*
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
831 :lvimgrepa[dd][!] /{pattern}/[g][j] {file} ...
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
832 :lvimgrepa[dd][!] {pattern} {file} ...
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
833 Same as ":vimgrepadd", except the location list for
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
834 the current window is used instead of the quickfix
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
835 list.
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
836
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
837 5.2 External grep
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
838
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
839 Vim can interface with "grep" and grep-like programs (such as the GNU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
840 id-utils) in a similar way to its compiler integration (see |:make| above).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
841
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
842 [Unix trivia: The name for the Unix "grep" command comes from ":g/re/p", where
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
843 "re" stands for Regular Expression.]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
844
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
845 *:gr* *:grep*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
846 :gr[ep][!] [arguments] Just like ":make", but use 'grepprg' instead of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
847 'makeprg' and 'grepformat' instead of 'errorformat'.
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
848 When 'grepprg' is "internal" this works like
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
849 |:vimgrep|. Note that the pattern needs to be
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
850 enclosed in separator characters then.
11063
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
851 If the encoding of the program output differs from the
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
852 'encoding' option, you can use the 'makeencoding'
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
853 option to specify the encoding.
658
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
854
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
855 *:lgr* *:lgrep*
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
856 :lgr[ep][!] [arguments] Same as ":grep", except the location list for the
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
857 current window is used instead of the quickfix list.
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
858
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
859 *:grepa* *:grepadd*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
860 :grepa[dd][!] [arguments]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
861 Just like ":grep", but instead of making a new list of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
862 errors the matches are appended to the current list.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
863 Example: >
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
864 :call setqflist([])
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
865 :bufdo grepadd! something %
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
866 < The first command makes a new error list which is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
867 empty. The second command executes "grepadd" for each
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
868 listed buffer. Note the use of ! to avoid that
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
869 ":grepadd" jumps to the first error, which is not
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
870 allowed with |:bufdo|.
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
871 An example that uses the argument list and avoids
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
872 errors for files without matches: >
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
873 :silent argdo try
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
874 \ | grepadd! something %
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
875 \ | catch /E480:/
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
876 \ | endtry"
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
877 <
11063
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
878 If the encoding of the program output differs from the
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
879 'encoding' option, you can use the 'makeencoding'
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
880 option to specify the encoding.
e71d3bdf3bc3 patch 8.0.0420: text garbled when the system encoding differs from 'encoding'
Christian Brabandt <cb@256bit.org>
parents: 11062
diff changeset
881
658
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
882 *:lgrepa* *:lgrepadd*
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
883 :lgrepa[dd][!] [arguments]
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
884 Same as ":grepadd", except the location list for the
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
885 current window is used instead of the quickfix list.
903088c7a7c6 updated for version 7.0193
vimboss
parents: 651
diff changeset
886
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
887 5.3 Setting up external grep
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
888
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
889 If you have a standard "grep" program installed, the :grep command may work
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
890 well with the defaults. The syntax is very similar to the standard command: >
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
891
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
892 :grep foo *.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
893
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
894 Will search all files with the .c extension for the substring "foo". The
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
895 arguments to :grep are passed straight to the "grep" program, so you can use
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
896 whatever options your "grep" supports.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
897
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
898 By default, :grep invokes grep with the -n option (show file and line
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
899 numbers). You can change this with the 'grepprg' option. You will need to set
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
900 'grepprg' if:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
901
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
902 a) You are using a program that isn't called "grep"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
903 b) You have to call grep with a full path
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
904 c) You want to pass other options automatically (e.g. case insensitive
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
905 search.)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
906
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
907 Once "grep" has executed, Vim parses the results using the 'grepformat'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
908 option. This option works in the same way as the 'errorformat' option - see
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
909 that for details. You may need to change 'grepformat' from the default if
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
910 your grep outputs in a non-standard format, or you are using some other
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
911 program with a special format.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
912
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
913 Once the results are parsed, Vim loads the first file containing a match and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
914 jumps to the appropriate line, in the same way that it jumps to a compiler
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
915 error in |quickfix| mode. You can then use the |:cnext|, |:clist|, etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
916 commands to see the other matches.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
917
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
918
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
919 5.4 Using :grep with id-utils
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
920
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
921 You can set up :grep to work with the GNU id-utils like this: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
922
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
923 :set grepprg=lid\ -Rgrep\ -s
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
924 :set grepformat=%f:%l:%m
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
925
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
926 then >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
927 :grep (regexp)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
928
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
929 works just as you'd expect.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
930 (provided you remembered to mkid first :)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
931
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
932
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
933 5.5 Browsing source code with :vimgrep or :grep
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
934
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
935 Using the stack of error lists that Vim keeps, you can browse your files to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
936 look for functions and the functions they call. For example, suppose that you
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
937 have to add an argument to the read_file() function. You enter this command: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
938
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
939 :vimgrep /\<read_file\>/ *.c
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
940
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
941 You use ":cn" to go along the list of matches and add the argument. At one
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
942 place you have to get the new argument from a higher level function msg(), and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
943 need to change that one too. Thus you use: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
944
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
945 :vimgrep /\<msg\>/ *.c
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
946
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
947 While changing the msg() functions, you find another function that needs to
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
948 get the argument from a higher level. You can again use ":vimgrep" to find
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
949 these functions. Once you are finished with one function, you can use >
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
950
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
951 :colder
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
952
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
953 to go back to the previous one.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
954
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
955 This works like browsing a tree: ":vimgrep" goes one level deeper, creating a
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
956 list of branches. ":colder" goes back to the previous level. You can mix
41
f529edb9bab3 updated for version 7.0025
vimboss
parents: 9
diff changeset
957 this use of ":vimgrep" and "colder" to browse all the locations in a tree-like
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
958 way. If you do this consistently, you will find all locations without the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
959 need to write down a "todo" list.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
960
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
961 =============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
962 6. Selecting a compiler *compiler-select*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
963
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
964 *:comp* *:compiler* *E666*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
965 :comp[iler][!] {name} Set options to work with compiler {name}.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
966 Without the "!" options are set for the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
967 current buffer. With "!" global options are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
968 set.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
969 If you use ":compiler foo" in "file.foo" and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
970 then ":compiler! bar" in another buffer, Vim
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
971 will keep on using "foo" in "file.foo".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
972 {not available when compiled without the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
973 |+eval| feature}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
974
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
975
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
976 The Vim plugins in the "compiler" directory will set options to use the
10348
c78513465e6e commit https://github.com/vim/vim/commit/25de4c232d580583feadae11ab34e3cc6333c350
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
977 selected compiler. For `:compiler` local options are set, for `:compiler!`
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
978 global options.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
979 *current_compiler*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
980 To support older Vim versions, the plugins always use "current_compiler" and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
981 not "b:current_compiler". What the command actually does is the following:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
982
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
983 - Delete the "current_compiler" and "b:current_compiler" variables.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
984 - Define the "CompilerSet" user command. With "!" it does ":set", without "!"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
985 it does ":setlocal".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
986 - Execute ":runtime! compiler/{name}.vim". The plugins are expected to set
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
987 options with "CompilerSet" and set the "current_compiler" variable to the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
988 name of the compiler.
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 163
diff changeset
989 - Delete the "CompilerSet" user command.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
990 - Set "b:current_compiler" to the value of "current_compiler".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
991 - Without "!" the old value of "current_compiler" is restored.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
992
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
993
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
994 For writing a compiler plugin, see |write-compiler-plugin|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
995
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
996
1228
5eb1ac6f92ad updated for version 7.1b
vimboss
parents: 1167
diff changeset
997 GCC *quickfix-gcc* *compiler-gcc*
5eb1ac6f92ad updated for version 7.1b
vimboss
parents: 1167
diff changeset
998
5eb1ac6f92ad updated for version 7.1b
vimboss
parents: 1167
diff changeset
999 There's one variable you can set for the GCC compiler:
5eb1ac6f92ad updated for version 7.1b
vimboss
parents: 1167
diff changeset
1000
5eb1ac6f92ad updated for version 7.1b
vimboss
parents: 1167
diff changeset
1001 g:compiler_gcc_ignore_unmatched_lines
5eb1ac6f92ad updated for version 7.1b
vimboss
parents: 1167
diff changeset
1002 Ignore lines that don't match any patterns
5eb1ac6f92ad updated for version 7.1b
vimboss
parents: 1167
diff changeset
1003 defined for GCC. Useful if output from
5eb1ac6f92ad updated for version 7.1b
vimboss
parents: 1167
diff changeset
1004 commands run from make are generating false
5eb1ac6f92ad updated for version 7.1b
vimboss
parents: 1167
diff changeset
1005 positives.
5eb1ac6f92ad updated for version 7.1b
vimboss
parents: 1167
diff changeset
1006
5eb1ac6f92ad updated for version 7.1b
vimboss
parents: 1167
diff changeset
1007
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1008 MANX AZTEC C *quickfix-manx* *compiler-manx*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1009
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1010 To use Vim with Manx's Aztec C compiler on the Amiga you should do the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1011 following:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1012 - Set the CCEDIT environment variable with the command: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1013 mset "CCEDIT=vim -q"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1014 - Compile with the -qf option. If the compiler finds any errors, Vim is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1015 started and the cursor is positioned on the first error. The error message
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1016 will be displayed on the last line. You can go to other errors with the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1017 commands mentioned above. You can fix the errors and write the file(s).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1018 - If you exit Vim normally the compiler will re-compile the same file. If you
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1019 exit with the :cq command, the compiler will terminate. Do this if you
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1020 cannot fix the error, or if another file needs to be compiled first.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1021
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1022 There are some restrictions to the Quickfix mode on the Amiga. The
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1023 compiler only writes the first 25 errors to the errorfile (Manx's
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1024 documentation does not say how to get more). If you want to find the others,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1025 you will have to fix a few errors and exit the editor. After recompiling,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1026 up to 25 remaining errors will be found.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1027
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1028 If Vim was started from the compiler, the :sh and some :! commands will not
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1029 work, because Vim is then running in the same process as the compiler and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1030 stdin (standard input) will not be interactive.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1031
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1032
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1033 PERL *quickfix-perl* *compiler-perl*
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1034
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1035 The Perl compiler plugin doesn't actually compile, but invokes Perl's internal
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1036 syntax checking feature and parses the output for possible errors so you can
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1037 correct them in quick-fix mode.
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1038
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1039 Warnings are forced regardless of "no warnings" or "$^W = 0" within the file
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1040 being checked. To disable this set g:perl_compiler_force_warnings to a zero
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1041 value. For example: >
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1042 let g:perl_compiler_force_warnings = 0
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1043
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1044
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1045 PYUNIT COMPILER *compiler-pyunit*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1046
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1047 This is not actually a compiler, but a unit testing framework for the
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1048 Python language. It is included into standard Python distribution
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1049 starting from version 2.0. For older versions, you can get it from
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1050 http://pyunit.sourceforge.net.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1051
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1052 When you run your tests with the help of the framework, possible errors
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1053 are parsed by Vim and presented for you in quick-fix mode.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1054
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1055 Unfortunately, there is no standard way to run the tests.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1056 The alltests.py script seems to be used quite often, that's all.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1057 Useful values for the 'makeprg' options therefore are:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1058 setlocal makeprg=./alltests.py " Run a testsuite
5690
40f18a1c1592 updated for version 7.4.191
Bram Moolenaar <bram@vim.org>
parents: 5294
diff changeset
1059 setlocal makeprg=python\ %:S " Run a single testcase
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1060
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1061 Also see http://vim.sourceforge.net/tip_view.php?tip_id=280.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1062
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1063
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1064 TEX COMPILER *compiler-tex*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1065
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1066 Included in the distribution compiler for TeX ($VIMRUNTIME/compiler/tex.vim)
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1067 uses make command if possible. If the compiler finds a file named "Makefile"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1068 or "makefile" in the current directory, it supposes that you want to process
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1069 your *TeX files with make, and the makefile does the right work. In this case
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1070 compiler sets 'errorformat' for *TeX output and leaves 'makeprg' untouched. If
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1071 neither "Makefile" nor "makefile" is found, the compiler will not use make.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1072 You can force the compiler to ignore makefiles by defining
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1073 b:tex_ignore_makefile or g:tex_ignore_makefile variable (they are checked for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1074 existence only).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1075
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1076 If the compiler chose not to use make, it need to choose a right program for
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1077 processing your input. If b:tex_flavor or g:tex_flavor (in this precedence)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1078 variable exists, it defines TeX flavor for :make (actually, this is the name
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1079 of executed command), and if both variables do not exist, it defaults to
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1080 "latex". For example, while editing chapter2.tex \input-ed from mypaper.tex
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1081 written in AMS-TeX: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1082
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1083 :let b:tex_flavor = 'amstex'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1084 :compiler tex
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1085 < [editing...] >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1086 :make mypaper
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1087
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1088 Note that you must specify a name of the file to process as an argument (to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1089 process the right file when editing \input-ed or \include-ed file; portable
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1090 solution for substituting % for no arguments is welcome). This is not in the
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1091 semantics of make, where you specify a target, not source, but you may specify
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1092 filename without extension ".tex" and mean this as "make filename.dvi or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1093 filename.pdf or filename.some_result_extension according to compiler".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1094
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1095 Note: tex command line syntax is set to usable both for MikTeX (suggestion
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1096 by Srinath Avadhanula) and teTeX (checked by Artem Chuprina). Suggestion
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1097 from |errorformat-LaTeX| is too complex to keep it working for different
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1098 shells and OSes and also does not allow to use other available TeX options,
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1099 if any. If your TeX doesn't support "-interaction=nonstopmode", please
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1100 report it with different means to express \nonstopmode from the command line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1101
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1102 =============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1103 7. The error format *error-file-format*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1104
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1105 *errorformat* *E372* *E373* *E374*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1106 *E375* *E376* *E377* *E378*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1107 The 'errorformat' option specifies a list of formats that are recognized. The
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1108 first format that matches with an error message is used. You can add several
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1109 formats for different messages your compiler produces, or even entries for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1110 multiple compilers. See |efm-entries|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1111
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1112 Each entry in 'errorformat' is a scanf-like string that describes the format.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1113 First, you need to know how scanf works. Look in the documentation of your
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1114 C compiler. Below you find the % items that Vim understands. Others are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1115 invalid.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1116
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1117 Special characters in 'errorformat' are comma and backslash. See
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1118 |efm-entries| for how to deal with them. Note that a literal "%" is matched
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1119 by "%%", thus it is not escaped with a backslash.
5277
42bf9264e64e Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5247
diff changeset
1120 Keep in mind that in the `:make` and `:grep` output all NUL characters are
42bf9264e64e Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 5247
diff changeset
1121 replaced with SOH (0x01).
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1122
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1123 Note: By default the difference between upper and lowercase is ignored. If
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1124 you want to match case, add "\C" to the pattern |/\C|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1125
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1126
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1127 Basic items
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1128
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1129 %f file name (finds a string)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1130 %l line number (finds a number)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1131 %c column number (finds a number representing character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1132 column of the error, (1 <tab> == 1 character column))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1133 %v virtual column number (finds a number representing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1134 screen column of the error (1 <tab> == 8 screen
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1135 columns))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1136 %t error type (finds a single character)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1137 %n error number (finds a number)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1138 %m error message (finds a string)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1139 %r matches the "rest" of a single-line file message %O/P/Q
3557
9cb3a75a20b9 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2833
diff changeset
1140 %p pointer line (finds a sequence of '-', '.', ' ' or
9cb3a75a20b9 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2833
diff changeset
1141 tabs and uses the length for the column number)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1142 %*{conv} any scanf non-assignable conversion
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1143 %% the single '%' character
231
8eec9649b7a2 updated for version 7.0064
vimboss
parents: 170
diff changeset
1144 %s search text (finds a string)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1145
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 446
diff changeset
1146 The "%f" conversion may depend on the current 'isfname' setting. "~/" is
279
946f0cbdd535 updated for version 7.0074
vimboss
parents: 237
diff changeset
1147 expanded to the home directory and environment variables are expanded.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1148
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 446
diff changeset
1149 The "%f" and "%m" conversions have to detect the end of the string. This
534
c6296b0ad9ea updated for version 7.0151
vimboss
parents: 502
diff changeset
1150 normally happens by matching following characters and items. When nothing is
502
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 446
diff changeset
1151 following the rest of the line is matched. If "%f" is followed by a '%' or a
52e76e2b5b65 updated for version 7.0140
vimboss
parents: 446
diff changeset
1152 backslash, it will look for a sequence of 'isfname' characters.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1153
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1154 On MS-DOS, MS-Windows and OS/2 a leading "C:" will be included in "%f", even
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1155 when using "%f:". This means that a file name which is a single alphabetical
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1156 letter will not be detected.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1157
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1158 The "%p" conversion is normally followed by a "^". It's used for compilers
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1159 that output a line like: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1160 ^
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1161 or >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1162 ---------^
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1163 to indicate the column of the error. This is to be used in a multi-line error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1164 message. See |errorformat-javac| for a useful example.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1165
231
8eec9649b7a2 updated for version 7.0064
vimboss
parents: 170
diff changeset
1166 The "%s" conversion specifies the text to search for to locate the error line.
8eec9649b7a2 updated for version 7.0064
vimboss
parents: 170
diff changeset
1167 The text is used as a literal string. The anchors "^" and "$" are added to
8eec9649b7a2 updated for version 7.0064
vimboss
parents: 170
diff changeset
1168 the text to locate the error line exactly matching the search text and the
8eec9649b7a2 updated for version 7.0064
vimboss
parents: 170
diff changeset
1169 text is prefixed with the "\V" atom to make it "very nomagic". The "%s"
8eec9649b7a2 updated for version 7.0064
vimboss
parents: 170
diff changeset
1170 conversion can be used to locate lines without a line number in the error
8eec9649b7a2 updated for version 7.0064
vimboss
parents: 170
diff changeset
1171 output. Like the output of the "grep" shell command.
8eec9649b7a2 updated for version 7.0064
vimboss
parents: 170
diff changeset
1172 When the pattern is present the line number will not be used.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1173
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1174 Changing directory
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1175
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1176 The following uppercase conversion characters specify the type of special
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1177 format strings. At most one of them may be given as a prefix at the begin
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1178 of a single comma-separated format pattern.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1179 Some compilers produce messages that consist of directory names that have to
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1180 be prepended to each file name read by %f (example: GNU make). The following
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1181 codes can be used to scan these directory names; they will be stored in an
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1182 internal directory stack. *E379*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1183 %D "enter directory" format string; expects a following
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1184 %f that finds the directory name
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1185 %X "leave directory" format string; expects following %f
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1186
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1187 When defining an "enter directory" or "leave directory" format, the "%D" or
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1188 "%X" has to be given at the start of that substring. Vim tracks the directory
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1189 changes and prepends the current directory to each erroneous file found with a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1190 relative path. See |quickfix-directory-stack| for details, tips and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1191 limitations.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1192
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1193
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1194 Multi-line messages *errorformat-multi-line*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1195
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1196 It is possible to read the output of programs that produce multi-line
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1197 messages, i.e. error strings that consume more than one line. Possible
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1198 prefixes are:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1199 %E start of a multi-line error message
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1200 %W start of a multi-line warning message
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1201 %I start of a multi-line informational message
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1202 %A start of a multi-line message (unspecified type)
791
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1203 %> for next line start with current pattern again |efm-%>|
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1204 %C continuation of a multi-line message
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1205 %Z end of a multi-line message
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1206 These can be used with '+' and '-', see |efm-ignore| below.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1207
787
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1208 Using "\n" in the pattern won't work to match multi-line messages.
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1209
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1210 Example: Your compiler happens to write out errors in the following format
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1211 (leading line numbers not being part of the actual output):
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1212
787
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1213 1 Error 275 ~
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1214 2 line 42 ~
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1215 3 column 3 ~
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1216 4 ' ' expected after '--' ~
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1217
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1218 The appropriate error format string has to look like this: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1219 :set efm=%EError\ %n,%Cline\ %l,%Ccolumn\ %c,%Z%m
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1220
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1221 And the |:clist| error message generated for this error is:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1222
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1223 1:42 col 3 error 275: ' ' expected after '--'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1224
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1225 Another example: Think of a Python interpreter that produces the following
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1226 error message (line numbers are not part of the actual output):
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1227
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1228 1 ==============================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1229 2 FAIL: testGetTypeIdCachesResult (dbfacadeTest.DjsDBFacadeTest)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1230 3 --------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1231 4 Traceback (most recent call last):
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1232 5 File "unittests/dbfacadeTest.py", line 89, in testFoo
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1233 6 self.assertEquals(34, dtid)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1234 7 File "/usr/lib/python2.2/unittest.py", line 286, in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1235 8 failUnlessEqual
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1236 9 raise self.failureException, \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1237 10 AssertionError: 34 != 33
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1238 11
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1239 12 --------------------------------------------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1240 13 Ran 27 tests in 0.063s
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1241
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1242 Say you want |:clist| write the relevant information of this message only,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1243 namely:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1244 5 unittests/dbfacadeTest.py:89: AssertionError: 34 != 33
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1245
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1246 Then the error format string could be defined as follows: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1247 :set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1248
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1249 Note that the %C string is given before the %A here: since the expression
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1250 ' %.%#' (which stands for the regular expression ' .*') matches every line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1251 starting with a space, followed by any characters to the end of the line,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1252 it also hides line 7 which would trigger a separate error message otherwise.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1253 Error format strings are always parsed pattern by pattern until the first
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1254 match occurs.
791
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1255 *efm-%>*
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1256 The %> item can be used to avoid trying patterns that appear earlier in
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1257 'errorformat'. This is useful for patterns that match just about anything.
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1258 For example, if the error looks like this:
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1259
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1260 Error in line 123 of foo.c: ~
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1261 unknown variable "i" ~
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1262
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1263 This can be found with: >
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1264 :set efm=xxx,%E%>Error in line %l of %f:,%Z%m
98a88a884610 updated for version 7.0230
vimboss
parents: 787
diff changeset
1265 Where "xxx" has a pattern that would also match the second line.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1266
787
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1267 Important: There is no memory of what part of the errorformat matched before;
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1268 every line in the error file gets a complete new run through the error format
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1269 lines. For example, if one has: >
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1270 setlocal efm=aa,bb,cc,dd,ee
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1271 Where aa, bb, etc. are error format strings. Each line of the error file will
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1272 be matched to the pattern aa, then bb, then cc, etc. Just because cc matched
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1273 the previous error line does _not_ mean that dd will be tried first on the
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1274 current line, even if cc and dd are multi-line errorformat strings.
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1275
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1276
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1277
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1278 Separate file name *errorformat-separate-filename*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1279
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1280 These prefixes are useful if the file name is given once and multiple messages
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1281 follow that refer to this file name.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1282 %O single-line file message: overread the matched part
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1283 %P single-line file message: push file %f onto the stack
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1284 %Q single-line file message: pop the last file from stack
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1285
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1286 Example: Given a compiler that produces the following error logfile (without
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1287 leading line numbers):
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1288
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1289 1 [a1.tt]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1290 2 (1,17) error: ';' missing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1291 3 (21,2) warning: variable 'z' not defined
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1292 4 (67,3) error: end of file found before string ended
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1293 5
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1294 6 [a2.tt]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1295 7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1296 8 [a3.tt]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1297 9 NEW compiler v1.1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1298 10 (2,2) warning: variable 'x' not defined
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1299 11 (67,3) warning: 's' already defined
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1300
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1301 This logfile lists several messages for each file enclosed in [...] which are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1302 properly parsed by an error format like this: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1303 :set efm=%+P[%f],(%l\\,%c)%*[\ ]%t%*[^:]:\ %m,%-Q
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1304
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1305 A call of |:clist| writes them accordingly with their correct filenames:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1306
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1307 2 a1.tt:1 col 17 error: ';' missing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1308 3 a1.tt:21 col 2 warning: variable 'z' not defined
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1309 4 a1.tt:67 col 3 error: end of file found before string ended
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1310 8 a3.tt:2 col 2 warning: variable 'x' not defined
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1311 9 a3.tt:67 col 3 warning: 's' already defined
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1312
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1313 Unlike the other prefixes that all match against whole lines, %P, %Q and %O
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1314 can be used to match several patterns in the same line. Thus it is possible
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1315 to parse even nested files like in the following line:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1316 {"file1" {"file2" error1} error2 {"file3" error3 {"file4" error4 error5}}}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1317 The %O then parses over strings that do not contain any push/pop file name
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1318 information. See |errorformat-LaTeX| for an extended example.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1319
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1320
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1321 Ignoring and using whole messages *efm-ignore*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1322
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1323 The codes '+' or '-' can be combined with the uppercase codes above; in that
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1324 case they have to precede the letter, e.g. '%+A' or '%-G':
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1325 %- do not include the matching multi-line in any output
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1326 %+ include the whole matching line in the %m error string
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1327
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1328 One prefix is only useful in combination with '+' or '-', namely %G. It parses
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1329 over lines containing general information like compiler version strings or
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1330 other headers that can be skipped.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1331 %-G ignore this message
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1332 %+G general message
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1333
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1334
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1335 Pattern matching
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1336
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1337 The scanf()-like "%*[]" notation is supported for backward-compatibility
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1338 with previous versions of Vim. However, it is also possible to specify
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1339 (nearly) any Vim supported regular expression in format strings.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1340 Since meta characters of the regular expression language can be part of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1341 ordinary matching strings or file names (and therefore internally have to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1342 be escaped), meta symbols have to be written with leading '%':
787
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1343 %\ The single '\' character. Note that this has to be
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1344 escaped ("%\\") in ":set errorformat=" definitions.
787
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1345 %. The single '.' character.
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1346 %# The single '*'(!) character.
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1347 %^ The single '^' character. Note that this is not
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1348 useful, the pattern already matches start of line.
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1349 %$ The single '$' character. Note that this is not
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1350 useful, the pattern already matches end of line.
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1351 %[ The single '[' character for a [] character range.
1a44839049ae updated for version 7.0229
vimboss
parents: 720
diff changeset
1352 %~ The single '~' character.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1353 When using character classes in expressions (see |/\i| for an overview),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1354 terms containing the "\+" quantifier can be written in the scanf() "%*"
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1355 notation. Example: "%\\d%\\+" ("\d\+", "any number") is equivalent to "%*\\d".
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1356 Important note: The \(...\) grouping of sub-matches can not be used in format
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1357 specifications because it is reserved for internal conversions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1358
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1359
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1360 Multiple entries in 'errorformat' *efm-entries*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1361
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1362 To be able to detect output from several compilers, several format patterns
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1363 may be put in 'errorformat', separated by commas (note: blanks after the comma
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1364 are ignored). The first pattern that has a complete match is used. If no
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1365 match is found, matching parts from the last one will be used, although the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1366 file name is removed and the error message is set to the whole message. If
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1367 there is a pattern that may match output from several compilers (but not in a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1368 right way), put it after one that is more restrictive.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1369
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1370 To include a comma in a pattern precede it with a backslash (you have to type
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1371 two in a ":set" command). To include a backslash itself give two backslashes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1372 (you have to type four in a ":set" command). You also need to put a backslash
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1373 before a space for ":set".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1374
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1375
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1376 Valid matches *quickfix-valid*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1377
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1378 If a line does not completely match one of the entries in 'errorformat', the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1379 whole line is put in the error message and the entry is marked "not valid"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1380 These lines are skipped with the ":cn" and ":cp" commands (unless there is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1381 no valid line at all). You can use ":cl!" to display all the error messages.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1382
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1383 If the error format does not contain a file name Vim cannot switch to the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1384 correct file. You will have to do this by hand.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1385
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1386
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1387 Examples
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1388
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1389 The format of the file from the Amiga Aztec compiler is:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1390
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1391 filename>linenumber:columnnumber:errortype:errornumber:errormessage
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1392
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1393 filename name of the file in which the error was detected
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1394 linenumber line number where the error was detected
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1395 columnnumber column number where the error was detected
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1396 errortype type of the error, normally a single 'E' or 'W'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1397 errornumber number of the error (for lookup in the manual)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1398 errormessage description of the error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1399
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1400 This can be matched with this 'errorformat' entry:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1401 %f>%l:%c:%t:%n:%m
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1402
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1403 Some examples for C compilers that produce single-line error outputs:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1404 %f:%l:\ %t%*[^0123456789]%n:\ %m for Manx/Aztec C error messages
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1405 (scanf() doesn't understand [0-9])
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1406 %f\ %l\ %t%*[^0-9]%n:\ %m for SAS C
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1407 \"%f\"\\,%*[^0-9]%l:\ %m for generic C compilers
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1408 %f:%l:\ %m for GCC
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1409 %f:%l:\ %m,%Dgmake[%*\\d]:\ Entering\ directory\ `%f',
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1410 %Dgmake[%*\\d]:\ Leaving\ directory\ `%f'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1411 for GCC with gmake (concat the lines!)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1412 %f(%l)\ :\ %*[^:]:\ %m old SCO C compiler (pre-OS5)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1413 %f(%l)\ :\ %t%*[^0-9]%n:\ %m idem, with error type and number
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1414 %f:%l:\ %m,In\ file\ included\ from\ %f:%l:,\^I\^Ifrom\ %f:%l%m
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1415 for GCC, with some extras
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1416
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1417 Extended examples for the handling of multi-line messages are given below,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1418 see |errorformat-Jikes| and |errorformat-LaTeX|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1419
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1420 Note the backslash in front of a space and double quote. It is required for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1421 the :set command. There are two backslashes in front of a comma, one for the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1422 :set command and one to avoid recognizing the comma as a separator of error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1423 formats.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1424
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1425
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1426 Filtering messages
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1427
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1428 If you have a compiler that produces error messages that do not fit in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1429 format string, you could write a program that translates the error messages
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1430 into this format. You can use this program with the ":make" command by
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1431 changing the 'makeprg' option. For example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1432 :set mp=make\ \\\|&\ error_filter
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1433 The backslashes before the pipe character are required to avoid it to be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1434 recognized as a command separator. The backslash before each space is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1435 required for the set command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1436
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1437 =============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1438 8. The directory stack *quickfix-directory-stack*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1439
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1440 Quickfix maintains a stack for saving all used directories parsed from the
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1441 make output. For GNU-make this is rather simple, as it always prints the
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1442 absolute path of all directories it enters and leaves. Regardless if this is
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1443 done via a 'cd' command in the makefile or with the parameter "-C dir" (change
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1444 to directory before reading the makefile). It may be useful to use the switch
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1445 "-w" to force GNU-make to print out the working directory before and after
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1446 processing.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1447
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1448 Maintaining the correct directory is more complicated if you don't use
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1449 GNU-make. AIX-make for example doesn't print any information about its
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1450 working directory. Then you need to enhance the makefile. In the makefile of
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1451 LessTif there is a command which echoes "Making {target} in {dir}". The
2072
4a1bcdd9ea55 Updated runtime files.
Bram Moolenaar <bram@zimbu.org>
parents: 2033
diff changeset
1452 special problem here is that it doesn't print information on leaving the
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1453 directory and that it doesn't print the absolute path.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1454
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1455 To solve the problem with relative paths and missing "leave directory"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1456 messages Vim uses following algorithm:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1457
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1458 1) Check if the given directory is a subdirectory of the current directory.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1459 If this is true, store it as the current directory.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1460 2) If it is not a subdir of the current directory, try if this is a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1461 subdirectory of one of the upper directories.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1462 3) If the directory still isn't found, it is assumed to be a subdirectory
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1463 of Vim's current directory.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1464
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1465 Additionally it is checked for every file, if it really exists in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1466 identified directory. If not, it is searched in all other directories of the
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1467 directory stack (NOT the directory subtree!). If it is still not found, it is
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1468 assumed that it is in Vim's current directory.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1469
2285
69064995302a Change SKIP_GTK to SKIP_GTK2 in configure.
Bram Moolenaar <bram@vim.org>
parents: 2283
diff changeset
1470 There are limitations in this algorithm. These examples assume that make just
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1471 prints information about entering a directory in the form "Making all in dir".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1472
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1473 1) Assume you have following directories and files:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1474 ./dir1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1475 ./dir1/file1.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1476 ./file1.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1477
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1478 If make processes the directory "./dir1" before the current directory and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1479 there is an error in the file "./file1.c", you will end up with the file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1480 "./dir1/file.c" loaded by Vim.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1481
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1482 This can only be solved with a "leave directory" message.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1483
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1484 2) Assume you have following directories and files:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1485 ./dir1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1486 ./dir1/dir2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1487 ./dir2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1488
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1489 You get the following:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1490
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1491 Make output Directory interpreted by Vim
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1492 ------------------------ ----------------------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1493 Making all in dir1 ./dir1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1494 Making all in dir2 ./dir1/dir2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1495 Making all in dir2 ./dir1/dir2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1496
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1497 This can be solved by printing absolute directories in the "enter directory"
11062
1218c5353e2b Runtime file updates.
Christian Brabandt <cb@256bit.org>
parents: 10348
diff changeset
1498 message or by printing "leave directory" messages.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1499
2207
b17bbfa96fa0 Add the settabvar() and gettabvar() functions.
Bram Moolenaar <bram@vim.org>
parents: 2154
diff changeset
1500 To avoid this problem, ensure to print absolute directory names and "leave
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1501 directory" messages.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1502
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1503 Examples for Makefiles:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1504
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1505 Unix:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1506 libs:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1507 for dn in $(LIBDIRS); do \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1508 (cd $$dn; echo "Entering dir '$$(pwd)'"; make); \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1509 echo "Leaving dir"; \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1510 done
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1511
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1512 Add
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1513 %DEntering\ dir\ '%f',%XLeaving\ dir
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1514 to your 'errorformat' to handle the above output.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1515
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1516 Note that Vim doesn't check if the directory name in a "leave directory"
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1517 messages is the current directory. This is why you could just use the message
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1518 "Leaving dir".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1519
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1520 =============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1521 9. Specific error file formats *errorformats*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1522
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1523 *errorformat-Jikes*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1524 Jikes(TM), a source-to-bytecode Java compiler published by IBM Research,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1525 produces simple multi-line error messages.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1526
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1527 An 'errorformat' string matching the produced messages is shown below.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1528 The following lines can be placed in the user's |vimrc| to overwrite Vim's
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1529 recognized default formats, or see |:set+=| how to install this format
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1530 additionally to the default. >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1531
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1532 :set efm=%A%f:%l:%c:%*\\d:%*\\d:,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1533 \%C%*\\s%trror:%m,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1534 \%+C%*[^:]%trror:%m,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1535 \%C%*\\s%tarning:%m,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1536 \%C%m
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1537 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1538 Jikes(TM) produces a single-line error message when invoked with the option
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1539 "+E", and can be matched with the following: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1540
1167
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1541 :setl efm=%f:%l:%v:%*\\d:%*\\d:%*\\s%m
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1542 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1543 *errorformat-javac*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1544 This 'errorformat' has been reported to work well for javac, which outputs a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1545 line with "^" to indicate the column of the error: >
1167
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1546 :setl efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%#
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1547 or: >
1167
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1548 :setl efm=%A%f:%l:\ %m,%+Z%p^,%+C%.%#,%-G%.%#
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1549 <
1167
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1550 Here is an alternative from Michael F. Lamb for Unix that filters the errors
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1551 first: >
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1552 :setl errorformat=%Z%f:%l:\ %m,%A%p^,%-G%*[^sl]%.%#
5690
40f18a1c1592 updated for version 7.4.191
Bram Moolenaar <bram@vim.org>
parents: 5294
diff changeset
1553 :setl makeprg=javac\ %:S\ 2>&1\ \\\|\ vim-javac-filter
1167
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1554
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1555 You need to put the following in "vim-javac-filter" somewhere in your path
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1556 (e.g., in ~/bin) and make it executable: >
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1557 #!/bin/sed -f
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1558 /\^$/s/\t/\ /g;/:[0-9]\+:/{h;d};/^[ \t]*\^/G;
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1559
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1560 In English, that sed script:
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1561 - Changes single tabs to single spaces and
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1562 - Moves the line with the filename, line number, error message to just after
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1563 the pointer line. That way, the unused error text between doesn't break
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1564 vim's notion of a "multi-line message" and also doesn't force us to include
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1565 it as a "continuation of a multi-line message."
cd26a75826d3 updated for version 7.1a
vimboss
parents: 1084
diff changeset
1566
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1567 *errorformat-ant*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1568 For ant (http://jakarta.apache.org/) the above errorformat has to be modified
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1569 to honour the leading [javac] in front of each javac output line: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1570 :set efm=%A\ %#[javac]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%#
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1571
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1572 The 'errorformat' can also be configured to handle ant together with either
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1573 javac or jikes. If you're using jikes, you should tell ant to use jikes' +E
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1574 command line switch which forces jikes to generate one-line error messages.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1575 This is what the second line (of a build.xml file) below does: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1576 <property name = "build.compiler" value = "jikes"/>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1577 <property name = "build.compiler.emacs" value = "true"/>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1578
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1579 The 'errorformat' which handles ant with both javac and jikes is: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1580 :set efm=\ %#[javac]\ %#%f:%l:%c:%*\\d:%*\\d:\ %t%[%^:]%#:%m,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1581 \%A\ %#[javac]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%#
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1582 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1583 *errorformat-jade*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1584 parsing jade (see http://www.jclark.com/) errors is simple: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1585 :set efm=jade:%f:%l:%c:%t:%m
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1586 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1587 *errorformat-LaTeX*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1588 The following is an example how an 'errorformat' string can be specified
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1589 for the (La)TeX typesetting system which displays error messages over
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1590 multiple lines. The output of ":clist" and ":cc" etc. commands displays
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1591 multi-lines in a single line, leading white space is removed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1592 It should be easy to adopt the above LaTeX errorformat to any compiler output
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1593 consisting of multi-line errors.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1594
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1595 The commands can be placed in a |vimrc| file or some other Vim script file,
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1596 e.g. a script containing LaTeX related stuff which is loaded only when editing
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1597 LaTeX sources.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1598 Make sure to copy all lines of the example (in the given order), afterwards
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1599 remove the comment lines. For the '\' notation at the start of some lines see
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1600 |line-continuation|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1601
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1602 First prepare 'makeprg' such that LaTeX will report multiple
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1603 errors; do not stop when the first error has occurred: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1604 :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1605 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1606 Start of multi-line error messages: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1607 :set efm=%E!\ LaTeX\ %trror:\ %m,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1608 \%E!\ %m,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1609 < Start of multi-line warning messages; the first two also
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1610 include the line number. Meaning of some regular expressions:
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1611 - "%.%#" (".*") matches a (possibly empty) string
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1612 - "%*\\d" ("\d\+") matches a number >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1613 \%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1614 \%+W%.%#\ at\ lines\ %l--%*\\d,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1615 \%WLaTeX\ %.%#Warning:\ %m,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1616 < Possible continuations of error/warning messages; the first
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1617 one also includes the line number: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1618 \%Cl.%l\ %m,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1619 \%+C\ \ %m.,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1620 \%+C%.%#-%.%#,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1621 \%+C%.%#[]%.%#,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1622 \%+C[]%.%#,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1623 \%+C%.%#%[{}\\]%.%#,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1624 \%+C<%.%#>%.%#,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1625 \%C\ \ %m,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1626 < Lines that match the following patterns do not contain any
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1627 important information; do not include them in messages: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1628 \%-GSee\ the\ LaTeX%m,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1629 \%-GType\ \ H\ <return>%m,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1630 \%-G\ ...%.%#,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1631 \%-G%.%#\ (C)\ %.%#,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1632 \%-G(see\ the\ transcript%.%#),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1633 < Generally exclude any empty or whitespace-only line from
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1634 being displayed: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1635 \%-G\\s%#,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1636 < The LaTeX output log does not specify the names of erroneous
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1637 source files per line; rather they are given globally,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1638 enclosed in parentheses.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1639 The following patterns try to match these names and store
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1640 them in an internal stack. The patterns possibly scan over
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1641 the same input line (one after another), the trailing "%r"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1642 conversion indicates the "rest" of the line that will be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1643 parsed in the next go until the end of line is reached.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1644
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1645 Overread a file name enclosed in '('...')'; do not push it
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1646 on a stack since the file apparently does not contain any
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1647 error: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1648 \%+O(%f)%r,
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 231
diff changeset
1649 < Push a file name onto the stack. The name is given after '(': >
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1650 \%+P(%f%r,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1651 \%+P\ %\\=(%f%r,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1652 \%+P%*[^()](%f%r,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1653 \%+P[%\\d%[^()]%#(%f%r,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1654 < Pop the last stored file name when a ')' is scanned: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1655 \%+Q)%r,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1656 \%+Q%*[^()])%r,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1657 \%+Q[%\\d%*[^()])%r
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1658
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1659 Note that in some cases file names in the LaTeX output log cannot be parsed
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1660 properly. The parser might have been messed up by unbalanced parentheses
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1661 then. The above example tries to catch the most relevant cases only.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1662 You can customize the given setting to suit your own purposes, for example,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1663 all the annoying "Overfull ..." warnings could be excluded from being
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1664 recognized as an error.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1665 Alternatively to filtering the LaTeX compiler output, it is also possible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1666 to directly read the *.log file that is produced by the [La]TeX compiler.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1667 This contains even more useful information about possible error causes.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1668 However, to properly parse such a complex file, an external filter should
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1669 be used. See the description further above how to make such a filter known
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1670 by Vim.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1671
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1672 *errorformat-Perl*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1673 In $VIMRUNTIME/tools you can find the efm_perl.pl script, which filters Perl
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1674 error messages into a format that quickfix mode will understand. See the
1624
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1675 start of the file about how to use it. (This script is deprecated, see
18ee39301b82 updated for version 7.2a
vimboss
parents: 1284
diff changeset
1676 |compiler-perl|.)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1677
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1678
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1679
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1680 vim:tw=78:ts=8:ft=help:norl: