patch 8.1.1148: CTRL-L with 'incsearch' does not pick up char under cursor
Problem: CTRL-L with 'incsearch' does not pick up char under cursor.
(Smylers)
Solution: Do not compare the position with the cursor position. (Hirohito
Higashi, closes #3620)
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 52eda33..e6bb815 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -745,39 +745,35 @@
if (is_state->did_incsearch)
{
curwin->w_cursor = is_state->match_end;
- if (!EQUAL_POS(curwin->w_cursor, is_state->search_start))
+ *c = gchar_cursor();
+ if (*c != NUL)
{
- *c = gchar_cursor();
-
// If 'ignorecase' and 'smartcase' are set and the
// command line has no uppercase characters, convert
// the character to lowercase.
if (p_ic && p_scs && !pat_has_uppercase(ccline.cmdbuff + skiplen))
*c = MB_TOLOWER(*c);
- if (*c != NUL)
+ if (*c == firstc || vim_strchr((char_u *)(
+ p_magic ? "\\~^$.*[" : "\\^$"), *c) != NULL)
{
- if (*c == firstc || vim_strchr((char_u *)(
- p_magic ? "\\~^$.*[" : "\\^$"), *c) != NULL)
- {
- // put a backslash before special characters
- stuffcharReadbuff(*c);
- *c = '\\';
- }
- // add any composing characters
- if (mb_char2len(*c) != mb_ptr2len(ml_get_cursor()))
- {
- int save_c = *c;
-
- while (mb_char2len(*c) != mb_ptr2len(ml_get_cursor()))
- {
- curwin->w_cursor.col += mb_char2len(*c);
- *c = gchar_cursor();
- stuffcharReadbuff(*c);
- }
- *c = save_c;
- }
- return FAIL;
+ // put a backslash before special characters
+ stuffcharReadbuff(*c);
+ *c = '\\';
}
+ // add any composing characters
+ if (mb_char2len(*c) != mb_ptr2len(ml_get_cursor()))
+ {
+ int save_c = *c;
+
+ while (mb_char2len(*c) != mb_ptr2len(ml_get_cursor()))
+ {
+ curwin->w_cursor.col += mb_char2len(*c);
+ *c = gchar_cursor();
+ stuffcharReadbuff(*c);
+ }
+ *c = save_c;
+ }
+ return FAIL;
}
}
return OK;