neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 4720f4379ac79c6b8f88e3dce9f3c910b0f3aee2
parent 233b858f2a2f3b57d07675e2de45736da36709e8
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri, 28 Apr 2023 23:58:31 +0800

Merge pull request #23377 from zeertzjq/vim-9.0.1336

vim-patch:9.0.{1336,1372}
Diffstat:
Msrc/nvim/normal.c | 4++--
Msrc/nvim/option_defs.h | 5+++++
Mtest/old/testdir/test_options.vim | 2++
3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/nvim/normal.c b/src/nvim/normal.c @@ -956,7 +956,7 @@ normal_end: set_reg_var(get_default_register_name()); } - s->c = finish_op; + const bool prev_finish_op = finish_op; if (s->oa.op_type == OP_NOP) { // Reset finish_op, in case it was set finish_op = false; @@ -964,7 +964,7 @@ normal_end: } // Redraw the cursor with another shape, if we were in Operator-pending // mode or did a replace command. - if (s->c || s->ca.cmdchar == 'r' + if (prev_finish_op || s->ca.cmdchar == 'r' || (s->ca.cmdchar == 'g' && s->ca.nchar == 'r')) { ui_cursor_shape(); // may show different cursor shape } diff --git a/src/nvim/option_defs.h b/src/nvim/option_defs.h @@ -1026,6 +1026,11 @@ typedef struct { void *os_buf; } optset_T; +/// Type for the callback function that is invoked after an option value is +/// changed to validate and apply the new value. +/// +/// Returns NULL if the option value is valid and successfully applied. +/// Otherwise returns an error message. typedef const char *(*opt_did_set_cb_T)(optset_T *args); /// Stores an identifier of a script or channel that last set an option. diff --git a/test/old/testdir/test_options.vim b/test/old/testdir/test_options.vim @@ -1482,6 +1482,8 @@ func Test_string_option_revert_on_failure() endif if exists('+toolbar') call add(optlist, ['toolbar', 'text', 'a123']) + endif + if exists('+toolbariconsize') call add(optlist, ['toolbariconsize', 'medium', 'a123']) endif if exists('+ttymouse') && !has('gui')