summaryrefslogtreecommitdiff
path: root/src/context.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2014-05-13 20:09:37 +0100
committerMaxime Coste <frrrwww@gmail.com>2014-05-13 20:09:37 +0100
commita06094b00e92d34e9f0be6abf80e5f4ce64998b3 (patch)
treeba61ee3ac38a8a33ea654eb21113e7172af433c5 /src/context.cc
parentea3e92aa5e68e73fa95196332b739891bbf3f24f (diff)
Use simple SelectionList for the Context::JumpList
Diffstat (limited to 'src/context.cc')
-rw-r--r--src/context.cc21
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");
}