aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/optionstr.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-02-05 11:08:52 +0800
committerGitHub <noreply@github.com>2024-02-05 11:08:52 +0800
commit18e62c1bdbbb6b93bfb74d974bc511fc4c03748e (patch)
tree4643f88df3693b8eb5fe9ecd9e40a4b78fc435ec /src/nvim/optionstr.c
parent1ed6b9cd2c04bf015b7e053ee5ea778634141b35 (diff)
downloadrneovim-18e62c1bdbbb6b93bfb74d974bc511fc4c03748e.tar.gz
rneovim-18e62c1bdbbb6b93bfb74d974bc511fc4c03748e.tar.bz2
rneovim-18e62c1bdbbb6b93bfb74d974bc511fc4c03748e.zip
perf(redraw): only redraw Visual area when cursor has moved (#27340)
Diffstat (limited to 'src/nvim/optionstr.c')
-rw-r--r--src/nvim/optionstr.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/nvim/optionstr.c b/src/nvim/optionstr.c
index a4e69dd6b6..00e024e735 100644
--- a/src/nvim/optionstr.c
+++ b/src/nvim/optionstr.c
@@ -1541,7 +1541,15 @@ int expand_set_formatoptions(optexpand_T *args, int *numMatches, char ***matches
/// The 'guicursor' option is changed.
const char *did_set_guicursor(optset_T *args FUNC_ATTR_UNUSED)
{
- return parse_shape_opt(SHAPE_CURSOR);
+ const char *errmsg = parse_shape_opt(SHAPE_CURSOR);
+ if (errmsg != NULL) {
+ return errmsg;
+ }
+ if (VIsual_active) {
+ // In Visual mode cursor may be drawn differently.
+ redrawWinline(curwin, curwin->w_cursor.lnum);
+ }
+ return NULL;
}
/// The 'helpfile' option is changed.
@@ -1958,6 +1966,10 @@ const char *did_set_selection(optset_T *args FUNC_ATTR_UNUSED)
if (*p_sel == NUL || check_opt_strings(p_sel, p_sel_values, false) != OK) {
return e_invarg;
}
+ if (VIsual_active) {
+ // In Visual mode cursor may be drawn differently.
+ redrawWinline(curwin, curwin->w_cursor.lnum);
+ }
return NULL;
}