aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/search.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/search.c b/src/search.c
index fbf15ac..bdf70b0 100644
--- a/src/search.c
+++ b/src/search.c
@@ -916,12 +916,12 @@ teco_state_search_kill_done(teco_machine_main_t *ctx, const teco_string_t *str,
if (teco_is_failure(search_state))
return &teco_state_start;
- gint dot = teco_interface_ssm(SCI_GETCURRENTPOS, 0, 0);
+ sptr_t dot = teco_interface_ssm(SCI_GETCURRENTPOS, 0, 0);
teco_interface_ssm(SCI_BEGINUNDOACTION, 0, 0);
if (teco_search_parameters.dot < dot) {
/* kill forwards */
- gint anchor = teco_interface_ssm(SCI_GETANCHOR, 0, 0);
+ sptr_t anchor = teco_interface_ssm(SCI_GETANCHOR, 0, 0);
if (teco_current_doc_must_undo())
undo__teco_interface_ssm(SCI_GOTOPOS, dot, 0);
@@ -929,18 +929,23 @@ teco_state_search_kill_done(teco_machine_main_t *ctx, const teco_string_t *str,
teco_interface_ssm(SCI_DELETERANGE, teco_search_parameters.dot,
anchor - teco_search_parameters.dot);
+
+ /* NOTE: An undo action is not always created. */
+ if (teco_current_doc_must_undo() &&
+ teco_search_parameters.dot != anchor)
+ undo__teco_interface_ssm(SCI_UNDO, 0, 0);
} else {
/* kill backwards */
teco_interface_ssm(SCI_DELETERANGE, dot, teco_search_parameters.dot - dot);
+
+ /* NOTE: An undo action is not always created. */
+ if (teco_current_doc_must_undo() &&
+ teco_search_parameters.dot != dot)
+ undo__teco_interface_ssm(SCI_UNDO, 0, 0);
}
teco_interface_ssm(SCI_ENDUNDOACTION, 0, 0);
teco_ring_dirtify();
- /* NOTE: An undo action is not always created. */
- if (teco_current_doc_must_undo() &&
- teco_search_parameters.dot != dot)
- undo__teco_interface_ssm(SCI_UNDO, 0, 0);
-
return &teco_state_start;
}