mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:32:46 +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
					
				
					 4 changed files with 22 additions and 6 deletions
				
			
		|  | @ -50,5 +50,5 @@ set(SOURCES | |||
| ) | ||||
| 
 | ||||
| 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) | ||||
|  |  | |||
|  | @ -29,9 +29,11 @@ | |||
| #include <LibGUI/Window.h> | ||||
| #include <LibJS/SyntaxHighlighter.h> | ||||
| #include <LibMarkdown/Document.h> | ||||
| #include <LibSQL/AST/SyntaxHighlighter.h> | ||||
| #include <LibWeb/DOM/ElementFactory.h> | ||||
| #include <LibWeb/DOM/Text.h> | ||||
| #include <LibWeb/HTML/HTMLHeadElement.h> | ||||
| #include <LibWeb/HTML/SyntaxHighlighter/SyntaxHighlighter.h> | ||||
| #include <LibWeb/OutOfProcessWebView.h> | ||||
| #include <Shell/SyntaxHighlighter.h> | ||||
| #include <fcntl.h> | ||||
|  | @ -597,6 +599,9 @@ void Editor::set_syntax_highlighter_for(const CodeDocument& document) | |||
|     case Language::GML: | ||||
|         set_syntax_highlighter(make<GUI::GMLSyntaxHighlighter>()); | ||||
|         break; | ||||
|     case Language::HTML: | ||||
|         set_syntax_highlighter(make<Web::HTML::SyntaxHighlighter>()); | ||||
|         break; | ||||
|     case Language::JavaScript: | ||||
|         set_syntax_highlighter(make<JS::SyntaxHighlighter>()); | ||||
|         break; | ||||
|  | @ -606,6 +611,9 @@ void Editor::set_syntax_highlighter_for(const CodeDocument& document) | |||
|     case Language::Shell: | ||||
|         set_syntax_highlighter(make<Shell::SyntaxHighlighter>()); | ||||
|         break; | ||||
|     case Language::SQL: | ||||
|         set_syntax_highlighter(make<SQL::AST::SyntaxHighlighter>()); | ||||
|         break; | ||||
|     default: | ||||
|         set_syntax_highlighter({}); | ||||
|     } | ||||
|  |  | |||
|  | @ -13,14 +13,18 @@ Language language_from_file_extension(const String& extension) | |||
|     VERIFY(!extension.starts_with(".")); | ||||
|     if (extension == "cpp" || extension == "h") | ||||
|         return Language::Cpp; | ||||
|     else if (extension == "js") | ||||
|     else if (extension == "js" || extension == "json") | ||||
|         return Language::JavaScript; | ||||
|     else if (extension == "html" || extension == "htm") | ||||
|         return Language::HTML; | ||||
|     else if (extension == "gml") | ||||
|         return Language::GML; | ||||
|     else if (extension == "ini") | ||||
|         return Language::Ini; | ||||
|     else if (extension == "sh") | ||||
|     else if (extension == "sh" || extension == "bash") | ||||
|         return Language::Shell; | ||||
|     else if (extension == "sql") | ||||
|         return Language::SQL; | ||||
| 
 | ||||
|     return Language::Unknown; | ||||
| } | ||||
|  | @ -42,18 +46,20 @@ String language_name_from_file_extension(const String& extension) | |||
|     VERIFY(!extension.starts_with(".")); | ||||
|     if (extension == "cpp" || extension == "h") | ||||
|         return "C++"; | ||||
|     else if (extension == "js") | ||||
|     else if (extension == "js" || extension == "json") | ||||
|         return "JavaScript"; | ||||
|     else if (extension == "gml") | ||||
|         return "GML"; | ||||
|     else if (extension == "ini") | ||||
|         return "Ini"; | ||||
|     else if (extension == "sh") | ||||
|     else if (extension == "sh" || extension == "bash") | ||||
|         return "Shell"; | ||||
|     else if (extension == "md") | ||||
|         return "Markdown"; | ||||
|     else if (extension == "html") | ||||
|     else if (extension == "html" || extension == "htm") | ||||
|         return "HTML"; | ||||
|     else if (extension == "sql") | ||||
|         return "SQL"; | ||||
|     else if (extension == "txt") | ||||
|         return "Plaintext"; | ||||
| 
 | ||||
|  |  | |||
|  | @ -13,9 +13,11 @@ enum class Language { | |||
|     Unknown, | ||||
|     Cpp, | ||||
|     JavaScript, | ||||
|     HTML, | ||||
|     GML, | ||||
|     Ini, | ||||
|     Shell, | ||||
|     SQL, | ||||
| }; | ||||
| 
 | ||||
| Language language_from_file_extension(const String&); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Karol Kosek
						Karol Kosek