1 To: [email protected] |
|
2 Subject: Patch 7.2.051 |
|
3 Fcc: outbox |
|
4 From: Bram Moolenaar <[email protected]> |
|
5 Mime-Version: 1.0 |
|
6 Content-Type: text/plain; charset=ISO-8859-1 |
|
7 Content-Transfer-Encoding: 8bit |
|
8 ------------ |
|
9 |
|
10 Patch 7.2.051 |
|
11 Problem: Can't avoid 'wildignore' and 'suffixes' for glob() and globpath(). |
|
12 Solution: Add an extra argument to these functions. (Ingo Karkat) |
|
13 Files: src/eval.c, src/ex_getln.c, src/proto/ex_getln.pro, |
|
14 runtime/doc/eval.txt, runtime/doc/options.txt |
|
15 |
|
16 |
|
17 *** ../vim-7.2.050/src/eval.c Thu Nov 20 16:11:03 2008 |
|
18 --- src/eval.c Thu Nov 27 22:15:40 2008 |
|
19 *************** |
|
20 *** 7564,7571 **** |
|
21 {"getwinposx", 0, 0, f_getwinposx}, |
|
22 {"getwinposy", 0, 0, f_getwinposy}, |
|
23 {"getwinvar", 2, 2, f_getwinvar}, |
|
24 ! {"glob", 1, 1, f_glob}, |
|
25 ! {"globpath", 2, 2, f_globpath}, |
|
26 {"has", 1, 1, f_has}, |
|
27 {"has_key", 2, 2, f_has_key}, |
|
28 {"haslocaldir", 0, 0, f_haslocaldir}, |
|
29 --- 7564,7571 ---- |
|
30 {"getwinposx", 0, 0, f_getwinposx}, |
|
31 {"getwinposy", 0, 0, f_getwinposy}, |
|
32 {"getwinvar", 2, 2, f_getwinvar}, |
|
33 ! {"glob", 1, 2, f_glob}, |
|
34 ! {"globpath", 2, 3, f_globpath}, |
|
35 {"has", 1, 1, f_has}, |
|
36 {"has_key", 2, 2, f_has_key}, |
|
37 {"haslocaldir", 0, 0, f_haslocaldir}, |
|
38 *************** |
|
39 *** 9557,9563 **** |
|
40 else |
|
41 { |
|
42 /* When the optional second argument is non-zero, don't remove matches |
|
43 ! * for 'suffixes' and 'wildignore' */ |
|
44 if (argvars[1].v_type != VAR_UNKNOWN |
|
45 && get_tv_number_chk(&argvars[1], &error)) |
|
46 flags |= WILD_KEEP_ALL; |
|
47 --- 9557,9563 ---- |
|
48 else |
|
49 { |
|
50 /* When the optional second argument is non-zero, don't remove matches |
|
51 ! * for 'wildignore' and don't put matches for 'suffixes' at the end. */ |
|
52 if (argvars[1].v_type != VAR_UNKNOWN |
|
53 && get_tv_number_chk(&argvars[1], &error)) |
|
54 flags |= WILD_KEEP_ALL; |
|
55 *************** |
|
56 *** 11323,11335 **** |
|
57 typval_T *argvars; |
|
58 typval_T *rettv; |
|
59 { |
|
60 expand_T xpc; |
|
61 |
|
62 ! ExpandInit(&xpc); |
|
63 ! xpc.xp_context = EXPAND_FILES; |
|
64 ! rettv->v_type = VAR_STRING; |
|
65 ! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]), |
|
66 ! NULL, WILD_USE_NL|WILD_SILENT, WILD_ALL); |
|
67 } |
|
68 |
|
69 /* |
|
70 --- 11323,11347 ---- |
|
71 typval_T *argvars; |
|
72 typval_T *rettv; |
|
73 { |
|
74 + int flags = WILD_SILENT|WILD_USE_NL; |
|
75 expand_T xpc; |
|
76 + int error = FALSE; |
|
77 |
|
78 ! /* When the optional second argument is non-zero, don't remove matches |
|
79 ! * for 'wildignore' and don't put matches for 'suffixes' at the end. */ |
|
80 ! if (argvars[1].v_type != VAR_UNKNOWN |
|
81 ! && get_tv_number_chk(&argvars[1], &error)) |
|
82 ! flags |= WILD_KEEP_ALL; |
|
83 ! rettv->v_type = VAR_STRING; |
|
84 ! if (!error) |
|
85 ! { |
|
86 ! ExpandInit(&xpc); |
|
87 ! xpc.xp_context = EXPAND_FILES; |
|
88 ! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]), |
|
89 ! NULL, flags, WILD_ALL); |
|
90 ! } |
|
91 ! else |
|
92 ! rettv->vval.v_string = NULL; |
|
93 } |
|
94 |
|
95 /* |
|
96 *************** |
|
97 *** 11340,11353 **** |
|
98 typval_T *argvars; |
|
99 typval_T *rettv; |
|
100 { |
|
101 char_u buf1[NUMBUFLEN]; |
|
102 char_u *file = get_tv_string_buf_chk(&argvars[1], buf1); |
|
103 |
|
104 rettv->v_type = VAR_STRING; |
|
105 ! if (file == NULL) |
|
106 rettv->vval.v_string = NULL; |
|
107 else |
|
108 ! rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file); |
|
109 } |
|
110 |
|
111 /* |
|
112 --- 11352,11373 ---- |
|
113 typval_T *argvars; |
|
114 typval_T *rettv; |
|
115 { |
|
116 + int flags = 0; |
|
117 char_u buf1[NUMBUFLEN]; |
|
118 char_u *file = get_tv_string_buf_chk(&argvars[1], buf1); |
|
119 + int error = FALSE; |
|
120 |
|
121 + /* When the optional second argument is non-zero, don't remove matches |
|
122 + * for 'wildignore' and don't put matches for 'suffixes' at the end. */ |
|
123 + if (argvars[2].v_type != VAR_UNKNOWN |
|
124 + && get_tv_number_chk(&argvars[2], &error)) |
|
125 + flags |= WILD_KEEP_ALL; |
|
126 rettv->v_type = VAR_STRING; |
|
127 ! if (file == NULL || error) |
|
128 rettv->vval.v_string = NULL; |
|
129 else |
|
130 ! rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file, |
|
131 ! flags); |
|
132 } |
|
133 |
|
134 /* |
|
135 *** ../vim-7.2.050/src/ex_getln.c Sat Nov 15 14:10:23 2008 |
|
136 --- src/ex_getln.c Thu Nov 20 18:37:20 2008 |
|
137 *************** |
|
138 *** 2524,2530 **** |
|
139 && ccline.xpc->xp_context != EXPAND_NOTHING |
|
140 && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL) |
|
141 { |
|
142 ! int i = ccline.xpc->xp_pattern - p; |
|
143 |
|
144 /* If xp_pattern points inside the old cmdbuff it needs to be adjusted |
|
145 * to point into the newly allocated memory. */ |
|
146 --- 2524,2530 ---- |
|
147 && ccline.xpc->xp_context != EXPAND_NOTHING |
|
148 && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL) |
|
149 { |
|
150 ! int i = (int)(ccline.xpc->xp_pattern - p); |
|
151 |
|
152 /* If xp_pattern points inside the old cmdbuff it needs to be adjusted |
|
153 * to point into the newly allocated memory. */ |
|
154 *************** |
|
155 *** 4897,4903 **** |
|
156 if (s == NULL) |
|
157 return FAIL; |
|
158 sprintf((char *)s, "%s/%s*.vim", dirname, pat); |
|
159 ! all = globpath(p_rtp, s); |
|
160 vim_free(s); |
|
161 if (all == NULL) |
|
162 return FAIL; |
|
163 --- 4897,4903 ---- |
|
164 if (s == NULL) |
|
165 return FAIL; |
|
166 sprintf((char *)s, "%s/%s*.vim", dirname, pat); |
|
167 ! all = globpath(p_rtp, s, 0); |
|
168 vim_free(s); |
|
169 if (all == NULL) |
|
170 return FAIL; |
|
171 *************** |
|
172 *** 4938,4946 **** |
|
173 * newlines. Returns NULL for an error or no matches. |
|
174 */ |
|
175 char_u * |
|
176 ! globpath(path, file) |
|
177 char_u *path; |
|
178 char_u *file; |
|
179 { |
|
180 expand_T xpc; |
|
181 char_u *buf; |
|
182 --- 4938,4947 ---- |
|
183 * newlines. Returns NULL for an error or no matches. |
|
184 */ |
|
185 char_u * |
|
186 ! globpath(path, file, expand_options) |
|
187 char_u *path; |
|
188 char_u *file; |
|
189 + int expand_options; |
|
190 { |
|
191 expand_T xpc; |
|
192 char_u *buf; |
|
193 *************** |
|
194 *** 4969,4978 **** |
|
195 { |
|
196 add_pathsep(buf); |
|
197 STRCAT(buf, file); |
|
198 ! if (ExpandFromContext(&xpc, buf, &num_p, &p, WILD_SILENT) != FAIL |
|
199 ! && num_p > 0) |
|
200 { |
|
201 ! ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT); |
|
202 for (len = 0, i = 0; i < num_p; ++i) |
|
203 len += (int)STRLEN(p[i]) + 1; |
|
204 |
|
205 --- 4970,4979 ---- |
|
206 { |
|
207 add_pathsep(buf); |
|
208 STRCAT(buf, file); |
|
209 ! if (ExpandFromContext(&xpc, buf, &num_p, &p, |
|
210 ! WILD_SILENT|expand_options) != FAIL && num_p > 0) |
|
211 { |
|
212 ! ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT|expand_options); |
|
213 for (len = 0, i = 0; i < num_p; ++i) |
|
214 len += (int)STRLEN(p[i]) + 1; |
|
215 |
|
216 *** ../vim-7.2.050/src/proto/ex_getln.pro Wed May 28 16:49:01 2008 |
|
217 --- src/proto/ex_getln.pro Thu Nov 20 18:27:57 2008 |
|
218 *************** |
|
219 *** 31,37 **** |
|
220 void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col)); |
|
221 int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches)); |
|
222 int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)))); |
|
223 ! char_u *globpath __ARGS((char_u *path, char_u *file)); |
|
224 void init_history __ARGS((void)); |
|
225 int get_histtype __ARGS((char_u *name)); |
|
226 void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep)); |
|
227 --- 31,37 ---- |
|
228 void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col)); |
|
229 int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches)); |
|
230 int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)))); |
|
231 ! char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options)); |
|
232 void init_history __ARGS((void)); |
|
233 int get_histtype __ARGS((char_u *name)); |
|
234 void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep)); |
|
235 *** ../vim-7.2.050/runtime/doc/eval.txt Sun Nov 9 13:43:25 2008 |
|
236 --- runtime/doc/eval.txt Thu Nov 27 22:17:13 2008 |
|
237 *************** |
|
238 *** 1,4 **** |
|
239 ! *eval.txt* For Vim version 7.2. Last change: 2008 Nov 02 |
|
240 |
|
241 |
|
242 VIM REFERENCE MANUAL by Bram Moolenaar |
|
243 --- 1,4 ---- |
|
244 ! *eval.txt* For Vim version 7.2. Last change: 2008 Nov 27 |
|
245 |
|
246 |
|
247 VIM REFERENCE MANUAL by Bram Moolenaar |
|
248 *************** |
|
249 *** 1706,1712 **** |
|
250 exists( {expr}) Number TRUE if {expr} exists |
|
251 extend({expr1}, {expr2} [, {expr3}]) |
|
252 List/Dict insert items of {expr2} into {expr1} |
|
253 ! expand( {expr}) String expand special keywords in {expr} |
|
254 feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer |
|
255 filereadable( {file}) Number TRUE if {file} is a readable file |
|
256 filewritable( {file}) Number TRUE if {file} is a writable file |
|
257 --- 1709,1715 ---- |
|
258 exists( {expr}) Number TRUE if {expr} exists |
|
259 extend({expr1}, {expr2} [, {expr3}]) |
|
260 List/Dict insert items of {expr2} into {expr1} |
|
261 ! expand( {expr} [, {flag}]) String expand special keywords in {expr} |
|
262 feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer |
|
263 filereadable( {file}) Number TRUE if {file} is a readable file |
|
264 filewritable( {file}) Number TRUE if {file} is a writable file |
|
265 *************** |
|
266 *** 1758,1765 **** |
|
267 getwinposx() Number X coord in pixels of GUI Vim window |
|
268 getwinposy() Number Y coord in pixels of GUI Vim window |
|
269 getwinvar( {nr}, {varname}) any variable {varname} in window {nr} |
|
270 ! glob( {expr}) String expand file wildcards in {expr} |
|
271 ! globpath( {path}, {expr}) String do glob({expr}) for all dirs in {path} |
|
272 has( {feature}) Number TRUE if feature {feature} supported |
|
273 has_key( {dict}, {key}) Number TRUE if {dict} has entry {key} |
|
274 haslocaldir() Number TRUE if current window executed |:lcd| |
|
275 --- 1761,1769 ---- |
|
276 getwinposx() Number X coord in pixels of GUI Vim window |
|
277 getwinposy() Number Y coord in pixels of GUI Vim window |
|
278 getwinvar( {nr}, {varname}) any variable {varname} in window {nr} |
|
279 ! glob( {expr} [, {flag}]) String expand file wildcards in {expr} |
|
280 ! globpath( {path}, {expr} [, {flag}]) |
|
281 ! String do glob({expr}) for all dirs in {path} |
|
282 has( {feature}) Number TRUE if feature {feature} supported |
|
283 has_key( {dict}, {key}) Number TRUE if {dict} has entry {key} |
|
284 haslocaldir() Number TRUE if current window executed |:lcd| |
|
285 *************** |
|
286 *** 3286,3299 **** |
|
287 :let list_is_on = getwinvar(2, '&list') |
|
288 :echo "myvar = " . getwinvar(1, 'myvar') |
|
289 < |
|
290 ! *glob()* |
|
291 ! glob({expr}) Expand the file wildcards in {expr}. See |wildcards| for the |
|
292 use of special characters. |
|
293 The result is a String. |
|
294 When there are several matches, they are separated by <NL> |
|
295 characters. |
|
296 ! The 'wildignore' option applies: Names matching one of the |
|
297 ! patterns in 'wildignore' will be skipped. |
|
298 If the expansion fails, the result is an empty string. |
|
299 A name for a non-existing file is not included. |
|
300 |
|
301 --- 3290,3305 ---- |
|
302 :let list_is_on = getwinvar(2, '&list') |
|
303 :echo "myvar = " . getwinvar(1, 'myvar') |
|
304 < |
|
305 ! glob({expr} [, {flag}]) *glob()* |
|
306 ! Expand the file wildcards in {expr}. See |wildcards| for the |
|
307 use of special characters. |
|
308 The result is a String. |
|
309 When there are several matches, they are separated by <NL> |
|
310 characters. |
|
311 ! Unless the optional {flag} argument is given and is non-zero, |
|
312 ! the 'suffixes' and 'wildignore' options apply: Names matching |
|
313 ! one of the patterns in 'wildignore' will be skipped and |
|
314 ! 'suffixes' affect the ordering of matches. |
|
315 If the expansion fails, the result is an empty string. |
|
316 A name for a non-existing file is not included. |
|
317 |
|
318 *************** |
|
319 *** 3307,3326 **** |
|
320 See |expand()| for expanding special Vim variables. See |
|
321 |system()| for getting the raw output of an external command. |
|
322 |
|
323 ! globpath({path}, {expr}) *globpath()* |
|
324 Perform glob() on all directories in {path} and concatenate |
|
325 the results. Example: > |
|
326 :echo globpath(&rtp, "syntax/c.vim") |
|
327 < {path} is a comma-separated list of directory names. Each |
|
328 directory name is prepended to {expr} and expanded like with |
|
329 ! glob(). A path separator is inserted when needed. |
|
330 To add a comma inside a directory name escape it with a |
|
331 backslash. Note that on MS-Windows a directory may have a |
|
332 trailing backslash, remove it if you put a comma after it. |
|
333 If the expansion fails for one of the directories, there is no |
|
334 error message. |
|
335 ! The 'wildignore' option applies: Names matching one of the |
|
336 ! patterns in 'wildignore' will be skipped. |
|
337 |
|
338 The "**" item can be used to search in a directory tree. |
|
339 For example, to find all "README.txt" files in the directories |
|
340 --- 3313,3334 ---- |
|
341 See |expand()| for expanding special Vim variables. See |
|
342 |system()| for getting the raw output of an external command. |
|
343 |
|
344 ! globpath({path}, {expr} [, {flag}]) *globpath()* |
|
345 Perform glob() on all directories in {path} and concatenate |
|
346 the results. Example: > |
|
347 :echo globpath(&rtp, "syntax/c.vim") |
|
348 < {path} is a comma-separated list of directory names. Each |
|
349 directory name is prepended to {expr} and expanded like with |
|
350 ! |glob()|. A path separator is inserted when needed. |
|
351 To add a comma inside a directory name escape it with a |
|
352 backslash. Note that on MS-Windows a directory may have a |
|
353 trailing backslash, remove it if you put a comma after it. |
|
354 If the expansion fails for one of the directories, there is no |
|
355 error message. |
|
356 ! Unless the optional {flag} argument is given and is non-zero, |
|
357 ! the 'suffixes' and 'wildignore' options apply: Names matching |
|
358 ! one of the patterns in 'wildignore' will be skipped and |
|
359 ! 'suffixes' affect the ordering of matches. |
|
360 |
|
361 The "**" item can be used to search in a directory tree. |
|
362 For example, to find all "README.txt" files in the directories |
|
363 *** ../vim-7.2.050/runtime/doc/options.txt Sat Aug 9 19:36:49 2008 |
|
364 --- runtime/doc/options.txt Tue Nov 25 23:43:55 2008 |
|
365 *************** |
|
366 *** 1,4 **** |
|
367 ! *options.txt* For Vim version 7.2. Last change: 2008 Aug 06 |
|
368 |
|
369 |
|
370 VIM REFERENCE MANUAL by Bram Moolenaar |
|
371 --- 1,4 ---- |
|
372 ! *options.txt* For Vim version 7.2. Last change: 2008 Nov 25 |
|
373 |
|
374 |
|
375 VIM REFERENCE MANUAL by Bram Moolenaar |
|
376 *************** |
|
377 *** 7472,7478 **** |
|
378 {not available when compiled without the |+wildignore| |
|
379 feature} |
|
380 A list of file patterns. A file that matches with one of these |
|
381 ! patterns is ignored when completing file or directory names. |
|
382 The pattern is used like with |:autocmd|, see |autocmd-patterns|. |
|
383 Also see 'suffixes'. |
|
384 Example: > |
|
385 --- 7481,7489 ---- |
|
386 {not available when compiled without the |+wildignore| |
|
387 feature} |
|
388 A list of file patterns. A file that matches with one of these |
|
389 ! patterns is ignored when completing file or directory names, and |
|
390 ! influences the result of |expand()|, |glob()| and |globpath()| unless |
|
391 ! a flag is passed to disable this. |
|
392 The pattern is used like with |:autocmd|, see |autocmd-patterns|. |
|
393 Also see 'suffixes'. |
|
394 Example: > |
|
395 *** ../vim-7.2.050/src/version.c Fri Nov 28 10:08:05 2008 |
|
396 --- src/version.c Fri Nov 28 10:55:44 2008 |
|
397 *************** |
|
398 *** 678,679 **** |
|
399 --- 678,681 ---- |
|
400 { /* Add new patch number below this line */ |
|
401 + /**/ |
|
402 + 51, |
|
403 /**/ |
|
404 |
|
405 -- |
|
406 Not too long ago, unzipping in public was illegal... |
|
407 |
|
408 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\ |
|
409 /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
|
410 \\\ download, build and distribute -- http://www.A-A-P.org /// |
|
411 \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |
|