diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2013-12-16 23:24:08 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2013-12-16 23:24:08 +0000 |
| commit | d1ac813f61e4f9e78077c43f8bf5bbda9dcef55f (patch) | |
| tree | 0b34f833a824d58e6b22ccb271328631506ad564 /src/window.cc | |
| parent | ae75594d252651c4557b621573c2481bee40a137 (diff) | |
Pass a Context rather than a Window to highlighters
Diffstat (limited to 'src/window.cc')
| -rw-r--r-- | src/window.cc | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/window.cc b/src/window.cc index ef3e303d..b7e4b0c8 100644 --- a/src/window.cc +++ b/src/window.cc @@ -13,9 +13,9 @@ namespace Kakoune { // Implementation in highlighters.cc -void highlight_selections(const Window& window, DisplayBuffer& display_buffer); -void expand_tabulations(const Window& window, DisplayBuffer& display_buffer); -void expand_unprintable(const Window& window, DisplayBuffer& display_buffer); +void highlight_selections(const Context& context, DisplayBuffer& display_buffer); +void expand_tabulations(const Context& context, DisplayBuffer& display_buffer); +void expand_unprintable(const Context& context, DisplayBuffer& display_buffer); Window::Window(Buffer& buffer) : Editor(buffer), @@ -63,9 +63,10 @@ void Window::scroll(CharCount offset) m_position.column = std::max(0_char, m_position.column + offset); } -void Window::update_display_buffer() +void Window::update_display_buffer(const Context& context) { - scroll_to_keep_cursor_visible_ifn(); + kak_assert(&buffer() == &context.buffer()); + scroll_to_keep_selection_visible_ifn(context.selections().main()); DisplayBuffer::LineList& lines = m_display_buffer.lines(); lines.clear(); @@ -79,8 +80,8 @@ void Window::update_display_buffer() } m_display_buffer.compute_range(); - m_highlighters(*this, m_display_buffer); - m_builtin_highlighters(*this, m_display_buffer); + m_highlighters(context, m_display_buffer); + m_builtin_highlighters(context, m_display_buffer); // cut the start of the line before m_position.column for (auto& line : lines) @@ -142,10 +143,10 @@ static CharCount adapt_view_pos(const DisplayBuffer& display_buffer, return view_pos; } -void Window::scroll_to_keep_cursor_visible_ifn() +void Window::scroll_to_keep_selection_visible_ifn(const Range& selection) { - const auto& first = selections().main().first(); - const auto& last = selections().main().last(); + const auto& first = selection.first(); + const auto& last = selection.last(); const LineCount offset = std::min<LineCount>(options()["scrolloff"].get<int>(), (m_dimensions.line - 1) / 2); @@ -243,6 +244,8 @@ BufferCoord Window::offset_coord(BufferCoord coord, LineCount offset) lines.emplace_back(AtomList{ {buffer(), coord.line, coord.line+1} }); lines.emplace_back(AtomList{ {buffer(), line, line+1} }); display_buffer.compute_range(); + + Context context(*this); m_highlighters(*this, display_buffer); m_builtin_highlighters(*this, display_buffer); |
