diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2024-12-14 00:10:52 +0300 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2024-12-14 00:10:52 +0300 |
commit | 8c2cac3957600637a388e5ad5809f408030a51be (patch) | |
tree | b6d2efe524da929aa4797d739cf8a79423b672f8 | |
parent | 6dcb454e8dba0593b39752895addff84fea7516e (diff) | |
download | sciteco-8c2cac3957600637a388e5ad5809f408030a51be.tar.gz |
fixed ^Y after FK...$: take the deleted text into account
* I.e. you can now write FK...$^YD to delete up to AND the matched pattern.
-rw-r--r-- | src/search.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/search.c b/src/search.c index ba5203c..1945f5c 100644 --- a/src/search.c +++ b/src/search.c @@ -1075,18 +1075,24 @@ teco_state_search_kill_done(teco_machine_main_t *ctx, const teco_string_t *str, if (teco_search_parameters.dot < dot) { /* kill forwards */ sptr_t anchor = teco_interface_ssm(SCI_GETANCHOR, 0, 0); + gsize len = anchor - teco_search_parameters.dot; if (teco_current_doc_must_undo()) undo__teco_interface_ssm(SCI_GOTOPOS, dot, 0); teco_interface_ssm(SCI_GOTOPOS, anchor, 0); - teco_interface_ssm(SCI_DELETERANGE, teco_search_parameters.dot, - anchor - teco_search_parameters.dot); + teco_interface_ssm(SCI_DELETERANGE, teco_search_parameters.dot, len); /* 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); + + /* fix up ranges (^Y) */ + for (guint i = 0; i < teco_ranges_count; i++) { + teco_ranges[i].from -= len; + teco_ranges[i].to -= len; + } } else { /* kill backwards */ teco_interface_ssm(SCI_DELETERANGE, dot, teco_search_parameters.dot - dot); |