diff options
| author | Evert Van Petegem <evert.van.petegem@gmail.com> | 2014-03-24 22:11:19 +0100 |
|---|---|---|
| committer | Evert Van Petegem <evert.van.petegem@gmail.com> | 2014-03-24 22:11:19 +0100 |
| commit | 369728cd7fbcda19babe64e1b0d0e7524a4705fa (patch) | |
| tree | e0df58abd2ee7754fad548328407b4badb7e43d6 /src/input_handler.cc | |
| parent | 0ea7fadac7b2fe8cd98cfb819c31ba619fd445f3 (diff) | |
Push aborted commands to history
Diffstat (limited to 'src/input_handler.cc')
| -rw-r--r-- | src/input_handler.cc | 21 |
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(); |
