Skip to content

Commit

Permalink
Added Ada syntax highlighting and LSP support (SpartanJ/ecode#211).
Browse files Browse the repository at this point in the history
  • Loading branch information
SpartanJ committed Jan 26, 2025
1 parent 337ac0f commit 934a1f3
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 1 deletion.
7 changes: 7 additions & 0 deletions bin/assets/plugins/lspclient.json
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,13 @@
"url": "https://github.com/bscan/PerlNavigator",
"command": "perlnavigator",
"file_patterns": ["%.pm$", "%.pl$"]
},
{
"language": "ada",
"name": "ada_language_server",
"url": "https://github.com/AdaCore/ada_language_server",
"command": "ada_language_server",
"file_patterns": ["%.adb$", "%.ads$", "%.ada$"]
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
#include <eepp/ui/doc/languages/ada.hpp>
#include <eepp/ui/doc/syntaxdefinitionmanager.hpp>

namespace EE { namespace UI { namespace Doc { namespace Language {

void addAda() {

auto sd = SyntaxDefinitionManager::instance()->add(

{ "Ada",
{ "%.adb$", "%.ads$", "%.ada$" },
{
{ { "\"", "\"", "\\" }, "string" },
{ { "%-%-.-\n" }, "comment" },
{ { "[%:%;%=%<%>%&%+%-%*%/%.%(%)]" }, "operator" },
{ { "-?%d+[%d%.eE_]*" }, "number" },
{ { "[%a_][%w_]*%f[(]" }, "function" },
{ { "-?%d+[%d%.eE_]*" }, "number" },
{ { "[%a_][%w_]*" }, "normal" },
{ { "%s+" }, "normal" },
{ { "[%a_][%w_]*" }, "symbol" },

},
{
{ "abort", "keyword" },
{ "abs", "keyword" },
{ "abstract", "keyword" },
{ "accept", "keyword" },
{ "access", "keyword" },
{ "aliased", "keyword" },
{ "all", "keyword" },
{ "and", "keyword" },
{ "array", "keyword" },
{ "at", "keyword" },
{ "begin", "keyword" },
{ "body", "keyword" },
{ "case", "keyword" },
{ "constant", "keyword" },
{ "declare", "keyword" },
{ "delay", "keyword" },
{ "delta", "keyword" },
{ "digits", "keyword" },
{ "do", "keyword" },
{ "else", "keyword" },
{ "elsif", "keyword" },
{ "end", "keyword" },
{ "entry", "keyword" },
{ "exception", "keyword" },
{ "exit", "keyword" },
{ "for", "keyword" },
{ "function", "keyword" },
{ "generic", "keyword" },
{ "goto", "keyword" },
{ "if", "keyword" },
{ "in", "keyword" },
{ "interface", "keyword" },
{ "is", "keyword" },
{ "limited", "keyword" },
{ "loop", "keyword" },
{ "mod", "keyword" },
{ "new", "keyword" },
{ "not", "keyword" },
{ "null", "keyword" },
{ "of", "keyword" },
{ "or", "keyword" },
{ "others", "keyword" },
{ "out", "keyword" },
{ "overriding", "keyword" },
{ "package", "keyword" },
{ "parallel", "keyword" },
{ "pragma", "keyword" },
{ "private", "keyword" },
{ "procedure", "keyword" },
{ "protected", "keyword" },
{ "raise", "keyword" },
{ "range", "keyword" },
{ "record", "keyword" },
{ "rem", "keyword" },
{ "renames", "keyword" },
{ "requeue", "keyword" },
{ "return", "keyword" },
{ "reverse", "keyword" },
{ "select", "keyword" },
{ "separate", "keyword" },
{ "some", "keyword" },
{ "subtype", "keyword" },
{ "synchronized", "keyword" },
{ "tagged", "keyword" },
{ "task", "keyword" },
{ "terminate", "keyword" },
{ "then", "keyword" },
{ "type", "keyword" },
{ "until", "keyword" },
{ "use", "keyword" },
{ "when", "keyword" },
{ "while", "keyword" },
{ "with", "keyword" },
{ "xor", "keyword" },
{ "true", "keyword" },
{ "false", "keyword" },
{ "boolean", "keyword2" },
{ "character", "keyword2" },
{ "count", "keyword2" },
{ "duration", "keyword2" },
{ "float", "keyword2" },
{ "integer", "keyword2" },
{ "long_float", "keyword2" },
{ "long_integer", "keyword2" },
{ "priority", "keyword2" },
{ "short_float", "keyword2" },
{ "short_integer", "keyword2" },
{ "string", "keyword2" },
},
"--",
{}

} );

sd.setCaseInsensitive( true );
}

}}}} // namespace EE::UI::Doc::Language
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef EE_UI_DOC_ADA
#define EE_UI_DOC_ADA

namespace EE { namespace UI { namespace Doc { namespace Language {

extern void addAda();

}}}}

#endif
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#include <eepp/ui/doc/languages/ada.hpp>
#include <eepp/ui/doc/languages/adept.hpp>
#include <eepp/ui/doc/languages/angelscript.hpp>
#include <eepp/ui/doc/languages/awkscript.hpp>
Expand Down Expand Up @@ -89,6 +90,7 @@
namespace EE { namespace UI { namespace Doc { namespace Language {

void LanguagesSyntaxHighlighting::load() {
addAda();
addAdept();
addAngelScript();
addAwkScript();
Expand Down
2 changes: 1 addition & 1 deletion src/tools/ecode/ecode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3485,7 +3485,7 @@ void App::init( const LogLevel& logLevel, std::string file, const Float& pidelDe
mThreadPool->run( [this] {
// Load language definitions
Clock defClock;
SyntaxDefinitionManager::createSingleton( 104 );
SyntaxDefinitionManager::createSingleton( 105 );
Language::LanguagesSyntaxHighlighting::load();
SyntaxDefinitionManager::instance()->setLanguageExtensionsPriority(
mConfig.languagesExtensions.priorities );
Expand Down

0 comments on commit 934a1f3

Please sign in to comment.