patch 8.1.0556: saving/restoring search patterns share saved last_idx
Problem: Saving/restoring search patterns share saved last_idx.
Solution: Use a separate saved last_idx for saving search patterns for
functions and incremental search.
diff --git a/src/search.c b/src/search.c
index 6d245ca..0cbbf4f 100644
--- a/src/search.c
+++ b/src/search.c
@@ -93,12 +93,8 @@
/* copy of spats[], for keeping the search patterns while executing autocmds */
static struct spat saved_spats[2];
# ifdef FEAT_SEARCH_EXTRA
-/* copy of spats[RE_SEARCH], for keeping the search patterns while incremental
- * searching */
-static struct spat 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_spats_last_idx = 0;
+static int saved_spats_no_hlsearch = 0;
# endif
static char_u *mr_pattern = NULL; /* pattern used by search_regcomp() */
@@ -310,8 +306,8 @@
if (spats[1].pat != NULL)
saved_spats[1].pat = vim_strsave(spats[1].pat);
#ifdef FEAT_SEARCH_EXTRA
- saved_last_idx = last_idx;
- saved_no_hlsearch = no_hlsearch;
+ saved_spats_last_idx = last_idx;
+ saved_spats_no_hlsearch = no_hlsearch;
#endif
}
}
@@ -329,8 +325,8 @@
vim_free(spats[1].pat);
spats[1] = saved_spats[1];
#ifdef FEAT_SEARCH_EXTRA
- last_idx = saved_last_idx;
- set_no_hlsearch(saved_no_hlsearch);
+ last_idx = saved_spats_last_idx;
+ set_no_hlsearch(saved_spats_no_hlsearch);
#endif
}
}
@@ -354,6 +350,13 @@
#endif
#ifdef FEAT_SEARCH_EXTRA
+// copy of spats[RE_SEARCH], for keeping the search patterns while incremental
+// searching
+static struct spat saved_last_search_spat;
+static int did_save_last_search_spat = 0;
+static int saved_last_idx = 0;
+static int saved_no_hlsearch = 0;
+
/*
* Save and restore the search pattern for incremental highlight search
* feature.
@@ -575,7 +578,7 @@
saved_spats[idx].pat = NULL;
else
saved_spats[idx].pat = vim_strsave(spats[idx].pat);
- saved_last_idx = last_idx;
+ saved_spats_last_idx = last_idx;
}
# ifdef FEAT_SEARCH_EXTRA
/* If 'hlsearch' set and search pat changed: need redraw. */