4 From: Bram Moolenaar <Bram@moolenaar.net>
6 Content-Type: text/plain; charset=ISO-8859-1
7 Content-Transfer-Encoding: 8bit
11 Problem: When using 'incsearch' and 'hlsearch' a complicated pattern may
12 make Vim hang until CTRL-C is pressed.
13 Solution: Add the 'redrawtime' option.
14 Files: runtime/doc/options.txt, src/ex_cmds.c, src/ex_docmd.c,
15 src/ex_getln.c, src/gui.c, src/misc1.c, src/normal.c,
16 src/option.c, src/quickfix.c, src/regexp.c, src/proto/regexp.pro,
17 src/proto/search.pro, src/search.c, src/screen.c,
18 src/option.h, src/spell.c, src/structs.h, src/syntax.c, src/tag.c,
22 *** ../vim-7.1.235/runtime/doc/options.txt Sun Aug 12 16:55:01 2007
23 --- runtime/doc/options.txt Sat Jan 19 14:01:22 2008
27 When you get bored looking at the highlighted matches, you can turn it
28 off with |:nohlsearch|. As soon as you use a search command, the
29 highlighting comes back.
30 + 'redrawtime' specifies the maximum time spend on finding matches.
31 When the search pattern can match an end-of-line, Vim will try to
32 highlight all of the matched text. However, this depends on where the
33 search starts. This will be the first line in the window or the first
37 original position when no match is found and when pressing <Esc>. You
38 still need to finish the search command with <Enter> to move the
40 + When compiled with the |+reltime| feature Vim only searches for about
41 + half a second. With a complicated pattern and/or a lot of text the
42 + match may not be found. This is to avoid that Vim hangs while you
43 + are typing the pattern.
44 The highlighting can be set with the 'i' flag in 'highlight'.
46 CTRL-L can be used to add one character from after the current match
50 {not in Vi:} When using the ":view" command the 'readonly' option is
51 set for the newly edited buffer.
53 + *'redrawtime'* *'rdt'*
54 + 'redrawtime' 'rdt' number (default 2000)
57 + {only available when compiled with the |+reltime|
59 + The time in milliseconds for redrawing the display. This applies to
60 + searching for patterns for 'hlsearch' and |:match| highlighting.
61 + When redrawing takes more than this many milliseconds no further
62 + matches will be highlighted. This is used to avoid that Vim hangs
63 + when using a very complicated pattern.
66 'remap' boolean (default on)
68 *** ../vim-7.1.235/src/ex_cmds.c Sun Jan 13 13:30:34 2008
69 --- src/ex_cmds.c Sat Jan 19 13:04:28 2008
75 ! nmatch = vim_regexec_multi(®match, curwin, curbuf, lnum, (colnr_T)0);
83 ! nmatch = vim_regexec_multi(®match, curwin, curbuf, lnum,
90 || (do_ask && !re_lookbehind(regmatch.regprog))
92 || (nmatch = vim_regexec_multi(®match, curwin,
93 ! curbuf, sub_firstlnum, matchcol)) == 0
94 || regmatch.startpos[0].lnum > 0)
96 if (new_start != NULL)
98 || (do_ask && !re_lookbehind(regmatch.regprog))
100 || (nmatch = vim_regexec_multi(®match, curwin,
101 ! curbuf, sub_firstlnum,
102 ! matchcol, NULL)) == 0
103 || regmatch.startpos[0].lnum > 0)
105 if (new_start != NULL)
109 if (nmatch == -1 && !lastone)
110 nmatch = vim_regexec_multi(®match, curwin, curbuf,
111 ! sub_firstlnum, matchcol);
114 * 5. break if there isn't another match in this line
117 if (nmatch == -1 && !lastone)
118 nmatch = vim_regexec_multi(®match, curwin, curbuf,
119 ! sub_firstlnum, matchcol, NULL);
122 * 5. break if there isn't another match in this line
125 for (lnum = eap->line1; lnum <= eap->line2 && !got_int; ++lnum)
127 /* a match on this line? */
128 ! match = vim_regexec_multi(®match, curwin, curbuf, lnum, (colnr_T)0);
129 if ((type == 'g' && match) || (type == 'v' && !match))
133 for (lnum = eap->line1; lnum <= eap->line2 && !got_int; ++lnum)
135 /* a match on this line? */
136 ! match = vim_regexec_multi(®match, curwin, curbuf, lnum,
138 if ((type == 'g' && match) || (type == 'v' && !match))
141 *** ../vim-7.1.235/src/ex_docmd.c Sun Jan 13 17:11:25 2008
142 --- src/ex_docmd.c Fri Jan 18 21:01:16 2008
145 curwin->w_cursor.col = 0;
147 if (!do_search(NULL, c, cmd, 1L,
148 ! SEARCH_HIS + SEARCH_MSG + SEARCH_START))
150 curwin->w_cursor = pos;
153 curwin->w_cursor.col = 0;
155 if (!do_search(NULL, c, cmd, 1L,
156 ! SEARCH_HIS + SEARCH_MSG + SEARCH_START,
159 curwin->w_cursor = pos;
161 *** ../vim-7.1.235/src/ex_getln.c Fri Jan 18 13:15:32 2008
162 --- src/ex_getln.c Fri Jan 18 21:34:42 2008
166 if (p_is && !cmd_silent && (firstc == '/' || firstc == '?'))
169 + #ifdef FEAT_RELTIME
173 /* if there is a character waiting, search and redraw later */
177 cursor_off(); /* so the user knows we're busy */
179 ++emsg_off; /* So it doesn't beep if bad expr */
180 i = do_search(NULL, firstc, ccline.cmdbuff, count,
181 ! SEARCH_KEEP + SEARCH_OPT + SEARCH_NOOF + SEARCH_PEEK);
183 /* if interrupted while searching, behave like it failed */
186 cursor_off(); /* so the user knows we're busy */
188 ++emsg_off; /* So it doesn't beep if bad expr */
189 + #ifdef FEAT_RELTIME
190 + /* Set the time limit to half a second. */
191 + profile_setlimit(500L, &tm);
193 i = do_search(NULL, firstc, ccline.cmdbuff, count,
194 ! SEARCH_KEEP + SEARCH_OPT + SEARCH_NOOF + SEARCH_PEEK,
195 ! #ifdef FEAT_RELTIME
202 /* if interrupted while searching, behave like it failed */
204 *** ../vim-7.1.235/src/gui.c Thu Jan 3 16:14:25 2008
205 --- src/gui.c Fri Jan 18 21:01:36 2008
208 /* Search for the next match. */
210 do_search(NULL, down ? '/' : '?', ga.ga_data, 1L,
211 ! SEARCH_MSG + SEARCH_MARK);
212 msg_scroll = i; /* don't let an error message set msg_scroll */
216 /* Search for the next match. */
218 do_search(NULL, down ? '/' : '?', ga.ga_data, 1L,
219 ! SEARCH_MSG + SEARCH_MARK, NULL);
220 msg_scroll = i; /* don't let an error message set msg_scroll */
223 *** ../vim-7.1.235/src/misc1.c Thu Jan 3 12:42:38 2008
224 --- src/misc1.c Sat Jan 19 13:04:39 2008
228 regmatch.rmm_ic = FALSE;
229 regmatch.rmm_maxcol = 0;
230 ! if (vim_regexec_multi(®match, curwin, curbuf, lnum, (colnr_T)0))
232 pos.lnum = regmatch.endpos[0].lnum + lnum;
233 pos.col = regmatch.endpos[0].col;
236 regmatch.rmm_ic = FALSE;
237 regmatch.rmm_maxcol = 0;
238 ! if (vim_regexec_multi(®match, curwin, curbuf, lnum,
241 pos.lnum = regmatch.endpos[0].lnum + lnum;
242 pos.col = regmatch.endpos[0].col;
243 *** ../vim-7.1.235/src/normal.c Sat Jan 12 17:11:25 2008
244 --- src/normal.c Fri Jan 18 21:01:47 2008
247 curwin->w_set_curswant = TRUE;
249 i = do_search(cap->oap, dir, pat, cap->count1,
250 ! opt | SEARCH_OPT | SEARCH_ECHO | SEARCH_MSG);
255 curwin->w_set_curswant = TRUE;
257 i = do_search(cap->oap, dir, pat, cap->count1,
258 ! opt | SEARCH_OPT | SEARCH_ECHO | SEARCH_MSG, NULL);
262 *** ../vim-7.1.235/src/option.c Tue Oct 2 20:40:01 2007
263 --- src/option.c Sat Jan 19 13:44:33 2008
267 {"redraw", NULL, P_BOOL|P_VI_DEF,
268 (char_u *)NULL, PV_NONE,
269 {(char_u *)FALSE, (char_u *)0L}},
270 + {"redrawtime", "rdt", P_NUM|P_VI_DEF,
271 + #ifdef FEAT_RELTIME
272 + (char_u *)&p_rdt, PV_NONE,
274 + (char_u *)NULL, PV_NONE,
276 + {(char_u *)2000L, (char_u *)0L}},
277 {"remap", NULL, P_BOOL|P_VI_DEF,
278 (char_u *)&p_remap, PV_NONE,
279 {(char_u *)TRUE, (char_u *)0L}},
280 *** ../vim-7.1.235/src/quickfix.c Sun Sep 30 14:00:41 2007
281 --- src/quickfix.c Sat Jan 19 13:04:53 2008
284 /* Move the cursor to the first line in the buffer */
285 save_cursor = curwin->w_cursor;
286 curwin->w_cursor.lnum = 0;
287 ! if (!do_search(NULL, '/', qf_ptr->qf_pattern, (long)1, SEARCH_KEEP))
288 curwin->w_cursor = save_cursor;
292 /* Move the cursor to the first line in the buffer */
293 save_cursor = curwin->w_cursor;
294 curwin->w_cursor.lnum = 0;
295 ! if (!do_search(NULL, '/', qf_ptr->qf_pattern, (long)1,
296 ! SEARCH_KEEP, NULL))
297 curwin->w_cursor = save_cursor;
304 while (vim_regexec_multi(®match, curwin, buf, lnum,
308 if (qf_add_entry(qi, &prevp,
312 while (vim_regexec_multi(®match, curwin, buf, lnum,
316 if (qf_add_entry(qi, &prevp,
317 *** ../vim-7.1.235/src/regexp.c Fri Jan 18 20:36:40 2008
318 --- src/regexp.c Sat Jan 19 15:18:12 2008
323 static char_u *reg_getline __ARGS((linenr_T lnum));
324 ! static long vim_regexec_both __ARGS((char_u *line, colnr_T col));
325 static long regtry __ARGS((regprog_T *prog, colnr_T col));
326 static void cleanup_subexpr __ARGS((void));
331 static char_u *reg_getline __ARGS((linenr_T lnum));
332 ! static long vim_regexec_both __ARGS((char_u *line, colnr_T col, proftime_T *tm));
333 static long regtry __ARGS((regprog_T *prog, colnr_T col));
334 static void cleanup_subexpr __ARGS((void));
338 ireg_icombine = FALSE;
341 ! return (vim_regexec_both(line, col) != 0);
344 #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \
346 ireg_icombine = FALSE;
349 ! return (vim_regexec_both(line, col, NULL) != 0);
352 #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \
355 ireg_icombine = FALSE;
358 ! return (vim_regexec_both(line, col) != 0);
363 ireg_icombine = FALSE;
366 ! return (vim_regexec_both(line, col, NULL) != 0);
375 ! vim_regexec_multi(rmp, win, buf, lnum, col)
377 win_T *win; /* window in which to search or NULL */
378 buf_T *buf; /* buffer in which to search */
379 linenr_T lnum; /* nr of line to start looking for match */
380 colnr_T col; /* column to start looking for match */
383 buf_T *save_curbuf = curbuf;
388 ! vim_regexec_multi(rmp, win, buf, lnum, col, tm)
390 win_T *win; /* window in which to search or NULL */
391 buf_T *buf; /* buffer in which to search */
392 linenr_T lnum; /* nr of line to start looking for match */
393 colnr_T col; /* column to start looking for match */
394 + proftime_T *tm; /* timeout limit or NULL */
397 buf_T *save_curbuf = curbuf;
401 /* Need to switch to buffer "buf" to make vim_iswordc() work. */
403 ! r = vim_regexec_both(NULL, col);
404 curbuf = save_curbuf;
409 /* Need to switch to buffer "buf" to make vim_iswordc() work. */
411 ! r = vim_regexec_both(NULL, col, tm);
412 curbuf = save_curbuf;
417 * Match a regexp against a string ("line" points to the string) or multiple
418 * lines ("line" is NULL, use reg_getline()).
421 ! vim_regexec_both(line, col)
423 colnr_T col; /* column to start looking for match */
428 * Match a regexp against a string ("line" points to the string) or multiple
429 * lines ("line" is NULL, use reg_getline()).
433 ! vim_regexec_both(line, col, tm)
435 colnr_T col; /* column to start looking for match */
436 + proftime_T *tm; /* timeout limit or NULL */
446 + #ifdef FEAT_RELTIME
449 /* Messy cases: unanchored match. */
458 + #ifdef FEAT_RELTIME
459 + /* Check for timeout once in a twenty times to avoid overhead. */
460 + if (tm != NULL && ++tm_count == 20)
463 + if (profile_passed_limit(tm))
470 *** ../vim-7.1.235/src/proto/regexp.pro Sat May 5 19:42:08 2007
471 --- src/proto/regexp.pro Sat Jan 19 13:14:09 2008
475 - void free_regexp_stuff __ARGS((void));
476 int re_multiline __ARGS((regprog_T *prog));
477 int re_lookbehind __ARGS((regprog_T *prog));
478 char_u *skip_regexp __ARGS((char_u *startp, int dirc, int magic, char_u **newp));
479 regprog_T *vim_regcomp __ARGS((char_u *expr, int re_flags));
480 int vim_regcomp_had_eol __ARGS((void));
481 int vim_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
482 int vim_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
483 ! long vim_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col));
484 reg_extmatch_T *ref_extmatch __ARGS((reg_extmatch_T *em));
485 void unref_extmatch __ARGS((reg_extmatch_T *em));
486 char_u *regtilde __ARGS((char_u *source, int magic));
489 int re_multiline __ARGS((regprog_T *prog));
490 int re_lookbehind __ARGS((regprog_T *prog));
491 char_u *skip_regexp __ARGS((char_u *startp, int dirc, int magic, char_u **newp));
492 regprog_T *vim_regcomp __ARGS((char_u *expr, int re_flags));
493 int vim_regcomp_had_eol __ARGS((void));
494 + void free_regexp_stuff __ARGS((void));
495 int vim_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
496 int vim_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
497 ! long vim_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col, proftime_T *tm));
498 reg_extmatch_T *ref_extmatch __ARGS((reg_extmatch_T *em));
499 void unref_extmatch __ARGS((reg_extmatch_T *em));
500 char_u *regtilde __ARGS((char_u *source, int magic));
501 *** ../vim-7.1.235/src/proto/search.pro Sun Jan 6 20:05:36 2008
502 --- src/proto/search.pro Fri Jan 18 21:03:49 2008
505 void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast));
506 void last_pat_prog __ARGS((regmmatch_T *regmatch));
507 int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum, proftime_T *tm));
508 ! int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options));
509 int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat));
510 int searchc __ARGS((cmdarg_T *cap, int t_cmd));
511 pos_T *findmatch __ARGS((oparg_T *oap, int initc));
513 void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast));
514 void last_pat_prog __ARGS((regmmatch_T *regmatch));
515 int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum, proftime_T *tm));
516 ! int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options, proftime_T *tm));
517 int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat));
518 int searchc __ARGS((cmdarg_T *cap, int t_cmd));
519 pos_T *findmatch __ARGS((oparg_T *oap, int initc));
520 *** ../vim-7.1.235/src/search.c Sun Jan 6 20:05:36 2008
521 --- src/search.c Sat Jan 19 13:13:25 2008
524 * Look for a match somewhere in line "lnum".
526 nmatched = vim_regexec_multi(®match, win, buf,
528 /* Abort searching on an error (e.g., out of stack). */
532 * Look for a match somewhere in line "lnum".
534 nmatched = vim_regexec_multi(®match, win, buf,
536 ! #ifdef FEAT_RELTIME
542 /* Abort searching on an error (e.g., out of stack). */
547 /* match may actually be in another line when using \zs */
548 matchpos = regmatch.startpos[0];
549 endpos = regmatch.endpos[0];
551 submatch = first_submatch(®match);
553 /* Line me be past end of buffer for "\n\zs". */
554 if (lnum + matchpos.lnum > buf->b_ml.ml_line_count)
557 /* match may actually be in another line when using \zs */
558 matchpos = regmatch.startpos[0];
559 endpos = regmatch.endpos[0];
561 submatch = first_submatch(®match);
563 /* Line me be past end of buffer for "\n\zs". */
564 if (lnum + matchpos.lnum > buf->b_ml.ml_line_count)
568 if (ptr[matchcol] == NUL
569 || (nmatched = vim_regexec_multi(®match,
570 win, buf, lnum + matchpos.lnum,
576 if (ptr[matchcol] == NUL
577 || (nmatched = vim_regexec_multi(®match,
578 win, buf, lnum + matchpos.lnum,
580 ! #ifdef FEAT_RELTIME
591 if (ptr[matchcol] == NUL
592 || (nmatched = vim_regexec_multi(®match,
593 win, buf, lnum + matchpos.lnum,
597 /* Need to get the line pointer again, a
599 if (ptr[matchcol] == NUL
600 || (nmatched = vim_regexec_multi(®match,
601 win, buf, lnum + matchpos.lnum,
603 ! #ifdef FEAT_RELTIME
611 /* Need to get the line pointer again, a
614 * return 0 for failure, 1 for found, 2 for found and line offset added
617 ! do_search(oap, dirc, pat, count, options)
618 oparg_T *oap; /* can be NULL */
619 int dirc; /* '/' or '?' */
624 pos_T pos; /* position of the last match */
627 * return 0 for failure, 1 for found, 2 for found and line offset added
630 ! do_search(oap, dirc, pat, count, options, tm)
631 oparg_T *oap; /* can be NULL */
632 int dirc; /* '/' or '?' */
636 + proftime_T *tm; /* timeout limit or NULL */
638 pos_T pos; /* position of the last match */
642 (SEARCH_KEEP + SEARCH_PEEK + SEARCH_HIS
643 + SEARCH_MSG + SEARCH_START
644 + ((pat != NULL && *pat == ';') ? 0 : SEARCH_NOOF))),
645 ! RE_LAST, (linenr_T)0, NULL);
648 *dircp = dirc; /* restore second '/' or '?' for normal_cmd() */
650 (SEARCH_KEEP + SEARCH_PEEK + SEARCH_HIS
651 + SEARCH_MSG + SEARCH_START
652 + ((pat != NULL && *pat == ';') ? 0 : SEARCH_NOOF))),
653 ! RE_LAST, (linenr_T)0, tm);
656 *dircp = dirc; /* restore second '/' or '?' for normal_cmd() */
657 *** ../vim-7.1.235/src/screen.c Sat Jan 12 16:45:25 2008
658 --- src/screen.c Sat Jan 19 13:52:29 2008
664 cur->hl.first_lnum = 0;
665 + # ifdef FEAT_RELTIME
666 + /* Set the time limit to 'redrawtime'. */
667 + profile_setlimit(p_rdt, &(cur->hl.tm));
673 search_hl.first_lnum = 0;
674 + /* time limit is set at the toplevel, for all windows */
677 #ifdef FEAT_LINEBREAK
682 last_pat_prog(&search_hl.rm);
683 search_hl.attr = hl_attr(HLF_L);
684 + # ifdef FEAT_RELTIME
685 + /* Set the time limit to 'redrawtime'. */
686 + profile_setlimit(p_rdt, &search_hl.tm);
697 + #ifdef FEAT_RELTIME
698 + /* Stop searching after passing the time limit. */
699 + if (profile_passed_limit(&(shl->tm)))
701 + shl->lnum = 0; /* no match found in time */
706 * 1. No useful previous match: search from start of line.
707 * 2. Not Vi compatible or empty match: continue at next character.
710 matchcol = shl->rm.endpos[0].col;
713 ! nmatched = vim_regexec_multi(&shl->rm, win, shl->buf, lnum, matchcol);
716 /* Error while handling regexp: stop using this regexp. */
718 matchcol = shl->rm.endpos[0].col;
721 ! nmatched = vim_regexec_multi(&shl->rm, win, shl->buf, lnum, matchcol,
722 ! #ifdef FEAT_RELTIME
730 /* Error while handling regexp: stop using this regexp. */
731 *** ../vim-7.1.235/src/option.h Thu May 10 20:34:47 2007
732 --- src/option.h Sat Jan 19 13:45:51 2008
736 #ifdef FEAT_SEARCHPATH
737 EXTERN char_u *p_cdpath; /* 'cdpath' */
739 + #ifdef FEAT_RELTIME
740 + EXTERN long p_rdt; /* 'redrawtime' */
742 EXTERN int p_remap; /* 'remap' */
743 EXTERN long p_report; /* 'report' */
744 #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
745 *** ../vim-7.1.235/src/spell.c Sat Jan 12 16:45:25 2008
746 --- src/spell.c Fri Jan 18 21:02:47 2008
749 curwin->w_cursor.lnum = 0;
752 ! if (do_search(NULL, '/', frompat, 1L, SEARCH_KEEP) == 0
753 || u_save_cursor() == FAIL)
757 curwin->w_cursor.lnum = 0;
760 ! if (do_search(NULL, '/', frompat, 1L, SEARCH_KEEP, NULL) == 0
761 || u_save_cursor() == FAIL)
764 *** ../vim-7.1.235/src/structs.h Mon Oct 1 22:53:27 2007
765 --- src/structs.h Fri Jan 18 21:18:53 2008
769 linenr_T first_lnum; /* first lnum to search for multi-line pat */
770 colnr_T startcol; /* in win_line() points to char where HL starts */
771 colnr_T endcol; /* in win_line() points to char where HL ends */
772 + #ifdef FEAT_RELTIME
773 + proftime_T tm; /* for a time limit */
778 *** ../vim-7.1.235/src/syntax.c Sun Jan 13 17:39:29 2008
779 --- src/syntax.c Sat Jan 19 13:13:49 2008
784 rmp->rmm_maxcol = syn_buf->b_p_smc;
785 ! if (vim_regexec_multi(rmp, syn_win, syn_buf, lnum, col) > 0)
787 rmp->startpos[0].lnum += lnum;
788 rmp->endpos[0].lnum += lnum;
792 rmp->rmm_maxcol = syn_buf->b_p_smc;
793 ! if (vim_regexec_multi(rmp, syn_win, syn_buf, lnum, col, NULL) > 0)
795 rmp->startpos[0].lnum += lnum;
796 rmp->endpos[0].lnum += lnum;
797 *** ../vim-7.1.235/src/tag.c Thu May 10 19:44:07 2007
798 --- src/tag.c Fri Jan 18 21:03:41 2008
802 save_lnum = curwin->w_cursor.lnum;
803 curwin->w_cursor.lnum = 0; /* start search before first line */
804 ! if (do_search(NULL, pbuf[0], pbuf + 1, (long)1, search_options))
810 save_lnum = curwin->w_cursor.lnum;
811 curwin->w_cursor.lnum = 0; /* start search before first line */
812 ! if (do_search(NULL, pbuf[0], pbuf + 1, (long)1,
813 ! search_options, NULL))
821 if (!do_search(NULL, pbuf[0], pbuf + 1, (long)1,
825 * Failed to find pattern, take a guess: "^func ("
829 if (!do_search(NULL, pbuf[0], pbuf + 1, (long)1,
830 ! search_options, NULL))
833 * Failed to find pattern, take a guess: "^func ("
836 cc = *tagp.tagname_end;
837 *tagp.tagname_end = NUL;
838 sprintf((char *)pbuf, "^%s\\s\\*(", tagp.tagname);
839 ! if (!do_search(NULL, '/', pbuf, (long)1, search_options))
841 /* Guess again: "^char * \<func (" */
842 sprintf((char *)pbuf, "^\\[#a-zA-Z_]\\.\\*\\<%s\\s\\*(",
844 if (!do_search(NULL, '/', pbuf, (long)1,
848 *tagp.tagname_end = cc;
850 cc = *tagp.tagname_end;
851 *tagp.tagname_end = NUL;
852 sprintf((char *)pbuf, "^%s\\s\\*(", tagp.tagname);
853 ! if (!do_search(NULL, '/', pbuf, (long)1,
854 ! search_options, NULL))
856 /* Guess again: "^char * \<func (" */
857 sprintf((char *)pbuf, "^\\[#a-zA-Z_]\\.\\*\\<%s\\s\\*(",
859 if (!do_search(NULL, '/', pbuf, (long)1,
860 ! search_options, NULL))
863 *tagp.tagname_end = cc;
864 *** ../vim-7.1.235/src/vim.h Sat Jan 5 13:34:01 2008
865 --- src/vim.h Fri Jan 18 21:29:22 2008
869 # define MB_MAXBYTES 21
872 + #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO)
874 + typedef LARGE_INTEGER proftime_T;
876 + typedef struct timeval proftime_T;
879 + typedef int proftime_T; /* dummy for function prototypes */
882 /* Include option.h before structs.h, because the number of window-local and
883 * buffer-local options is used there. */
884 #include "option.h" /* options and default values */
887 # include <io.h> /* for access() */
889 # define stat(a,b) (access(a,0) ? -1 : stat(a,b))
892 - #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO)
894 - typedef LARGE_INTEGER proftime_T;
896 - typedef struct timeval proftime_T;
899 - typedef int proftime_T; /* dummy for function prototypes */
902 #include "ex_cmds.h" /* Ex command defines */
904 *** ../vim-7.1.235/src/version.c Fri Jan 18 20:36:40 2008
905 --- src/version.c Sat Jan 19 15:19:48 2008
909 { /* Add new patch number below this line */
915 Every time I lose weight, it finds me again!
917 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
918 /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
919 \\\ download, build and distribute -- http://www.A-A-P.org ///
920 \\\ help me help AIDS victims -- http://ICCF-Holland.org ///