]>
Commit | Line | Data |
---|---|---|
2f43f8e6 ER |
1 | To: vim-dev@vim.org |
2 | Subject: Patch 7.2.031 | |
3 | Fcc: outbox | |
4 | From: Bram Moolenaar <Bram@moolenaar.net> | |
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 -- Bram@Moolenaar.net -- 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 /// |