From 89592601b6632ff6e9cd2fc6362bb2afdf40cefc Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Mon, 17 Jan 2022 19:42:07 -0800 Subject: [PATCH] HackStudio: Hookup git commit message detection and highlighting --- Userland/DevTools/HackStudio/CodeDocument.cpp | 5 +++-- Userland/DevTools/HackStudio/Editor.cpp | 4 ++++ Userland/DevTools/HackStudio/Language.cpp | 15 +++++++++++++-- Userland/DevTools/HackStudio/Language.h | 6 ++++-- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/Userland/DevTools/HackStudio/CodeDocument.cpp b/Userland/DevTools/HackStudio/CodeDocument.cpp index 997498fc2a..c0f747ebf2 100644 --- a/Userland/DevTools/HackStudio/CodeDocument.cpp +++ b/Userland/DevTools/HackStudio/CodeDocument.cpp @@ -22,8 +22,9 @@ CodeDocument::CodeDocument(const String& file_path, Client* client) : TextDocument(client) , m_file_path(file_path) { - m_language = language_from_file_extension(LexicalPath::extension(file_path)); - m_language_name = language_name_from_file_extension(LexicalPath::extension(file_path)); + auto lexical_path = LexicalPath(file_path); + m_language = language_from_file(lexical_path); + m_language_name = language_name_from_file(lexical_path); } CodeDocument::CodeDocument(Client* client) diff --git a/Userland/DevTools/HackStudio/Editor.cpp b/Userland/DevTools/HackStudio/Editor.cpp index 979972149e..4c59dde1dc 100644 --- a/Userland/DevTools/HackStudio/Editor.cpp +++ b/Userland/DevTools/HackStudio/Editor.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -606,6 +607,9 @@ void Editor::set_syntax_highlighter_for(const CodeDocument& document) case Language::CSS: set_syntax_highlighter(make()); break; + case Language::GitCommit: + set_syntax_highlighter(make()); + break; case Language::GML: set_syntax_highlighter(make()); break; diff --git a/Userland/DevTools/HackStudio/Language.cpp b/Userland/DevTools/HackStudio/Language.cpp index 989eefe80f..f00c5bfc27 100644 --- a/Userland/DevTools/HackStudio/Language.cpp +++ b/Userland/DevTools/HackStudio/Language.cpp @@ -5,11 +5,16 @@ */ #include "Language.h" +#include namespace HackStudio { -Language language_from_file_extension(const String& extension) +Language language_from_file(const LexicalPath& file) { + if (file.title() == "COMMIT_EDITMSG") + return Language::GitCommit; + + auto extension = file.extension(); VERIFY(!extension.starts_with(".")); if (extension == "c" || extension == "cc" || extension == "cxx" || extension == "cpp" || extension == "c++" || extension == "h" || extension == "hh" || extension == "hxx" || extension == "hpp" || extension == "h++") @@ -40,12 +45,18 @@ Language language_from_name(const String& name) return Language::JavaScript; if (name == "Shell") return Language::Shell; + if (name == "GitCommit") + return Language::GitCommit; return Language::Unknown; } -String language_name_from_file_extension(const String& extension) +String language_name_from_file(const LexicalPath& file) { + if (file.title() == "COMMIT_EDITMSG") + return "GitCommit"; + + auto extension = file.extension(); VERIFY(!extension.starts_with(".")); if (extension == "c" || extension == "cc" || extension == "cxx" || extension == "cpp" || extension == "c++" || extension == "h" || extension == "hh" || extension == "hxx" || extension == "hpp" || extension == "h++") diff --git a/Userland/DevTools/HackStudio/Language.h b/Userland/DevTools/HackStudio/Language.h index fc3e172c8f..2ace198813 100644 --- a/Userland/DevTools/HackStudio/Language.h +++ b/Userland/DevTools/HackStudio/Language.h @@ -6,6 +6,7 @@ #pragma once +#include #include namespace HackStudio { @@ -15,14 +16,15 @@ enum class Language { CSS, JavaScript, HTML, + GitCommit, GML, Ini, Shell, SQL, }; -Language language_from_file_extension(const String&); +Language language_from_file(const LexicalPath&); Language language_from_name(const String&); -String language_name_from_file_extension(const String&); +String language_name_from_file(const LexicalPath&); }