diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-01-24 19:08:57 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-01-24 19:08:57 +0000 |
| commit | 1fd8ec8bfd80e190f360fb55d92c7d6f1426c245 (patch) | |
| tree | bda4e17034b116948a9c2b5a04e6e7f51de2fe91 /src | |
| parent | a62d56064fe6b1547882e9ce720d71afa72ad76e (diff) | |
support Ctrl-R <reg> when inserting to insert a register
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cc | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/main.cc b/src/main.cc index 8383d68e..98d716bf 100644 --- a/src/main.cc +++ b/src/main.cc @@ -324,7 +324,7 @@ struct InsertSequence InsertSequence last_insert_sequence; -bool insert_char(IncrementalInserter& inserter, const Key& key) +bool insert_char(Window& window, IncrementalInserter& inserter, const Key& key) { switch (key.modifiers) { @@ -353,6 +353,23 @@ bool insert_char(IncrementalInserter& inserter, const Key& key) inserter.insert_capture(next_key.key - '0'); break; } + case 'r': + { + Key next_key = get_key(); + last_insert_sequence.keys.push_back(next_key); + if (next_key.modifiers == Key::Modifiers::None) + { + switch (next_key.key) + { + case '%': + inserter.insert(window.buffer().name()); + break; + default: + inserter.insert(RegisterManager::instance()[next_key.key]); + } + } + break; + } case 'd': inserter.move_cursor({0, -1}); break; @@ -378,7 +395,7 @@ void do_insert(Window& window, IncrementalInserter::Mode mode) { Key key = get_key(); - if (not insert_char(inserter, key)) + if (not insert_char(window, inserter, key)) return; last_insert_sequence.keys.push_back(key); @@ -391,7 +408,7 @@ void do_repeat_insert(Window& window, int count) IncrementalInserter inserter(window, last_insert_sequence.mode); for (const Key& key : last_insert_sequence.keys) { - insert_char(inserter, key); + insert_char(window, inserter, key); } draw_window(window); } |
