summaryrefslogtreecommitdiff
path: root/src/normal.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2019-06-12 22:58:01 +1000
committerMaxime Coste <mawww@kakoune.org>2019-06-23 12:05:09 +1000
commit469818c6f920ea710a2af62a79c70270ad95cdf2 (patch)
treef9c313367b180e0b5e78789fdf0234798e5d587b /src/normal.cc
parente613292568e9f66628135b5a1f468cc9ae85106d (diff)
Tweak history restoring behaviour
Diffstat (limited to 'src/normal.cc')
-rw-r--r--src/normal.cc32
1 files changed, 12 insertions, 20 deletions
diff --git a/src/normal.cc b/src/normal.cc
index 51308e7c..0c739f61 100644
--- a/src/normal.cc
+++ b/src/normal.cc
@@ -884,11 +884,9 @@ void search(Context& context, NormalParams params)
regex_prompt<regex_mode>(context, prompt.str(), reg,
[reg, count, saved_reg = RegisterManager::instance()[reg].save(context)]
(const Regex& regex, PromptEvent event, Context& context) {
+ RegisterManager::instance()[reg].restore(context, saved_reg);
if (event == PromptEvent::Abort)
- {
- RegisterManager::instance()[reg].restore(context, saved_reg);
return;
- }
RegisterManager::instance()[reg].set(context, regex.str());
if (regex.empty() or regex.str().empty())
@@ -970,13 +968,11 @@ void select_regex(Context& context, NormalParams params)
regex_prompt(context, std::move(prompt), reg,
[reg, capture, saved_reg = RegisterManager::instance()[reg].save(context)]
(Regex ex, PromptEvent event, Context& context) {
- if (event == PromptEvent::Abort)
- {
- RegisterManager::instance()[reg].restore(context, saved_reg);
- return;
- }
-
- RegisterManager::instance()[reg].set(context, ex.str());
+ RegisterManager::instance()[reg].restore(context, saved_reg);
+ if (event == PromptEvent::Abort)
+ return;
+ if (not context.history_disabled())
+ RegisterManager::instance()[reg].set(context, ex.str());
auto& selections = context.selections();
auto& buffer = selections.buffer();
@@ -994,13 +990,11 @@ void split_regex(Context& context, NormalParams params)
regex_prompt(context, std::move(prompt), reg,
[reg, capture, saved_reg = RegisterManager::instance()[reg].save(context)]
(Regex ex, PromptEvent event, Context& context) {
- if (event == PromptEvent::Abort)
- {
- RegisterManager::instance()[reg].restore(context, saved_reg);
- return;
- }
-
- RegisterManager::instance()[reg].set(context, ex.str());
+ RegisterManager::instance()[reg].restore(context, saved_reg);
+ if (event == PromptEvent::Abort)
+ return;
+ if (not context.history_disabled())
+ RegisterManager::instance()[reg].set(context, ex.str());
auto& selections = context.selections();
auto& buffer = selections.buffer();
@@ -1094,11 +1088,9 @@ void keep(Context& context, NormalParams params)
regex_prompt(context, prompt.str(), reg,
[reg, saved_reg = RegisterManager::instance()[reg].save(context)]
(const Regex& regex, PromptEvent event, Context& context) {
+ RegisterManager::instance()[reg].restore(context, saved_reg);
if (event == PromptEvent::Abort)
- {
- RegisterManager::instance()[reg].restore(context, saved_reg);
return;
- }
if (not context.history_disabled())
RegisterManager::instance()[reg].set(context, regex.str());