summaryrefslogtreecommitdiffstats
path: root/src/ex_getln.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-08-18 16:19:42 +0200
committerBram Moolenaar <Bram@vim.org>2018-08-18 16:19:42 +0200
commit81f56536b1bc324eb173924a8cf4d7dbbf4f3fdb (patch)
tree6c8052b1a028eb03a85ffe4f5976863c43a91c67 /src/ex_getln.c
parentb476cb7d8d1a8c02409f110dea8b166aa9334e18 (diff)
patch 8.1.0291: 'incsearch' highlighting not used for :sortv8.1.0291
Problem: 'incsearch' highlighting not used for :sort. Solution: Handle pattern in :sort command.
Diffstat (limited to 'src/ex_getln.c')
-rw-r--r--src/ex_getln.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c
index d38fa4b023..7928af7bff 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -316,6 +316,7 @@ do_incsearch_highlighting(int firstc, incsearch_state_T *is_state,
&& (STRNCMP(cmd, "substitute", p - cmd) == 0
|| STRNCMP(cmd, "smagic", p - cmd) == 0
|| STRNCMP(cmd, "snomagic", MAX(p - cmd, 3)) == 0
+ || STRNCMP(cmd, "sort", p - cmd) == 0
|| STRNCMP(cmd, "global", p - cmd) == 0
|| STRNCMP(cmd, "vglobal", p - cmd) == 0))
{
@@ -331,6 +332,16 @@ do_incsearch_highlighting(int firstc, incsearch_state_T *is_state,
if (*skipwhite(p) == NUL)
return FALSE;
}
+
+ // For ":sort" skip over flags.
+ if (cmd[0] == 's' && cmd[1] == 'o')
+ {
+ while (ASCII_ISALPHA(*(p = skipwhite(p))))
+ ++p;
+ if (*p == NUL)
+ return FALSE;
+ }
+
p = skipwhite(p);
delim = *p++;
end = skip_regexp(p, delim, p_magic, NULL);
@@ -359,7 +370,7 @@ do_incsearch_highlighting(int firstc, incsearch_state_T *is_state,
search_last_line = ea.line2;
}
}
- else if (*cmd == 's')
+ else if (cmd[0] == 's' && cmd[1] != 'o')
{
// :s defaults to the current line
search_first_line = curwin->w_cursor.lnum;