Skip to content

Commit

Permalink
Added syntax highlighting for: Bazel, Ring, OpenSCAD and TCL.
Browse files Browse the repository at this point in the history
Moved most languages to a separate module that it's not part of the base eepp module.
  • Loading branch information
SpartanJ committed Nov 29, 2024
1 parent 9f28372 commit c4e6b24
Show file tree
Hide file tree
Showing 179 changed files with 811 additions and 176 deletions.
12 changes: 8 additions & 4 deletions include/eepp/ui/doc/syntaxdefinitionmanager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,14 @@ namespace EE { namespace UI { namespace Doc {
class EE_API SyntaxDefinitionManager {
SINGLETON_DECLARE_HEADERS( SyntaxDefinitionManager )
public:
static SyntaxDefinitionManager* createSingleton( std::size_t reserveSpaceForLanguages );

static std::pair<std::string, std::string> toCPP( const SyntaxDefinition& def );

std::size_t count() const;

void reserveSpaceForLanguages( std::size_t totalLangs );

SyntaxDefinition& add( SyntaxDefinition&& syntaxStyle );

const SyntaxDefinition& getPlainDefinition() const;
Expand Down Expand Up @@ -80,12 +86,10 @@ class EE_API SyntaxDefinitionManager {

void setLanguageExtensionsPriority( const std::map<std::string, std::string>& priorities );

const std::map<std::string, std::string>& getLanguageExtensionsPriority() {
return mPriorities;
}
const std::map<std::string, std::string>& getLanguageExtensionsPriority();

protected:
SyntaxDefinitionManager();
SyntaxDefinitionManager( std::size_t reserveSpaceForLanguages = 12 );

std::vector<SyntaxDefinition> mDefinitions;
std::map<std::string, std::string> mPriorities;
Expand Down
20 changes: 18 additions & 2 deletions premake4.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1371,6 +1371,22 @@ solution "eepp"
end
build_base_cpp_configuration( "eterm" )

project "languages-syntax-highlighting-static"
kind "StaticLib"
language "C++"
set_targetdir("libs/" .. os.get_real() .. "/")
includedirs { "include", "src/modules/languages-syntax-highlighting/src" }
files { "src/modules/languages-syntax-highlighting/src/**.cpp" }
if _OPTIONS["with-static-eepp"] then
defines { "EE_STATIC" }
end
if not is_vs() then
buildoptions{ "-std=c++17" }
else
buildoptions{ "/std:c++17" }
end
build_base_cpp_configuration( "languages-syntax-highlighting" )

-- Library
if not _OPTIONS["disable-static-build"] then
project "eepp-static"
Expand Down Expand Up @@ -1549,8 +1565,8 @@ solution "eepp"
set_kind()
language "C++"
files { "src/tools/ecode/**.cpp" }
includedirs { "src/thirdparty/efsw/include", "src/thirdparty", "src/modules/eterm/include/" }
links { "efsw-static", "eterm-static" }
includedirs { "src/thirdparty/efsw/include", "src/thirdparty", "src/modules/eterm/include/", "src/modules/languages-syntax-highlighting/src" }
links { "efsw-static", "eterm-static", "languages-syntax-highlighting-static" }
if not os.is("windows") and not os.is("haiku") then
links { "pthread" }
end
Expand Down
20 changes: 18 additions & 2 deletions premake5.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1224,6 +1224,22 @@ workspace "eepp"
filter { "action:export-compile-commands", "system:macosx" }
buildoptions { "-std=c++17" }

project "languages-syntax-highlighting-static"
kind "StaticLib"
language "C++"
cppdialect "C++17"
incdirs { "include", "src/modules/languages-syntax-highlighting/src" }
files { "src/modules/languages-syntax-highlighting/src/**.cpp" }
if _OPTIONS["with-static-eepp"] then
defines { "EE_STATIC" }
end
build_base_cpp_configuration( "languages-syntax-highlighting" )
target_dir_lib("")
filter "action:not vs*"
buildoptions { "-Wall" }
filter { "action:export-compile-commands", "system:macosx" }
buildoptions { "-std=c++17" }

-- Library
if not _OPTIONS["disable-static-build"] then
project "eepp-static"
Expand Down Expand Up @@ -1395,8 +1411,8 @@ workspace "eepp"
set_kind()
language "C++"
files { "src/tools/ecode/**.cpp" }
incdirs { "src/thirdparty/efsw/include", "src/thirdparty", "src/modules/eterm/include/" }
links { "efsw-static", "eterm-static" }
incdirs { "src/thirdparty/efsw/include", "src/thirdparty", "src/modules/eterm/include/", "src/modules/languages-syntax-highlighting/src" }
links { "efsw-static", "eterm-static", "languages-syntax-highlighting-static" }
build_link_configuration( "ecode", false )
filter { "system:windows", "action:not vs*" }
buildoptions{ "-Wa,-mbig-obj" }
Expand Down
192 changes: 25 additions & 167 deletions src/eepp/ui/doc/syntaxdefinitionmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,99 +4,17 @@
#include <eepp/system/log.hpp>
#include <eepp/system/luapattern.hpp>
#include <eepp/system/packmanager.hpp>
#include <eepp/ui/doc/languages/adept.hpp>
#include <eepp/ui/doc/languages/angelscript.hpp>
#include <eepp/ui/doc/languages/awkscript.hpp>
#include <eepp/ui/doc/languages/batchscript.hpp>
#include <eepp/ui/doc/languages/bend.hpp>
#include <eepp/ui/doc/languages/blueprint.hpp>
#include <eepp/ui/doc/languages/brainfuck.hpp>
#include <eepp/ui/doc/languages/buzz.hpp>
#include <eepp/ui/doc/languages/c.hpp>
#include <eepp/ui/doc/languages/carbon.hpp>
#include <eepp/ui/doc/languages/clojure.hpp>
#include <eepp/ui/doc/languages/cmake.hpp>
#include <eepp/ui/doc/languages/configfile.hpp>
#include <eepp/ui/doc/languages/containerfile.hpp>
#include <eepp/ui/doc/languages/cpp.hpp>
#include <eepp/ui/doc/languages/crystal.hpp>
#include <eepp/ui/doc/languages/csharp.hpp>
#include <eepp/ui/doc/languages/css.hpp>
#include <eepp/ui/doc/languages/d.hpp>
#include <eepp/ui/doc/languages/dart.hpp>
#include <eepp/ui/doc/languages/difffile.hpp>
#include <eepp/ui/doc/languages/elixir.hpp>
#include <eepp/ui/doc/languages/elm.hpp>
#include <eepp/ui/doc/languages/environmentfile.hpp>
#include <eepp/ui/doc/languages/fantom.hpp>
#include <eepp/ui/doc/languages/fortran.hpp>
#include <eepp/ui/doc/languages/fstab.hpp>
#include <eepp/ui/doc/languages/gdscript.hpp>
#include <eepp/ui/doc/languages/glsl.hpp>
#include <eepp/ui/doc/languages/go.hpp>
#include <eepp/ui/doc/languages/graphql.hpp>
#include <eepp/ui/doc/languages/groovy.hpp>
#include <eepp/ui/doc/languages/hare.hpp>
#include <eepp/ui/doc/languages/haskell.hpp>
#include <eepp/ui/doc/languages/haxe.hpp>
#include <eepp/ui/doc/languages/hlsl.hpp>
#include <eepp/ui/doc/languages/htaccess.hpp>
#include <eepp/ui/doc/languages/html.hpp>
#include <eepp/ui/doc/languages/ignorefile.hpp>
#include <eepp/ui/doc/languages/jai.hpp>
#include <eepp/ui/doc/languages/java.hpp>
#include <eepp/ui/doc/languages/javascript.hpp>
#include <eepp/ui/doc/languages/json.hpp>
#include <eepp/ui/doc/languages/jsx.hpp>
#include <eepp/ui/doc/languages/julia.hpp>
#include <eepp/ui/doc/languages/kotlin.hpp>
#include <eepp/ui/doc/languages/latex.hpp>
#include <eepp/ui/doc/languages/lobster.hpp>
#include <eepp/ui/doc/languages/lua.hpp>
#include <eepp/ui/doc/languages/makefile.hpp>
#include <eepp/ui/doc/languages/markdown.hpp>
#include <eepp/ui/doc/languages/meson.hpp>
#include <eepp/ui/doc/languages/moonscript.hpp>
#include <eepp/ui/doc/languages/nelua.hpp>
#include <eepp/ui/doc/languages/nim.hpp>
#include <eepp/ui/doc/languages/objeck.hpp>
#include <eepp/ui/doc/languages/objective-c.hpp>
#include <eepp/ui/doc/languages/ocaml.hpp>
#include <eepp/ui/doc/languages/odin.hpp>
#include <eepp/ui/doc/languages/pascal.hpp>
#include <eepp/ui/doc/languages/perl.hpp>
#include <eepp/ui/doc/languages/php.hpp>
#include <eepp/ui/doc/languages/pico-8.hpp>
#include <eepp/ui/doc/languages/po.hpp>
#include <eepp/ui/doc/languages/pony.hpp>
#include <eepp/ui/doc/languages/postgresql.hpp>
#include <eepp/ui/doc/languages/powershell.hpp>
#include <eepp/ui/doc/languages/python.hpp>
#include <eepp/ui/doc/languages/r.hpp>
#include <eepp/ui/doc/languages/ruby.hpp>
#include <eepp/ui/doc/languages/rust.hpp>
#include <eepp/ui/doc/languages/sass.hpp>
#include <eepp/ui/doc/languages/scala.hpp>
#include <eepp/ui/doc/languages/shellscript.hpp>
#include <eepp/ui/doc/languages/smallbasic.hpp>
#include <eepp/ui/doc/languages/solidity.hpp>
#include <eepp/ui/doc/languages/sql.hpp>
#include <eepp/ui/doc/languages/swift.hpp>
#include <eepp/ui/doc/languages/teal.hpp>
#include <eepp/ui/doc/languages/toml.hpp>
#include <eepp/ui/doc/languages/typescript.hpp>
#include <eepp/ui/doc/languages/v.hpp>
#include <eepp/ui/doc/languages/vala.hpp>
#include <eepp/ui/doc/languages/vb.hpp>
#include <eepp/ui/doc/languages/verilog.hpp>
#include <eepp/ui/doc/languages/vue.hpp>
#include <eepp/ui/doc/languages/wren.hpp>
#include <eepp/ui/doc/languages/x86assembly.hpp>
#include <eepp/ui/doc/languages/xit.hpp>
#include <eepp/ui/doc/languages/xml.hpp>
#include <eepp/ui/doc/languages/xtend.hpp>
#include <eepp/ui/doc/languages/yaml.hpp>
#include <eepp/ui/doc/languages/zig.hpp>
#include <eepp/ui/doc/syntaxdefinitionmanager.hpp>
#include <nlohmann/json.hpp>

Expand All @@ -109,114 +27,41 @@ namespace EE { namespace UI { namespace Doc {

SINGLETON_DECLARE_IMPLEMENTATION( SyntaxDefinitionManager )

SyntaxDefinitionManager*
SyntaxDefinitionManager::createSingleton( std::size_t reserveSpaceForLanguages ) {
if ( NULL == ms_singleton ) {
ms_singleton = eeNew( SyntaxDefinitionManager, () );
}

return ms_singleton;
}

static void addPlainText() {
SyntaxDefinitionManager::instance()->add( { "Plain Text", {}, {}, {}, "", {}, "plaintext" } );
}

// Syntax definitions can be directly converted from the lite (https://github.com/rxi/lite) and
// lite-plugins (https://github.com/rxi/lite-plugins) supported languages.

SyntaxDefinitionManager::SyntaxDefinitionManager() {
SyntaxDefinitionManager::SyntaxDefinitionManager( std::size_t reserveSpaceForLanguages ) {
if ( ms_singleton == nullptr )
ms_singleton = this;

mDefinitions.reserve( 100 );
mDefinitions.reserve( reserveSpaceForLanguages );

// Register some languages support.
addPlainText();
addAdept();
addAngelScript();
addAwkScript();
addBatchScript();
addBend();
addBlueprint();
addBrainfuck();
addBuzz();
addC();
addCarbon();
addCMake();
addContainerFile();
addConfigFile();
addCPP();
addClojure();
addCrystal();
addCSharp();
addCSS();
addD();
addDart();
addDiff();
addElixir();
addElm();
addEnvironmentFile();
addFantom();
addFortran();
addFstab();
addGDScript();
addGLSL();
addGo();
addGraphQL();
addGroovy();
addHaskell();
addHare();
addHaxe();
addHLSL();
addHtaccessFile();
addHTML();
addIgnoreFile();
addJai();
addJava();
addJavaScript();
addJulia();
addJSON();
addJSX();
addKotlin();
addLatex();
addLobster();
addLua();
addMakefile();
addMarkdown();
addMeson();
addMoonscript();
addNelua();
addNim();
addObjeck();
addObjectiveC();
addOCaml();
addOdin();
addPascal();
addPerl();
addPICO8();
addPHP();
addPO();
addPony();
addPostgreSQL();
addPowerShell();
addPython();
addR();
addRuby();
addRust();
addSass();
addScala();
addShellScript();
addSmallBASIC();
addSolidity();
addSQL();
addSwift();
addTeal();
addToml();
addTypeScript();
addV();
addVala();
addVerilog();
addVisualBasic();
addVue();
addWren();
addX86Assembly();
addXit();
addXML();
addXtend();
addYAML();
addZig();
}

const std::vector<SyntaxDefinition>& SyntaxDefinitionManager::getDefinitions() const {
Expand Down Expand Up @@ -359,7 +204,8 @@ namespace EE { namespace UI { namespace Doc { namespace Language {
buf += "{ " + join( pattern.patterns ) + ", " + join( pattern.typesNames, true, true ) +
str( pattern.syntax, ", ", "", false );
if ( pattern.isRegEx )
buf += ", true";
buf += ", "
", true";
buf += " },\n";
}
buf += "\n},\n";
Expand Down Expand Up @@ -837,4 +683,16 @@ const SyntaxDefinition& SyntaxDefinitionManager::findFromString( const std::stri
return getPlainDefinition();
}

const std::map<std::string, std::string>& SyntaxDefinitionManager::getLanguageExtensionsPriority() {
return mPriorities;
}

std::size_t SyntaxDefinitionManager::count() const {
return mDefinitions.size();
}

void SyntaxDefinitionManager::reserveSpaceForLanguages( std::size_t totalLangs ) {
mDefinitions.reserve( totalLangs );
}

}}} // namespace EE::UI::Doc
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit c4e6b24

Please sign in to comment.