diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2014-05-13 20:09:37 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2014-05-13 20:09:37 +0100 |
| commit | a06094b00e92d34e9f0be6abf80e5f4ce64998b3 (patch) | |
| tree | ba61ee3ac38a8a33ea654eb21113e7172af433c5 /src/context.cc | |
| parent | ea3e92aa5e68e73fa95196332b739891bbf3f24f (diff) | |
Use simple SelectionList for the Context::JumpList
Diffstat (limited to 'src/context.cc')
| -rw-r--r-- | src/context.cc | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/context.cc b/src/context.cc index dac65284..9dcc87e4 100644 --- a/src/context.cc +++ b/src/context.cc @@ -103,8 +103,7 @@ void Context::push_jump() if (m_current_jump != m_jump_list.end()) { auto begin = m_current_jump; - if (&buffer() != &begin->buffer() or - (const SelectionList&)(*begin) != jump) + if (&buffer() != &begin->buffer() or *begin != jump) ++begin; m_jump_list.erase(begin, m_jump_list.end()); } @@ -114,21 +113,27 @@ void Context::push_jump() m_current_jump = m_jump_list.end(); } -const DynamicSelectionList& Context::jump_forward() +const SelectionList& Context::jump_forward() { if (m_current_jump != m_jump_list.end() and m_current_jump + 1 != m_jump_list.end()) - return *++m_current_jump; + { + SelectionList& res = *++m_current_jump; + res.update(); + return res; + } throw runtime_error("no next jump"); } -const DynamicSelectionList& Context::jump_backward() +const SelectionList& Context::jump_backward() { if (m_current_jump != m_jump_list.end() and *m_current_jump != selections()) { push_jump(); - return *--m_current_jump; + SelectionList& res = *--m_current_jump; + res.update(); + return res; } if (m_current_jump != m_jump_list.begin()) { @@ -137,7 +142,9 @@ const DynamicSelectionList& Context::jump_backward() push_jump(); --m_current_jump; } - return *--m_current_jump; + SelectionList& res = *--m_current_jump; + res.update(); + return res; } throw runtime_error("no previous jump"); } |
