summaryrefslogtreecommitdiff
path: root/src/window.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2023-06-12 14:38:31 +1000
committerMaxime Coste <mawww@kakoune.org>2023-06-12 16:26:22 +1000
commitaf66a95ef882447ca7bdc2149a8dfde50035301e (patch)
treeeae2a373b6102aca954b5fb0a8b3d7d2b2a223f1 /src/window.cc
parent5a867ebdd1dac274da185f4a4630b8480181cb9b (diff)
Trim display lines before the colorize pass
Colorizing long lines can be costly, remove all the invisible atoms earlier. Also optimize ForwardHighlighterApplier further by trimming empty lines.
Diffstat (limited to 'src/window.cc')
-rw-r--r--src/window.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/window.cc b/src/window.cc
index 9aa3ea73..7926183f 100644
--- a/src/window.cc
+++ b/src/window.cc
@@ -155,12 +155,14 @@ const DisplayBuffer& Window::update_display_buffer(const Context& context)
m_display_buffer.compute_range();
const BufferRange range{{0,0}, buffer().end_coord()};
- for (auto pass : { HighlightPass::Wrap, HighlightPass::Move, HighlightPass::Colorize })
- m_builtin_highlighters.highlight({context, setup, pass, {}}, m_display_buffer, range);
+ m_builtin_highlighters.highlight({context, setup, HighlightPass::Wrap, {}}, m_display_buffer, range);
+ m_builtin_highlighters.highlight({context, setup, HighlightPass::Move, {}}, m_display_buffer, range);
for (auto& line : m_display_buffer.lines())
line.trim_from(setup.widget_columns, setup.first_column, m_dimensions.column);
+ m_builtin_highlighters.highlight({context, setup, HighlightPass::Colorize, {}}, m_display_buffer, range);
+
m_display_buffer.optimize();
set_position({setup.first_line, setup.first_column});