diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-02-05 11:08:52 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-05 11:08:52 +0800 |
commit | 18e62c1bdbbb6b93bfb74d974bc511fc4c03748e (patch) | |
tree | 4643f88df3693b8eb5fe9ecd9e40a4b78fc435ec /src/nvim/optionstr.c | |
parent | 1ed6b9cd2c04bf015b7e053ee5ea778634141b35 (diff) | |
download | rneovim-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.c | 14 |
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; } |