mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-04 01:12:56 +00:00
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:
parent
68088b629b
commit
bf322e072f
Notes:
sideshowbarker
2024-07-19 17:21:44 +09:00
Author: https://github.com/krkk
Commit: bf322e072f
Pull-request: https://github.com/SerenityOS/serenity/pull/9092
Reviewed-by: https://github.com/alimpfard
Reviewed-by: https://github.com/linusg
Reviewed-by: https://github.com/luk1337
4 changed files with 22 additions and 6 deletions
|
@ -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)
|
||||||
|
|
|
@ -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({});
|
||||||
}
|
}
|
||||||
|
|
|
@ -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";
|
||||||
|
|
||||||
|
|
|
@ -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&);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue