HackStudio: Hookup git commit message detection and highlighting

This commit is contained in:
Brian Gianforcaro 2022-01-17 19:42:07 -08:00 committed by Andreas Kling
parent 974e36e7a9
commit 89592601b6
Notes: sideshowbarker 2024-07-17 20:41:12 +09:00
4 changed files with 24 additions and 6 deletions

View file

@ -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)

View file

@ -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;

View file

@ -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++")

View file

@ -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&);
}