diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-04-28 23:58:31 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-28 23:58:31 +0800 |
commit | 4720f4379ac79c6b8f88e3dce9f3c910b0f3aee2 (patch) | |
tree | 041691af3c586bfc94eceff12b066035a3705cfb | |
parent | 233b858f2a2f3b57d07675e2de45736da36709e8 (diff) | |
parent | dfb2808d1a318bc7c328330a2c6e77201165204f (diff) | |
download | rneovim-4720f4379ac79c6b8f88e3dce9f3c910b0f3aee2.tar.gz rneovim-4720f4379ac79c6b8f88e3dce9f3c910b0f3aee2.tar.bz2 rneovim-4720f4379ac79c6b8f88e3dce9f3c910b0f3aee2.zip |
Merge pull request #23377 from zeertzjq/vim-9.0.1336
vim-patch:9.0.{1336,1372}
-rw-r--r-- | src/nvim/normal.c | 4 | ||||
-rw-r--r-- | src/nvim/option_defs.h | 5 | ||||
-rw-r--r-- | test/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 index da693371f3..5a5286905f 100644 --- 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 index c2d62d772b..40e77550aa 100644 --- 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 index 769aa1c35f..be794cb845 100644 --- 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') |