[e8e6c4e] | 1 | Submitted By: Joe Ciccone <jciccone@gmail.com>
|
---|
| 2 | Date: 2008-09-13
|
---|
| 3 | Initial Package Version: 7.2
|
---|
| 4 | Origin: Upstream
|
---|
| 5 | Upstream Status: Applied
|
---|
| 6 | Description: Contains all upstream patches up to 7.2.015
|
---|
| 7 | The following patches were skipped
|
---|
| 8 | 007
|
---|
| 9 |
|
---|
| 10 | diff -Naur vim72.orig/runtime/scripts.vim vim72/runtime/scripts.vim
|
---|
| 11 | --- vim72.orig/runtime/scripts.vim 2008-08-08 18:27:21.000000000 -0400
|
---|
| 12 | +++ vim72/runtime/scripts.vim 2008-09-13 12:01:16.000000000 -0400
|
---|
| 13 | @@ -234,6 +234,10 @@
|
---|
| 14 | elseif s:line1 =~ '\<DTD\s\+XHTML\s'
|
---|
| 15 | set ft=xhtml
|
---|
| 16 |
|
---|
| 17 | + " HTML (e.g.: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN")
|
---|
| 18 | + elseif s:line1 =~? '\<DOCTYPE\s\+html\>'
|
---|
| 19 | + set ft=html
|
---|
| 20 | +
|
---|
| 21 | " PDF
|
---|
| 22 | elseif s:line1 =~ '^%PDF-'
|
---|
| 23 | set ft=pdf
|
---|
| 24 | diff -Naur vim72.orig/src/buffer.c vim72/src/buffer.c
|
---|
| 25 | --- vim72.orig/src/buffer.c 2008-08-06 07:00:48.000000000 -0400
|
---|
| 26 | +++ vim72/src/buffer.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 27 | @@ -1351,11 +1351,12 @@
|
---|
| 28 | }
|
---|
| 29 | }
|
---|
| 30 | #ifdef FEAT_AUTOCMD
|
---|
| 31 | + /* An autocommand may have deleted "buf", already entered it (e.g., when
|
---|
| 32 | + * it did ":bunload") or aborted the script processing! */
|
---|
| 33 | # ifdef FEAT_EVAL
|
---|
| 34 | - /* An autocommand may have deleted buf or aborted the script processing! */
|
---|
| 35 | - if (buf_valid(buf) && !aborting())
|
---|
| 36 | + if (buf_valid(buf) && buf != curbuf && !aborting())
|
---|
| 37 | # else
|
---|
| 38 | - if (buf_valid(buf)) /* an autocommand may have deleted buf! */
|
---|
| 39 | + if (buf_valid(buf) && buf != curbuf)
|
---|
| 40 | # endif
|
---|
| 41 | #endif
|
---|
| 42 | enter_buffer(buf);
|
---|
| 43 | diff -Naur vim72.orig/src/eval.c vim72/src/eval.c
|
---|
| 44 | --- vim72.orig/src/eval.c 2008-08-07 15:37:22.000000000 -0400
|
---|
| 45 | +++ vim72/src/eval.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 46 | @@ -1256,23 +1256,26 @@
|
---|
| 47 |
|
---|
| 48 | /*
|
---|
| 49 | * Top level evaluation function, returning a string.
|
---|
| 50 | + * When "convert" is TRUE convert a List into a sequence of lines and convert
|
---|
| 51 | + * a Float to a String.
|
---|
| 52 | * Return pointer to allocated memory, or NULL for failure.
|
---|
| 53 | */
|
---|
| 54 | char_u *
|
---|
| 55 | -eval_to_string(arg, nextcmd, dolist)
|
---|
| 56 | +eval_to_string(arg, nextcmd, convert)
|
---|
| 57 | char_u *arg;
|
---|
| 58 | char_u **nextcmd;
|
---|
| 59 | - int dolist; /* turn List into sequence of lines */
|
---|
| 60 | + int convert;
|
---|
| 61 | {
|
---|
| 62 | typval_T tv;
|
---|
| 63 | char_u *retval;
|
---|
| 64 | garray_T ga;
|
---|
| 65 | + char_u numbuf[NUMBUFLEN];
|
---|
| 66 |
|
---|
| 67 | if (eval0(arg, &tv, nextcmd, TRUE) == FAIL)
|
---|
| 68 | retval = NULL;
|
---|
| 69 | else
|
---|
| 70 | {
|
---|
| 71 | - if (dolist && tv.v_type == VAR_LIST)
|
---|
| 72 | + if (convert && tv.v_type == VAR_LIST)
|
---|
| 73 | {
|
---|
| 74 | ga_init2(&ga, (int)sizeof(char), 80);
|
---|
| 75 | if (tv.vval.v_list != NULL)
|
---|
| 76 | @@ -1280,6 +1283,13 @@
|
---|
| 77 | ga_append(&ga, NUL);
|
---|
| 78 | retval = (char_u *)ga.ga_data;
|
---|
| 79 | }
|
---|
| 80 | +#ifdef FEAT_FLOAT
|
---|
| 81 | + else if (convert && tv.v_type == VAR_FLOAT)
|
---|
| 82 | + {
|
---|
| 83 | + vim_snprintf((char *)numbuf, NUMBUFLEN, "%g", tv.vval.v_float);
|
---|
| 84 | + retval = vim_strsave(numbuf);
|
---|
| 85 | + }
|
---|
| 86 | +#endif
|
---|
| 87 | else
|
---|
| 88 | retval = vim_strsave(get_tv_string(&tv));
|
---|
| 89 | clear_tv(&tv);
|
---|
| 90 | @@ -3657,8 +3667,8 @@
|
---|
| 91 | }
|
---|
| 92 |
|
---|
| 93 | /*
|
---|
| 94 | - * Return TRUE if typeval "tv" is locked: Either tha value is locked itself or
|
---|
| 95 | - * it refers to a List or Dictionary that is locked.
|
---|
| 96 | + * Return TRUE if typeval "tv" is locked: Either that value is locked itself
|
---|
| 97 | + * or it refers to a List or Dictionary that is locked.
|
---|
| 98 | */
|
---|
| 99 | static int
|
---|
| 100 | tv_islocked(tv)
|
---|
| 101 | @@ -15838,10 +15848,9 @@
|
---|
| 102 | if (res == FAIL)
|
---|
| 103 | res = ITEM_COMPARE_FAIL;
|
---|
| 104 | else
|
---|
| 105 | - /* return value has wrong type */
|
---|
| 106 | res = get_tv_number_chk(&rettv, &item_compare_func_err);
|
---|
| 107 | if (item_compare_func_err)
|
---|
| 108 | - res = ITEM_COMPARE_FAIL;
|
---|
| 109 | + res = ITEM_COMPARE_FAIL; /* return value has wrong type */
|
---|
| 110 | clear_tv(&rettv);
|
---|
| 111 | return res;
|
---|
| 112 | }
|
---|
| 113 | @@ -16658,7 +16667,7 @@
|
---|
| 114 | col = get_tv_number(&argvars[1]) - 1; /* -1 on type error */
|
---|
| 115 |
|
---|
| 116 | if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
|
---|
| 117 | - && col >= 0 && col < (long)STRLEN(ml_get(lnum))
|
---|
| 118 | + && col >= 0 && (col == 0 || col < (long)STRLEN(ml_get(lnum)))
|
---|
| 119 | && rettv_list_alloc(rettv) != FAIL)
|
---|
| 120 | {
|
---|
| 121 | (void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL, TRUE);
|
---|
| 122 | @@ -20590,6 +20599,9 @@
|
---|
| 123 | int st_len = 0;
|
---|
| 124 |
|
---|
| 125 | todo = (int)func_hashtab.ht_used;
|
---|
| 126 | + if (todo == 0)
|
---|
| 127 | + return; /* nothing to dump */
|
---|
| 128 | +
|
---|
| 129 | sorttab = (ufunc_T **)alloc((unsigned)(sizeof(ufunc_T) * todo));
|
---|
| 130 |
|
---|
| 131 | for (hi = func_hashtab.ht_array; todo > 0; ++hi)
|
---|
| 132 | @@ -20638,6 +20650,8 @@
|
---|
| 133 | prof_self_cmp);
|
---|
| 134 | prof_sort_list(fd, sorttab, st_len, "SELF", TRUE);
|
---|
| 135 | }
|
---|
| 136 | +
|
---|
| 137 | + vim_free(sorttab);
|
---|
| 138 | }
|
---|
| 139 |
|
---|
| 140 | static void
|
---|
| 141 | @@ -21204,7 +21218,7 @@
|
---|
| 142 | if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
|
---|
| 143 | func_do_profile(fp);
|
---|
| 144 | if (fp->uf_profiling
|
---|
| 145 | - || (fc.caller != NULL && &fc.caller->func->uf_profiling))
|
---|
| 146 | + || (fc.caller != NULL && fc.caller->func->uf_profiling))
|
---|
| 147 | {
|
---|
| 148 | ++fp->uf_tm_count;
|
---|
| 149 | profile_start(&call_start);
|
---|
| 150 | @@ -21235,13 +21249,13 @@
|
---|
| 151 |
|
---|
| 152 | #ifdef FEAT_PROFILE
|
---|
| 153 | if (do_profiling == PROF_YES && (fp->uf_profiling
|
---|
| 154 | - || (fc.caller != NULL && &fc.caller->func->uf_profiling)))
|
---|
| 155 | + || (fc.caller != NULL && fc.caller->func->uf_profiling)))
|
---|
| 156 | {
|
---|
| 157 | profile_end(&call_start);
|
---|
| 158 | profile_sub_wait(&wait_start, &call_start);
|
---|
| 159 | profile_add(&fp->uf_tm_total, &call_start);
|
---|
| 160 | profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
|
---|
| 161 | - if (fc.caller != NULL && &fc.caller->func->uf_profiling)
|
---|
| 162 | + if (fc.caller != NULL && fc.caller->func->uf_profiling)
|
---|
| 163 | {
|
---|
| 164 | profile_add(&fc.caller->func->uf_tm_children, &call_start);
|
---|
| 165 | profile_add(&fc.caller->func->uf_tml_children, &call_start);
|
---|
| 166 | diff -Naur vim72.orig/src/ex_cmds2.c vim72/src/ex_cmds2.c
|
---|
| 167 | --- vim72.orig/src/ex_cmds2.c 2008-07-13 12:18:22.000000000 -0400
|
---|
| 168 | +++ vim72/src/ex_cmds2.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 169 | @@ -3145,8 +3145,8 @@
|
---|
| 170 | verbose_leave();
|
---|
| 171 | }
|
---|
| 172 | #ifdef STARTUPTIME
|
---|
| 173 | - vim_snprintf(IObuff, IOSIZE, "sourcing %s", fname);
|
---|
| 174 | - time_msg(IObuff, &tv_start);
|
---|
| 175 | + vim_snprintf((char *)IObuff, IOSIZE, "sourcing %s", fname);
|
---|
| 176 | + time_msg((char *)IObuff, &tv_start);
|
---|
| 177 | time_pop(&tv_rel);
|
---|
| 178 | #endif
|
---|
| 179 |
|
---|
| 180 | diff -Naur vim72.orig/src/if_cscope.c vim72/src/if_cscope.c
|
---|
| 181 | --- vim72.orig/src/if_cscope.c 2008-06-24 12:32:34.000000000 -0400
|
---|
| 182 | +++ vim72/src/if_cscope.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 183 | @@ -74,7 +74,7 @@
|
---|
| 184 | { "add", cs_add,
|
---|
| 185 | N_("Add a new database"), "add file|dir [pre-path] [flags]", 0 },
|
---|
| 186 | { "find", cs_find,
|
---|
| 187 | - N_("Query for a pattern"), FIND_USAGE, 1 },
|
---|
| 188 | + N_("Query for a pattern"), "find c|d|e|f|g|i|s|t name", 1 },
|
---|
| 189 | { "help", cs_help,
|
---|
| 190 | N_("Show this message"), "help", 0 },
|
---|
| 191 | { "kill", cs_kill,
|
---|
| 192 | @@ -1180,7 +1180,16 @@
|
---|
| 193 | (void)smsg((char_u *)_("%-5s: %-30s (Usage: %s)"),
|
---|
| 194 | cmdp->name, _(cmdp->help), cmdp->usage);
|
---|
| 195 | if (strcmp(cmdp->name, "find") == 0)
|
---|
| 196 | - MSG_PUTS(FIND_HELP);
|
---|
| 197 | + MSG_PUTS(_("\n"
|
---|
| 198 | + " c: Find functions calling this function\n"
|
---|
| 199 | + " d: Find functions called by this function\n"
|
---|
| 200 | + " e: Find this egrep pattern\n"
|
---|
| 201 | + " f: Find this file\n"
|
---|
| 202 | + " g: Find this definition\n"
|
---|
| 203 | + " i: Find files #including this file\n"
|
---|
| 204 | + " s: Find this C symbol\n"
|
---|
| 205 | + " t: Find assignments to\n"));
|
---|
| 206 | +
|
---|
| 207 | cmdp++;
|
---|
| 208 | }
|
---|
| 209 |
|
---|
| 210 | diff -Naur vim72.orig/src/if_cscope.h vim72/src/if_cscope.h
|
---|
| 211 | --- vim72.orig/src/if_cscope.h 2007-09-02 10:51:08.000000000 -0400
|
---|
| 212 | +++ vim72/src/if_cscope.h 2008-09-13 12:01:16.000000000 -0400
|
---|
| 213 | @@ -42,17 +42,6 @@
|
---|
| 214 | * f 7name Find this file
|
---|
| 215 | * i 8name Find files #including this file
|
---|
| 216 | */
|
---|
| 217 | -#define FIND_USAGE "find c|d|e|f|g|i|s|t name"
|
---|
| 218 | -#define FIND_HELP "\n\
|
---|
| 219 | - c: Find functions calling this function\n\
|
---|
| 220 | - d: Find functions called by this function\n\
|
---|
| 221 | - e: Find this egrep pattern\n\
|
---|
| 222 | - f: Find this file\n\
|
---|
| 223 | - g: Find this definition\n\
|
---|
| 224 | - i: Find files #including this file\n\
|
---|
| 225 | - s: Find this C symbol\n\
|
---|
| 226 | - t: Find assignments to\n"
|
---|
| 227 | -
|
---|
| 228 |
|
---|
| 229 | typedef struct {
|
---|
| 230 | char * name;
|
---|
| 231 | diff -Naur vim72.orig/src/if_perl.xs vim72/src/if_perl.xs
|
---|
| 232 | --- vim72.orig/src/if_perl.xs 2008-07-17 16:55:09.000000000 -0400
|
---|
| 233 | +++ vim72/src/if_perl.xs 2008-09-13 12:01:16.000000000 -0400
|
---|
| 234 | @@ -136,6 +136,9 @@
|
---|
| 235 | # define Perl_newXS_flags dll_Perl_newXS_flags
|
---|
| 236 | #endif
|
---|
| 237 | # define Perl_sv_free dll_Perl_sv_free
|
---|
| 238 | +# if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
|
---|
| 239 | +# define Perl_sv_free2 dll_Perl_sv_free2
|
---|
| 240 | +# endif
|
---|
| 241 | # define Perl_sv_isa dll_Perl_sv_isa
|
---|
| 242 | # define Perl_sv_magic dll_Perl_sv_magic
|
---|
| 243 | # define Perl_sv_setiv dll_Perl_sv_setiv
|
---|
| 244 | @@ -268,6 +271,7 @@
|
---|
| 245 | static void (*boot_DynaLoader)_((pTHX_ CV*));
|
---|
| 246 |
|
---|
| 247 | #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
|
---|
| 248 | +static void (*Perl_sv_free2)(pTHX_ SV*);
|
---|
| 249 | static void (*Perl_sys_init3)(int* argc, char*** argv, char*** env);
|
---|
| 250 | static void (*Perl_sys_term)(void);
|
---|
| 251 | static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
|
---|
| 252 | @@ -367,6 +371,7 @@
|
---|
| 253 | {"Perl_TXpv_ptr", (PERL_PROC*)&Perl_TXpv_ptr},
|
---|
| 254 | {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
|
---|
| 255 | #else
|
---|
| 256 | + {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
|
---|
| 257 | {"Perl_sys_init3", (PERL_PROC*)&Perl_sys_init3},
|
---|
| 258 | {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
|
---|
| 259 | {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
|
---|
| 260 | diff -Naur vim72.orig/src/mbyte.c vim72/src/mbyte.c
|
---|
| 261 | --- vim72.orig/src/mbyte.c 2008-07-14 08:38:05.000000000 -0400
|
---|
| 262 | +++ vim72/src/mbyte.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 263 | @@ -2540,7 +2540,6 @@
|
---|
| 264 | return (int)(p - q);
|
---|
| 265 | }
|
---|
| 266 |
|
---|
| 267 | -#if defined(FEAT_EVAL) || defined(PROTO)
|
---|
| 268 | /*
|
---|
| 269 | * Copy a character from "*fp" to "*tp" and advance the pointers.
|
---|
| 270 | */
|
---|
| 271 | @@ -2555,7 +2554,6 @@
|
---|
| 272 | *tp += l;
|
---|
| 273 | *fp += l;
|
---|
| 274 | }
|
---|
| 275 | -#endif
|
---|
| 276 |
|
---|
| 277 | /*
|
---|
| 278 | * Return the offset from "p" to the first byte of a character. When "p" is
|
---|
| 279 | diff -Naur vim72.orig/src/menu.c vim72/src/menu.c
|
---|
| 280 | --- vim72.orig/src/menu.c 2008-06-21 15:53:43.000000000 -0400
|
---|
| 281 | +++ vim72/src/menu.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 282 | @@ -1120,6 +1120,7 @@
|
---|
| 283 | parent = menu;
|
---|
| 284 | menu = menu->children;
|
---|
| 285 | }
|
---|
| 286 | + vim_free(path_name);
|
---|
| 287 |
|
---|
| 288 | /* Now we have found the matching menu, and we list the mappings */
|
---|
| 289 | /* Highlight title */
|
---|
| 290 | diff -Naur vim72.orig/src/misc2.c vim72/src/misc2.c
|
---|
| 291 | --- vim72.orig/src/misc2.c 2008-07-23 15:12:56.000000000 -0400
|
---|
| 292 | +++ vim72/src/misc2.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 293 | @@ -1257,7 +1257,6 @@
|
---|
| 294 | return escaped_string;
|
---|
| 295 | }
|
---|
| 296 |
|
---|
| 297 | -#if !defined(BACKSLASH_IN_FILENAME) || defined(FEAT_EVAL) || defined(PROTO)
|
---|
| 298 | /*
|
---|
| 299 | * Return TRUE when 'shell' has "csh" in the tail.
|
---|
| 300 | */
|
---|
| 301 | @@ -1266,9 +1265,7 @@
|
---|
| 302 | {
|
---|
| 303 | return (strstr((char *)gettail(p_sh), "csh") != NULL);
|
---|
| 304 | }
|
---|
| 305 | -#endif
|
---|
| 306 |
|
---|
| 307 | -#if defined(FEAT_EVAL) || defined(PROTO)
|
---|
| 308 | /*
|
---|
| 309 | * Escape "string" for use as a shell argument with system().
|
---|
| 310 | * This uses single quotes, except when we know we need to use double qoutes
|
---|
| 311 | @@ -1391,7 +1388,6 @@
|
---|
| 312 |
|
---|
| 313 | return escaped_string;
|
---|
| 314 | }
|
---|
| 315 | -#endif
|
---|
| 316 |
|
---|
| 317 | /*
|
---|
| 318 | * Like vim_strsave(), but make all characters uppercase.
|
---|
| 319 | diff -Naur vim72.orig/src/normal.c vim72/src/normal.c
|
---|
| 320 | --- vim72.orig/src/normal.c 2008-07-31 16:03:08.000000000 -0400
|
---|
| 321 | +++ vim72/src/normal.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 322 | @@ -5469,6 +5469,11 @@
|
---|
| 323 | STRCPY(buf, "he! ");
|
---|
| 324 | else
|
---|
| 325 | {
|
---|
| 326 | + /* An external command will probably use an argument starting
|
---|
| 327 | + * with "-" as an option. To avoid trouble we skip the "-". */
|
---|
| 328 | + while (*ptr == '-')
|
---|
| 329 | + ++ptr;
|
---|
| 330 | +
|
---|
| 331 | /* When a count is given, turn it into a range. Is this
|
---|
| 332 | * really what we want? */
|
---|
| 333 | isman = (STRCMP(kp, "man") == 0);
|
---|
| 334 | @@ -5511,37 +5516,57 @@
|
---|
| 335 | /*
|
---|
| 336 | * Now grab the chars in the identifier
|
---|
| 337 | */
|
---|
| 338 | - if (cmdchar == '*')
|
---|
| 339 | - aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
|
---|
| 340 | - else if (cmdchar == '#')
|
---|
| 341 | - aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
|
---|
| 342 | - else if (cmdchar == 'K' && !kp_help)
|
---|
| 343 | - aux_ptr = (char_u *)" \t\\\"|!";
|
---|
| 344 | - else
|
---|
| 345 | - /* Don't escape spaces and Tabs in a tag with a backslash */
|
---|
| 346 | - aux_ptr = (char_u *)"\\|\"";
|
---|
| 347 | -
|
---|
| 348 | - p = buf + STRLEN(buf);
|
---|
| 349 | - while (n-- > 0)
|
---|
| 350 | - {
|
---|
| 351 | - /* put a backslash before \ and some others */
|
---|
| 352 | - if (vim_strchr(aux_ptr, *ptr) != NULL)
|
---|
| 353 | - *p++ = '\\';
|
---|
| 354 | -#ifdef FEAT_MBYTE
|
---|
| 355 | - /* When current byte is a part of multibyte character, copy all bytes
|
---|
| 356 | - * of that character. */
|
---|
| 357 | - if (has_mbyte)
|
---|
| 358 | + if (cmdchar == 'K' && !kp_help)
|
---|
| 359 | + {
|
---|
| 360 | + /* Escape the argument properly for a shell command */
|
---|
| 361 | + p = vim_strsave_shellescape(ptr, TRUE);
|
---|
| 362 | + if (p == NULL)
|
---|
| 363 | {
|
---|
| 364 | - int i;
|
---|
| 365 | - int len = (*mb_ptr2len)(ptr) - 1;
|
---|
| 366 | -
|
---|
| 367 | - for (i = 0; i < len && n >= 1; ++i, --n)
|
---|
| 368 | - *p++ = *ptr++;
|
---|
| 369 | + vim_free(buf);
|
---|
| 370 | + return;
|
---|
| 371 | }
|
---|
| 372 | + buf = (char_u *)vim_realloc(buf, STRLEN(buf) + STRLEN(p) + 1);
|
---|
| 373 | + if (buf == NULL)
|
---|
| 374 | + {
|
---|
| 375 | + vim_free(buf);
|
---|
| 376 | + vim_free(p);
|
---|
| 377 | + return;
|
---|
| 378 | + }
|
---|
| 379 | + STRCAT(buf, p);
|
---|
| 380 | + vim_free(p);
|
---|
| 381 | + }
|
---|
| 382 | + else
|
---|
| 383 | + {
|
---|
| 384 | + if (cmdchar == '*')
|
---|
| 385 | + aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
|
---|
| 386 | + else if (cmdchar == '#')
|
---|
| 387 | + aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
|
---|
| 388 | + else
|
---|
| 389 | + /* Don't escape spaces and Tabs in a tag with a backslash */
|
---|
| 390 | + aux_ptr = (char_u *)"\\|\"\n*?[";
|
---|
| 391 | +
|
---|
| 392 | + p = buf + STRLEN(buf);
|
---|
| 393 | + while (n-- > 0)
|
---|
| 394 | + {
|
---|
| 395 | + /* put a backslash before \ and some others */
|
---|
| 396 | + if (vim_strchr(aux_ptr, *ptr) != NULL)
|
---|
| 397 | + *p++ = '\\';
|
---|
| 398 | +#ifdef FEAT_MBYTE
|
---|
| 399 | + /* When current byte is a part of multibyte character, copy all
|
---|
| 400 | + * bytes of that character. */
|
---|
| 401 | + if (has_mbyte)
|
---|
| 402 | + {
|
---|
| 403 | + int i;
|
---|
| 404 | + int len = (*mb_ptr2len)(ptr) - 1;
|
---|
| 405 | +
|
---|
| 406 | + for (i = 0; i < len && n >= 1; ++i, --n)
|
---|
| 407 | + *p++ = *ptr++;
|
---|
| 408 | + }
|
---|
| 409 | #endif
|
---|
| 410 | - *p++ = *ptr++;
|
---|
| 411 | + *p++ = *ptr++;
|
---|
| 412 | + }
|
---|
| 413 | + *p = NUL;
|
---|
| 414 | }
|
---|
| 415 | - *p = NUL;
|
---|
| 416 |
|
---|
| 417 | /*
|
---|
| 418 | * Execute the command.
|
---|
| 419 | diff -Naur vim72.orig/src/pty.c vim72/src/pty.c
|
---|
| 420 | --- vim72.orig/src/pty.c 2008-06-21 14:52:58.000000000 -0400
|
---|
| 421 | +++ vim72/src/pty.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 422 | @@ -270,9 +270,10 @@
|
---|
| 423 | }
|
---|
| 424 | #endif
|
---|
| 425 |
|
---|
| 426 | -#if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux)
|
---|
| 427 | +#if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux) && !defined(MACOS_X)
|
---|
| 428 |
|
---|
| 429 | -/* NOTE: Even though HPUX can have /dev/ptmx, the code below doesn't work! */
|
---|
| 430 | +/* NOTE: Even though HPUX can have /dev/ptmx, the code below doesn't work!
|
---|
| 431 | + * Same for Mac OS X Leopard. */
|
---|
| 432 | #define PTY_DONE
|
---|
| 433 | int
|
---|
| 434 | OpenPTY(ttyn)
|
---|
| 435 | diff -Naur vim72.orig/src/spell.c vim72/src/spell.c
|
---|
| 436 | --- vim72.orig/src/spell.c 2008-07-12 15:20:55.000000000 -0400
|
---|
| 437 | +++ vim72/src/spell.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 438 | @@ -77,7 +77,7 @@
|
---|
| 439 |
|
---|
| 440 | /*
|
---|
| 441 | * Do the opposite: based on a maximum end score and a known sound score,
|
---|
| 442 | - * compute the the maximum word score that can be used.
|
---|
| 443 | + * compute the maximum word score that can be used.
|
---|
| 444 | */
|
---|
| 445 | #define MAXSCORE(word_score, sound_score) ((4 * word_score - sound_score) / 3)
|
---|
| 446 |
|
---|
| 447 | @@ -625,7 +625,7 @@
|
---|
| 448 | /* TRUE if a word appears in the list of banned words. */
|
---|
| 449 | #define WAS_BANNED(su, word) (!HASHITEM_EMPTY(hash_find(&su->su_banned, word)))
|
---|
| 450 |
|
---|
| 451 | -/* Number of suggestions kept when cleaning up. we need to keep more than
|
---|
| 452 | +/* Number of suggestions kept when cleaning up. We need to keep more than
|
---|
| 453 | * what is displayed, because when rescore_suggestions() is called the score
|
---|
| 454 | * may change and wrong suggestions may be removed later. */
|
---|
| 455 | #define SUG_CLEAN_COUNT(su) ((su)->su_maxcount < 130 ? 150 : (su)->su_maxcount + 20)
|
---|
| 456 | @@ -5980,7 +5980,7 @@
|
---|
| 457 | else if (spin->si_newprefID == 0 || spin->si_newprefID == 127)
|
---|
| 458 | MSG(_("Too many compound flags"));
|
---|
| 459 | else
|
---|
| 460 | - MSG(_("Too many posponed prefixes and/or compound flags"));
|
---|
| 461 | + MSG(_("Too many postponed prefixes and/or compound flags"));
|
---|
| 462 | }
|
---|
| 463 |
|
---|
| 464 | if (syllable != NULL)
|
---|
| 465 | diff -Naur vim72.orig/src/testdir/Makefile vim72/src/testdir/Makefile
|
---|
| 466 | --- vim72.orig/src/testdir/Makefile 2008-06-19 16:29:46.000000000 -0400
|
---|
| 467 | +++ vim72/src/testdir/Makefile 2008-09-13 12:01:16.000000000 -0400
|
---|
| 468 | @@ -26,15 +26,17 @@
|
---|
| 469 |
|
---|
| 470 | .SUFFIXES: .in .out
|
---|
| 471 |
|
---|
| 472 | -nongui: nolog $(SCRIPTS)
|
---|
| 473 | - @echo
|
---|
| 474 | - @cat test.log
|
---|
| 475 | - @echo ALL DONE
|
---|
| 476 | +nongui: nolog $(SCRIPTS) report
|
---|
| 477 | +
|
---|
| 478 | +gui: nolog $(SCRIPTS) $(SCRIPTS_GUI) report
|
---|
| 479 |
|
---|
| 480 | -gui: nolog $(SCRIPTS) $(SCRIPTS_GUI)
|
---|
| 481 | +report:
|
---|
| 482 | @echo
|
---|
| 483 | - @cat test.log
|
---|
| 484 | - @echo ALL DONE
|
---|
| 485 | + @echo 'Test results:'
|
---|
| 486 | + @/bin/sh -c "if test -f test.log; \
|
---|
| 487 | + then cat test.log; echo TEST FAILURE; exit 1; \
|
---|
| 488 | + else echo ALL DONE; \
|
---|
| 489 | + fi"
|
---|
| 490 |
|
---|
| 491 | $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
|
---|
| 492 |
|
---|
| 493 | @@ -71,4 +73,4 @@
|
---|
| 494 | test60.out: test60.vim
|
---|
| 495 |
|
---|
| 496 | nolog:
|
---|
| 497 | - -echo Test results: >test.log
|
---|
| 498 | + -rm -f test.log
|
---|
| 499 | diff -Naur vim72.orig/src/ui.c vim72/src/ui.c
|
---|
| 500 | --- vim72.orig/src/ui.c 2008-07-14 14:14:56.000000000 -0400
|
---|
| 501 | +++ vim72/src/ui.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 502 | @@ -2110,6 +2110,8 @@
|
---|
| 503 | int i;
|
---|
| 504 | int nbytes = 0;
|
---|
| 505 | char_u *buffer;
|
---|
| 506 | + time_t start_time;
|
---|
| 507 | + int timed_out = FALSE;
|
---|
| 508 |
|
---|
| 509 | for (i =
|
---|
| 510 | #ifdef FEAT_MBYTE
|
---|
| 511 | @@ -2129,6 +2131,7 @@
|
---|
| 512 | case 3: type = text_atom; break;
|
---|
| 513 | default: type = XA_STRING;
|
---|
| 514 | }
|
---|
| 515 | + success = FALSE;
|
---|
| 516 | XtGetSelectionValue(myShell, cbd->sel_atom, type,
|
---|
| 517 | clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
|
---|
| 518 |
|
---|
| 519 | @@ -2141,27 +2144,46 @@
|
---|
| 520 | * characters, then they will appear before the one that requested the
|
---|
| 521 | * paste! Don't worry, we will catch up with any other events later.
|
---|
| 522 | */
|
---|
| 523 | + start_time = time(NULL);
|
---|
| 524 | for (;;)
|
---|
| 525 | {
|
---|
| 526 | if (XCheckTypedEvent(dpy, SelectionNotify, &event))
|
---|
| 527 | + {
|
---|
| 528 | + /* this is where clip_x11_request_selection_cb() is actually
|
---|
| 529 | + * called */
|
---|
| 530 | + XtDispatchEvent(&event);
|
---|
| 531 | break;
|
---|
| 532 | + }
|
---|
| 533 | if (XCheckTypedEvent(dpy, SelectionRequest, &event))
|
---|
| 534 | /* We may get a SelectionRequest here and if we don't handle
|
---|
| 535 | * it we hang. KDE klipper does this, for example. */
|
---|
| 536 | XtDispatchEvent(&event);
|
---|
| 537 |
|
---|
| 538 | + /* Time out after 2 to 3 seconds to avoid that we hang when the
|
---|
| 539 | + * other process doesn't respond. Note that the SelectionNotify
|
---|
| 540 | + * event may still come later when the selection owner comes back
|
---|
| 541 | + * to life and the text gets inserted unexpectedly (by xterm).
|
---|
| 542 | + * Don't know how to avoid that :-(. */
|
---|
| 543 | + if (time(NULL) > start_time + 2)
|
---|
| 544 | + {
|
---|
| 545 | + timed_out = TRUE;
|
---|
| 546 | + break;
|
---|
| 547 | + }
|
---|
| 548 | +
|
---|
| 549 | /* Do we need this? Probably not. */
|
---|
| 550 | XSync(dpy, False);
|
---|
| 551 |
|
---|
| 552 | - /* Bernhard Walle solved a slow paste response in an X terminal by
|
---|
| 553 | - * adding: usleep(10000); here. */
|
---|
| 554 | + /* Wait for 1 msec to avoid that we eat up all CPU time. */
|
---|
| 555 | + ui_delay(1L, TRUE);
|
---|
| 556 | }
|
---|
| 557 |
|
---|
| 558 | - /* this is where clip_x11_request_selection_cb() is actually called */
|
---|
| 559 | - XtDispatchEvent(&event);
|
---|
| 560 | -
|
---|
| 561 | if (success)
|
---|
| 562 | return;
|
---|
| 563 | +
|
---|
| 564 | + /* don't do a retry with another type after timing out, otherwise we
|
---|
| 565 | + * hang for 15 seconds. */
|
---|
| 566 | + if (timed_out)
|
---|
| 567 | + break;
|
---|
| 568 | }
|
---|
| 569 |
|
---|
| 570 | /* Final fallback position - use the X CUT_BUFFER0 store */
|
---|
| 571 | diff -Naur vim72.orig/src/version.c vim72/src/version.c
|
---|
| 572 | --- vim72.orig/src/version.c 2008-08-09 10:24:52.000000000 -0400
|
---|
| 573 | +++ vim72/src/version.c 2008-09-13 12:01:16.000000000 -0400
|
---|
| 574 | @@ -677,6 +677,34 @@
|
---|
| 575 | static int included_patches[] =
|
---|
| 576 | { /* Add new patch number below this line */
|
---|
| 577 | /**/
|
---|
| 578 | + 15,
|
---|
| 579 | +/**/
|
---|
| 580 | + 14,
|
---|
| 581 | +/**/
|
---|
| 582 | + 13,
|
---|
| 583 | +/**/
|
---|
| 584 | + 12,
|
---|
| 585 | +/**/
|
---|
| 586 | + 11,
|
---|
| 587 | +/**/
|
---|
| 588 | + 10,
|
---|
| 589 | +/**/
|
---|
| 590 | + 9,
|
---|
| 591 | +/**/
|
---|
| 592 | + 8,
|
---|
| 593 | +/**/
|
---|
| 594 | + 6,
|
---|
| 595 | +/**/
|
---|
| 596 | + 5,
|
---|
| 597 | +/**/
|
---|
| 598 | + 4,
|
---|
| 599 | +/**/
|
---|
| 600 | + 3,
|
---|
| 601 | +/**/
|
---|
| 602 | + 2,
|
---|
| 603 | +/**/
|
---|
| 604 | + 1,
|
---|
| 605 | +/**/
|
---|
| 606 | 0
|
---|
| 607 | };
|
---|
| 608 |
|
---|
| 609 | @@ -786,7 +814,7 @@
|
---|
| 610 | MSG_PUTS(_("\nRISC OS version"));
|
---|
| 611 | #endif
|
---|
| 612 | #ifdef VMS
|
---|
| 613 | - MSG_PUTS("\nOpenVMS version");
|
---|
| 614 | + MSG_PUTS(_("\nOpenVMS version"));
|
---|
| 615 | # ifdef HAVE_PATHDEF
|
---|
| 616 | if (*compiled_arch != NUL)
|
---|
| 617 | {
|
---|