From 726bec4670b612a12682bb7db22862edc127220b Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Sat, 28 Aug 2021 13:53:01 +1000 Subject: Support info markup spanning multiple lines Preserve the active face accross lines Fixes #4313 --- src/display_buffer.cc | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/display_buffer.cc') diff --git a/src/display_buffer.cc b/src/display_buffer.cc index e7caed04..d98108cd 100644 --- a/src/display_buffer.cc +++ b/src/display_buffer.cc @@ -257,13 +257,12 @@ void DisplayBuffer::optimize() line.optimize(); } -DisplayLine parse_display_line(StringView line, const FaceRegistry& faces, const HashMap& builtins) +DisplayLine parse_display_line(StringView line, Face& face, const FaceRegistry& faces, const HashMap& builtins) { DisplayLine res; bool was_antislash = false; auto pos = line.begin(); String content; - Face face; for (auto it = line.begin(), end = line.end(); it != end; ++it) { const char c = *it; @@ -332,4 +331,19 @@ DisplayLine parse_display_line(StringView line, const FaceRegistry& faces, const return res; } +DisplayLine parse_display_line(StringView line, const FaceRegistry& faces, const HashMap& builtins) +{ + Face face{}; + return parse_display_line(line, face, faces, builtins); +} + +DisplayLineList parse_display_line_list(StringView content, const FaceRegistry& faces, const HashMap& builtins) +{ + return content | split('\n') + | transform([&, face=Face{}](StringView s) mutable { + return parse_display_line(s, face, faces, builtins); + }) + | gather(); +} + } -- cgit v1.2.3