diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2015-11-26 23:02:59 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2015-11-26 23:02:59 +0000 |
| commit | 0b57103c7233dca418d322391f8147127ccc8361 (patch) | |
| tree | 17dfcef4f305a39f561405f42180edc019e15104 /src | |
| parent | de72c7d5d33a5c1b849ff7f1e68e61ec9776a289 (diff) | |
Remind user hooks disable when replaying last insert
Fixes #495
Diffstat (limited to 'src')
| -rw-r--r-- | src/input_handler.cc | 3 | ||||
| -rw-r--r-- | src/input_handler.hh | 4 |
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; |
