aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/normal.c4
-rw-r--r--src/nvim/option_defs.h5
2 files changed, 7 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.