summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2023-11-02 13:00:12 +1100
committerMaxime Coste <mawww@kakoune.org>2023-11-02 13:00:12 +1100
commita2c41593aabcf0dee8c91c08845d0fda5fd856c0 (patch)
treecff95099e08f274422c8a5e582f91ab4ae1ef952
parent8cc4de5bb376133311ab92338ec8decc5ea25ac2 (diff)
Fix partial regex text being pushed in history
-rw-r--r--src/normal.cc23
-rw-r--r--test/regression/0-intermediate-regex-saved-in-history/cmd1
-rw-r--r--test/regression/0-intermediate-regex-saved-in-history/in1
-rw-r--r--test/regression/0-intermediate-regex-saved-in-history/kak_selection1
-rw-r--r--test/regression/0-intermediate-regex-saved-in-history/script5
5 files changed, 19 insertions, 12 deletions
diff --git a/src/normal.cc b/src/normal.cc
index c93c4760..1ce53158 100644
--- a/src/normal.cc
+++ b/src/normal.cc
@@ -853,23 +853,22 @@ void regex_prompt(Context& context, String prompt, char reg, T func)
context.window().set_position(position);
context.input_handler().set_prompt_face(context.faces()["Prompt"]);
+ RegisterManager::instance()[reg].restore(context, saved_reg);
}
+
switch (event)
{
- case PromptEvent::Change:
- if (not incsearch or str.empty())
- return;
+ case PromptEvent::Abort: return;
+ case PromptEvent::Change:
+ if (incsearch and not str.empty())
RegisterManager::instance()[reg].set(context, str.str());
- func(Regex{str, direction_flags(mode)}, event, context);
- return;
- case PromptEvent::Abort:
- RegisterManager::instance()[reg].restore(context, saved_reg);
- return;
- case PromptEvent::Validate:
- context.push_jump();
- func(Regex{str.empty() ? default_regex : str, direction_flags(mode)}, event, context);
- return;
+ break;
+ case PromptEvent::Validate:
+ RegisterManager::instance()[reg].set(context, str.str());
+ context.push_jump();
+ break;
}
+ func(Regex{str.empty() ? default_regex : str, direction_flags(mode)}, event, context);
}
catch (regex_error& err)
{
diff --git a/test/regression/0-intermediate-regex-saved-in-history/cmd b/test/regression/0-intermediate-regex-saved-in-history/cmd
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/test/regression/0-intermediate-regex-saved-in-history/cmd
@@ -0,0 +1 @@
+
diff --git a/test/regression/0-intermediate-regex-saved-in-history/in b/test/regression/0-intermediate-regex-saved-in-history/in
new file mode 100644
index 00000000..d675fa44
--- /dev/null
+++ b/test/regression/0-intermediate-regex-saved-in-history/in
@@ -0,0 +1 @@
+foo bar
diff --git a/test/regression/0-intermediate-regex-saved-in-history/kak_selection b/test/regression/0-intermediate-regex-saved-in-history/kak_selection
new file mode 100644
index 00000000..257cc564
--- /dev/null
+++ b/test/regression/0-intermediate-regex-saved-in-history/kak_selection
@@ -0,0 +1 @@
+foo
diff --git a/test/regression/0-intermediate-regex-saved-in-history/script b/test/regression/0-intermediate-regex-saved-in-history/script
new file mode 100644
index 00000000..446f0ce1
--- /dev/null
+++ b/test/regression/0-intermediate-regex-saved-in-history/script
@@ -0,0 +1,5 @@
+ui_out -ignore 4
+ui_in '{ "jsonrpc": "2.0", "method": "keys", "params": [ "/foo<ret>/b" ] }'
+sleep 0.1
+ui_in '{ "jsonrpc": "2.0", "method": "keys", "params": [ "ar<ret>/<up><up><ret>" ] }'
+ui_out -ignore 1