|
1 To: [email protected] |
|
2 Subject: Patch 7.2.031 |
|
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.031 |
|
11 Problem: Information in the viminfo file about previously edited files is |
|
12 not available to the user. There is no way to get a complete list |
|
13 of files edited in previous Vim sessions. |
|
14 Solution: Add v:oldfiles and fill it with the list of old file names when |
|
15 first reading the viminfo file. Add the ":oldfiles" command, |
|
16 ":browse oldfiles" and the "#<123" special file name. Increase |
|
17 the default value for 'viminfo' from '20 to '100. |
|
18 Files: runtime/doc/cmdline.txt, runtime/doc/eval.txt, |
|
19 runtime/doc/starting.txt, runtime/doc/usr_21.txt, src/eval.c, |
|
20 src/ex_cmds.c, src/ex_cmds.h, src/ex_docmd.c, src/feature.h, |
|
21 src/fileio.c, src/main.c, src/mark.c, src/misc1.c, |
|
22 src/proto/eval.pro, src/proto/ex_cmds.pro, src/proto/mark.pro, |
|
23 src/option.c, src/structs.h, src/vim.h |
|
24 |
|
25 |
|
26 *** ../vim-7.2.030/runtime/doc/cmdline.txt Sat Aug 9 19:36:46 2008 |
|
27 --- runtime/doc/cmdline.txt Thu Sep 18 22:55:27 2008 |
|
28 *************** |
|
29 *** 1,4 **** |
|
30 ! *cmdline.txt* For Vim version 7.2. Last change: 2008 Jul 29 |
|
31 |
|
32 |
|
33 VIM REFERENCE MANUAL by Bram Moolenaar |
|
34 --- 1,4 ---- |
|
35 ! *cmdline.txt* For Vim version 7.2. Last change: 2008 Sep 18 |
|
36 |
|
37 |
|
38 VIM REFERENCE MANUAL by Bram Moolenaar |
|
39 *************** |
|
40 *** 157,162 **** |
|
41 --- 157,167 ---- |
|
42 (doesn't work at the expression prompt; some |
|
43 things such as changing the buffer or current |
|
44 window are not allowed to avoid side effects) |
|
45 + When the result is a |List| the items are used |
|
46 + as lines. They can have line breaks inside |
|
47 + too. |
|
48 + When the result is a Float it's automatically |
|
49 + converted to a String. |
|
50 See |registers| about registers. {not in Vi} |
|
51 Implementation detail: When using the |expression| register |
|
52 and invoking setcmdpos(), this sets the position before |
|
53 *************** |
|
54 *** 730,748 **** |
|
55 In Ex commands, at places where a file name can be used, the following |
|
56 characters have a special meaning. These can also be used in the expression |
|
57 function expand() |expand()|. |
|
58 ! % is replaced with the current file name *:_%* |
|
59 ! # is replaced with the alternate file name *:_#* |
|
60 #n (where n is a number) is replaced with the file name of |
|
61 ! buffer n. "#0" is the same as "#" |
|
62 ! ## is replaced with all names in the argument list *:_##* |
|
63 concatenated, separated by spaces. Each space in a name |
|
64 is preceded with a backslash. |
|
65 ! Note that these give the file name as it was typed. If an absolute path is |
|
66 ! needed (when using the file name from a different directory), you need to add |
|
67 ! ":p". See |filename-modifiers|. |
|
68 Note that backslashes are inserted before spaces, so that the command will |
|
69 correctly interpret the file name. But this doesn't happen for shell |
|
70 ! commands. For those you probably have to use quotes: > |
|
71 :!ls "%" |
|
72 :r !spell "%" |
|
73 |
|
74 --- 735,763 ---- |
|
75 In Ex commands, at places where a file name can be used, the following |
|
76 characters have a special meaning. These can also be used in the expression |
|
77 function expand() |expand()|. |
|
78 ! % Is replaced with the current file name. *:_%* *c_%* |
|
79 ! # Is replaced with the alternate file name. *:_#* *c_#* |
|
80 #n (where n is a number) is replaced with the file name of |
|
81 ! buffer n. "#0" is the same as "#". |
|
82 ! ## Is replaced with all names in the argument list *:_##* *c_##* |
|
83 concatenated, separated by spaces. Each space in a name |
|
84 is preceded with a backslash. |
|
85 ! #<n (where n is a number > 0) is replaced with old *:_#<* *c_#<* |
|
86 ! file name n. See |:oldfiles| or |v:oldfiles| to get the |
|
87 ! number. *E809* |
|
88 ! {only when compiled with the +eval and +viminfo features} |
|
89 ! |
|
90 ! Note that these, except "#<n", give the file name as it was typed. If an |
|
91 ! absolute path is needed (when using the file name from a different directory), |
|
92 ! you need to add ":p". See |filename-modifiers|. |
|
93 ! |
|
94 ! The "#<n" item returns an absolute path, but it will start with "~/" for files |
|
95 ! below your home directory. |
|
96 ! |
|
97 Note that backslashes are inserted before spaces, so that the command will |
|
98 correctly interpret the file name. But this doesn't happen for shell |
|
99 ! commands. For those you probably have to use quotes (this fails for files |
|
100 ! that contain a quote and wildcards): > |
|
101 :!ls "%" |
|
102 :r !spell "%" |
|
103 |
|
104 *** ../vim-7.2.030/runtime/doc/eval.txt Sat Aug 9 19:36:47 2008 |
|
105 --- runtime/doc/eval.txt Sun Nov 2 14:25:38 2008 |
|
106 *************** |
|
107 *** 1,4 **** |
|
108 ! *eval.txt* For Vim version 7.2. Last change: 2008 Aug 09 |
|
109 |
|
110 |
|
111 VIM REFERENCE MANUAL by Bram Moolenaar |
|
112 --- 1,4 ---- |
|
113 ! *eval.txt* For Vim version 7.2. Last change: 2008 Nov 02 |
|
114 |
|
115 |
|
116 VIM REFERENCE MANUAL by Bram Moolenaar |
|
117 *************** |
|
118 *** 1484,1489 **** |
|
119 --- 1484,1500 ---- |
|
120 This is the screen column number, like with |virtcol()|. The |
|
121 value is zero when there was no mouse button click. |
|
122 |
|
123 + *v:oldfiles* *oldfiles-variable* |
|
124 + v:oldfiles List of file names that is loaded from the |viminfo| file on |
|
125 + startup. These are the files that Vim remembers marks for. |
|
126 + The length of the List is limited by the ' argument of the |
|
127 + 'viminfo' option (default is 100). |
|
128 + Also see |:oldfiles| and |c_#<|. |
|
129 + The List can be modified, but this has no effect on what is |
|
130 + stored in the |viminfo| file later. If you use values other |
|
131 + than String this will cause trouble. |
|
132 + {only when compiled with the +viminfo feature} |
|
133 + |
|
134 *v:operator* *operator-variable* |
|
135 v:operator The last operator given in Normal mode. This is a single |
|
136 character except for commands starting with <g> or <z>, |
|
137 *** ../vim-7.2.030/runtime/doc/starting.txt Sat Aug 9 19:36:52 2008 |
|
138 --- runtime/doc/starting.txt Sun Nov 9 12:12:19 2008 |
|
139 *************** |
|
140 *** 1,4 **** |
|
141 ! *starting.txt* For Vim version 7.2. Last change: 2008 Jun 21 |
|
142 |
|
143 |
|
144 VIM REFERENCE MANUAL by Bram Moolenaar |
|
145 --- 1,4 ---- |
|
146 ! *starting.txt* For Vim version 7.2. Last change: 2008 Nov 09 |
|
147 |
|
148 |
|
149 VIM REFERENCE MANUAL by Bram Moolenaar |
|
150 *************** |
|
151 *** 1337,1344 **** |
|
152 *viminfo-read* |
|
153 When Vim is started and the 'viminfo' option is non-empty, the contents of |
|
154 the viminfo file are read and the info can be used in the appropriate places. |
|
155 ! The marks are not read in at startup (but file marks are). See |
|
156 ! |initialization| for how to set the 'viminfo' option upon startup. |
|
157 |
|
158 *viminfo-write* |
|
159 When Vim exits and 'viminfo' is non-empty, the info is stored in the viminfo |
|
160 --- 1335,1343 ---- |
|
161 *viminfo-read* |
|
162 When Vim is started and the 'viminfo' option is non-empty, the contents of |
|
163 the viminfo file are read and the info can be used in the appropriate places. |
|
164 ! The |v:oldfiles| variable is filled. The marks are not read in at startup |
|
165 ! (but file marks are). See |initialization| for how to set the 'viminfo' |
|
166 ! option upon startup. |
|
167 |
|
168 *viminfo-write* |
|
169 When Vim exits and 'viminfo' is non-empty, the info is stored in the viminfo |
|
170 *************** |
|
171 *** 1372,1377 **** |
|
172 --- 1371,1378 ---- |
|
173 that start with any string given with the "r" flag in 'viminfo'. This can be |
|
174 used to avoid saving marks for files on removable media (for MS-DOS you would |
|
175 use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:"). |
|
176 + The |v:oldfiles| variable is filled with the file names that the viminfo file |
|
177 + has marks for. |
|
178 |
|
179 *viminfo-file-marks* |
|
180 Uppercase marks ('A to 'Z) are stored when writing the viminfo file. The |
|
181 *************** |
|
182 *** 1463,1470 **** |
|
183 *:rv* *:rviminfo* *E195* |
|
184 :rv[iminfo][!] [file] Read from viminfo file [file] (default: see above). |
|
185 If [!] is given, then any information that is |
|
186 ! already set (registers, marks, etc.) will be |
|
187 ! overwritten. {not in Vi} |
|
188 |
|
189 *:wv* *:wviminfo* *E137* *E138* *E574* |
|
190 :wv[iminfo][!] [file] Write to viminfo file [file] (default: see above). |
|
191 --- 1464,1471 ---- |
|
192 *:rv* *:rviminfo* *E195* |
|
193 :rv[iminfo][!] [file] Read from viminfo file [file] (default: see above). |
|
194 If [!] is given, then any information that is |
|
195 ! already set (registers, marks, |v:oldfiles|, etc.) |
|
196 ! will be overwritten {not in Vi} |
|
197 |
|
198 *:wv* *:wviminfo* *E137* *E138* *E574* |
|
199 :wv[iminfo][!] [file] Write to viminfo file [file] (default: see above). |
|
200 *************** |
|
201 *** 1479,1482 **** |
|
202 --- 1480,1499 ---- |
|
203 the .viminfo file. |
|
204 {not in Vi} |
|
205 |
|
206 + *:ol* *:oldfiles* |
|
207 + :ol[dfiles] List the files that have marks stored in the viminfo |
|
208 + file. This list is read on startup and only changes |
|
209 + afterwards with ":rviminfo!". Also see |v:oldfiles|. |
|
210 + The number can be used with |c_#<|. |
|
211 + {not in Vi, only when compiled with the +eval feature} |
|
212 + |
|
213 + :bro[wse] ol[dfiles][!] |
|
214 + List file names as with |:oldfiles|, and then prompt |
|
215 + for a number. When the number is valid that file from |
|
216 + the list is edited. |
|
217 + If you get the |press-enter| prompt you can press "q" |
|
218 + and still get the prompt to enter a file number. |
|
219 + Use ! to abondon a modified buffer. |abandon| |
|
220 + {not when compiled with tiny or small features} |
|
221 + |
|
222 vim:tw=78:ts=8:ft=help:norl: |
|
223 *** ../vim-7.2.030/runtime/doc/usr_21.txt Sat Aug 9 19:36:53 2008 |
|
224 --- runtime/doc/usr_21.txt Sun Nov 9 12:14:10 2008 |
|
225 *************** |
|
226 *** 1,4 **** |
|
227 ! *usr_21.txt* For Vim version 7.2. Last change: 2007 May 01 |
|
228 |
|
229 VIM USER MANUAL - by Bram Moolenaar |
|
230 |
|
231 --- 1,4 ---- |
|
232 ! *usr_21.txt* For Vim version 7.2. Last change: 2008 Nov 09 |
|
233 |
|
234 VIM USER MANUAL - by Bram Moolenaar |
|
235 |
|
236 *************** |
|
237 *** 153,159 **** |
|
238 to be lost. Each item can be remembered only once. |
|
239 |
|
240 |
|
241 ! GETTING BACK TO WHERE YOU WERE |
|
242 |
|
243 You are halfway editing a file and it's time to leave for holidays. You exit |
|
244 Vim and go enjoy yourselves, forgetting all about your work. After a couple |
|
245 --- 153,159 ---- |
|
246 to be lost. Each item can be remembered only once. |
|
247 |
|
248 |
|
249 ! GETTING BACK TO WHERE YOU STOPPED VIM |
|
250 |
|
251 You are halfway editing a file and it's time to leave for holidays. You exit |
|
252 Vim and go enjoy yourselves, forgetting all about your work. After a couple |
|
253 *************** |
|
254 *** 168,173 **** |
|
255 --- 168,215 ---- |
|
256 The |:marks| command is useful to find out where '0 to '9 will take you. |
|
257 |
|
258 |
|
259 + GETTING BACK TO SOME FILE |
|
260 + |
|
261 + If you want to go back to a file that you edited recently, but not when |
|
262 + exiting Vim, there is a slightly more complicated way. You can see a list of |
|
263 + files by typing the command: > |
|
264 + |
|
265 + :oldfiles |
|
266 + < 1: ~/.viminfo ~ |
|
267 + 2: ~/text/resume.txt ~ |
|
268 + 3: /tmp/draft ~ |
|
269 + |
|
270 + Now you would like to edit the second file, which is in the list preceded by |
|
271 + "2:". You type: > |
|
272 + |
|
273 + :e #<2 |
|
274 + |
|
275 + Instead of ":e" you can use any command that has a file name argument, the |
|
276 + "#<2" item works in the same place as "%" (current file name) and "#" |
|
277 + (alternate file name). So you can also split the window to edit the third |
|
278 + file: > |
|
279 + |
|
280 + :split #<3 |
|
281 + |
|
282 + That #<123 thing is a bit complicated when you just want to edit a file. |
|
283 + Fortunately there is a simpler way: > |
|
284 + |
|
285 + :browse oldfiles |
|
286 + < 1: ~/.viminfo ~ |
|
287 + 2: ~/text/resume.txt ~ |
|
288 + 3: /tmp/draft ~ |
|
289 + -- More -- |
|
290 + |
|
291 + You get the same list of files as with |:oldfiles|. If you want to edit |
|
292 + "resume.txt" first press "q" to stop the listing. You will get a prompt: |
|
293 + |
|
294 + Type number and <Enter> (empty cancels): ~ |
|
295 + |
|
296 + Type "2" and press <Enter> to edit the second file. |
|
297 + |
|
298 + More info at |:oldfiles|, |v:oldfiles| and |c_#<|. |
|
299 + |
|
300 + |
|
301 MOVE INFO FROM ONE VIM TO ANOTHER |
|
302 |
|
303 You can use the ":wviminfo" and ":rviminfo" commands to save and restore the |
|
304 *** ../vim-7.2.030/src/eval.c Thu Nov 6 11:04:50 2008 |
|
305 --- src/eval.c Sun Nov 9 11:59:39 2008 |
|
306 *************** |
|
307 *** 348,353 **** |
|
308 --- 348,354 ---- |
|
309 {VV_NAME("mouse_col", VAR_NUMBER), 0}, |
|
310 {VV_NAME("operator", VAR_STRING), VV_RO}, |
|
311 {VV_NAME("searchforward", VAR_NUMBER), 0}, |
|
312 + {VV_NAME("oldfiles", VAR_LIST), 0}, |
|
313 }; |
|
314 |
|
315 /* shorthand */ |
|
316 *************** |
|
317 *** 355,360 **** |
|
318 --- 356,362 ---- |
|
319 #define vv_nr vv_di.di_tv.vval.v_number |
|
320 #define vv_float vv_di.di_tv.vval.v_float |
|
321 #define vv_str vv_di.di_tv.vval.v_string |
|
322 + #define vv_list vv_di.di_tv.vval.v_list |
|
323 #define vv_tv vv_di.di_tv |
|
324 |
|
325 /* |
|
326 *************** |
|
327 *** 426,432 **** |
|
328 static long list_idx_of_item __ARGS((list_T *l, listitem_T *item)); |
|
329 static void list_append __ARGS((list_T *l, listitem_T *item)); |
|
330 static int list_append_tv __ARGS((list_T *l, typval_T *tv)); |
|
331 - static int list_append_string __ARGS((list_T *l, char_u *str, int len)); |
|
332 static int list_append_number __ARGS((list_T *l, varnumber_T n)); |
|
333 static int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item)); |
|
334 static int list_extend __ARGS((list_T *l1, list_T *l2, listitem_T *bef)); |
|
335 --- 428,433 ---- |
|
336 *************** |
|
337 *** 845,852 **** |
|
338 p = &vimvars[i]; |
|
339 if (p->vv_di.di_tv.v_type == VAR_STRING) |
|
340 { |
|
341 ! vim_free(p->vv_di.di_tv.vval.v_string); |
|
342 ! p->vv_di.di_tv.vval.v_string = NULL; |
|
343 } |
|
344 } |
|
345 hash_clear(&vimvarht); |
|
346 --- 846,858 ---- |
|
347 p = &vimvars[i]; |
|
348 if (p->vv_di.di_tv.v_type == VAR_STRING) |
|
349 { |
|
350 ! vim_free(p->vv_string); |
|
351 ! p->vv_string = NULL; |
|
352 ! } |
|
353 ! else if (p->vv_di.di_tv.v_type == VAR_LIST) |
|
354 ! { |
|
355 ! list_unref(p->vv_list); |
|
356 ! p->vv_list = NULL; |
|
357 } |
|
358 } |
|
359 hash_clear(&vimvarht); |
|
360 *************** |
|
361 *** 6057,6062 **** |
|
362 --- 6063,6087 ---- |
|
363 } |
|
364 |
|
365 /* |
|
366 + * Get list item "l[idx - 1]" as a string. Returns NULL for failure. |
|
367 + */ |
|
368 + char_u * |
|
369 + list_find_str(l, idx) |
|
370 + list_T *l; |
|
371 + long idx; |
|
372 + { |
|
373 + listitem_T *li; |
|
374 + |
|
375 + li = list_find(l, idx - 1); |
|
376 + if (li == NULL) |
|
377 + { |
|
378 + EMSGN(_(e_listidx), idx); |
|
379 + return NULL; |
|
380 + } |
|
381 + return get_tv_string(&li->li_tv); |
|
382 + } |
|
383 + |
|
384 + /* |
|
385 * Locate "item" list "l" and return its index. |
|
386 * Returns -1 when "item" is not in the list. |
|
387 */ |
|
388 *************** |
|
389 *** 6147,6153 **** |
|
390 * When "len" >= 0 use "str[len]". |
|
391 * Returns FAIL when out of memory. |
|
392 */ |
|
393 ! static int |
|
394 list_append_string(l, str, len) |
|
395 list_T *l; |
|
396 char_u *str; |
|
397 --- 6172,6178 ---- |
|
398 * When "len" >= 0 use "str[len]". |
|
399 * Returns FAIL when out of memory. |
|
400 */ |
|
401 ! int |
|
402 list_append_string(l, str, len) |
|
403 list_T *l; |
|
404 char_u *str; |
|
405 *************** |
|
406 *** 6507,6512 **** |
|
407 --- 6532,6540 ---- |
|
408 set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID); |
|
409 } |
|
410 |
|
411 + /* v: vars */ |
|
412 + set_ref_in_ht(&vimvarht, copyID); |
|
413 + |
|
414 /* |
|
415 * 2. Go through the list of dicts and free items without the copyID. |
|
416 */ |
|
417 *************** |
|
418 *** 6597,6603 **** |
|
419 { |
|
420 case VAR_DICT: |
|
421 dd = tv->vval.v_dict; |
|
422 ! if (dd->dv_copyID != copyID) |
|
423 { |
|
424 /* Didn't see this dict yet. */ |
|
425 dd->dv_copyID = copyID; |
|
426 --- 6625,6631 ---- |
|
427 { |
|
428 case VAR_DICT: |
|
429 dd = tv->vval.v_dict; |
|
430 ! if (dd != NULL && dd->dv_copyID != copyID) |
|
431 { |
|
432 /* Didn't see this dict yet. */ |
|
433 dd->dv_copyID = copyID; |
|
434 *************** |
|
435 *** 6607,6613 **** |
|
436 |
|
437 case VAR_LIST: |
|
438 ll = tv->vval.v_list; |
|
439 ! if (ll->lv_copyID != copyID) |
|
440 { |
|
441 /* Didn't see this list yet. */ |
|
442 ll->lv_copyID = copyID; |
|
443 --- 6635,6641 ---- |
|
444 |
|
445 case VAR_LIST: |
|
446 ll = tv->vval.v_list; |
|
447 ! if (ll != NULL && ll->lv_copyID != copyID) |
|
448 { |
|
449 /* Didn't see this list yet. */ |
|
450 ll->lv_copyID = copyID; |
|
451 *************** |
|
452 *** 18106,18111 **** |
|
453 --- 18134,18150 ---- |
|
454 } |
|
455 |
|
456 /* |
|
457 + * Get List v: variable value. Caller must take care of reference count when |
|
458 + * needed. |
|
459 + */ |
|
460 + list_T * |
|
461 + get_vim_var_list(idx) |
|
462 + int idx; |
|
463 + { |
|
464 + return vimvars[idx].vv_list; |
|
465 + } |
|
466 + |
|
467 + /* |
|
468 * Set v:count, v:count1 and v:prevcount. |
|
469 */ |
|
470 void |
|
471 *************** |
|
472 *** 18141,18146 **** |
|
473 --- 18180,18199 ---- |
|
474 } |
|
475 |
|
476 /* |
|
477 + * Set List v: variable to "val". |
|
478 + */ |
|
479 + void |
|
480 + set_vim_var_list(idx, val) |
|
481 + int idx; |
|
482 + list_T *val; |
|
483 + { |
|
484 + list_unref(vimvars[idx].vv_list); |
|
485 + vimvars[idx].vv_list = val; |
|
486 + if (val != NULL) |
|
487 + ++val->lv_refcount; |
|
488 + } |
|
489 + |
|
490 + /* |
|
491 * Set v:register if needed. |
|
492 */ |
|
493 void |
|
494 *************** |
|
495 *** 21900,21905 **** |
|
496 --- 21953,22014 ---- |
|
497 } |
|
498 } |
|
499 |
|
500 + /* |
|
501 + * List v:oldfiles in a nice way. |
|
502 + */ |
|
503 + /*ARGSUSED*/ |
|
504 + void |
|
505 + ex_oldfiles(eap) |
|
506 + exarg_T *eap; |
|
507 + { |
|
508 + list_T *l = vimvars[VV_OLDFILES].vv_list; |
|
509 + listitem_T *li; |
|
510 + int nr = 0; |
|
511 + |
|
512 + if (l == NULL) |
|
513 + msg((char_u *)_("No old files")); |
|
514 + else |
|
515 + { |
|
516 + msg_start(); |
|
517 + msg_scroll = TRUE; |
|
518 + for (li = l->lv_first; li != NULL && !got_int; li = li->li_next) |
|
519 + { |
|
520 + msg_outnum((long)++nr); |
|
521 + MSG_PUTS(": "); |
|
522 + msg_outtrans(get_tv_string(&li->li_tv)); |
|
523 + msg_putchar('\n'); |
|
524 + out_flush(); /* output one line at a time */ |
|
525 + ui_breakcheck(); |
|
526 + } |
|
527 + /* Assume "got_int" was set to truncate the listing. */ |
|
528 + got_int = FALSE; |
|
529 + |
|
530 + #ifdef FEAT_BROWSE_CMD |
|
531 + if (cmdmod.browse) |
|
532 + { |
|
533 + quit_more = FALSE; |
|
534 + nr = prompt_for_number(FALSE); |
|
535 + msg_starthere(); |
|
536 + if (nr > 0) |
|
537 + { |
|
538 + char_u *p = list_find_str(get_vim_var_list(VV_OLDFILES), |
|
539 + (long)nr); |
|
540 + |
|
541 + if (p != NULL) |
|
542 + { |
|
543 + p = expand_env_save(p); |
|
544 + eap->arg = p; |
|
545 + eap->cmdidx = CMD_edit; |
|
546 + cmdmod.browse = FALSE; |
|
547 + do_exedit(eap, NULL); |
|
548 + vim_free(p); |
|
549 + } |
|
550 + } |
|
551 + } |
|
552 + #endif |
|
553 + } |
|
554 + } |
|
555 + |
|
556 #endif /* FEAT_EVAL */ |
|
557 |
|
558 |
|
559 *** ../vim-7.2.030/src/ex_cmds.c Sun Sep 14 21:40:26 2008 |
|
560 --- src/ex_cmds.c Sun Sep 14 13:45:03 2008 |
|
561 *************** |
|
562 *** 24,30 **** |
|
563 static void do_filter __ARGS((linenr_T line1, linenr_T line2, exarg_T *eap, char_u *cmd, int do_in, int do_out)); |
|
564 #ifdef FEAT_VIMINFO |
|
565 static char_u *viminfo_filename __ARGS((char_u *)); |
|
566 ! static void do_viminfo __ARGS((FILE *fp_in, FILE *fp_out, int want_info, int want_marks, int force_read)); |
|
567 static int viminfo_encoding __ARGS((vir_T *virp)); |
|
568 static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing)); |
|
569 #endif |
|
570 --- 24,30 ---- |
|
571 static void do_filter __ARGS((linenr_T line1, linenr_T line2, exarg_T *eap, char_u *cmd, int do_in, int do_out)); |
|
572 #ifdef FEAT_VIMINFO |
|
573 static char_u *viminfo_filename __ARGS((char_u *)); |
|
574 ! static void do_viminfo __ARGS((FILE *fp_in, FILE *fp_out, int flags)); |
|
575 static int viminfo_encoding __ARGS((vir_T *virp)); |
|
576 static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing)); |
|
577 #endif |
|
578 *************** |
|
579 *** 1676,1689 **** |
|
580 |
|
581 /* |
|
582 * read_viminfo() -- Read the viminfo file. Registers etc. which are already |
|
583 ! * set are not over-written unless force is TRUE. -- webb |
|
584 */ |
|
585 int |
|
586 ! read_viminfo(file, want_info, want_marks, forceit) |
|
587 ! char_u *file; |
|
588 ! int want_info; |
|
589 ! int want_marks; |
|
590 ! int forceit; |
|
591 { |
|
592 FILE *fp; |
|
593 char_u *fname; |
|
594 --- 1676,1687 ---- |
|
595 |
|
596 /* |
|
597 * read_viminfo() -- Read the viminfo file. Registers etc. which are already |
|
598 ! * set are not over-written unless "flags" includes VIF_FORCEIT. -- webb |
|
599 */ |
|
600 int |
|
601 ! read_viminfo(file, flags) |
|
602 ! char_u *file; /* file name or NULL to use default name */ |
|
603 ! int flags; /* VIF_WANT_INFO et al. */ |
|
604 { |
|
605 FILE *fp; |
|
606 char_u *fname; |
|
607 *************** |
|
608 *** 1691,1697 **** |
|
609 if (no_viminfo()) |
|
610 return FAIL; |
|
611 |
|
612 ! fname = viminfo_filename(file); /* may set to default if NULL */ |
|
613 if (fname == NULL) |
|
614 return FAIL; |
|
615 fp = mch_fopen((char *)fname, READBIN); |
|
616 --- 1689,1695 ---- |
|
617 if (no_viminfo()) |
|
618 return FAIL; |
|
619 |
|
620 ! fname = viminfo_filename(file); /* get file name in allocated buffer */ |
|
621 if (fname == NULL) |
|
622 return FAIL; |
|
623 fp = mch_fopen((char *)fname, READBIN); |
|
624 *************** |
|
625 *** 1701,1708 **** |
|
626 verbose_enter(); |
|
627 smsg((char_u *)_("Reading viminfo file \"%s\"%s%s%s"), |
|
628 fname, |
|
629 ! want_info ? _(" info") : "", |
|
630 ! want_marks ? _(" marks") : "", |
|
631 fp == NULL ? _(" FAILED") : ""); |
|
632 verbose_leave(); |
|
633 } |
|
634 --- 1699,1707 ---- |
|
635 verbose_enter(); |
|
636 smsg((char_u *)_("Reading viminfo file \"%s\"%s%s%s"), |
|
637 fname, |
|
638 ! (flags & VIF_WANT_INFO) ? _(" info") : "", |
|
639 ! (flags & VIF_WANT_MARKS) ? _(" marks") : "", |
|
640 ! (flags & VIF_GET_OLDFILES) ? _(" oldfiles") : "", |
|
641 fp == NULL ? _(" FAILED") : ""); |
|
642 verbose_leave(); |
|
643 } |
|
644 *************** |
|
645 *** 1712,1721 **** |
|
646 return FAIL; |
|
647 |
|
648 viminfo_errcnt = 0; |
|
649 ! do_viminfo(fp, NULL, want_info, want_marks, forceit); |
|
650 |
|
651 fclose(fp); |
|
652 - |
|
653 return OK; |
|
654 } |
|
655 |
|
656 --- 1711,1719 ---- |
|
657 return FAIL; |
|
658 |
|
659 viminfo_errcnt = 0; |
|
660 ! do_viminfo(fp, NULL, flags); |
|
661 |
|
662 fclose(fp); |
|
663 return OK; |
|
664 } |
|
665 |
|
666 *************** |
|
667 *** 1968,1974 **** |
|
668 } |
|
669 |
|
670 viminfo_errcnt = 0; |
|
671 ! do_viminfo(fp_in, fp_out, !forceit, !forceit, FALSE); |
|
672 |
|
673 fclose(fp_out); /* errors are ignored !? */ |
|
674 if (fp_in != NULL) |
|
675 --- 1966,1972 ---- |
|
676 } |
|
677 |
|
678 viminfo_errcnt = 0; |
|
679 ! do_viminfo(fp_in, fp_out, forceit ? 0 : (VIF_WANT_INFO | VIF_WANT_MARKS)); |
|
680 |
|
681 fclose(fp_out); /* errors are ignored !? */ |
|
682 if (fp_in != NULL) |
|
683 *************** |
|
684 *** 2041,2052 **** |
|
685 * do_viminfo() -- Should only be called from read_viminfo() & write_viminfo(). |
|
686 */ |
|
687 static void |
|
688 ! do_viminfo(fp_in, fp_out, want_info, want_marks, force_read) |
|
689 FILE *fp_in; |
|
690 FILE *fp_out; |
|
691 ! int want_info; |
|
692 ! int want_marks; |
|
693 ! int force_read; |
|
694 { |
|
695 int count = 0; |
|
696 int eof = FALSE; |
|
697 --- 2039,2048 ---- |
|
698 * do_viminfo() -- Should only be called from read_viminfo() & write_viminfo(). |
|
699 */ |
|
700 static void |
|
701 ! do_viminfo(fp_in, fp_out, flags) |
|
702 FILE *fp_in; |
|
703 FILE *fp_out; |
|
704 ! int flags; |
|
705 { |
|
706 int count = 0; |
|
707 int eof = FALSE; |
|
708 *************** |
|
709 *** 2061,2068 **** |
|
710 |
|
711 if (fp_in != NULL) |
|
712 { |
|
713 ! if (want_info) |
|
714 ! eof = read_viminfo_up_to_marks(&vir, force_read, fp_out != NULL); |
|
715 else |
|
716 /* Skip info, find start of marks */ |
|
717 while (!(eof = viminfo_readline(&vir)) |
|
718 --- 2057,2065 ---- |
|
719 |
|
720 if (fp_in != NULL) |
|
721 { |
|
722 ! if (flags & VIF_WANT_INFO) |
|
723 ! eof = read_viminfo_up_to_marks(&vir, |
|
724 ! flags & VIF_FORCEIT, fp_out != NULL); |
|
725 else |
|
726 /* Skip info, find start of marks */ |
|
727 while (!(eof = viminfo_readline(&vir)) |
|
728 *************** |
|
729 *** 2092,2099 **** |
|
730 write_viminfo_bufferlist(fp_out); |
|
731 count = write_viminfo_marks(fp_out); |
|
732 } |
|
733 ! if (fp_in != NULL && want_marks) |
|
734 ! copy_viminfo_marks(&vir, fp_out, count, eof); |
|
735 |
|
736 vim_free(vir.vir_line); |
|
737 #ifdef FEAT_MBYTE |
|
738 --- 2089,2097 ---- |
|
739 write_viminfo_bufferlist(fp_out); |
|
740 count = write_viminfo_marks(fp_out); |
|
741 } |
|
742 ! if (fp_in != NULL |
|
743 ! && (flags & (VIF_WANT_MARKS | VIF_GET_OLDFILES | VIF_FORCEIT))) |
|
744 ! copy_viminfo_marks(&vir, fp_out, count, eof, flags); |
|
745 |
|
746 vim_free(vir.vir_line); |
|
747 #ifdef FEAT_MBYTE |
|
748 *** ../vim-7.2.030/src/ex_cmds.h Thu Nov 6 20:47:00 2008 |
|
749 --- src/ex_cmds.h Thu Sep 18 22:18:14 2008 |
|
750 *************** |
|
751 *** 653,658 **** |
|
752 --- 653,660 ---- |
|
753 EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), |
|
754 EX(CMD_open, "open", ex_open, |
|
755 RANGE|EXTRA), |
|
756 + EX(CMD_oldfiles, "oldfiles", ex_oldfiles, |
|
757 + BANG|TRLBAR|SBOXOK|CMDWIN), |
|
758 EX(CMD_omap, "omap", ex_map, |
|
759 EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), |
|
760 EX(CMD_omapclear, "omapclear", ex_mapclear, |
|
761 *** ../vim-7.2.030/src/ex_docmd.c Thu Nov 6 17:16:06 2008 |
|
762 --- src/ex_docmd.c Mon Nov 3 21:21:17 2008 |
|
763 *************** |
|
764 *** 364,369 **** |
|
765 --- 364,370 ---- |
|
766 # define ex_function ex_ni |
|
767 # define ex_delfunction ex_ni |
|
768 # define ex_return ex_ni |
|
769 + # define ex_oldfiles ex_ni |
|
770 #endif |
|
771 static char_u *arg_all __ARGS((void)); |
|
772 #ifdef FEAT_SESSION |
|
773 *************** |
|
774 *** 1770,1776 **** |
|
775 } |
|
776 if (checkforcmd(&ea.cmd, "browse", 3)) |
|
777 { |
|
778 ! #ifdef FEAT_BROWSE |
|
779 cmdmod.browse = TRUE; |
|
780 #endif |
|
781 continue; |
|
782 --- 1771,1777 ---- |
|
783 } |
|
784 if (checkforcmd(&ea.cmd, "browse", 3)) |
|
785 { |
|
786 ! #ifdef FEAT_BROWSE_CMD |
|
787 cmdmod.browse = TRUE; |
|
788 #endif |
|
789 continue; |
|
790 *************** |
|
791 *** 9508,9531 **** |
|
792 break; |
|
793 } |
|
794 s = src + 1; |
|
795 i = (int)getdigits(&s); |
|
796 *usedlen = (int)(s - src); /* length of what we expand */ |
|
797 |
|
798 ! buf = buflist_findnr(i); |
|
799 ! if (buf == NULL) |
|
800 { |
|
801 ! *errormsg = (char_u *)_("E194: No alternate file name to substitute for '#'"); |
|
802 return NULL; |
|
803 } |
|
804 ! if (lnump != NULL) |
|
805 ! *lnump = ECMD_LAST; |
|
806 ! if (buf->b_fname == NULL) |
|
807 { |
|
808 ! result = (char_u *)""; |
|
809 ! valid = 0; /* Must have ":p:h" to be valid */ |
|
810 } |
|
811 - else |
|
812 - result = buf->b_fname; |
|
813 break; |
|
814 |
|
815 #ifdef FEAT_SEARCHPATH |
|
816 --- 9509,9558 ---- |
|
817 break; |
|
818 } |
|
819 s = src + 1; |
|
820 + if (*s == '<') /* "#<99" uses v:oldfiles */ |
|
821 + ++s; |
|
822 i = (int)getdigits(&s); |
|
823 *usedlen = (int)(s - src); /* length of what we expand */ |
|
824 |
|
825 ! if (src[1] == '<') |
|
826 { |
|
827 ! if (*usedlen < 2) |
|
828 ! { |
|
829 ! /* Should we give an error message for #<text? */ |
|
830 ! *usedlen = 1; |
|
831 ! return NULL; |
|
832 ! } |
|
833 ! #ifdef FEAT_EVAL |
|
834 ! result = list_find_str(get_vim_var_list(VV_OLDFILES), |
|
835 ! (long)i); |
|
836 ! if (result == NULL) |
|
837 ! { |
|
838 ! *errormsg = (char_u *)""; |
|
839 ! return NULL; |
|
840 ! } |
|
841 ! #else |
|
842 ! *errormsg = (char_u *)_("E809: #< is not available without the +eval feature"); |
|
843 return NULL; |
|
844 + #endif |
|
845 } |
|
846 ! else |
|
847 { |
|
848 ! buf = buflist_findnr(i); |
|
849 ! if (buf == NULL) |
|
850 ! { |
|
851 ! *errormsg = (char_u *)_("E194: No alternate file name to substitute for '#'"); |
|
852 ! return NULL; |
|
853 ! } |
|
854 ! if (lnump != NULL) |
|
855 ! *lnump = ECMD_LAST; |
|
856 ! if (buf->b_fname == NULL) |
|
857 ! { |
|
858 ! result = (char_u *)""; |
|
859 ! valid = 0; /* Must have ":p:h" to be valid */ |
|
860 ! } |
|
861 ! else |
|
862 ! result = buf->b_fname; |
|
863 } |
|
864 break; |
|
865 |
|
866 #ifdef FEAT_SEARCHPATH |
|
867 *************** |
|
868 *** 10700,10706 **** |
|
869 p_viminfo = (char_u *)"'100"; |
|
870 if (eap->cmdidx == CMD_rviminfo) |
|
871 { |
|
872 ! if (read_viminfo(eap->arg, TRUE, TRUE, eap->forceit) == FAIL) |
|
873 EMSG(_("E195: Cannot open viminfo file for reading")); |
|
874 } |
|
875 else |
|
876 --- 10727,10734 ---- |
|
877 p_viminfo = (char_u *)"'100"; |
|
878 if (eap->cmdidx == CMD_rviminfo) |
|
879 { |
|
880 ! if (read_viminfo(eap->arg, VIF_WANT_INFO | VIF_WANT_MARKS |
|
881 ! | (eap->forceit ? VIF_FORCEIT : 0)) == FAIL) |
|
882 EMSG(_("E195: Cannot open viminfo file for reading")); |
|
883 } |
|
884 else |
|
885 *** ../vim-7.2.030/src/feature.h Wed Aug 6 18:45:07 2008 |
|
886 --- src/feature.h Fri Sep 19 19:14:22 2008 |
|
887 *************** |
|
888 *** 767,775 **** |
|
889 |
|
890 /* |
|
891 * +browse ":browse" command. |
|
892 */ |
|
893 ! #if defined(FEAT_NORMAL) && (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC)) |
|
894 ! # define FEAT_BROWSE |
|
895 #endif |
|
896 |
|
897 /* |
|
898 --- 767,779 ---- |
|
899 |
|
900 /* |
|
901 * +browse ":browse" command. |
|
902 + * or just the ":browse" command modifier |
|
903 */ |
|
904 ! #if defined(FEAT_NORMAL) |
|
905 ! # define FEAT_BROWSE_CMD |
|
906 ! # if defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC) |
|
907 ! # define FEAT_BROWSE |
|
908 ! # endif |
|
909 #endif |
|
910 |
|
911 /* |
|
912 *** ../vim-7.2.030/src/fileio.c Thu Sep 18 21:29:07 2008 |
|
913 --- src/fileio.c Mon Nov 3 21:21:47 2008 |
|
914 *************** |
|
915 *** 2711,2717 **** |
|
916 { |
|
917 if (!curbuf->b_marks_read && get_viminfo_parameter('\'') > 0 |
|
918 && curbuf->b_ffname != NULL) |
|
919 ! read_viminfo(NULL, FALSE, TRUE, FALSE); |
|
920 |
|
921 /* Always set b_marks_read; needed when 'viminfo' is changed to include |
|
922 * the ' parameter after opening a buffer. */ |
|
923 --- 2711,2717 ---- |
|
924 { |
|
925 if (!curbuf->b_marks_read && get_viminfo_parameter('\'') > 0 |
|
926 && curbuf->b_ffname != NULL) |
|
927 ! read_viminfo(NULL, VIF_WANT_MARKS); |
|
928 |
|
929 /* Always set b_marks_read; needed when 'viminfo' is changed to include |
|
930 * the ' parameter after opening a buffer. */ |
|
931 *************** |
|
932 *** 9108,9114 **** |
|
933 set_context_in_autocmd(xp, arg, doautocmd) |
|
934 expand_T *xp; |
|
935 char_u *arg; |
|
936 ! int doautocmd; /* TRUE for :doautocmd, FALSE for :autocmd */ |
|
937 { |
|
938 char_u *p; |
|
939 int group; |
|
940 --- 9109,9115 ---- |
|
941 set_context_in_autocmd(xp, arg, doautocmd) |
|
942 expand_T *xp; |
|
943 char_u *arg; |
|
944 ! int doautocmd; /* TRUE for :doauto*, FALSE for :autocmd */ |
|
945 { |
|
946 char_u *p; |
|
947 int group; |
|
948 *** ../vim-7.2.030/src/main.c Thu Sep 18 20:55:19 2008 |
|
949 --- src/main.c Sun Sep 14 13:26:10 2008 |
|
950 *************** |
|
951 *** 645,655 **** |
|
952 |
|
953 #ifdef FEAT_VIMINFO |
|
954 /* |
|
955 ! * Read in registers, history etc, but not marks, from the viminfo file |
|
956 */ |
|
957 if (*p_viminfo != NUL) |
|
958 { |
|
959 ! read_viminfo(NULL, TRUE, FALSE, FALSE); |
|
960 TIME_MSG("reading viminfo"); |
|
961 } |
|
962 #endif |
|
963 --- 645,656 ---- |
|
964 |
|
965 #ifdef FEAT_VIMINFO |
|
966 /* |
|
967 ! * Read in registers, history etc, but not marks, from the viminfo file. |
|
968 ! * This is where v:oldfiles gets filled. |
|
969 */ |
|
970 if (*p_viminfo != NUL) |
|
971 { |
|
972 ! read_viminfo(NULL, VIF_WANT_INFO | VIF_GET_OLDFILES); |
|
973 TIME_MSG("reading viminfo"); |
|
974 } |
|
975 #endif |
|
976 *** ../vim-7.2.030/src/mark.c Sat Aug 9 19:37:29 2008 |
|
977 --- src/mark.c Sun Sep 14 13:46:19 2008 |
|
978 *************** |
|
979 *** 1627,1641 **** |
|
980 |
|
981 /* |
|
982 * Handle marks in the viminfo file: |
|
983 ! * fp_out == NULL read marks for current buffer only |
|
984 ! * fp_out != NULL copy marks for buffers not in buffer list |
|
985 */ |
|
986 void |
|
987 ! copy_viminfo_marks(virp, fp_out, count, eof) |
|
988 vir_T *virp; |
|
989 FILE *fp_out; |
|
990 int count; |
|
991 int eof; |
|
992 { |
|
993 char_u *line = virp->vir_line; |
|
994 buf_T *buf; |
|
995 --- 1627,1643 ---- |
|
996 |
|
997 /* |
|
998 * Handle marks in the viminfo file: |
|
999 ! * fp_out != NULL: copy marks for buffers not in buffer list |
|
1000 ! * fp_out == NULL && (flags & VIF_WANT_MARKS): read marks for curbuf only |
|
1001 ! * fp_out == NULL && (flags & VIF_GET_OLDFILES | VIF_FORCEIT): fill v:oldfiles |
|
1002 */ |
|
1003 void |
|
1004 ! copy_viminfo_marks(virp, fp_out, count, eof, flags) |
|
1005 vir_T *virp; |
|
1006 FILE *fp_out; |
|
1007 int count; |
|
1008 int eof; |
|
1009 + int flags; |
|
1010 { |
|
1011 char_u *line = virp->vir_line; |
|
1012 buf_T *buf; |
|
1013 *************** |
|
1014 *** 1647,1656 **** |
|
1015 --- 1649,1671 ---- |
|
1016 char_u *p; |
|
1017 char_u *name_buf; |
|
1018 pos_T pos; |
|
1019 + #ifdef FEAT_EVAL |
|
1020 + list_T *list = NULL; |
|
1021 + #endif |
|
1022 |
|
1023 if ((name_buf = alloc(LSIZE)) == NULL) |
|
1024 return; |
|
1025 *name_buf = NUL; |
|
1026 + |
|
1027 + #ifdef FEAT_EVAL |
|
1028 + if (fp_out == NULL && (flags & (VIF_GET_OLDFILES | VIF_FORCEIT))) |
|
1029 + { |
|
1030 + list = list_alloc(); |
|
1031 + if (list != NULL) |
|
1032 + set_vim_var_list(VV_OLDFILES, list); |
|
1033 + } |
|
1034 + #endif |
|
1035 + |
|
1036 num_marked_files = get_viminfo_parameter('\''); |
|
1037 while (!eof && (count < num_marked_files || fp_out == NULL)) |
|
1038 { |
|
1039 *************** |
|
1040 *** 1681,1686 **** |
|
1041 --- 1696,1706 ---- |
|
1042 p++; |
|
1043 *p = NUL; |
|
1044 |
|
1045 + #ifdef FEAT_EVAL |
|
1046 + if (list != NULL) |
|
1047 + list_append_string(list, str, -1); |
|
1048 + #endif |
|
1049 + |
|
1050 /* |
|
1051 * If fp_out == NULL, load marks for current buffer. |
|
1052 * If fp_out != NULL, copy marks for buffers not in buflist. |
|
1053 *************** |
|
1054 *** 1688,1694 **** |
|
1055 load_marks = copy_marks_out = FALSE; |
|
1056 if (fp_out == NULL) |
|
1057 { |
|
1058 ! if (curbuf->b_ffname != NULL) |
|
1059 { |
|
1060 if (*name_buf == NUL) /* only need to do this once */ |
|
1061 home_replace(NULL, curbuf->b_ffname, name_buf, LSIZE, TRUE); |
|
1062 --- 1708,1714 ---- |
|
1063 load_marks = copy_marks_out = FALSE; |
|
1064 if (fp_out == NULL) |
|
1065 { |
|
1066 ! if ((flags & VIF_WANT_MARKS) && curbuf->b_ffname != NULL) |
|
1067 { |
|
1068 if (*name_buf == NUL) /* only need to do this once */ |
|
1069 home_replace(NULL, curbuf->b_ffname, name_buf, LSIZE, TRUE); |
|
1070 *** ../vim-7.2.030/src/misc1.c Wed Jun 25 00:24:52 2008 |
|
1071 --- src/misc1.c Sun Nov 9 11:47:00 2008 |
|
1072 *************** |
|
1073 *** 3245,3253 **** |
|
1074 |
|
1075 /* When using ":silent" assume that <CR> was entered. */ |
|
1076 if (mouse_used != NULL) |
|
1077 ! MSG_PUTS(_("Type number or click with mouse (<Enter> cancels): ")); |
|
1078 else |
|
1079 ! MSG_PUTS(_("Choice number (<Enter> cancels): ")); |
|
1080 |
|
1081 /* Set the state such that text can be selected/copied/pasted and we still |
|
1082 * get mouse events. */ |
|
1083 --- 3245,3253 ---- |
|
1084 |
|
1085 /* When using ":silent" assume that <CR> was entered. */ |
|
1086 if (mouse_used != NULL) |
|
1087 ! MSG_PUTS(_("Type number and <Enter> or click with mouse (empty cancels): ")); |
|
1088 else |
|
1089 ! MSG_PUTS(_("Type number and <Enter> (empty cancels): ")); |
|
1090 |
|
1091 /* Set the state such that text can be selected/copied/pasted and we still |
|
1092 * get mouse events. */ |
|
1093 *** ../vim-7.2.030/src/proto/eval.pro Sun Jan 6 20:06:30 2008 |
|
1094 --- src/proto/eval.pro Sun Nov 9 12:05:56 2008 |
|
1095 *************** |
|
1096 *** 17,23 **** |
|
1097 int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip)); |
|
1098 char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip)); |
|
1099 int skip_expr __ARGS((char_u **pp)); |
|
1100 ! char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int dolist)); |
|
1101 char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox)); |
|
1102 int eval_to_number __ARGS((char_u *expr)); |
|
1103 list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr)); |
|
1104 --- 17,23 ---- |
|
1105 int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip)); |
|
1106 char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip)); |
|
1107 int skip_expr __ARGS((char_u **pp)); |
|
1108 ! char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int convert)); |
|
1109 char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox)); |
|
1110 int eval_to_number __ARGS((char_u *expr)); |
|
1111 list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr)); |
|
1112 *************** |
|
1113 *** 46,52 **** |
|
1114 --- 46,54 ---- |
|
1115 void list_unref __ARGS((list_T *l)); |
|
1116 void list_free __ARGS((list_T *l, int recurse)); |
|
1117 dictitem_T *dict_lookup __ARGS((hashitem_T *hi)); |
|
1118 + char_u *list_find_str __ARGS((list_T *l, long idx)); |
|
1119 int list_append_dict __ARGS((list_T *list, dict_T *dict)); |
|
1120 + int list_append_string __ARGS((list_T *l, char_u *str, int len)); |
|
1121 int garbage_collect __ARGS((void)); |
|
1122 dict_T *dict_alloc __ARGS((void)); |
|
1123 int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str)); |
|
1124 *************** |
|
1125 *** 58,65 **** |
|
1126 --- 60,69 ---- |
|
1127 void set_vim_var_nr __ARGS((int idx, long val)); |
|
1128 long get_vim_var_nr __ARGS((int idx)); |
|
1129 char_u *get_vim_var_str __ARGS((int idx)); |
|
1130 + list_T *get_vim_var_list __ARGS((int idx)); |
|
1131 void set_vcount __ARGS((long count, long count1)); |
|
1132 void set_vim_var_string __ARGS((int idx, char_u *val, int len)); |
|
1133 + void set_vim_var_list __ARGS((int idx, list_T *val)); |
|
1134 void set_reg_var __ARGS((int c)); |
|
1135 char_u *v_exception __ARGS((char_u *oldval)); |
|
1136 char_u *v_throwpoint __ARGS((char_u *oldval)); |
|
1137 *************** |
|
1138 *** 94,99 **** |
|
1139 --- 98,104 ---- |
|
1140 void write_viminfo_varlist __ARGS((FILE *fp)); |
|
1141 int store_session_globals __ARGS((FILE *fd)); |
|
1142 void last_set_msg __ARGS((scid_T scriptID)); |
|
1143 + void ex_oldfiles __ARGS((exarg_T *eap)); |
|
1144 int modify_fname __ARGS((char_u *src, int *usedlen, char_u **fnamep, char_u **bufp, int *fnamelen)); |
|
1145 char_u *do_string_sub __ARGS((char_u *str, char_u *pat, char_u *sub, char_u *flags)); |
|
1146 /* vim: set ft=c : */ |
|
1147 *** ../vim-7.2.030/src/proto/ex_cmds.pro Sat May 5 20:13:58 2007 |
|
1148 --- src/proto/ex_cmds.pro Sat Sep 13 17:27:21 2008 |
|
1149 *************** |
|
1150 *** 11,17 **** |
|
1151 char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp)); |
|
1152 void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname)); |
|
1153 int viminfo_error __ARGS((char *errnum, char *message, char_u *line)); |
|
1154 ! int read_viminfo __ARGS((char_u *file, int want_info, int want_marks, int forceit)); |
|
1155 void write_viminfo __ARGS((char_u *file, int forceit)); |
|
1156 int viminfo_readline __ARGS((vir_T *virp)); |
|
1157 char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert)); |
|
1158 --- 11,17 ---- |
|
1159 char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp)); |
|
1160 void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname)); |
|
1161 int viminfo_error __ARGS((char *errnum, char *message, char_u *line)); |
|
1162 ! int read_viminfo __ARGS((char_u *file, int flags)); |
|
1163 void write_viminfo __ARGS((char_u *file, int forceit)); |
|
1164 int viminfo_readline __ARGS((vir_T *virp)); |
|
1165 char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert)); |
|
1166 *** ../vim-7.2.030/src/proto/mark.pro Sat May 5 19:29:37 2007 |
|
1167 --- src/proto/mark.pro Sat Sep 13 18:06:20 2008 |
|
1168 *************** |
|
1169 *** 26,30 **** |
|
1170 void write_viminfo_filemarks __ARGS((FILE *fp)); |
|
1171 int removable __ARGS((char_u *name)); |
|
1172 int write_viminfo_marks __ARGS((FILE *fp_out)); |
|
1173 ! void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof)); |
|
1174 /* vim: set ft=c : */ |
|
1175 --- 26,30 ---- |
|
1176 void write_viminfo_filemarks __ARGS((FILE *fp)); |
|
1177 int removable __ARGS((char_u *name)); |
|
1178 int write_viminfo_marks __ARGS((FILE *fp_out)); |
|
1179 ! void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof, int flags)); |
|
1180 /* vim: set ft=c : */ |
|
1181 *** ../vim-7.2.030/src/option.c Thu Oct 2 22:48:01 2008 |
|
1182 --- src/option.c Fri Sep 26 22:20:20 2008 |
|
1183 *************** |
|
1184 *** 2593,2605 **** |
|
1185 #ifdef FEAT_VIMINFO |
|
1186 (char_u *)&p_viminfo, PV_NONE, |
|
1187 #if defined(MSDOS) || defined(MSWIN) || defined(OS2) |
|
1188 ! {(char_u *)"", (char_u *)"'20,<50,s10,h,rA:,rB:"} |
|
1189 #else |
|
1190 # ifdef AMIGA |
|
1191 {(char_u *)"", |
|
1192 ! (char_u *)"'20,<50,s10,h,rdf0:,rdf1:,rdf2:"} |
|
1193 # else |
|
1194 ! {(char_u *)"", (char_u *)"'20,<50,s10,h"} |
|
1195 # endif |
|
1196 #endif |
|
1197 #else |
|
1198 --- 2593,2605 ---- |
|
1199 #ifdef FEAT_VIMINFO |
|
1200 (char_u *)&p_viminfo, PV_NONE, |
|
1201 #if defined(MSDOS) || defined(MSWIN) || defined(OS2) |
|
1202 ! {(char_u *)"", (char_u *)"'100,<50,s10,h,rA:,rB:"} |
|
1203 #else |
|
1204 # ifdef AMIGA |
|
1205 {(char_u *)"", |
|
1206 ! (char_u *)"'100,<50,s10,h,rdf0:,rdf1:,rdf2:"} |
|
1207 # else |
|
1208 ! {(char_u *)"", (char_u *)"'100,<50,s10,h"} |
|
1209 # endif |
|
1210 #endif |
|
1211 #else |
|
1212 *** ../vim-7.2.030/src/structs.h Thu Jul 31 22:04:27 2008 |
|
1213 --- src/structs.h Fri Sep 19 19:15:18 2008 |
|
1214 *************** |
|
1215 *** 459,465 **** |
|
1216 typedef struct |
|
1217 { |
|
1218 int hide; /* TRUE when ":hide" was used */ |
|
1219 ! # ifdef FEAT_BROWSE |
|
1220 int browse; /* TRUE to invoke file dialog */ |
|
1221 # endif |
|
1222 # ifdef FEAT_WINDOWS |
|
1223 --- 459,465 ---- |
|
1224 typedef struct |
|
1225 { |
|
1226 int hide; /* TRUE when ":hide" was used */ |
|
1227 ! # ifdef FEAT_BROWSE_CMD |
|
1228 int browse; /* TRUE to invoke file dialog */ |
|
1229 # endif |
|
1230 # ifdef FEAT_WINDOWS |
|
1231 *** ../vim-7.2.030/src/vim.h Sat Aug 9 19:37:40 2008 |
|
1232 --- src/vim.h Sat Sep 13 17:41:24 2008 |
|
1233 *************** |
|
1234 *** 1728,1734 **** |
|
1235 #define VV_MOUSE_COL 51 |
|
1236 #define VV_OP 52 |
|
1237 #define VV_SEARCHFORWARD 53 |
|
1238 ! #define VV_LEN 54 /* number of v: vars */ |
|
1239 |
|
1240 #ifdef FEAT_CLIPBOARD |
|
1241 |
|
1242 --- 1728,1735 ---- |
|
1243 #define VV_MOUSE_COL 51 |
|
1244 #define VV_OP 52 |
|
1245 #define VV_SEARCHFORWARD 53 |
|
1246 ! #define VV_OLDFILES 54 |
|
1247 ! #define VV_LEN 55 /* number of v: vars */ |
|
1248 |
|
1249 #ifdef FEAT_CLIPBOARD |
|
1250 |
|
1251 *************** |
|
1252 *** 2054,2057 **** |
|
1253 --- 2055,2064 ---- |
|
1254 #define DOSO_VIMRC 1 /* loading vimrc file */ |
|
1255 #define DOSO_GVIMRC 2 /* loading gvimrc file */ |
|
1256 |
|
1257 + /* flags for read_viminfo() and children */ |
|
1258 + #define VIF_WANT_INFO 1 /* load non-mark info */ |
|
1259 + #define VIF_WANT_MARKS 2 /* load file marks */ |
|
1260 + #define VIF_FORCEIT 4 /* overwrite info already read */ |
|
1261 + #define VIF_GET_OLDFILES 8 /* load v:oldfiles */ |
|
1262 + |
|
1263 #endif /* VIM__H */ |
|
1264 *** ../vim-7.2.030/src/version.c Thu Nov 6 20:47:00 2008 |
|
1265 --- src/version.c Sun Nov 9 13:39:19 2008 |
|
1266 *************** |
|
1267 *** 678,679 **** |
|
1268 --- 678,681 ---- |
|
1269 { /* Add new patch number below this line */ |
|
1270 + /**/ |
|
1271 + 31, |
|
1272 /**/ |
|
1273 |
|
1274 -- |
|
1275 hundred-and-one symptoms of being an internet addict: |
|
1276 217. Your sex life has drastically improved...so what if it's only cyber-sex! |
|
1277 |
|
1278 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\ |
|
1279 /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
|
1280 \\\ download, build and distribute -- http://www.A-A-P.org /// |
|
1281 \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |