| [24cc73c] | 1 | Submitted By: Jim Gifford (jim at linuxfromscratch dot org) | 
|---|
|  | 2 | Date: 07-23-2007 | 
|---|
|  | 3 | Initial Package Version: 7.1 | 
|---|
|  | 4 | Origin: Upstream | 
|---|
|  | 5 | Upstream Status: Applied | 
|---|
|  | 6 | Description: Contains all upstream patches up to 7.1.033 | 
|---|
|  | 7 | The following patches were skipped | 
|---|
|  | 8 | 0 003 007 | 
|---|
|  | 9 |  | 
|---|
|  | 10 | diff -Naur vim71.orig/runtime/doc/change.txt vim71/runtime/doc/change.txt | 
|---|
|  | 11 | --- vim71.orig/runtime/doc/change.txt   2007-05-12 06:18:46.000000000 -0400 | 
|---|
|  | 12 | +++ vim71/runtime/doc/change.txt        2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 13 | @@ -1571,6 +1571,10 @@ | 
|---|
|  | 14 | in their original order, right before the sorted | 
|---|
|  | 15 | lines. | 
|---|
|  | 16 |  | 
|---|
|  | 17 | +                       If {pattern} is empty (e.g. // is specified), the | 
|---|
|  | 18 | +                       last search pattern is used.  This allows trying out | 
|---|
|  | 19 | +                       a pattern first. | 
|---|
|  | 20 | + | 
|---|
|  | 21 | Note that using ":sort" with ":global" doesn't sort the matching lines, it's | 
|---|
|  | 22 | quite useless. | 
|---|
|  | 23 |  | 
|---|
|  | 24 | diff -Naur vim71.orig/runtime/doc/eval.txt vim71/runtime/doc/eval.txt | 
|---|
|  | 25 | --- vim71.orig/runtime/doc/eval.txt     2007-05-12 06:18:46.000000000 -0400 | 
|---|
|  | 26 | +++ vim71/runtime/doc/eval.txt  2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 27 | @@ -1,4 +1,4 @@ | 
|---|
|  | 28 | -*eval.txt*      For Vim version 7.1.  Last change: 2007 May 11 | 
|---|
|  | 29 | +*eval.txt*      For Vim version 7.1.  Last change: 2007 Jul 11 | 
|---|
|  | 30 |  | 
|---|
|  | 31 |  | 
|---|
|  | 32 | VIM REFERENCE MANUAL    by Bram Moolenaar | 
|---|
|  | 33 | @@ -2020,6 +2020,10 @@ | 
|---|
|  | 34 | number of characters in the cursor line plus one) | 
|---|
|  | 35 | 'x      position of mark x (if the mark is not set, 0 is | 
|---|
|  | 36 | returned) | 
|---|
|  | 37 | +               Additionally {expr} can be [lnum, col]: a |List| with the line | 
|---|
|  | 38 | +               and column number. Most useful when the column is "$", to get | 
|---|
|  | 39 | +               the las column of a specific line.  When "lnum" or "col" is | 
|---|
|  | 40 | +               out of range then col() returns zero. | 
|---|
|  | 41 | To get the line number use |line()|.  To get both use | 
|---|
|  | 42 | |getpos()|. | 
|---|
|  | 43 | For the screen column position use |virtcol()|. | 
|---|
|  | 44 | @@ -2824,6 +2828,8 @@ | 
|---|
|  | 45 | given file {fname}. | 
|---|
|  | 46 | If {fname} is a directory, 0 is returned. | 
|---|
|  | 47 | If the file {fname} can't be found, -1 is returned. | 
|---|
|  | 48 | +               If the size of {fname} is too big to fit in a Number then -2 | 
|---|
|  | 49 | +               is returned. | 
|---|
|  | 50 |  | 
|---|
|  | 51 | getfontname([{name}])                                  *getfontname()* | 
|---|
|  | 52 | Without an argument returns the name of the normal font being | 
|---|
|  | 53 | @@ -5022,14 +5028,12 @@ | 
|---|
|  | 54 | position, the returned Number will be the column at the end of | 
|---|
|  | 55 | the <Tab>.  For example, for a <Tab> in column 1, with 'ts' | 
|---|
|  | 56 | set to 8, it returns 8. | 
|---|
|  | 57 | -               For the use of {expr} see |col()|.  Additionally you can use | 
|---|
|  | 58 | -               [lnum, col]: a |List| with the line and column number.  When | 
|---|
|  | 59 | -               "lnum" or "col" is out of range then virtcol() returns zero. | 
|---|
|  | 60 | -               When 'virtualedit' is used it can be [lnum, col, off], where | 
|---|
|  | 61 | +               For the byte position use |col()|. | 
|---|
|  | 62 | +               For the use of {expr} see |col()|. | 
|---|
|  | 63 | +               When 'virtualedit' is used {expr} can be [lnum, col, off], where | 
|---|
|  | 64 | "off" is the offset in screen columns from the start of the | 
|---|
|  | 65 | character.  E.g., a position within a <Tab> or after the last | 
|---|
|  | 66 | character. | 
|---|
|  | 67 | -               For the byte position use |col()|. | 
|---|
|  | 68 | When Virtual editing is active in the current mode, a position | 
|---|
|  | 69 | beyond the end of the line can be returned. |'virtualedit'| | 
|---|
|  | 70 | The accepted positions are: | 
|---|
|  | 71 | diff -Naur vim71.orig/runtime/filetype.vim vim71/runtime/filetype.vim | 
|---|
|  | 72 | --- vim71.orig/runtime/filetype.vim     2007-05-10 11:14:37.000000000 -0400 | 
|---|
|  | 73 | +++ vim71/runtime/filetype.vim  2007-07-23 19:57:05.000000000 -0400 | 
|---|
|  | 74 | @@ -1,7 +1,7 @@ | 
|---|
|  | 75 | " Vim support file to detect file types | 
|---|
|  | 76 | " | 
|---|
|  | 77 | " Maintainer:  Bram Moolenaar <Bram@vim.org> | 
|---|
|  | 78 | -" Last Change: 2007 May 10 | 
|---|
|  | 79 | +" Last Change: 2007 May 15 | 
|---|
|  | 80 |  | 
|---|
|  | 81 | " Listen very carefully, I will say this only once | 
|---|
|  | 82 | if exists("did_load_filetypes") | 
|---|
|  | 83 | @@ -1286,7 +1286,7 @@ | 
|---|
|  | 84 | au BufNewFile,BufRead *.it,*.ih                        setf ppwiz | 
|---|
|  | 85 |  | 
|---|
|  | 86 | " Oracle Pro*C/C++ | 
|---|
|  | 87 | -au BufNewFile,BufRead .pc                      setf proc | 
|---|
|  | 88 | +au BufNewFile,BufRead *.pc                     setf proc | 
|---|
|  | 89 |  | 
|---|
|  | 90 | " Privoxy actions file | 
|---|
|  | 91 | au BufNewFile,BufRead *.action                 setf privoxy | 
|---|
|  | 92 | diff -Naur vim71.orig/src/auto/configure vim71/src/auto/configure | 
|---|
|  | 93 | --- vim71.orig/src/auto/configure       2007-05-12 07:49:09.000000000 -0400 | 
|---|
|  | 94 | +++ vim71/src/auto/configure    2007-07-23 19:57:08.000000000 -0400 | 
|---|
|  | 95 | @@ -3843,7 +3843,9 @@ | 
|---|
|  | 96 | fi | 
|---|
|  | 97 |  | 
|---|
|  | 98 | if test "X$vi_cv_path_mzscheme_pfx" != "X"; then | 
|---|
|  | 99 | -    if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then | 
|---|
|  | 100 | +    if test "x$MACOSX" = "xyes"; then | 
|---|
|  | 101 | +      MZSCHEME_LIBS="-framework PLT_MzScheme" | 
|---|
|  | 102 | +    elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then | 
|---|
|  | 103 | MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a" | 
|---|
|  | 104 | else | 
|---|
|  | 105 | MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc" | 
|---|
|  | 106 | diff -Naur vim71.orig/src/buffer.c vim71/src/buffer.c | 
|---|
|  | 107 | --- vim71.orig/src/buffer.c     2007-05-10 11:25:59.000000000 -0400 | 
|---|
|  | 108 | +++ vim71/src/buffer.c  2007-07-23 19:57:07.000000000 -0400 | 
|---|
|  | 109 | @@ -171,6 +171,13 @@ | 
|---|
|  | 110 | /* Put the cursor on the first line. */ | 
|---|
|  | 111 | curwin->w_cursor.lnum = 1; | 
|---|
|  | 112 | curwin->w_cursor.col = 0; | 
|---|
|  | 113 | + | 
|---|
|  | 114 | +           /* Set or reset 'modified' before executing autocommands, so that | 
|---|
|  | 115 | +            * it can be changed there. */ | 
|---|
|  | 116 | +           if (!readonlymode && !bufempty()) | 
|---|
|  | 117 | +               changed(); | 
|---|
|  | 118 | +           else if (retval != FAIL) | 
|---|
|  | 119 | +               unchanged(curbuf, FALSE); | 
|---|
|  | 120 | #ifdef FEAT_AUTOCMD | 
|---|
|  | 121 | # ifdef FEAT_EVAL | 
|---|
|  | 122 | apply_autocmds_retval(EVENT_STDINREADPOST, NULL, NULL, FALSE, | 
|---|
|  | 123 | @@ -194,16 +201,16 @@ | 
|---|
|  | 124 | /* When reading stdin, the buffer contents always needs writing, so set | 
|---|
|  | 125 | * the changed flag.  Unless in readonly mode: "ls | gview -". | 
|---|
|  | 126 | * When interrupted and 'cpoptions' contains 'i' set changed flag. */ | 
|---|
|  | 127 | -    if ((read_stdin && !readonlymode && !bufempty()) | 
|---|
|  | 128 | +    if ((got_int && vim_strchr(p_cpo, CPO_INTMOD) != NULL) | 
|---|
|  | 129 | #ifdef FEAT_AUTOCMD | 
|---|
|  | 130 | || modified_was_set     /* ":set modified" used in autocmd */ | 
|---|
|  | 131 | # ifdef FEAT_EVAL | 
|---|
|  | 132 | || (aborting() && vim_strchr(p_cpo, CPO_INTMOD) != NULL) | 
|---|
|  | 133 | # endif | 
|---|
|  | 134 | #endif | 
|---|
|  | 135 | -               || (got_int && vim_strchr(p_cpo, CPO_INTMOD) != NULL)) | 
|---|
|  | 136 | +       ) | 
|---|
|  | 137 | changed(); | 
|---|
|  | 138 | -    else if (retval != FAIL) | 
|---|
|  | 139 | +    else if (retval != FAIL && !read_stdin) | 
|---|
|  | 140 | unchanged(curbuf, FALSE); | 
|---|
|  | 141 | save_file_ff(curbuf);              /* keep this fileformat */ | 
|---|
|  | 142 |  | 
|---|
|  | 143 | diff -Naur vim71.orig/src/configure.in vim71/src/configure.in | 
|---|
|  | 144 | --- vim71.orig/src/configure.in 2007-05-12 05:19:27.000000000 -0400 | 
|---|
|  | 145 | +++ vim71/src/configure.in      2007-07-23 19:57:08.000000000 -0400 | 
|---|
|  | 146 | @@ -423,7 +423,9 @@ | 
|---|
|  | 147 | fi | 
|---|
|  | 148 |  | 
|---|
|  | 149 | if test "X$vi_cv_path_mzscheme_pfx" != "X"; then | 
|---|
|  | 150 | -    if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then | 
|---|
|  | 151 | +    if test "x$MACOSX" = "xyes"; then | 
|---|
|  | 152 | +      MZSCHEME_LIBS="-framework PLT_MzScheme" | 
|---|
|  | 153 | +    elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then | 
|---|
|  | 154 | MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a" | 
|---|
|  | 155 | else | 
|---|
|  | 156 | MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc" | 
|---|
|  | 157 | diff -Naur vim71.orig/src/digraph.c vim71/src/digraph.c | 
|---|
|  | 158 | --- vim71.orig/src/digraph.c    2006-05-02 14:24:04.000000000 -0400 | 
|---|
|  | 159 | +++ vim71/src/digraph.c 2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 160 | @@ -2349,8 +2349,10 @@ | 
|---|
|  | 161 |  | 
|---|
|  | 162 | if (*curbuf->b_p_keymap == NUL) | 
|---|
|  | 163 | { | 
|---|
|  | 164 | -       /* Stop any active keymap and clear the table. */ | 
|---|
|  | 165 | +       /* Stop any active keymap and clear the table.  Also remove | 
|---|
|  | 166 | +        * b:keymap_unload, as no keymap is active now. */ | 
|---|
|  | 167 | keymap_unload(); | 
|---|
|  | 168 | +       do_cmdline_cmd((char_u *)"unlet! b:keymap_name"); | 
|---|
|  | 169 | } | 
|---|
|  | 170 | else | 
|---|
|  | 171 | { | 
|---|
|  | 172 | @@ -2500,7 +2502,6 @@ | 
|---|
|  | 173 |  | 
|---|
|  | 174 | ga_clear(&curbuf->b_kmap_ga); | 
|---|
|  | 175 | curbuf->b_kmap_state &= ~KEYMAP_LOADED; | 
|---|
|  | 176 | -    do_cmdline_cmd((char_u *)"unlet! b:keymap_name"); | 
|---|
|  | 177 | #ifdef FEAT_WINDOWS | 
|---|
|  | 178 | status_redraw_curbuf(); | 
|---|
|  | 179 | #endif | 
|---|
|  | 180 | diff -Naur vim71.orig/src/edit.c vim71/src/edit.c | 
|---|
|  | 181 | --- vim71.orig/src/edit.c       2007-05-07 15:43:55.000000000 -0400 | 
|---|
|  | 182 | +++ vim71/src/edit.c    2007-07-23 19:57:08.000000000 -0400 | 
|---|
|  | 183 | @@ -7215,6 +7215,8 @@ | 
|---|
|  | 184 | p = ml_get_curline(); | 
|---|
|  | 185 | if (cin_iscase(p) || cin_isscopedecl(p) || cin_islabel(30)) | 
|---|
|  | 186 | return TRUE; | 
|---|
|  | 187 | +               /* Need to get the line again after cin_islabel(). */ | 
|---|
|  | 188 | +               p = ml_get_curline(); | 
|---|
|  | 189 | if (curwin->w_cursor.col > 2 | 
|---|
|  | 190 | && p[curwin->w_cursor.col - 1] == ':' | 
|---|
|  | 191 | && p[curwin->w_cursor.col - 2] == ':') | 
|---|
|  | 192 | diff -Naur vim71.orig/src/eval.c vim71/src/eval.c | 
|---|
|  | 193 | --- vim71.orig/src/eval.c       2007-05-07 15:47:32.000000000 -0400 | 
|---|
|  | 194 | +++ vim71/src/eval.c    2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 195 | @@ -672,7 +672,7 @@ | 
|---|
|  | 196 | static void f_writefile __ARGS((typval_T *argvars, typval_T *rettv)); | 
|---|
|  | 197 |  | 
|---|
|  | 198 | static int list2fpos __ARGS((typval_T *arg, pos_T *posp, int *fnump)); | 
|---|
|  | 199 | -static pos_T *var2fpos __ARGS((typval_T *varp, int lnum, int *fnum)); | 
|---|
|  | 200 | +static pos_T *var2fpos __ARGS((typval_T *varp, int dollar_lnum, int *fnum)); | 
|---|
|  | 201 | static int get_env_len __ARGS((char_u **arg)); | 
|---|
|  | 202 | static int get_id_len __ARGS((char_u **arg)); | 
|---|
|  | 203 | static int get_name_len __ARGS((char_u **arg, char_u **alias, int evaluate, int verbose)); | 
|---|
|  | 204 | @@ -10136,7 +10136,13 @@ | 
|---|
|  | 205 | if (mch_isdir(fname)) | 
|---|
|  | 206 | rettv->vval.v_number = 0; | 
|---|
|  | 207 | else | 
|---|
|  | 208 | +       { | 
|---|
|  | 209 | rettv->vval.v_number = (varnumber_T)st.st_size; | 
|---|
|  | 210 | + | 
|---|
|  | 211 | +           /* non-perfect check for overflow */ | 
|---|
|  | 212 | +           if ((off_t)rettv->vval.v_number != (off_t)st.st_size) | 
|---|
|  | 213 | +               rettv->vval.v_number = -2; | 
|---|
|  | 214 | +       } | 
|---|
|  | 215 | } | 
|---|
|  | 216 | else | 
|---|
|  | 217 | rettv->vval.v_number = -1; | 
|---|
|  | 218 | @@ -13919,6 +13925,8 @@ | 
|---|
|  | 219 | /* If 'n' flag is used: restore cursor position. */ | 
|---|
|  | 220 | if (flags & SP_NOMOVE) | 
|---|
|  | 221 | curwin->w_cursor = save_cursor; | 
|---|
|  | 222 | +    else | 
|---|
|  | 223 | +       curwin->w_set_curswant = TRUE; | 
|---|
|  | 224 | theend: | 
|---|
|  | 225 | p_ws = save_p_ws; | 
|---|
|  | 226 |  | 
|---|
|  | 227 | @@ -16497,9 +16505,9 @@ | 
|---|
|  | 228 | * Returns NULL when there is an error. | 
|---|
|  | 229 | */ | 
|---|
|  | 230 | static pos_T * | 
|---|
|  | 231 | -var2fpos(varp, lnum, fnum) | 
|---|
|  | 232 | +var2fpos(varp, dollar_lnum, fnum) | 
|---|
|  | 233 | typval_T   *varp; | 
|---|
|  | 234 | -    int                lnum;           /* TRUE when $ is last line */ | 
|---|
|  | 235 | +    int                dollar_lnum;    /* TRUE when $ is last line */ | 
|---|
|  | 236 | int                *fnum;          /* set to fnum for '0, 'A, etc. */ | 
|---|
|  | 237 | { | 
|---|
|  | 238 | char_u             *name; | 
|---|
|  | 239 | @@ -16512,6 +16520,7 @@ | 
|---|
|  | 240 | list_T          *l; | 
|---|
|  | 241 | int             len; | 
|---|
|  | 242 | int             error = FALSE; | 
|---|
|  | 243 | +       listitem_T      *li; | 
|---|
|  | 244 |  | 
|---|
|  | 245 | l = varp->vval.v_list; | 
|---|
|  | 246 | if (l == NULL) | 
|---|
|  | 247 | @@ -16527,6 +16536,14 @@ | 
|---|
|  | 248 | if (error) | 
|---|
|  | 249 | return NULL; | 
|---|
|  | 250 | len = (long)STRLEN(ml_get(pos.lnum)); | 
|---|
|  | 251 | + | 
|---|
|  | 252 | +       /* We accept "$" for the column number: last column. */ | 
|---|
|  | 253 | +       li = list_find(l, 1L); | 
|---|
|  | 254 | +       if (li != NULL && li->li_tv.v_type == VAR_STRING | 
|---|
|  | 255 | +               && li->li_tv.vval.v_string != NULL | 
|---|
|  | 256 | +               && STRCMP(li->li_tv.vval.v_string, "$") == 0) | 
|---|
|  | 257 | +           pos.col = len + 1; | 
|---|
|  | 258 | + | 
|---|
|  | 259 | /* Accept a position up to the NUL after the line. */ | 
|---|
|  | 260 | if (pos.col == 0 || (int)pos.col > len + 1) | 
|---|
|  | 261 | return NULL;        /* invalid column number */ | 
|---|
|  | 262 | @@ -16559,7 +16576,7 @@ | 
|---|
|  | 263 | pos.coladd = 0; | 
|---|
|  | 264 | #endif | 
|---|
|  | 265 |  | 
|---|
|  | 266 | -    if (name[0] == 'w' && lnum) | 
|---|
|  | 267 | +    if (name[0] == 'w' && dollar_lnum) | 
|---|
|  | 268 | { | 
|---|
|  | 269 | pos.col = 0; | 
|---|
|  | 270 | if (name[1] == '0')             /* "w0": first visible line */ | 
|---|
|  | 271 | @@ -16577,7 +16594,7 @@ | 
|---|
|  | 272 | } | 
|---|
|  | 273 | else if (name[0] == '$')           /* last column or line */ | 
|---|
|  | 274 | { | 
|---|
|  | 275 | -       if (lnum) | 
|---|
|  | 276 | +       if (dollar_lnum) | 
|---|
|  | 277 | { | 
|---|
|  | 278 | pos.lnum = curbuf->b_ml.ml_line_count; | 
|---|
|  | 279 | pos.col = 0; | 
|---|
|  | 280 | diff -Naur vim71.orig/src/ex_cmds.c vim71/src/ex_cmds.c | 
|---|
|  | 281 | --- vim71.orig/src/ex_cmds.c    2007-05-07 15:41:01.000000000 -0400 | 
|---|
|  | 282 | +++ vim71/src/ex_cmds.c 2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 283 | @@ -408,7 +408,11 @@ | 
|---|
|  | 284 | goto sortend; | 
|---|
|  | 285 | } | 
|---|
|  | 286 | *s = NUL; | 
|---|
|  | 287 | -           regmatch.regprog = vim_regcomp(p + 1, RE_MAGIC); | 
|---|
|  | 288 | +           /* Use last search pattern if sort pattern is empty. */ | 
|---|
|  | 289 | +           if (s == p + 1 && last_search_pat() != NULL) | 
|---|
|  | 290 | +               regmatch.regprog = vim_regcomp(last_search_pat(), RE_MAGIC); | 
|---|
|  | 291 | +           else | 
|---|
|  | 292 | +               regmatch.regprog = vim_regcomp(p + 1, RE_MAGIC); | 
|---|
|  | 293 | if (regmatch.regprog == NULL) | 
|---|
|  | 294 | goto sortend; | 
|---|
|  | 295 | p = s;              /* continue after the regexp */ | 
|---|
|  | 296 | @@ -2912,22 +2916,35 @@ | 
|---|
|  | 297 | } | 
|---|
|  | 298 |  | 
|---|
|  | 299 | /* | 
|---|
|  | 300 | - * Check if a buffer is read-only.  Ask for overruling in a dialog. | 
|---|
|  | 301 | - * Return TRUE and give an error message when the buffer is readonly. | 
|---|
|  | 302 | + * Check if a buffer is read-only (either 'readonly' option is set or file is | 
|---|
|  | 303 | + * read-only). Ask for overruling in a dialog. Return TRUE and give an error | 
|---|
|  | 304 | + * message when the buffer is readonly. | 
|---|
|  | 305 | */ | 
|---|
|  | 306 | static int | 
|---|
|  | 307 | check_readonly(forceit, buf) | 
|---|
|  | 308 | int                *forceit; | 
|---|
|  | 309 | buf_T      *buf; | 
|---|
|  | 310 | { | 
|---|
|  | 311 | -    if (!*forceit && buf->b_p_ro) | 
|---|
|  | 312 | +    struct stat        st; | 
|---|
|  | 313 | + | 
|---|
|  | 314 | +    /* Handle a file being readonly when the 'readonly' option is set or when | 
|---|
|  | 315 | +     * the file exists and permissions are read-only. | 
|---|
|  | 316 | +     * We will send 0777 to check_file_readonly(), as the "perm" variable is | 
|---|
|  | 317 | +     * important for device checks but not here. */ | 
|---|
|  | 318 | +    if (!*forceit && (buf->b_p_ro | 
|---|
|  | 319 | +               || (mch_stat((char *)buf->b_ffname, &st) >= 0 | 
|---|
|  | 320 | +                   && check_file_readonly(buf->b_ffname, 0777)))) | 
|---|
|  | 321 | { | 
|---|
|  | 322 | #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) | 
|---|
|  | 323 | if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL) | 
|---|
|  | 324 | { | 
|---|
|  | 325 | char_u      buff[IOSIZE]; | 
|---|
|  | 326 |  | 
|---|
|  | 327 | -           dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"), | 
|---|
|  | 328 | +           if (buf->b_p_ro) | 
|---|
|  | 329 | +               dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"), | 
|---|
|  | 330 | +                   buf->b_fname); | 
|---|
|  | 331 | +           else | 
|---|
|  | 332 | +               dialog_msg(buff, _("File permissions of \"%s\" are read-only.\nIt may still be possible to write it.\nDo you wish to try?"), | 
|---|
|  | 333 | buf->b_fname); | 
|---|
|  | 334 |  | 
|---|
|  | 335 | if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) == VIM_YES) | 
|---|
|  | 336 | @@ -2941,9 +2958,14 @@ | 
|---|
|  | 337 | } | 
|---|
|  | 338 | else | 
|---|
|  | 339 | #endif | 
|---|
|  | 340 | +       if (buf->b_p_ro) | 
|---|
|  | 341 | EMSG(_(e_readonly)); | 
|---|
|  | 342 | +       else | 
|---|
|  | 343 | +           EMSG2(_("E505: \"%s\" is read-only (add ! to override)"), | 
|---|
|  | 344 | +                   buf->b_fname); | 
|---|
|  | 345 | return TRUE; | 
|---|
|  | 346 | } | 
|---|
|  | 347 | + | 
|---|
|  | 348 | return FALSE; | 
|---|
|  | 349 | } | 
|---|
|  | 350 |  | 
|---|
|  | 351 | @@ -3367,7 +3389,7 @@ | 
|---|
|  | 352 | * was in this window (or another window).  If not used | 
|---|
|  | 353 | * before, reset the local window options to the global | 
|---|
|  | 354 | * values.  Also restores old folding stuff. */ | 
|---|
|  | 355 | -               get_winopts(buf); | 
|---|
|  | 356 | +               get_winopts(curbuf); | 
|---|
|  | 357 | #ifdef FEAT_SPELL | 
|---|
|  | 358 | did_get_winopts = TRUE; | 
|---|
|  | 359 | #endif | 
|---|
|  | 360 | @@ -3649,8 +3671,8 @@ | 
|---|
|  | 361 | #ifdef FEAT_SPELL | 
|---|
|  | 362 | /* If the window options were changed may need to set the spell language. | 
|---|
|  | 363 | * Can only do this after the buffer has been properly setup. */ | 
|---|
|  | 364 | -    if (did_get_winopts && curwin->w_p_spell && *buf->b_p_spl != NUL) | 
|---|
|  | 365 | -       did_set_spelllang(buf); | 
|---|
|  | 366 | +    if (did_get_winopts && curwin->w_p_spell && *curbuf->b_p_spl != NUL) | 
|---|
|  | 367 | +       did_set_spelllang(curbuf); | 
|---|
|  | 368 | #endif | 
|---|
|  | 369 |  | 
|---|
|  | 370 | if (command == NULL) | 
|---|
|  | 371 | diff -Naur vim71.orig/src/ex_docmd.c vim71/src/ex_docmd.c | 
|---|
|  | 372 | --- vim71.orig/src/ex_docmd.c   2007-05-07 15:49:38.000000000 -0400 | 
|---|
|  | 373 | +++ vim71/src/ex_docmd.c        2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 374 | @@ -133,6 +133,7 @@ | 
|---|
|  | 375 | static void    get_flags __ARGS((exarg_T *eap)); | 
|---|
|  | 376 | #if !defined(FEAT_PERL) || !defined(FEAT_PYTHON) || !defined(FEAT_TCL) \ | 
|---|
|  | 377 | || !defined(FEAT_RUBY) || !defined(FEAT_MZSCHEME) | 
|---|
|  | 378 | +# define HAVE_EX_SCRIPT_NI | 
|---|
|  | 379 | static void    ex_script_ni __ARGS((exarg_T *eap)); | 
|---|
|  | 380 | #endif | 
|---|
|  | 381 | static char_u  *invalid_range __ARGS((exarg_T *eap)); | 
|---|
|  | 382 | @@ -2118,7 +2119,11 @@ | 
|---|
|  | 383 | #ifdef FEAT_USR_CMDS | 
|---|
|  | 384 | !USER_CMDIDX(ea.cmdidx) && | 
|---|
|  | 385 | #endif | 
|---|
|  | 386 | -           cmdnames[ea.cmdidx].cmd_func == ex_ni); | 
|---|
|  | 387 | +           (cmdnames[ea.cmdidx].cmd_func == ex_ni | 
|---|
|  | 388 | +#ifdef HAVE_EX_SCRIPT_NI | 
|---|
|  | 389 | +            || cmdnames[ea.cmdidx].cmd_func == ex_script_ni | 
|---|
|  | 390 | +#endif | 
|---|
|  | 391 | +            )); | 
|---|
|  | 392 |  | 
|---|
|  | 393 | #ifndef FEAT_EVAL | 
|---|
|  | 394 | /* | 
|---|
|  | 395 | @@ -3997,8 +4002,7 @@ | 
|---|
|  | 396 | eap->errmsg = (char_u *)N_("E319: Sorry, the command is not available in this version"); | 
|---|
|  | 397 | } | 
|---|
|  | 398 |  | 
|---|
|  | 399 | -#if !defined(FEAT_PERL) || !defined(FEAT_PYTHON) || !defined(FEAT_TCL) \ | 
|---|
|  | 400 | -       || !defined(FEAT_RUBY) || !defined(FEAT_MZSCHEME) | 
|---|
|  | 401 | +#ifdef HAVE_EX_SCRIPT_NI | 
|---|
|  | 402 | /* | 
|---|
|  | 403 | * Function called for script command which is Not Implemented.  NI! | 
|---|
|  | 404 | * Skips over ":perl <<EOF" constructs. | 
|---|
|  | 405 | diff -Naur vim71.orig/src/ex_getln.c vim71/src/ex_getln.c | 
|---|
|  | 406 | --- vim71.orig/src/ex_getln.c   2007-05-07 15:47:23.000000000 -0400 | 
|---|
|  | 407 | +++ vim71/src/ex_getln.c        2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 408 | @@ -484,7 +484,8 @@ | 
|---|
|  | 409 | if (xpc.xp_context == EXPAND_MENUNAMES && p_wmnu) | 
|---|
|  | 410 | { | 
|---|
|  | 411 | /* Hitting <Down> after "emenu Name.": complete submenu */ | 
|---|
|  | 412 | -           if (ccline.cmdbuff[ccline.cmdpos - 1] == '.' && c == K_DOWN) | 
|---|
|  | 413 | +           if (c == K_DOWN && ccline.cmdpos > 0 | 
|---|
|  | 414 | +                                 && ccline.cmdbuff[ccline.cmdpos - 1] == '.') | 
|---|
|  | 415 | c = p_wc; | 
|---|
|  | 416 | else if (c == K_UP) | 
|---|
|  | 417 | { | 
|---|
|  | 418 | @@ -533,9 +534,11 @@ | 
|---|
|  | 419 | upseg[3] = PATHSEP; | 
|---|
|  | 420 | upseg[4] = NUL; | 
|---|
|  | 421 |  | 
|---|
|  | 422 | -           if (ccline.cmdbuff[ccline.cmdpos - 1] == PATHSEP | 
|---|
|  | 423 | -                   && c == K_DOWN | 
|---|
|  | 424 | -                   && (ccline.cmdbuff[ccline.cmdpos - 2] != '.' | 
|---|
|  | 425 | +           if (c == K_DOWN | 
|---|
|  | 426 | +                   && ccline.cmdpos > 0 | 
|---|
|  | 427 | +                   && ccline.cmdbuff[ccline.cmdpos - 1] == PATHSEP | 
|---|
|  | 428 | +                   && (ccline.cmdpos < 3 | 
|---|
|  | 429 | +                       || ccline.cmdbuff[ccline.cmdpos - 2] != '.' | 
|---|
|  | 430 | || ccline.cmdbuff[ccline.cmdpos - 3] != '.')) | 
|---|
|  | 431 | { | 
|---|
|  | 432 | /* go down a directory */ | 
|---|
|  | 433 | @@ -730,8 +733,8 @@ | 
|---|
|  | 434 | /* In Ex mode a backslash escapes a newline. */ | 
|---|
|  | 435 | if (exmode_active | 
|---|
|  | 436 | && c != ESC | 
|---|
|  | 437 | -                   && ccline.cmdpos > 0 | 
|---|
|  | 438 | && ccline.cmdpos == ccline.cmdlen | 
|---|
|  | 439 | +                   && ccline.cmdpos > 0 | 
|---|
|  | 440 | && ccline.cmdbuff[ccline.cmdpos - 1] == '\\') | 
|---|
|  | 441 | { | 
|---|
|  | 442 | if (c == K_KENTER) | 
|---|
|  | 443 | diff -Naur vim71.orig/src/fileio.c vim71/src/fileio.c | 
|---|
|  | 444 | --- vim71.orig/src/fileio.c     2007-05-10 07:29:44.000000000 -0400 | 
|---|
|  | 445 | +++ vim71/src/fileio.c  2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 446 | @@ -44,6 +44,10 @@ | 
|---|
|  | 447 | /* Is there any system that doesn't have access()? */ | 
|---|
|  | 448 | #define USE_MCH_ACCESS | 
|---|
|  | 449 |  | 
|---|
|  | 450 | +#if defined(sun) && defined(S_ISCHR) | 
|---|
|  | 451 | +# define OPEN_CHR_FILES | 
|---|
|  | 452 | +static int is_dev_fd_file(char_u *fname); | 
|---|
|  | 453 | +#endif | 
|---|
|  | 454 | #ifdef FEAT_MBYTE | 
|---|
|  | 455 | static char_u *next_fenc __ARGS((char_u **pp)); | 
|---|
|  | 456 | # ifdef FEAT_EVAL | 
|---|
|  | 457 | @@ -406,6 +410,10 @@ | 
|---|
|  | 458 | # ifdef S_ISSOCK | 
|---|
|  | 459 | && !S_ISSOCK(perm)            /* ... or socket */ | 
|---|
|  | 460 | # endif | 
|---|
|  | 461 | +# ifdef OPEN_CHR_FILES | 
|---|
|  | 462 | +                     && !(S_ISCHR(perm) && is_dev_fd_file(fname)) | 
|---|
|  | 463 | +                       /* ... or a character special file named /dev/fd/<n> */ | 
|---|
|  | 464 | +# endif | 
|---|
|  | 465 | ) | 
|---|
|  | 466 | { | 
|---|
|  | 467 | if (S_ISDIR(perm)) | 
|---|
|  | 468 | @@ -424,7 +432,7 @@ | 
|---|
|  | 469 | */ | 
|---|
|  | 470 | if (!p_odev && mch_nodetype(fname) == NODE_WRITABLE) | 
|---|
|  | 471 | { | 
|---|
|  | 472 | -           filemess(curbuf, fname, (char_u *)_("is a device (disabled with 'opendevice' option"), 0); | 
|---|
|  | 473 | +           filemess(curbuf, fname, (char_u *)_("is a device (disabled with 'opendevice' option)"), 0); | 
|---|
|  | 474 | msg_end(); | 
|---|
|  | 475 | msg_scroll = msg_save; | 
|---|
|  | 476 | return FAIL; | 
|---|
|  | 477 | @@ -2265,6 +2273,13 @@ | 
|---|
|  | 478 | } | 
|---|
|  | 479 | #  endif | 
|---|
|  | 480 | # endif | 
|---|
|  | 481 | +# ifdef OPEN_CHR_FILES | 
|---|
|  | 482 | +           if (S_ISCHR(perm))                      /* or character special */ | 
|---|
|  | 483 | +           { | 
|---|
|  | 484 | +               STRCAT(IObuff, _("[character special]")); | 
|---|
|  | 485 | +               c = TRUE; | 
|---|
|  | 486 | +           } | 
|---|
|  | 487 | +# endif | 
|---|
|  | 488 | #endif | 
|---|
|  | 489 | if (curbuf->b_p_ro) | 
|---|
|  | 490 | { | 
|---|
|  | 491 | @@ -2464,6 +2479,25 @@ | 
|---|
|  | 492 | return OK; | 
|---|
|  | 493 | } | 
|---|
|  | 494 |  | 
|---|
|  | 495 | +#ifdef OPEN_CHR_FILES | 
|---|
|  | 496 | +/* | 
|---|
|  | 497 | + * Returns TRUE if the file name argument is of the form "/dev/fd/\d\+", | 
|---|
|  | 498 | + * which is the name of files used for process substitution output by | 
|---|
|  | 499 | + * some shells on some operating systems, e.g., bash on SunOS. | 
|---|
|  | 500 | + * Do not accept "/dev/fd/[012]", opening these may hang Vim. | 
|---|
|  | 501 | + */ | 
|---|
|  | 502 | +    static int | 
|---|
|  | 503 | +is_dev_fd_file(fname) | 
|---|
|  | 504 | +    char_u     *fname; | 
|---|
|  | 505 | +{ | 
|---|
|  | 506 | +    return (STRNCMP(fname, "/dev/fd/", 8) == 0 | 
|---|
|  | 507 | +           && VIM_ISDIGIT(fname[8]) | 
|---|
|  | 508 | +           && *skipdigits(fname + 9) == NUL | 
|---|
|  | 509 | +           && (fname[9] != NUL | 
|---|
|  | 510 | +               || (fname[8] != '0' && fname[8] != '1' && fname[8] != '2'))); | 
|---|
|  | 511 | +} | 
|---|
|  | 512 | +#endif | 
|---|
|  | 513 | + | 
|---|
|  | 514 | #ifdef FEAT_MBYTE | 
|---|
|  | 515 |  | 
|---|
|  | 516 | /* | 
|---|
|  | 517 | @@ -2734,6 +2768,32 @@ | 
|---|
|  | 518 | #endif | 
|---|
|  | 519 |  | 
|---|
|  | 520 | /* | 
|---|
|  | 521 | + * Return TRUE if a file appears to be read-only from the file permissions. | 
|---|
|  | 522 | + */ | 
|---|
|  | 523 | +    int | 
|---|
|  | 524 | +check_file_readonly(fname, perm) | 
|---|
|  | 525 | +    char_u     *fname;         /* full path to file */ | 
|---|
|  | 526 | +    int                perm;           /* known permissions on file */ | 
|---|
|  | 527 | +{ | 
|---|
|  | 528 | +#ifndef USE_MCH_ACCESS | 
|---|
|  | 529 | +    int            fd = 0; | 
|---|
|  | 530 | +#endif | 
|---|
|  | 531 | + | 
|---|
|  | 532 | +    return ( | 
|---|
|  | 533 | +#ifdef USE_MCH_ACCESS | 
|---|
|  | 534 | +# ifdef UNIX | 
|---|
|  | 535 | +       (perm & 0222) == 0 || | 
|---|
|  | 536 | +# endif | 
|---|
|  | 537 | +       mch_access((char *)fname, W_OK) | 
|---|
|  | 538 | +#else | 
|---|
|  | 539 | +       (fd = mch_open((char *)fname, O_RDWR | O_EXTRA, 0)) < 0 | 
|---|
|  | 540 | +                                       ? TRUE : (close(fd), FALSE) | 
|---|
|  | 541 | +#endif | 
|---|
|  | 542 | +       ); | 
|---|
|  | 543 | +} | 
|---|
|  | 544 | + | 
|---|
|  | 545 | + | 
|---|
|  | 546 | +/* | 
|---|
|  | 547 | * buf_write() - write to file "fname" lines "start" through "end" | 
|---|
|  | 548 | * | 
|---|
|  | 549 | * We do our own buffering here because fwrite() is so slow. | 
|---|
|  | 550 | @@ -3219,17 +3279,8 @@ | 
|---|
|  | 551 | * Check if the file is really writable (when renaming the file to | 
|---|
|  | 552 | * make a backup we won't discover it later). | 
|---|
|  | 553 | */ | 
|---|
|  | 554 | -       file_readonly = ( | 
|---|
|  | 555 | -# ifdef USE_MCH_ACCESS | 
|---|
|  | 556 | -#  ifdef UNIX | 
|---|
|  | 557 | -                   (perm & 0222) == 0 || | 
|---|
|  | 558 | -#  endif | 
|---|
|  | 559 | -                   mch_access((char *)fname, W_OK) | 
|---|
|  | 560 | -# else | 
|---|
|  | 561 | -                   (fd = mch_open((char *)fname, O_RDWR | O_EXTRA, 0)) < 0 | 
|---|
|  | 562 | -                                                  ? TRUE : (close(fd), FALSE) | 
|---|
|  | 563 | -# endif | 
|---|
|  | 564 | -                   ); | 
|---|
|  | 565 | +       file_readonly = check_file_readonly(fname, (int)perm); | 
|---|
|  | 566 | + | 
|---|
|  | 567 | if (!forceit && file_readonly) | 
|---|
|  | 568 | { | 
|---|
|  | 569 | if (vim_strchr(p_cpo, CPO_FWRITE) != NULL) | 
|---|
|  | 570 | diff -Naur vim71.orig/src/gui_gtk.c vim71/src/gui_gtk.c | 
|---|
|  | 571 | --- vim71.orig/src/gui_gtk.c    2007-05-10 04:37:37.000000000 -0400 | 
|---|
|  | 572 | +++ vim71/src/gui_gtk.c 2007-07-23 19:57:05.000000000 -0400 | 
|---|
|  | 573 | @@ -53,8 +53,8 @@ | 
|---|
|  | 574 | # ifdef bindtextdomain | 
|---|
|  | 575 | #  undef bindtextdomain | 
|---|
|  | 576 | # endif | 
|---|
|  | 577 | -# ifdef bindtextdomain_codeset | 
|---|
|  | 578 | -#  undef bindtextdomain_codeset | 
|---|
|  | 579 | +# ifdef bind_textdomain_codeset | 
|---|
|  | 580 | +#  undef bind_textdomain_codeset | 
|---|
|  | 581 | # endif | 
|---|
|  | 582 | # if defined(FEAT_GETTEXT) && !defined(ENABLE_NLS) | 
|---|
|  | 583 | #  define ENABLE_NLS   /* so the texts in the dialog boxes are translated */ | 
|---|
|  | 584 | diff -Naur vim71.orig/src/gui_gtk_x11.c vim71/src/gui_gtk_x11.c | 
|---|
|  | 585 | --- vim71.orig/src/gui_gtk_x11.c        2007-05-10 04:37:49.000000000 -0400 | 
|---|
|  | 586 | +++ vim71/src/gui_gtk_x11.c     2007-07-23 19:57:08.000000000 -0400 | 
|---|
|  | 587 | @@ -36,8 +36,8 @@ | 
|---|
|  | 588 | # ifdef bindtextdomain | 
|---|
|  | 589 | #  undef bindtextdomain | 
|---|
|  | 590 | # endif | 
|---|
|  | 591 | -# ifdef bindtextdomain_codeset | 
|---|
|  | 592 | -#  undef bindtextdomain_codeset | 
|---|
|  | 593 | +# ifdef bind_textdomain_codeset | 
|---|
|  | 594 | +#  undef bind_textdomain_codeset | 
|---|
|  | 595 | # endif | 
|---|
|  | 596 | # if defined(FEAT_GETTEXT) && !defined(ENABLE_NLS) | 
|---|
|  | 597 | #  define ENABLE_NLS   /* so the texts in the dialog boxes are translated */ | 
|---|
|  | 598 | @@ -2188,8 +2188,10 @@ | 
|---|
|  | 599 | escaped_filename = vim_strsave_escaped(filename, escape_chars); | 
|---|
|  | 600 | if (escaped_filename == NULL) | 
|---|
|  | 601 | return FALSE; | 
|---|
|  | 602 | -    mksession_cmdline = g_strconcat("mksession ", (char *)escaped_filename, NULL); | 
|---|
|  | 603 | +    mksession_cmdline = g_strconcat("mksession ", (char *)escaped_filename, | 
|---|
|  | 604 | +                                                                       NULL); | 
|---|
|  | 605 | vim_free(escaped_filename); | 
|---|
|  | 606 | + | 
|---|
|  | 607 | /* | 
|---|
|  | 608 | * Use a reasonable hardcoded set of 'sessionoptions' flags to avoid | 
|---|
|  | 609 | * unpredictable effects when the session is saved automatically.  Also, | 
|---|
|  | 610 | @@ -2199,7 +2201,7 @@ | 
|---|
|  | 611 | */ | 
|---|
|  | 612 | save_ssop_flags = ssop_flags; | 
|---|
|  | 613 | ssop_flags = (SSOP_BLANK|SSOP_CURDIR|SSOP_FOLDS|SSOP_GLOBALS | 
|---|
|  | 614 | -                 |SSOP_HELP|SSOP_OPTIONS|SSOP_WINSIZE); | 
|---|
|  | 615 | +                 |SSOP_HELP|SSOP_OPTIONS|SSOP_WINSIZE|SSOP_TABPAGES); | 
|---|
|  | 616 |  | 
|---|
|  | 617 | do_cmdline_cmd((char_u *)"let Save_VV_this_session = v:this_session"); | 
|---|
|  | 618 | failed = (do_cmdline_cmd((char_u *)mksession_cmdline) == FAIL); | 
|---|
|  | 619 | diff -Naur vim71.orig/src/if_mzsch.c vim71/src/if_mzsch.c | 
|---|
|  | 620 | --- vim71.orig/src/if_mzsch.c   2007-05-12 07:13:47.000000000 -0400 | 
|---|
|  | 621 | +++ vim71/src/if_mzsch.c        2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 622 | @@ -308,6 +308,8 @@ | 
|---|
|  | 623 | static Scheme_Config *(*dll_scheme_current_config)(void); | 
|---|
|  | 624 | static Scheme_Object *(*dll_scheme_char_string_to_byte_string) | 
|---|
|  | 625 | (Scheme_Object *s); | 
|---|
|  | 626 | +static Scheme_Object *(*dll_scheme_char_string_to_path) | 
|---|
|  | 627 | +    (Scheme_Object *s); | 
|---|
|  | 628 | # endif | 
|---|
|  | 629 |  | 
|---|
|  | 630 | /* arrays are imported directly */ | 
|---|
|  | 631 | @@ -398,6 +400,8 @@ | 
|---|
|  | 632 | #  define scheme_current_config dll_scheme_current_config | 
|---|
|  | 633 | #  define scheme_char_string_to_byte_string \ | 
|---|
|  | 634 | dll_scheme_char_string_to_byte_string | 
|---|
|  | 635 | +#  define scheme_char_string_to_path \ | 
|---|
|  | 636 | +    dll_scheme_char_string_to_path | 
|---|
|  | 637 | # endif | 
|---|
|  | 638 |  | 
|---|
|  | 639 | typedef struct | 
|---|
|  | 640 | @@ -498,6 +502,8 @@ | 
|---|
|  | 641 | {"scheme_current_config", (void **)&dll_scheme_current_config}, | 
|---|
|  | 642 | {"scheme_char_string_to_byte_string", | 
|---|
|  | 643 | (void **)&dll_scheme_char_string_to_byte_string}, | 
|---|
|  | 644 | +    {"scheme_char_string_to_path", | 
|---|
|  | 645 | +       (void **)&dll_scheme_char_string_to_path}, | 
|---|
|  | 646 | # endif | 
|---|
|  | 647 | {NULL, NULL}}; | 
|---|
|  | 648 |  | 
|---|
|  | 649 | @@ -773,7 +779,14 @@ | 
|---|
|  | 650 | #ifdef MZSCHEME_COLLECTS | 
|---|
|  | 651 | /* setup 'current-library-collection-paths' parameter */ | 
|---|
|  | 652 | scheme_set_param(scheme_config, MZCONFIG_COLLECTION_PATHS, | 
|---|
|  | 653 | -           scheme_make_pair(scheme_make_string(MZSCHEME_COLLECTS), | 
|---|
|  | 654 | +           scheme_make_pair( | 
|---|
|  | 655 | +# if MZSCHEME_VERSION_MAJOR >= 299 | 
|---|
|  | 656 | +               scheme_char_string_to_path( | 
|---|
|  | 657 | +                   scheme_byte_string_to_char_string( | 
|---|
|  | 658 | +                       scheme_make_byte_string(MZSCHEME_COLLECTS))), | 
|---|
|  | 659 | +# else | 
|---|
|  | 660 | +               scheme_make_string(MZSCHEME_COLLECTS), | 
|---|
|  | 661 | +# endif | 
|---|
|  | 662 | scheme_null)); | 
|---|
|  | 663 | #endif | 
|---|
|  | 664 | #ifdef HAVE_SANDBOX | 
|---|
|  | 665 | diff -Naur vim71.orig/src/main.c vim71/src/main.c | 
|---|
|  | 666 | --- vim71.orig/src/main.c       2007-05-07 15:38:44.000000000 -0400 | 
|---|
|  | 667 | +++ vim71/src/main.c    2007-07-23 19:57:08.000000000 -0400 | 
|---|
|  | 668 | @@ -1360,8 +1360,7 @@ | 
|---|
|  | 669 | p = vim_getenv((char_u *)"VIMRUNTIME", &mustfree); | 
|---|
|  | 670 | if (p != NULL && *p != NUL) | 
|---|
|  | 671 | { | 
|---|
|  | 672 | -           STRCPY(NameBuff, p); | 
|---|
|  | 673 | -           STRCAT(NameBuff, "/lang"); | 
|---|
|  | 674 | +           vim_snprintf((char *)NameBuff, MAXPATHL, "%s/lang", p); | 
|---|
|  | 675 | bindtextdomain(VIMPACKAGE, (char *)NameBuff); | 
|---|
|  | 676 | } | 
|---|
|  | 677 | if (mustfree) | 
|---|
|  | 678 | diff -Naur vim71.orig/src/message.c vim71/src/message.c | 
|---|
|  | 679 | --- vim71.orig/src/message.c    2007-05-07 15:31:59.000000000 -0400 | 
|---|
|  | 680 | +++ vim71/src/message.c 2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 681 | @@ -3456,11 +3456,11 @@ | 
|---|
|  | 682 | /* advance to next hotkey and set default hotkey */ | 
|---|
|  | 683 | #ifdef FEAT_MBYTE | 
|---|
|  | 684 | if (has_mbyte) | 
|---|
|  | 685 | -                       hotkp += (*mb_ptr2len)(hotkp); | 
|---|
|  | 686 | +                       hotkp += STRLEN(hotkp); | 
|---|
|  | 687 | else | 
|---|
|  | 688 | #endif | 
|---|
|  | 689 | ++hotkp; | 
|---|
|  | 690 | -                   (void)copy_char(r + 1, hotkp, TRUE); | 
|---|
|  | 691 | +                   hotkp[copy_char(r + 1, hotkp, TRUE)] = NUL; | 
|---|
|  | 692 | if (dfltbutton) | 
|---|
|  | 693 | --dfltbutton; | 
|---|
|  | 694 |  | 
|---|
|  | 695 | @@ -3493,7 +3493,7 @@ | 
|---|
|  | 696 | *msgp++ = (dfltbutton == 1) ? ']' : ')'; | 
|---|
|  | 697 |  | 
|---|
|  | 698 | /* redefine hotkey */ | 
|---|
|  | 699 | -                       (void)copy_char(r, hotkp, TRUE); | 
|---|
|  | 700 | +                       hotkp[copy_char(r, hotkp, TRUE)] = NUL; | 
|---|
|  | 701 | } | 
|---|
|  | 702 | } | 
|---|
|  | 703 | else | 
|---|
|  | 704 | @@ -3519,8 +3519,6 @@ | 
|---|
|  | 705 | *msgp++ = ':'; | 
|---|
|  | 706 | *msgp++ = ' '; | 
|---|
|  | 707 | *msgp = NUL; | 
|---|
|  | 708 | -           mb_ptr_adv(hotkp); | 
|---|
|  | 709 | -           *hotkp = NUL; | 
|---|
|  | 710 | } | 
|---|
|  | 711 | else | 
|---|
|  | 712 | { | 
|---|
|  | 713 | @@ -3555,8 +3553,9 @@ | 
|---|
|  | 714 | msgp = confirm_msg + 1 + STRLEN(message); | 
|---|
|  | 715 | hotkp = hotk; | 
|---|
|  | 716 |  | 
|---|
|  | 717 | -           /* define first default hotkey */ | 
|---|
|  | 718 | -           (void)copy_char(buttons, hotkp, TRUE); | 
|---|
|  | 719 | +           /* Define first default hotkey.  Keep the hotkey string NUL | 
|---|
|  | 720 | +            * terminated to avoid reading past the end. */ | 
|---|
|  | 721 | +           hotkp[copy_char(buttons, hotkp, TRUE)] = NUL; | 
|---|
|  | 722 |  | 
|---|
|  | 723 | /* Remember where the choices start, displaying starts here when | 
|---|
|  | 724 | * "hotkp" typed at the more prompt. */ | 
|---|
|  | 725 | diff -Naur vim71.orig/src/normal.c vim71/src/normal.c | 
|---|
|  | 726 | --- vim71.orig/src/normal.c     2007-05-07 15:34:39.000000000 -0400 | 
|---|
|  | 727 | +++ vim71/src/normal.c  2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 728 | @@ -6379,7 +6379,7 @@ | 
|---|
|  | 729 | */ | 
|---|
|  | 730 | else if (cap->nchar == 'p' || cap->nchar == 'P') | 
|---|
|  | 731 | { | 
|---|
|  | 732 | -       if (!checkclearopq(cap->oap)) | 
|---|
|  | 733 | +       if (!checkclearop(cap->oap)) | 
|---|
|  | 734 | { | 
|---|
|  | 735 | prep_redo_cmd(cap); | 
|---|
|  | 736 | do_put(cap->oap->regname, | 
|---|
|  | 737 | diff -Naur vim71.orig/src/ops.c vim71/src/ops.c | 
|---|
|  | 738 | --- vim71.orig/src/ops.c        2007-05-07 15:33:47.000000000 -0400 | 
|---|
|  | 739 | +++ vim71/src/ops.c     2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 740 | @@ -3404,7 +3404,9 @@ | 
|---|
|  | 741 |  | 
|---|
|  | 742 | #ifdef FEAT_VIRTUALEDIT | 
|---|
|  | 743 | col += curwin->w_cursor.coladd; | 
|---|
|  | 744 | -       if (ve_flags == VE_ALL && curwin->w_cursor.coladd > 0) | 
|---|
|  | 745 | +       if (ve_flags == VE_ALL | 
|---|
|  | 746 | +               && (curwin->w_cursor.coladd > 0 | 
|---|
|  | 747 | +                   || endcol2 == curwin->w_cursor.col)) | 
|---|
|  | 748 | { | 
|---|
|  | 749 | if (dir == FORWARD && c == NUL) | 
|---|
|  | 750 | ++col; | 
|---|
|  | 751 | diff -Naur vim71.orig/src/option.c vim71/src/option.c | 
|---|
|  | 752 | --- vim71.orig/src/option.c     2007-05-01 07:26:10.000000000 -0400 | 
|---|
|  | 753 | +++ vim71/src/option.c  2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 754 | @@ -8219,6 +8219,25 @@ | 
|---|
|  | 755 | varp = get_varp(&options[opt_idx]); | 
|---|
|  | 756 | if (varp != NULL)   /* hidden option is not changed */ | 
|---|
|  | 757 | { | 
|---|
|  | 758 | +               if (number == 0 && string != NULL) | 
|---|
|  | 759 | +               { | 
|---|
|  | 760 | +                   int index; | 
|---|
|  | 761 | + | 
|---|
|  | 762 | +                   /* Either we are given a string or we are setting option | 
|---|
|  | 763 | +                    * to zero. */ | 
|---|
|  | 764 | +                   for (index = 0; string[index] == '0'; ++index) | 
|---|
|  | 765 | +                       ; | 
|---|
|  | 766 | +                   if (string[index] != NUL || index == 0) | 
|---|
|  | 767 | +                   { | 
|---|
|  | 768 | +                       /* There's another character after zeros or the string | 
|---|
|  | 769 | +                        * is empty.  In both cases, we are trying to set a | 
|---|
|  | 770 | +                        * num option using a string. */ | 
|---|
|  | 771 | +                       EMSG3(_("E521: Number required: &%s = '%s'"), | 
|---|
|  | 772 | +                                                               name, string); | 
|---|
|  | 773 | +                       return;     /* do nothing as we hit an error */ | 
|---|
|  | 774 | + | 
|---|
|  | 775 | +                   } | 
|---|
|  | 776 | +               } | 
|---|
|  | 777 | if (flags & P_NUM) | 
|---|
|  | 778 | (void)set_num_option(opt_idx, varp, number, | 
|---|
|  | 779 | NULL, 0, opt_flags); | 
|---|
|  | 780 | @@ -10605,6 +10624,9 @@ | 
|---|
|  | 781 | file_ff_differs(buf) | 
|---|
|  | 782 | buf_T      *buf; | 
|---|
|  | 783 | { | 
|---|
|  | 784 | +    /* In a buffer that was never loaded the options are not valid. */ | 
|---|
|  | 785 | +    if (buf->b_flags & BF_NEVERLOADED) | 
|---|
|  | 786 | +       return FALSE; | 
|---|
|  | 787 | if ((buf->b_flags & BF_NEW) | 
|---|
|  | 788 | && buf->b_ml.ml_line_count == 1 | 
|---|
|  | 789 | && *ml_get_buf(buf, (linenr_T)1, FALSE) == NUL) | 
|---|
|  | 790 | diff -Naur vim71.orig/src/os_unix.h vim71/src/os_unix.h | 
|---|
|  | 791 | --- vim71.orig/src/os_unix.h    2007-05-07 15:35:05.000000000 -0400 | 
|---|
|  | 792 | +++ vim71/src/os_unix.h 2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 793 | @@ -508,6 +508,9 @@ | 
|---|
|  | 794 | #if !defined(S_ISFIFO) && defined(S_IFIFO) | 
|---|
|  | 795 | # define       S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) | 
|---|
|  | 796 | #endif | 
|---|
|  | 797 | +#if !defined(S_ISCHR) && defined(S_IFCHR) | 
|---|
|  | 798 | +# define       S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) | 
|---|
|  | 799 | +#endif | 
|---|
|  | 800 |  | 
|---|
|  | 801 | /* Note: Some systems need both string.h and strings.h (Savage).  However, | 
|---|
|  | 802 | * some systems can't handle both, only use string.h in that case. */ | 
|---|
|  | 803 | diff -Naur vim71.orig/src/popupmnu.c vim71/src/popupmnu.c | 
|---|
|  | 804 | --- vim71.orig/src/popupmnu.c   2007-03-24 16:07:39.000000000 -0400 | 
|---|
|  | 805 | +++ vim71/src/popupmnu.c        2007-07-23 19:57:08.000000000 -0400 | 
|---|
|  | 806 | @@ -466,7 +466,7 @@ | 
|---|
|  | 807 | set_option_value((char_u *)"bh", 0L, | 
|---|
|  | 808 | (char_u *)"wipe", OPT_LOCAL); | 
|---|
|  | 809 | set_option_value((char_u *)"diff", 0L, | 
|---|
|  | 810 | -                                                    (char_u *)"", OPT_LOCAL); | 
|---|
|  | 811 | +                                                            NULL, OPT_LOCAL); | 
|---|
|  | 812 | } | 
|---|
|  | 813 | } | 
|---|
|  | 814 | if (res == OK) | 
|---|
|  | 815 | diff -Naur vim71.orig/src/proto/fileio.pro vim71/src/proto/fileio.pro | 
|---|
|  | 816 | --- vim71.orig/src/proto/fileio.pro     2007-05-12 06:39:14.000000000 -0400 | 
|---|
|  | 817 | +++ vim71/src/proto/fileio.pro  2007-07-23 19:57:08.000000000 -0400 | 
|---|
|  | 818 | @@ -2,6 +2,7 @@ | 
|---|
|  | 819 | void filemess __ARGS((buf_T *buf, char_u *name, char_u *s, int attr)); | 
|---|
|  | 820 | int readfile __ARGS((char_u *fname, char_u *sfname, linenr_T from, linenr_T lines_to_skip, linenr_T lines_to_read, exarg_T *eap, int flags)); | 
|---|
|  | 821 | int prep_exarg __ARGS((exarg_T *eap, buf_T *buf)); | 
|---|
|  | 822 | +int check_file_readonly __ARGS((char_u *fname, int perm)); | 
|---|
|  | 823 | int buf_write __ARGS((buf_T *buf, char_u *fname, char_u *sfname, linenr_T start, linenr_T end, exarg_T *eap, int append, int forceit, int reset_changed, int filtering)); | 
|---|
|  | 824 | void msg_add_fname __ARGS((buf_T *buf, char_u *fname)); | 
|---|
|  | 825 | void msg_add_lines __ARGS((int insert_space, long lnum, long nchars)); | 
|---|
|  | 826 | diff -Naur vim71.orig/src/quickfix.c vim71/src/quickfix.c | 
|---|
|  | 827 | --- vim71.orig/src/quickfix.c   2007-02-03 19:50:17.000000000 -0500 | 
|---|
|  | 828 | +++ vim71/src/quickfix.c        2007-07-23 19:57:08.000000000 -0400 | 
|---|
|  | 829 | @@ -2331,7 +2331,7 @@ | 
|---|
|  | 830 | set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix", | 
|---|
|  | 831 | OPT_LOCAL); | 
|---|
|  | 832 | set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL); | 
|---|
|  | 833 | -           set_option_value((char_u *)"diff", 0L, (char_u *)"", OPT_LOCAL); | 
|---|
|  | 834 | +           set_option_value((char_u *)"diff", 0L, NULL, OPT_LOCAL); | 
|---|
|  | 835 | } | 
|---|
|  | 836 |  | 
|---|
|  | 837 | /* Only set the height when still in the same tab page and there is no | 
|---|
|  | 838 | diff -Naur vim71.orig/src/screen.c vim71/src/screen.c | 
|---|
|  | 839 | --- vim71.orig/src/screen.c     2007-05-07 15:27:53.000000000 -0400 | 
|---|
|  | 840 | +++ vim71/src/screen.c  2007-07-23 19:57:08.000000000 -0400 | 
|---|
|  | 841 | @@ -3459,9 +3459,11 @@ | 
|---|
|  | 842 | #ifdef FEAT_DIFF | 
|---|
|  | 843 | if (diff_hlf != (hlf_T)0) | 
|---|
|  | 844 | { | 
|---|
|  | 845 | -               if (diff_hlf == HLF_CHD && ptr - line >= change_start) | 
|---|
|  | 846 | +               if (diff_hlf == HLF_CHD && ptr - line >= change_start | 
|---|
|  | 847 | +                                                             && n_extra == 0) | 
|---|
|  | 848 | diff_hlf = HLF_TXD;         /* changed text */ | 
|---|
|  | 849 | -               if (diff_hlf == HLF_TXD && ptr - line > change_end) | 
|---|
|  | 850 | +               if (diff_hlf == HLF_TXD && ptr - line > change_end | 
|---|
|  | 851 | +                                                             && n_extra == 0) | 
|---|
|  | 852 | diff_hlf = HLF_CHD;         /* changed line */ | 
|---|
|  | 853 | line_attr = hl_attr(diff_hlf); | 
|---|
|  | 854 | } | 
|---|
|  | 855 | diff -Naur vim71.orig/src/search.c vim71/src/search.c | 
|---|
|  | 856 | --- vim71.orig/src/search.c     2007-05-07 15:42:02.000000000 -0400 | 
|---|
|  | 857 | +++ vim71/src/search.c  2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 858 | @@ -573,8 +573,12 @@ | 
|---|
|  | 859 | /* | 
|---|
|  | 860 | * Start searching in current line, unless searching backwards and | 
|---|
|  | 861 | * we're in column 0. | 
|---|
|  | 862 | +        * If we are searching backwards, in column 0, and not including the | 
|---|
|  | 863 | +        * current position, gain some efficiency by skipping back a line. | 
|---|
|  | 864 | +        * Otherwise begin the search in the current line. | 
|---|
|  | 865 | */ | 
|---|
|  | 866 | -       if (dir == BACKWARD && start_pos.col == 0) | 
|---|
|  | 867 | +       if (dir == BACKWARD && start_pos.col == 0 | 
|---|
|  | 868 | +                                            && (options & SEARCH_START) == 0) | 
|---|
|  | 869 | { | 
|---|
|  | 870 | lnum = pos->lnum - 1; | 
|---|
|  | 871 | at_first_line = FALSE; | 
|---|
|  | 872 | @@ -2124,6 +2128,9 @@ | 
|---|
|  | 873 | else if (!backwards) | 
|---|
|  | 874 | inquote = TRUE; | 
|---|
|  | 875 | } | 
|---|
|  | 876 | + | 
|---|
|  | 877 | +                   /* ml_get() only keeps one line, need to get linep again */ | 
|---|
|  | 878 | +                   linep = ml_get(pos.lnum); | 
|---|
|  | 879 | } | 
|---|
|  | 880 | } | 
|---|
|  | 881 | } | 
|---|
|  | 882 | @@ -2795,7 +2802,7 @@ | 
|---|
|  | 883 | i = inc_cursor(); | 
|---|
|  | 884 | if (i == -1 || (i >= 1 && last_line)) /* started at last char in file */ | 
|---|
|  | 885 | return FAIL; | 
|---|
|  | 886 | -       if (i == 1 && eol && count == 0)      /* started at last char in line */ | 
|---|
|  | 887 | +       if (i >= 1 && eol && count == 0)      /* started at last char in line */ | 
|---|
|  | 888 | return OK; | 
|---|
|  | 889 |  | 
|---|
|  | 890 | /* | 
|---|
|  | 891 | @@ -3600,13 +3607,16 @@ | 
|---|
|  | 892 | { | 
|---|
|  | 893 | oap->start = start_pos; | 
|---|
|  | 894 | oap->motion_type = MCHAR; | 
|---|
|  | 895 | +       oap->inclusive = FALSE; | 
|---|
|  | 896 | if (sol) | 
|---|
|  | 897 | -       { | 
|---|
|  | 898 | incl(&curwin->w_cursor); | 
|---|
|  | 899 | -           oap->inclusive = FALSE; | 
|---|
|  | 900 | -       } | 
|---|
|  | 901 | -       else | 
|---|
|  | 902 | +       else if (lt(start_pos, curwin->w_cursor)) | 
|---|
|  | 903 | +           /* Include the character under the cursor. */ | 
|---|
|  | 904 | oap->inclusive = TRUE; | 
|---|
|  | 905 | +       else | 
|---|
|  | 906 | +           /* End is before the start (no text in between <>, [], etc.): don't | 
|---|
|  | 907 | +            * operate on any text. */ | 
|---|
|  | 908 | +           curwin->w_cursor = start_pos; | 
|---|
|  | 909 | } | 
|---|
|  | 910 |  | 
|---|
|  | 911 | return OK; | 
|---|
|  | 912 | @@ -3734,7 +3744,7 @@ | 
|---|
|  | 913 |  | 
|---|
|  | 914 | if (in_html_tag(FALSE)) | 
|---|
|  | 915 | { | 
|---|
|  | 916 | -           /* cursor on start tag, move to just after it */ | 
|---|
|  | 917 | +           /* cursor on start tag, move to its '>' */ | 
|---|
|  | 918 | while (*ml_get_cursor() != '>') | 
|---|
|  | 919 | if (inc_cursor() < 0) | 
|---|
|  | 920 | break; | 
|---|
|  | 921 | @@ -3838,7 +3848,7 @@ | 
|---|
|  | 922 | /* Exclude the start tag. */ | 
|---|
|  | 923 | curwin->w_cursor = start_pos; | 
|---|
|  | 924 | while (inc_cursor() >= 0) | 
|---|
|  | 925 | -           if (*ml_get_cursor() == '>' && lt(curwin->w_cursor, end_pos)) | 
|---|
|  | 926 | +           if (*ml_get_cursor() == '>') | 
|---|
|  | 927 | { | 
|---|
|  | 928 | inc_cursor(); | 
|---|
|  | 929 | start_pos = curwin->w_cursor; | 
|---|
|  | 930 | @@ -3860,7 +3870,11 @@ | 
|---|
|  | 931 | #ifdef FEAT_VISUAL | 
|---|
|  | 932 | if (VIsual_active) | 
|---|
|  | 933 | { | 
|---|
|  | 934 | -       if (*p_sel == 'e') | 
|---|
|  | 935 | +       /* If the end is before the start there is no text between tags, select | 
|---|
|  | 936 | +        * the char under the cursor. */ | 
|---|
|  | 937 | +       if (lt(end_pos, start_pos)) | 
|---|
|  | 938 | +           curwin->w_cursor = start_pos; | 
|---|
|  | 939 | +       else if (*p_sel == 'e') | 
|---|
|  | 940 | ++curwin->w_cursor.col; | 
|---|
|  | 941 | VIsual = start_pos; | 
|---|
|  | 942 | VIsual_mode = 'v'; | 
|---|
|  | 943 | @@ -3872,7 +3886,15 @@ | 
|---|
|  | 944 | { | 
|---|
|  | 945 | oap->start = start_pos; | 
|---|
|  | 946 | oap->motion_type = MCHAR; | 
|---|
|  | 947 | -       oap->inclusive = TRUE; | 
|---|
|  | 948 | +       if (lt(end_pos, start_pos)) | 
|---|
|  | 949 | +       { | 
|---|
|  | 950 | +           /* End is before the start: there is no text between tags; operate | 
|---|
|  | 951 | +            * on an empty area. */ | 
|---|
|  | 952 | +           curwin->w_cursor = start_pos; | 
|---|
|  | 953 | +           oap->inclusive = FALSE; | 
|---|
|  | 954 | +       } | 
|---|
|  | 955 | +       else | 
|---|
|  | 956 | +           oap->inclusive = TRUE; | 
|---|
|  | 957 | } | 
|---|
|  | 958 | retval = OK; | 
|---|
|  | 959 |  | 
|---|
|  | 960 | diff -Naur vim71.orig/src/syntax.c vim71/src/syntax.c | 
|---|
|  | 961 | --- vim71.orig/src/syntax.c     2007-05-07 15:42:55.000000000 -0400 | 
|---|
|  | 962 | +++ vim71/src/syntax.c  2007-07-23 19:57:08.000000000 -0400 | 
|---|
|  | 963 | @@ -4460,8 +4460,8 @@ | 
|---|
|  | 964 | current_syn_inc_tag = ++running_syn_inc_tag; | 
|---|
|  | 965 | prev_toplvl_grp = curbuf->b_syn_topgrp; | 
|---|
|  | 966 | curbuf->b_syn_topgrp = sgl_id; | 
|---|
|  | 967 | -    if (source ? do_source(eap->arg, FALSE, FALSE) == FAIL | 
|---|
|  | 968 | -                               : source_runtime(eap->arg, DOSO_NONE) == FAIL) | 
|---|
|  | 969 | +    if (source ? do_source(eap->arg, FALSE, DOSO_NONE) == FAIL | 
|---|
|  | 970 | +                               : source_runtime(eap->arg, TRUE) == FAIL) | 
|---|
|  | 971 | EMSG2(_(e_notopen), eap->arg); | 
|---|
|  | 972 | curbuf->b_syn_topgrp = prev_toplvl_grp; | 
|---|
|  | 973 | current_syn_inc_tag = prev_syn_inc_tag; | 
|---|
|  | 974 | diff -Naur vim71.orig/src/version.c vim71/src/version.c | 
|---|
|  | 975 | --- vim71.orig/src/version.c    2007-05-12 06:23:44.000000000 -0400 | 
|---|
|  | 976 | +++ vim71/src/version.c 2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 977 | @@ -667,6 +667,68 @@ | 
|---|
|  | 978 | static int included_patches[] = | 
|---|
|  | 979 | {   /* Add new patch number below this line */ | 
|---|
|  | 980 | /**/ | 
|---|
|  | 981 | +    33, | 
|---|
|  | 982 | +/**/ | 
|---|
|  | 983 | +    32, | 
|---|
|  | 984 | +/**/ | 
|---|
|  | 985 | +    31, | 
|---|
|  | 986 | +/**/ | 
|---|
|  | 987 | +    30, | 
|---|
|  | 988 | +/**/ | 
|---|
|  | 989 | +    29, | 
|---|
|  | 990 | +/**/ | 
|---|
|  | 991 | +    28, | 
|---|
|  | 992 | +/**/ | 
|---|
|  | 993 | +    27, | 
|---|
|  | 994 | +/**/ | 
|---|
|  | 995 | +    26, | 
|---|
|  | 996 | +/**/ | 
|---|
|  | 997 | +    25, | 
|---|
|  | 998 | +/**/ | 
|---|
|  | 999 | +    24, | 
|---|
|  | 1000 | +/**/ | 
|---|
|  | 1001 | +    23, | 
|---|
|  | 1002 | +/**/ | 
|---|
|  | 1003 | +    22, | 
|---|
|  | 1004 | +/**/ | 
|---|
|  | 1005 | +    21, | 
|---|
|  | 1006 | +/**/ | 
|---|
|  | 1007 | +    20, | 
|---|
|  | 1008 | +/**/ | 
|---|
|  | 1009 | +    19, | 
|---|
|  | 1010 | +/**/ | 
|---|
|  | 1011 | +    18, | 
|---|
|  | 1012 | +/**/ | 
|---|
|  | 1013 | +    17, | 
|---|
|  | 1014 | +/**/ | 
|---|
|  | 1015 | +    16, | 
|---|
|  | 1016 | +/**/ | 
|---|
|  | 1017 | +    15, | 
|---|
|  | 1018 | +/**/ | 
|---|
|  | 1019 | +    14, | 
|---|
|  | 1020 | +/**/ | 
|---|
|  | 1021 | +    13, | 
|---|
|  | 1022 | +/**/ | 
|---|
|  | 1023 | +    12, | 
|---|
|  | 1024 | +/**/ | 
|---|
|  | 1025 | +    11, | 
|---|
|  | 1026 | +/**/ | 
|---|
|  | 1027 | +    10, | 
|---|
|  | 1028 | +/**/ | 
|---|
|  | 1029 | +    9, | 
|---|
|  | 1030 | +/**/ | 
|---|
|  | 1031 | +    8, | 
|---|
|  | 1032 | +/**/ | 
|---|
|  | 1033 | +    6, | 
|---|
|  | 1034 | +/**/ | 
|---|
|  | 1035 | +    5, | 
|---|
|  | 1036 | +/**/ | 
|---|
|  | 1037 | +    4, | 
|---|
|  | 1038 | +/**/ | 
|---|
|  | 1039 | +    2, | 
|---|
|  | 1040 | +/**/ | 
|---|
|  | 1041 | +    1, | 
|---|
|  | 1042 | +/**/ | 
|---|
|  | 1043 | 0 | 
|---|
|  | 1044 | }; | 
|---|
|  | 1045 |  | 
|---|
|  | 1046 | diff -Naur vim71.orig/src/vimtutor vim71/src/vimtutor | 
|---|
|  | 1047 | --- vim71.orig/src/vimtutor     2004-06-07 10:32:27.000000000 -0400 | 
|---|
|  | 1048 | +++ vim71/src/vimtutor  2007-07-23 19:57:09.000000000 -0400 | 
|---|
|  | 1049 | @@ -39,18 +39,22 @@ | 
|---|
|  | 1050 | # remove the copy of the tutor on exit | 
|---|
|  | 1051 | trap "rm -rf $TODELETE" 0 1 2 3 9 11 13 15 | 
|---|
|  | 1052 |  | 
|---|
|  | 1053 | -# Vim could be called "vim" or "vi".  Also check for "vim6", for people who | 
|---|
|  | 1054 | -# have Vim 5.x installed as "vim" and Vim 6.0 as "vim6". | 
|---|
|  | 1055 | -testvim=`which vim6 2>/dev/null` | 
|---|
|  | 1056 | -if test -f "$testvim"; then | 
|---|
|  | 1057 | -       VIM=vim6 | 
|---|
|  | 1058 | -else | 
|---|
|  | 1059 | -       testvim=`which vim` | 
|---|
|  | 1060 | +# Vim could be called "vim" or "vi".  Also check for "vimN", for people who | 
|---|
|  | 1061 | +# have Vim installed with its version number. | 
|---|
|  | 1062 | +# We anticipate up to a future Vim 8 version :-). | 
|---|
|  | 1063 | +seq="vim vim8 vim75 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi" | 
|---|
|  | 1064 | +for i in $seq; do | 
|---|
|  | 1065 | +       testvim=`which $i 2>/dev/null` | 
|---|
|  | 1066 | if test -f "$testvim"; then | 
|---|
|  | 1067 | -               VIM=vim | 
|---|
|  | 1068 | -       else | 
|---|
|  | 1069 | -               VIM=vi | 
|---|
|  | 1070 | +               VIM=$i | 
|---|
|  | 1071 | +               break | 
|---|
|  | 1072 | fi | 
|---|
|  | 1073 | +done | 
|---|
|  | 1074 | + | 
|---|
|  | 1075 | +# When no Vim version was found fall back to "vim", you'll get an error message | 
|---|
|  | 1076 | +# below. | 
|---|
|  | 1077 | +if test -z "$VIM"; then | 
|---|
|  | 1078 | +       VIM=vim | 
|---|
|  | 1079 | fi | 
|---|
|  | 1080 |  | 
|---|
|  | 1081 | # Use Vim to copy the tutor, it knows the value of $VIMRUNTIME | 
|---|