From 94b74937d8f6a8680386388b8c34e0167fc06ebd Mon Sep 17 00:00:00 2001 From: thankyouverycool <66646555+thankyouverycool@users.noreply.github.com> Date: Tue, 22 Feb 2022 15:00:56 -0500 Subject: [PATCH] LibGUI+LibSyntax: Stringify Highlighter::Language This patch adds a Highlighter::Language -> string helper and a callback for Highlighter changes. --- Userland/Libraries/LibGUI/TextEditor.cpp | 2 ++ Userland/Libraries/LibGUI/TextEditor.h | 1 + Userland/Libraries/LibSyntax/Highlighter.cpp | 26 ++++++++++++++++++++ Userland/Libraries/LibSyntax/Highlighter.h | 1 + 4 files changed, 30 insertions(+) diff --git a/Userland/Libraries/LibGUI/TextEditor.cpp b/Userland/Libraries/LibGUI/TextEditor.cpp index b1ad773e62..4e23c8cc9f 100644 --- a/Userland/Libraries/LibGUI/TextEditor.cpp +++ b/Userland/Libraries/LibGUI/TextEditor.cpp @@ -1934,6 +1934,8 @@ void TextEditor::set_syntax_highlighter(OwnPtr highlighter) m_needs_rehighlight = true; } else document().set_spans({}); + if (on_highlighter_change) + on_highlighter_change(); } AutocompleteProvider const* TextEditor::autocomplete_provider() const diff --git a/Userland/Libraries/LibGUI/TextEditor.h b/Userland/Libraries/LibGUI/TextEditor.h index ba3e46a97e..dd64808930 100644 --- a/Userland/Libraries/LibGUI/TextEditor.h +++ b/Userland/Libraries/LibGUI/TextEditor.h @@ -107,6 +107,7 @@ public: Function on_selection_change; Function on_focusin; Function on_focusout; + Function on_highlighter_change; void set_text(StringView, AllowCallback = AllowCallback::Yes); void scroll_cursor_into_view(); diff --git a/Userland/Libraries/LibSyntax/Highlighter.cpp b/Userland/Libraries/LibSyntax/Highlighter.cpp index f93938f5ab..0b01d10ff9 100644 --- a/Userland/Libraries/LibSyntax/Highlighter.cpp +++ b/Userland/Libraries/LibSyntax/Highlighter.cpp @@ -142,4 +142,30 @@ void Highlighter::register_nested_token_pairs(Vector pairs) m_nested_token_pairs.set(pair); } +StringView Highlighter::language_string(Language language) const +{ + switch (language) { + case Language::Cpp: + return "C++"sv; + case Language::CSS: + return "CSS"sv; + case Language::GitCommit: + return "Git"sv; + case Language::GML: + return "GML"sv; + case Language::HTML: + return "HTML"sv; + case Language::INI: + return "INI"sv; + case Language::JavaScript: + return "JavaScript"sv; + case Language::Shell: + return "Shell"sv; + case Language::SQL: + return "SQL"sv; + default: + VERIFY_NOT_REACHED(); + } +} + } diff --git a/Userland/Libraries/LibSyntax/Highlighter.h b/Userland/Libraries/LibSyntax/Highlighter.h index 5351b462bc..c18fd54788 100644 --- a/Userland/Libraries/LibSyntax/Highlighter.h +++ b/Userland/Libraries/LibSyntax/Highlighter.h @@ -40,6 +40,7 @@ public: virtual ~Highlighter(); virtual Language language() const = 0; + StringView language_string(Language) const; virtual void rehighlight(const Palette&) = 0; virtual void highlight_matching_token_pair();