]> git.pld-linux.org Git - packages/vim.git/blob - 7.2.031
- updated to 7.2.102
[packages/vim.git] / 7.2.031
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    ///
This page took 0.115867 seconds and 3 git commands to generate.