summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2017-06-25 07:25:31 +0100
committerMaxime Coste <mawww@kakoune.org>2017-06-25 07:25:31 +0100
commit8a2ece78b724564fc972c349b6fe4f9dcf0b15d5 (patch)
tree85cd0043c728fefd4a27657d3dda370aa03a2633 /src
parent718adc9c885339cc7c6501b51a79800f21cab492 (diff)
Remember count when repeating last insert
Fixes #1465
Diffstat (limited to 'src')
-rw-r--r--src/input_handler.cc3
-rw-r--r--src/input_handler.hh4
2 files changed, 4 insertions, 3 deletions
diff --git a/src/input_handler.cc b/src/input_handler.cc
index 1ac60905..217f3a5c 100644
--- a/src/input_handler.cc
+++ b/src/input_handler.cc
@@ -1057,6 +1057,7 @@ public:
last_insert().mode = mode;
last_insert().keys.clear();
last_insert().disable_hooks = context().hooks_disabled();
+ last_insert().count = count;
context().hooks().run_hook("InsertBegin", "", context());
prepare(mode, count);
@@ -1435,7 +1436,7 @@ void InputHandler::repeat_last_insert()
m_last_insert.disable_hooks);
// context.last_insert will be refilled by the new Insert
// this is very inefficient.
- push_mode(new InputModes::Insert(*this, m_last_insert.mode, 1));
+ push_mode(new InputModes::Insert(*this, m_last_insert.mode, m_last_insert.count));
for (auto& key : keys)
current_mode().handle_key(key);
kak_assert(dynamic_cast<InputModes::Normal*>(&current_mode()) != nullptr);
diff --git a/src/input_handler.hh b/src/input_handler.hh
index 17c655d9..4287f172 100644
--- a/src/input_handler.hh
+++ b/src/input_handler.hh
@@ -116,8 +116,8 @@ private:
void push_mode(InputMode* new_mode);
void pop_mode(InputMode* current_mode);
- struct Insertion{ InsertMode mode; Vector<Key> keys; bool disable_hooks; };
- Insertion m_last_insert = { InsertMode::Insert, {}, false };
+ struct Insertion{ InsertMode mode; Vector<Key> keys; bool disable_hooks; int count; };
+ Insertion m_last_insert = { InsertMode::Insert, {}, false, 1 };
char m_recording_reg = 0;
String m_recorded_keys;