comparison src/normal.c @ 11521:578df034735d v8.0.0643

patch 8.0.0643: when a pattern search is slow Vim becomes unusable commit https://github.com/vim/vim/commit/fbd0b0af6800f6ff89857863d6a07ea03f09ff6c Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jun 17 18:44:21 2017 +0200 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.
author Christian Brabandt <cb@256bit.org>
date Sat, 17 Jun 2017 18:45:04 +0200
parents be76f4eca0d7
children 998d2cf59caa
comparison
equal deleted inserted replaced
11520:8b54fc8a4b2e 11521:578df034735d
4356 CLEAR_POS(&found_pos); 4356 CLEAR_POS(&found_pos);
4357 for (;;) 4357 for (;;)
4358 { 4358 {
4359 valid = FALSE; 4359 valid = FALSE;
4360 t = searchit(curwin, curbuf, &curwin->w_cursor, FORWARD, 4360 t = searchit(curwin, curbuf, &curwin->w_cursor, FORWARD,
4361 pat, 1L, searchflags, RE_LAST, (linenr_T)0, NULL); 4361 pat, 1L, searchflags, RE_LAST, (linenr_T)0, NULL, NULL);
4362 if (curwin->w_cursor.lnum >= old_pos.lnum) 4362 if (curwin->w_cursor.lnum >= old_pos.lnum)
4363 t = FAIL; /* match after start is failure too */ 4363 t = FAIL; /* match after start is failure too */
4364 4364
4365 if (thisblock && t != FAIL) 4365 if (thisblock && t != FAIL)
4366 { 4366 {
6378 cap->oap->inclusive = FALSE; 6378 cap->oap->inclusive = FALSE;
6379 cap->oap->use_reg_one = TRUE; 6379 cap->oap->use_reg_one = TRUE;
6380 curwin->w_set_curswant = TRUE; 6380 curwin->w_set_curswant = TRUE;
6381 6381
6382 i = do_search(cap->oap, dir, pat, cap->count1, 6382 i = do_search(cap->oap, dir, pat, cap->count1,
6383 opt | SEARCH_OPT | SEARCH_ECHO | SEARCH_MSG, NULL); 6383 opt | SEARCH_OPT | SEARCH_ECHO | SEARCH_MSG, NULL, NULL);
6384 if (i == 0) 6384 if (i == 0)
6385 clearop(cap->oap); 6385 clearop(cap->oap);
6386 else 6386 else
6387 { 6387 {
6388 if (i == 2) 6388 if (i == 2)