diff --git a/Userland/Libraries/LibWeb/HTML/SyntaxHighlighter/SyntaxHighlighter.cpp b/Userland/Libraries/LibWeb/HTML/SyntaxHighlighter/SyntaxHighlighter.cpp
index feb247cde8..7b94272def 100644
--- a/Userland/Libraries/LibWeb/HTML/SyntaxHighlighter/SyntaxHighlighter.cpp
+++ b/Userland/Libraries/LibWeb/HTML/SyntaxHighlighter/SyntaxHighlighter.cpp
@@ -41,6 +41,8 @@ void SyntaxHighlighter::rehighlight(Palette const& palette)
auto text = m_client->get_text();
clear_nested_token_pairs();
+ // FIXME: Add folding regions for start and end tags.
+ Vector folding_regions;
Vector spans;
auto highlight = [&](auto start_line, auto start_column, auto end_line, auto end_column, Gfx::TextAttributes attributes, AugmentedTokenKind kind) {
if (start_line > end_line || (start_line == end_line && start_column >= end_column)) {
@@ -101,6 +103,7 @@ void SyntaxHighlighter::rehighlight(Palette const& palette)
}
spans.extend(proxy_client.corrected_spans());
+ folding_regions.extend(proxy_client.corrected_folding_regions());
substring_builder.clear();
} else if (state == State::CSS) {
Syntax::ProxyHighlighterClient proxy_client {
@@ -118,6 +121,7 @@ void SyntaxHighlighter::rehighlight(Palette const& palette)
}
spans.extend(proxy_client.corrected_spans());
+ folding_regions.extend(proxy_client.corrected_folding_regions());
substring_builder.clear();
}
state = State::HTML;
@@ -138,6 +142,11 @@ void SyntaxHighlighter::rehighlight(Palette const& palette)
token->end_position().column,
{ palette.syntax_comment(), {} },
AugmentedTokenKind::Comment);
+
+ GUI::TextDocumentFoldingRegion region;
+ region.range.set_start({ token->start_position().line, token->start_position().column + comment_prefix()->length() });
+ region.range.set_end({ token->end_position().line, token->end_position().column - comment_suffix()->length() });
+ folding_regions.append(move(region));
} else if (token->is_start_tag() || token->is_end_tag()) {
highlight(
token->start_position().line,
@@ -183,6 +192,7 @@ void SyntaxHighlighter::rehighlight(Palette const& palette)
}
m_client->do_set_spans(move(spans));
+ m_client->do_set_folding_regions(move(folding_regions));
m_has_brace_buddies = false;
highlight_matching_token_pair();
m_client->do_update();