From fbd0b0af6800f6ff89857863d6a07ea03f09ff6c Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 17 Jun 2017 18:44:21 +0200 Subject: patch 8.0.0643: when a pattern search is slow Vim becomes unusable Problem: When 'hlsearch' is set and matching with the last search pattern is very slow, Vim becomes unusable. Cannot quit search by pressing CTRL-C. Solution: When the search times out set a flag and don't try again. Check for timeout and CTRL-C in NFA loop that adds states. --- src/ex_cmds.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/ex_cmds.c') diff --git a/src/ex_cmds.c b/src/ex_cmds.c index 859b8c65b..59531bea0 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -5096,7 +5096,7 @@ do_sub(exarg_T *eap) ); ++lnum) { nmatch = vim_regexec_multi(®match, curwin, curbuf, lnum, - (colnr_T)0, NULL); + (colnr_T)0, NULL, NULL); if (nmatch) { colnr_T copycol; @@ -5695,7 +5695,7 @@ skip: || nmatch_tl > 0 || (nmatch = vim_regexec_multi(®match, curwin, curbuf, sub_firstlnum, - matchcol, NULL)) == 0 + matchcol, NULL, NULL)) == 0 || regmatch.startpos[0].lnum > 0) { if (new_start != NULL) @@ -5760,7 +5760,7 @@ skip: } if (nmatch == -1 && !lastone) nmatch = vim_regexec_multi(®match, curwin, curbuf, - sub_firstlnum, matchcol, NULL); + sub_firstlnum, matchcol, NULL, NULL); /* * 5. break if there isn't another match in this line @@ -6012,7 +6012,7 @@ ex_global(exarg_T *eap) { lnum = curwin->w_cursor.lnum; match = vim_regexec_multi(®match, curwin, curbuf, lnum, - (colnr_T)0, NULL); + (colnr_T)0, NULL, NULL); if ((type == 'g' && match) || (type == 'v' && !match)) global_exe_one(cmd, lnum); } @@ -6025,7 +6025,7 @@ ex_global(exarg_T *eap) { /* a match on this line? */ match = vim_regexec_multi(®match, curwin, curbuf, lnum, - (colnr_T)0, NULL); + (colnr_T)0, NULL, NULL); if ((type == 'g' && match) || (type == 'v' && !match)) { ml_setmarked(lnum); -- cgit v1.2.1