diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2014-11-08 03:23:47 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2014-11-09 20:32:24 +0100 |
commit | a475ea8eacfcce8a3f0112f121400e37fffc0934 (patch) | |
tree | 063bff5a8dcc48deadf28cbb939b1e204cb70ecd /src/search.cpp | |
parent | 1c3b2a9cf7bc298941f1165885fb1a3c76105878 (diff) | |
download | sciteco-a475ea8eacfcce8a3f0112f121400e37fffc0934.tar.gz |
current_doc_must_undo(): check for undo-necessity when operating on the current document
if the current document is a local q-register from a macro call,
we must not generate undo tokens, since the local documents
are discarded on macro termination.
Diffstat (limited to 'src/search.cpp')
-rw-r--r-- | src/search.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/search.cpp b/src/search.cpp index 5232785..7f8b04e 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -417,9 +417,10 @@ StateSearch::process(const gchar *str, gint new_chars) gint count = parameters.count; - undo.push_msg(SCI_SETSEL, - interface.ssm(SCI_GETANCHOR), - interface.ssm(SCI_GETCURRENTPOS)); + if (current_doc_must_undo()) + undo.push_msg(SCI_SETSEL, + interface.ssm(SCI_GETANCHOR), + interface.ssm(SCI_GETCURRENTPOS)); search_reg->undo_set_integer(); search_reg->set_integer(FAILURE); @@ -505,7 +506,8 @@ StateSearch::done(const gchar *str) if (*str) { /* workaround: preserve selection (also on rubout) */ gint anchor = interface.ssm(SCI_GETANCHOR); - undo.push_msg(SCI_SETANCHOR, anchor); + if (current_doc_must_undo()) + undo.push_msg(SCI_SETANCHOR, anchor); search_reg->undo_set_string(); search_reg->set_string(str); @@ -655,7 +657,8 @@ StateSearchKill::done(const gchar *str) /* kill forwards */ gint anchor = interface.ssm(SCI_GETANCHOR); - undo.push_msg(SCI_GOTOPOS, dot); + if (current_doc_must_undo()) + undo.push_msg(SCI_GOTOPOS, dot); interface.ssm(SCI_GOTOPOS, anchor); interface.ssm(SCI_DELETERANGE, @@ -667,7 +670,8 @@ StateSearchKill::done(const gchar *str) interface.ssm(SCI_ENDUNDOACTION); ring.dirtify(); - undo.push_msg(SCI_UNDO); + if (current_doc_must_undo()) + undo.push_msg(SCI_UNDO); return &States::start; } @@ -700,7 +704,8 @@ StateSearchDelete::done(const gchar *str) interface.ssm(SCI_ENDUNDOACTION); ring.dirtify(); - undo.push_msg(SCI_UNDO); + if (current_doc_must_undo()) + undo.push_msg(SCI_UNDO); } return &States::start; |