HackStudio: Add syntax highlighting for HTML, Shell, and SQL files

.html files were recognised before -- the name was shown on
the statusbar, but it didn't actually enable the syntax highlighting.

This also sneaks a highlighting for JSON using JS highlighting.
It isn't technically correct, but so does TextEditor. :^)
This commit is contained in:
Karol Kosek 2021-07-29 21:06:52 +02:00 committed by Gunnar Beutner
parent 68088b629b
commit bf322e072f
Notes: sideshowbarker 2024-07-19 17:21:44 +09:00
4 changed files with 22 additions and 6 deletions

View file

@ -50,5 +50,5 @@ set(SOURCES
) )
serenity_app(HackStudio ICON app-hack-studio) serenity_app(HackStudio ICON app-hack-studio)
target_link_libraries(HackStudio LibWeb LibMarkdown LibGUI LibCpp LibGfx LibCore LibVT LibDebug LibX86 LibDiff LibShell LibSymbolication LibRegex) target_link_libraries(HackStudio LibWeb LibMarkdown LibGUI LibCpp LibGfx LibCore LibVT LibDebug LibX86 LibDiff LibShell LibSymbolication LibRegex LibSQL)
add_dependencies(HackStudio CppLanguageServer) add_dependencies(HackStudio CppLanguageServer)

View file

@ -29,9 +29,11 @@
#include <LibGUI/Window.h> #include <LibGUI/Window.h>
#include <LibJS/SyntaxHighlighter.h> #include <LibJS/SyntaxHighlighter.h>
#include <LibMarkdown/Document.h> #include <LibMarkdown/Document.h>
#include <LibSQL/AST/SyntaxHighlighter.h>
#include <LibWeb/DOM/ElementFactory.h> #include <LibWeb/DOM/ElementFactory.h>
#include <LibWeb/DOM/Text.h> #include <LibWeb/DOM/Text.h>
#include <LibWeb/HTML/HTMLHeadElement.h> #include <LibWeb/HTML/HTMLHeadElement.h>
#include <LibWeb/HTML/SyntaxHighlighter/SyntaxHighlighter.h>
#include <LibWeb/OutOfProcessWebView.h> #include <LibWeb/OutOfProcessWebView.h>
#include <Shell/SyntaxHighlighter.h> #include <Shell/SyntaxHighlighter.h>
#include <fcntl.h> #include <fcntl.h>
@ -597,6 +599,9 @@ void Editor::set_syntax_highlighter_for(const CodeDocument& document)
case Language::GML: case Language::GML:
set_syntax_highlighter(make<GUI::GMLSyntaxHighlighter>()); set_syntax_highlighter(make<GUI::GMLSyntaxHighlighter>());
break; break;
case Language::HTML:
set_syntax_highlighter(make<Web::HTML::SyntaxHighlighter>());
break;
case Language::JavaScript: case Language::JavaScript:
set_syntax_highlighter(make<JS::SyntaxHighlighter>()); set_syntax_highlighter(make<JS::SyntaxHighlighter>());
break; break;
@ -606,6 +611,9 @@ void Editor::set_syntax_highlighter_for(const CodeDocument& document)
case Language::Shell: case Language::Shell:
set_syntax_highlighter(make<Shell::SyntaxHighlighter>()); set_syntax_highlighter(make<Shell::SyntaxHighlighter>());
break; break;
case Language::SQL:
set_syntax_highlighter(make<SQL::AST::SyntaxHighlighter>());
break;
default: default:
set_syntax_highlighter({}); set_syntax_highlighter({});
} }

View file

@ -13,14 +13,18 @@ Language language_from_file_extension(const String& extension)
VERIFY(!extension.starts_with(".")); VERIFY(!extension.starts_with("."));
if (extension == "cpp" || extension == "h") if (extension == "cpp" || extension == "h")
return Language::Cpp; return Language::Cpp;
else if (extension == "js") else if (extension == "js" || extension == "json")
return Language::JavaScript; return Language::JavaScript;
else if (extension == "html" || extension == "htm")
return Language::HTML;
else if (extension == "gml") else if (extension == "gml")
return Language::GML; return Language::GML;
else if (extension == "ini") else if (extension == "ini")
return Language::Ini; return Language::Ini;
else if (extension == "sh") else if (extension == "sh" || extension == "bash")
return Language::Shell; return Language::Shell;
else if (extension == "sql")
return Language::SQL;
return Language::Unknown; return Language::Unknown;
} }
@ -42,18 +46,20 @@ String language_name_from_file_extension(const String& extension)
VERIFY(!extension.starts_with(".")); VERIFY(!extension.starts_with("."));
if (extension == "cpp" || extension == "h") if (extension == "cpp" || extension == "h")
return "C++"; return "C++";
else if (extension == "js") else if (extension == "js" || extension == "json")
return "JavaScript"; return "JavaScript";
else if (extension == "gml") else if (extension == "gml")
return "GML"; return "GML";
else if (extension == "ini") else if (extension == "ini")
return "Ini"; return "Ini";
else if (extension == "sh") else if (extension == "sh" || extension == "bash")
return "Shell"; return "Shell";
else if (extension == "md") else if (extension == "md")
return "Markdown"; return "Markdown";
else if (extension == "html") else if (extension == "html" || extension == "htm")
return "HTML"; return "HTML";
else if (extension == "sql")
return "SQL";
else if (extension == "txt") else if (extension == "txt")
return "Plaintext"; return "Plaintext";

View file

@ -13,9 +13,11 @@ enum class Language {
Unknown, Unknown,
Cpp, Cpp,
JavaScript, JavaScript,
HTML,
GML, GML,
Ini, Ini,
Shell, Shell,
SQL,
}; };
Language language_from_file_extension(const String&); Language language_from_file_extension(const String&);