Added Jule syntax highlighting support (SpartanJ/ecode#398).

This commit is contained in:
Martín Lucas Golini
2025-03-19 13:35:30 -03:00
parent 559fa157af
commit 67a707a32f
4 changed files with 76 additions and 1 deletions

View File

@@ -0,0 +1,63 @@
#include <eepp/ui/doc/languages/jule.hpp>
#include <eepp/ui/doc/syntaxdefinitionmanager.hpp>
namespace EE { namespace UI { namespace Doc { namespace Language {
void addJule() {
auto& sd = SyntaxDefinitionManager::instance()->add(
{ "Jule",
{ "%.jule$" },
{
{ { "//.-\n" }, "comment" },
{ { "/%*", "%*/" }, "comment" },
{ { "\"", "[\"\n]", "\\" }, "string" },
{ { "'", "'", "\\" }, "string" },
{ { "-?0x%x+" }, "number" },
{ { "-?0b[01]+" }, "number" },
{ { "-?%d+[%d%.eE]*f?" }, "number" },
{ { "-?%.?%d+f?" }, "number" },
{ { "[%+%-=/%*%^%%<>!~|&]" }, "operator" },
{ { "(%w+)::([%a_][%w_]*)%(" }, { "normal", "keyword2", "function" } },
{ { "(%w+)::([%a_][%w_]*)" }, { "normal", "keyword2", "keyword2" } },
{ { "(struct)%s+([%a_][%w_]*)" }, { "normal", "keyword", "keyword2" } },
{ { "(impl)%s+([%a_][%w_]*)" }, { "normal", "keyword", "keyword2" } },
{ { "(enum)%s+([%a_][%w_]*)" }, { "normal", "keyword", "keyword2" } },
{ { "(trait)%s+([%a_][%w_]*)" }, { "normal", "keyword", "keyword2" } },
{ { "[%a_][%w_]*%f[(]" }, "function" },
{ { "([%a_][%w_]+)%[([%a_][%w_]*)%]%f[(]" }, { "normal", "function", "keyword2" } },
{ { "[%a_][%w_]*" }, "symbol" },
},
{
{ "int", "keyword2" }, { "str", "keyword2" }, { "impl", "keyword" },
{ "continue", "keyword" }, { "i16", "keyword2" }, { "bool", "keyword2" },
{ "uintptr", "keyword2" }, { "integ", "keyword" }, { "fall", "keyword" },
{ "i8", "keyword2" }, { "u32", "keyword2" }, { "any", "keyword2" },
{ "match", "keyword" }, { "i64", "keyword2" }, { "false", "literal" },
{ "for", "keyword" }, { "goto", "keyword" }, { "const", "keyword" },
{ "u64", "keyword2" }, { "select", "keyword" }, { "unsafe", "keyword" },
{ "else", "keyword" }, { "f64", "keyword2" }, { "enum", "keyword" },
{ "cpp", "keyword" }, { "struct", "keyword" }, { "break", "keyword" },
{ "use", "keyword" }, { "if", "keyword" }, { "let", "keyword" },
{ "in", "keyword" }, { "f32", "keyword2" }, { "i32", "keyword2" },
{ "map", "keyword2" }, { "trait", "keyword" }, { "mut", "keyword" },
{ "error", "keyword" }, { "u8", "keyword2" }, { "byte", "keyword2" },
{ "static", "keyword" }, { "defer", "keyword" }, { "co", "keyword" },
{ "uint", "keyword2" }, { "self", "keyword" }, { "true", "literal" },
{ "chan", "keyword" }, { "nil", "literal" }, { "rune", "keyword2" },
{ "ret", "keyword" }, { "fn", "keyword" }, { "u16", "keyword2" },
{ "type", "keyword" },
},
"//",
{}
} );
sd.setFoldRangeType( FoldRangeType::Braces ).setFoldBraces( { { '{', '}' } } );
}
}}}} // namespace EE::UI::Doc::Language

View File

@@ -0,0 +1,10 @@
#ifndef EE_UI_DOC_Jule
#define EE_UI_DOC_Jule
namespace EE { namespace UI { namespace Doc { namespace Language {
extern void addJule();
}}}} // namespace EE::UI::Doc::Language
#endif

View File

@@ -39,6 +39,7 @@
#include <eepp/ui/doc/languages/jai.hpp>
#include <eepp/ui/doc/languages/java.hpp>
#include <eepp/ui/doc/languages/jsx.hpp>
#include <eepp/ui/doc/languages/jule.hpp>
#include <eepp/ui/doc/languages/julia.hpp>
#include <eepp/ui/doc/languages/kotlin.hpp>
#include <eepp/ui/doc/languages/latex.hpp>
@@ -138,6 +139,7 @@ void LanguagesSyntaxHighlighting::load() {
addIgnoreFile();
addJai();
addJava();
addJule();
addJulia();
addJSX();
addKotlin();

View File

@@ -3531,7 +3531,7 @@ void App::init( const LogLevel& logLevel, std::string file, const Float& pidelDe
mThreadPool->run( [this] {
// Load language definitions
Clock defClock;
SyntaxDefinitionManager::createSingleton( 111 );
SyntaxDefinitionManager::createSingleton( 112 );
Language::LanguagesSyntaxHighlighting::load();
SyntaxDefinitionManager::instance()->setLanguageExtensionsPriority(
mConfig.languagesExtensions.priorities );