summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvert Van Petegem <evert.van.petegem@gmail.com>2014-03-24 22:11:19 +0100
committerEvert Van Petegem <evert.van.petegem@gmail.com>2014-03-24 22:11:19 +0100
commit369728cd7fbcda19babe64e1b0d0e7524a4705fa (patch)
treee0df58abd2ee7754fad548328407b4badb7e43d6 /src
parent0ea7fadac7b2fe8cd98cfb819c31ba619fd445f3 (diff)
Push aborted commands to history
Diffstat (limited to 'src')
-rw-r--r--src/input_handler.cc21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/input_handler.cc b/src/input_handler.cc
index f275af23..2613215f 100644
--- a/src/input_handler.cc
+++ b/src/input_handler.cc
@@ -337,6 +337,18 @@ String common_prefix(memoryview<String> strings)
return res;
}
+void history_push(std::vector<String>& history, const String& entry)
+{
+ if(entry.empty())
+ {
+ return;
+ }
+ std::vector<String>::iterator it;
+ while ((it = find(history, entry)) != history.end())
+ history.erase(it);
+ history.push_back(entry);
+}
+
class Prompt : public InputMode
{
public:
@@ -365,13 +377,7 @@ public:
}
else if (key == ctrl('m')) // enter
{
- if (not line.empty())
- {
- std::vector<String>::iterator it;
- while ((it = find(history, line)) != history.end())
- history.erase(it);
- history.push_back(line);
- }
+ history_push(history, line);
context().print_status(DisplayLine{});
if (context().has_ui())
context().ui().menu_hide();
@@ -383,6 +389,7 @@ public:
}
else if (key == Key::Escape or key == ctrl('c'))
{
+ history_push(history, line);
context().print_status(DisplayLine{});
if (context().has_ui())
context().ui().menu_hide();