diff options
| author | Maxime Coste <mawww@kakoune.org> | 2023-11-02 13:00:12 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2023-11-02 13:00:12 +1100 |
| commit | a2c41593aabcf0dee8c91c08845d0fda5fd856c0 (patch) | |
| tree | cff95099e08f274422c8a5e582f91ab4ae1ef952 | |
| parent | 8cc4de5bb376133311ab92338ec8decc5ea25ac2 (diff) | |
Fix partial regex text being pushed in history
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 |
