diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2014-04-07 23:39:12 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2014-04-07 23:47:50 +0100 |
| commit | 33de42610dc08dd7bfd65f49a70ec68a478dee2d (patch) | |
| tree | 82b0b94accd9dd30bfde6a0674adbbb260b0fbb2 /src | |
| parent | a387e7a4c61d3392bbb37190521c03e6676af3eb (diff) | |
Add g. command to go to the last buffer modification position
Diffstat (limited to 'src')
| -rw-r--r-- | src/buffer.cc | 7 | ||||
| -rw-r--r-- | src/buffer.hh | 2 | ||||
| -rw-r--r-- | src/normal.cc | 30 |
3 files changed, 29 insertions, 10 deletions
diff --git a/src/buffer.cc b/src/buffer.cc index 47c523d3..3114b9f5 100644 --- a/src/buffer.cc +++ b/src/buffer.cc @@ -715,4 +715,11 @@ void Buffer::run_hook_in_own_context(const String& hook_name, const String& para m_hooks.run_hook(hook_name, param, hook_handler.context()); } +BufferCoord Buffer::last_modification_coord() const +{ + if (m_history.empty()) + return {}; + return m_history.back().back().coord; +} + } diff --git a/src/buffer.hh b/src/buffer.hh index 234b2e54..36da3786 100644 --- a/src/buffer.hh +++ b/src/buffer.hh @@ -136,6 +136,8 @@ public: bool is_valid(BufferCoord c) const; bool is_end(BufferCoord c) const; + BufferCoord last_modification_coord() const; + BufferIterator begin() const; BufferIterator end() const; ByteCount byte_count() const; diff --git a/src/normal.cc b/src/normal.cc index b0794e8f..8b691190 100644 --- a/src/normal.cc +++ b/src/normal.cc @@ -315,18 +315,28 @@ void goto_commands(Context& context, int line) CommandManager::instance().execute("edit '" + path + "'", context); break; } + case '.': + { + context.push_jump(); + auto pos = buffer.last_modification_coord(); + if (buffer[pos.line].length() == pos.column + 1) + pos = BufferCoord{ pos.line+1, 0 }; + select_coord<mode>(buffer, pos, context.selections()); + break; + } } }, "goto", - "g,k: buffer top \n" - "l: line end \n" - "h: line begin \n" - "j: buffer bottom\n" - "e: buffer end \n" - "t: window top \n" - "b: window bottom\n" - "c: window center\n" - "a: last buffer \n" - "f: file \n"); + "g,k: buffer top \n" + "l: line end \n" + "h: line begin \n" + "j: buffer bottom \n" + "e: buffer end \n" + "t: window top \n" + "b: window bottom \n" + "c: window center \n" + "a: last buffer \n" + "f: file \n" + ".: last buffer change\n"); } } |
