Mercurial > vim
diff src/search.c @ 27704:4c68fb88b73f v8.2.4378
patch 8.2.4378: incsearch HL broken when calling searchcount in 'tabLine'
Commit: https://github.com/vim/vim/commit/6dd7424c7e6ab81998c29ca3526c41b75cfde5a1
Author: Christian Brabandt <cb@256bit.org>
Date: Mon Feb 14 12:44:32 2022 +0000
patch 8.2.4378: incsearch HL broken when calling searchcount in 'tabLine'
Problem: Incsearch highlight broken when calling searchcount() in 'tabLine'
function. (Mirko Palmer)
Solution: Save and restore the incsearch state. (Christian Brabandt,
closes #9763, closes #9633)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 14 Feb 2022 13:45:02 +0100 |
parents | 8dbdd68627bd |
children | c1d1639b52dd |
line wrap: on
line diff
--- a/src/search.c +++ b/src/search.c @@ -325,6 +325,8 @@ static spat_T saved_last_search_spat static int did_save_last_search_spat = 0; static int saved_last_idx = 0; static int saved_no_hlsearch = 0; +static int saved_search_match_endcol; +static int saved_search_match_lines; /* * Save and restore the search pattern for incremental highlight search @@ -370,6 +372,25 @@ restore_last_search_pattern(void) set_no_hlsearch(saved_no_hlsearch); } +/* + * Save and restore the incsearch highlighting variables. + * This is required so that calling searchcount() at does not invalidate the + * incsearch highlighting. + */ + static void +save_incsearch_state(void) +{ + saved_search_match_endcol = search_match_endcol; + saved_search_match_lines = search_match_lines; +} + + static void +restore_incsearch_state(void) +{ + search_match_endcol = saved_search_match_endcol; + search_match_lines = saved_search_match_lines; +} + char_u * last_search_pattern(void) { @@ -4182,6 +4203,9 @@ f_searchcount(typval_T *argvars, typval_ } save_last_search_pattern(); +#ifdef FEAT_SEARCH_EXTRA + save_incsearch_state(); +#endif if (pattern != NULL) { if (*pattern == NUL) @@ -4202,6 +4226,9 @@ f_searchcount(typval_T *argvars, typval_ the_end: restore_last_search_pattern(); +#ifdef FEAT_SEARCH_EXTRA + restore_incsearch_state(); +#endif } /*