Преглед на файлове

HackStudio: Hookup git commit message detection and highlighting

Brian Gianforcaro преди 3 години
родител
ревизия
89592601b6

+ 3 - 2
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)

+ 4 - 0
Userland/DevTools/HackStudio/Editor.cpp

@@ -21,6 +21,7 @@
 #include <LibGUI/Application.h>
 #include <LibGUI/GMLAutocompleteProvider.h>
 #include <LibGUI/GMLSyntaxHighlighter.h>
+#include <LibGUI/GitCommitSyntaxHighlighter.h>
 #include <LibGUI/INISyntaxHighlighter.h>
 #include <LibGUI/Label.h>
 #include <LibGUI/MessageBox.h>
@@ -606,6 +607,9 @@ void Editor::set_syntax_highlighter_for(const CodeDocument& document)
     case Language::CSS:
         set_syntax_highlighter(make<Web::CSS::SyntaxHighlighter>());
         break;
+    case Language::GitCommit:
+        set_syntax_highlighter(make<GUI::GitCommitSyntaxHighlighter>());
+        break;
     case Language::GML:
         set_syntax_highlighter(make<GUI::GMLSyntaxHighlighter>());
         break;

+ 13 - 2
Userland/DevTools/HackStudio/Language.cpp

@@ -5,11 +5,16 @@
  */
 
 #include "Language.h"
+#include <AK/LexicalPath.h>
 
 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++")

+ 4 - 2
Userland/DevTools/HackStudio/Language.h

@@ -6,6 +6,7 @@
 
 #pragma once
 
+#include <AK/LexicalPath.h>
 #include <AK/String.h>
 
 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&);
 
 }