summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2015-11-26 23:02:59 +0000
committerMaxime Coste <frrrwww@gmail.com>2015-11-26 23:02:59 +0000
commit0b57103c7233dca418d322391f8147127ccc8361 (patch)
tree17dfcef4f305a39f561405f42180edc019e15104 /src
parentde72c7d5d33a5c1b849ff7f1e68e61ec9776a289 (diff)
Remind user hooks disable when replaying last insert
Fixes #495
Diffstat (limited to 'src')
-rw-r--r--src/input_handler.cc3
-rw-r--r--src/input_handler.hh4
2 files changed, 5 insertions, 2 deletions
diff --git a/src/input_handler.cc b/src/input_handler.cc
index 348e23b7..bcccdb55 100644
--- a/src/input_handler.cc
+++ b/src/input_handler.cc
@@ -984,6 +984,7 @@ public:
last_insert().mode = mode;
last_insert().keys.clear();
+ last_insert().disable_hooks = m_disable_hooks;
context().hooks().run_hook("InsertBegin", "", context());
prepare(m_insert_mode);
}
@@ -1330,6 +1331,8 @@ void InputHandler::repeat_last_insert()
Vector<Key> keys;
swap(keys, m_last_insert.keys);
+ ScopedSetBool disable_hooks(context().user_hooks_disabled(),
+ 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));
diff --git a/src/input_handler.hh b/src/input_handler.hh
index 036633dc..c67c8399 100644
--- a/src/input_handler.hh
+++ b/src/input_handler.hh
@@ -94,8 +94,8 @@ private:
void push_mode(InputMode* new_mode);
std::unique_ptr<InputMode> pop_mode(InputMode* current_mode);
- struct Insertion{ InsertMode mode; Vector<Key> keys; };
- Insertion m_last_insert = {InsertMode::Insert, {}};
+ struct Insertion{ InsertMode mode; Vector<Key> keys; bool disable_hooks; };
+ Insertion m_last_insert = { InsertMode::Insert, {}, false };
char m_recording_reg = 0;
String m_recorded_keys;