diff --git a/projects/linux/ee.files b/projects/linux/ee.files index 3418285af..7135e3940 100644 --- a/projects/linux/ee.files +++ b/projects/linux/ee.files @@ -861,6 +861,22 @@ ../../src/eepp/system/virtualfilesystem.cpp ../../src/eepp/system/zip.cpp ../../src/eepp/ui/abstract/filesystemmodel.hpp +../../src/eepp/ui/doc/languages/angelscript.cpp +../../src/eepp/ui/doc/languages/angelscript.hpp +../../src/eepp/ui/doc/languages/batchscript.cpp +../../src/eepp/ui/doc/languages/batchscript.hpp +../../src/eepp/ui/doc/languages/blueprint.cpp +../../src/eepp/ui/doc/languages/blueprint.hpp +../../src/eepp/ui/doc/languages/crystal.hpp +../../src/eepp/ui/doc/languages/css.hpp +../../src/eepp/ui/doc/languages/d.hpp +../../src/eepp/ui/doc/languages/elixir.hpp +../../src/eepp/ui/doc/languages/elm.hpp +../../src/eepp/ui/doc/languages/fstab.hpp +../../src/eepp/ui/doc/languages/gdscript.cpp +../../src/eepp/ui/doc/languages/gdscript.hpp +../../src/eepp/ui/doc/languages/graphql.hpp +../../src/eepp/ui/doc/languages/hare.hpp ../../src/eepp/ui/doc/languages/hlsl.cpp ../../src/eepp/ui/doc/languages/htaccess.cpp ../../src/eepp/ui/doc/languages/objeck.cpp @@ -897,14 +913,39 @@ ../../src/eepp/ui/css/stylesheetvariable.cpp ../../src/eepp/ui/css/timingfunction.cpp ../../src/eepp/ui/css/transitiondefinition.cpp +../../src/eepp/ui/doc/languages/crystal.cpp +../../src/eepp/ui/doc/languages/css.cpp +../../src/eepp/ui/doc/languages/d.cpp +../../src/eepp/ui/doc/languages/elixir.cpp +../../src/eepp/ui/doc/languages/elm.cpp +../../src/eepp/ui/doc/languages/fstab.cpp ../../src/eepp/ui/doc/languages/glsl.cpp ../../src/eepp/ui/doc/languages/glsl.hpp +../../src/eepp/ui/doc/languages/graphql.cpp +../../src/eepp/ui/doc/languages/hare.cpp ../../src/eepp/ui/doc/languages/hlsl.cpp ../../src/eepp/ui/doc/languages/hlsl.hpp ../../src/eepp/ui/doc/languages/htaccess.cpp ../../src/eepp/ui/doc/languages/htaccess.hpp +../../src/eepp/ui/doc/languages/html.cpp +../../src/eepp/ui/doc/languages/html.hpp +../../src/eepp/ui/doc/languages/jai.cpp +../../src/eepp/ui/doc/languages/jai.hpp +../../src/eepp/ui/doc/languages/julia.cpp +../../src/eepp/ui/doc/languages/julia.hpp +../../src/eepp/ui/doc/languages/kotlin.cpp +../../src/eepp/ui/doc/languages/kotlin.hpp +../../src/eepp/ui/doc/languages/lobster.cpp +../../src/eepp/ui/doc/languages/lobster.hpp +../../src/eepp/ui/doc/languages/markdown.cpp +../../src/eepp/ui/doc/languages/markdown.hpp +../../src/eepp/ui/doc/languages/moonscript.cpp +../../src/eepp/ui/doc/languages/moonscript.hpp +../../src/eepp/ui/doc/languages/nelua.cpp +../../src/eepp/ui/doc/languages/nelua.hpp ../../src/eepp/ui/doc/languages/objeck.cpp ../../src/eepp/ui/doc/languages/objeck.hpp +../../src/eepp/ui/doc/languages/odin.cpp ../../src/eepp/ui/doc/languages/odin.hpp ../../src/eepp/ui/doc/languages/pascal.cpp ../../src/eepp/ui/doc/languages/pascal.hpp diff --git a/src/eepp/ui/doc/languages/graphql.cpp b/src/eepp/ui/doc/languages/graphql.cpp new file mode 100644 index 000000000..7b8b4af27 --- /dev/null +++ b/src/eepp/ui/doc/languages/graphql.cpp @@ -0,0 +1,55 @@ +#include +#include + +namespace EE { namespace UI { namespace Doc { namespace Language { + +void addGraphQL() { + + SyntaxDefinitionManager::instance()->add( + + { "GraphQL", + { "%.graphql$", "%.gql$" }, + { + { { "\"\"\"", "\"\"\"" }, "comment" }, + { { "#.*" }, "comment" }, + { { "\"", "\"", "\\" }, "string" }, + { { "-?%.?%d+" }, "number" }, + { { "%s*[@]%s*[%a_][%w_]*" }, "function" }, + { { "!" }, "operator" }, + { { "%s*=%s*" }, "operator" }, + { { "%s*%$[%a_][%w_]*:*" }, "literal" }, + { { "(query%s*)([%a_][%w_]*[(])" }, { "normal", "keyword", "function" } }, + { { "(mutation%s*)([%a_][%w_]*[(])" }, { "normal", "keyword", "function" } }, + { { "(:%s*%[*)([%a_,%s][%w_,%s]*)(%]*)([!]*)" }, + { "normal", "symbol", "literal", "symbol", "operator" } }, + { { "%s+" }, "normal" }, + { { "%w+%f[%s]" }, "normal" }, + + }, + { + { "false", "literal" }, + { "on", "keyword" }, + { "true", "literal" }, + { "scalar", "keyword" }, + { "implements", "keyword" }, + { "extend", "keyword2" }, + { "enum", "keyword" }, + { "schema", "keyword" }, + { "mutation", "keyword" }, + { "query", "keyword" }, + { "directive", "keyword" }, + { "union", "keyword" }, + { "input", "keyword" }, + { "interface", "keyword" }, + { "extends", "keyword" }, + { "fragment", "keyword" }, + { "type", "keyword" }, + + }, + "#", + {} + + } ); +} + +}}}} // namespace EE::UI::Doc::Language diff --git a/src/eepp/ui/doc/languages/graphql.hpp b/src/eepp/ui/doc/languages/graphql.hpp new file mode 100644 index 000000000..deab3a78f --- /dev/null +++ b/src/eepp/ui/doc/languages/graphql.hpp @@ -0,0 +1,10 @@ +#ifndef EE_UI_DOC_Graphql +#define EE_UI_DOC_Graphql + +namespace EE { namespace UI { namespace Doc { namespace Language { + +extern void addGraphQL(); + +}}}} // namespace EE::UI::Doc::Language + +#endif diff --git a/src/eepp/ui/doc/languages/moonscript.cpp b/src/eepp/ui/doc/languages/moonscript.cpp new file mode 100644 index 000000000..85259c6b7 --- /dev/null +++ b/src/eepp/ui/doc/languages/moonscript.cpp @@ -0,0 +1,54 @@ +#include +#include + +namespace EE { namespace UI { namespace Doc { namespace Language { + +void addMoonscript() { + + SyntaxDefinitionManager::instance()->add( + + { "MoonScript", + { "%.moon$" }, + { + { { "\"", "\"", "\\" }, "string" }, + { { "'", "'", "\\" }, "string" }, + { { "%[%[", "%]%]" }, "string" }, + { { "%-%-.-\n" }, "comment" }, + { { "-?0x%x+" }, "number" }, + { { "-?%d+[%d%.eE]*" }, "number" }, + { { "-?%.?%d+" }, "number" }, + { { "%.%.%.?" }, "keyword2" }, + { { "[<>~=]=" }, "keyword2" }, + { { "[%+%-=/%*%^%%#<>]" }, "keyword2" }, + { { "[%a_][%w_]*%s*%f[(\"{]" }, "function" }, + { { "[%a_][%w_]*" }, "symbol" }, + { { "\\", "[%a_][%w_]*" }, "function" }, + { { "%.", "[%a_][%w_]*" }, "function" }, + { { "@", "[%a_][%w_]*" }, "keyword2" }, + { { "!" }, "keyword2" }, + { { "[%p]" }, "keyword" }, + { { "%s+" }, "normal" }, + { { "%w+%f[%s]" }, "normal" }, + + }, + { + { "elseif", "keyword" }, { "in", "keyword" }, { "then", "keyword" }, + { "and", "keyword" }, { "continue", "keyword" }, { "unless", "keyword" }, + { "switch", "keyword" }, { "using", "keyword" }, { "return", "keyword" }, + { "import", "keyword" }, { "as", "keyword" }, { "class", "keyword" }, + { "super", "keyword2" }, { "extends", "keyword" }, { "with", "keyword" }, + { "false", "literal" }, { "for", "keyword" }, { "while", "keyword" }, + { "from", "keyword" }, { "self", "keyword2" }, { "true", "literal" }, + { "else", "keyword" }, { "nil", "literal" }, { "not", "keyword" }, + { "when", "keyword" }, { "break", "keyword" }, { "#", "keyword2" }, + { "or", "keyword" }, { "if", "keyword" }, { "export", "keyword" }, + { "->", "keyword" }, { "do", "keyword" }, + + }, + "--", + {} + + } ); +} + +}}}} // namespace EE::UI::Doc::Language diff --git a/src/eepp/ui/doc/languages/moonscript.hpp b/src/eepp/ui/doc/languages/moonscript.hpp new file mode 100644 index 000000000..4b147d46f --- /dev/null +++ b/src/eepp/ui/doc/languages/moonscript.hpp @@ -0,0 +1,10 @@ +#ifndef EE_UI_DOC_Moonscript +#define EE_UI_DOC_Moonscript + +namespace EE { namespace UI { namespace Doc { namespace Language { + +extern void addMoonscript(); + +}}}} // namespace EE::UI::Doc::Language + +#endif diff --git a/src/eepp/ui/doc/syntaxdefinitionmanager.cpp b/src/eepp/ui/doc/syntaxdefinitionmanager.cpp index 54fc1bd5a..8ea152669 100644 --- a/src/eepp/ui/doc/syntaxdefinitionmanager.cpp +++ b/src/eepp/ui/doc/syntaxdefinitionmanager.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -25,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -1680,7 +1682,7 @@ SyntaxDefinitionManager::SyntaxDefinitionManager() { if ( ms_singleton == nullptr ) ms_singleton = this; - mDefinitions.reserve( 81 ); + mDefinitions.reserve( 83 ); // Register some languages support. addPlainText(); @@ -1705,6 +1707,7 @@ SyntaxDefinitionManager::SyntaxDefinitionManager() { addGDScript(); addGLSL(); addGo(); + addGraphQL(); addHaskell(); addHare(); addHaxe(); @@ -1726,6 +1729,7 @@ SyntaxDefinitionManager::SyntaxDefinitionManager() { addMakefile(); addMarkdown(); addMeson(); + addMoonscript(); addNelua(); addNim(); addObjeck(); diff --git a/src/eepp/ui/doc/syntaxtokenizer.cpp b/src/eepp/ui/doc/syntaxtokenizer.cpp index a458f4d55..c8cb4a8ba 100644 --- a/src/eepp/ui/doc/syntaxtokenizer.cpp +++ b/src/eepp/ui/doc/syntaxtokenizer.cpp @@ -285,6 +285,8 @@ _tokenize( const SyntaxDefinition& syntax, const std::string& text, const Syntax for ( size_t curMatch = 1; curMatch < numMatches; curMatch++ ) { start = matches[curMatch].start; end = matches[curMatch].end; + if ( start == end && matches[curMatch - 1].end == start ) + continue; if ( pattern.patterns.size() >= 3 && i > 0 && text[i - 1] == pattern.patterns[2][0] ) continue; diff --git a/src/tools/ecode/plugins/git/gitplugin.cpp b/src/tools/ecode/plugins/git/gitplugin.cpp index 5234153b9..6c197f0bb 100644 --- a/src/tools/ecode/plugins/git/gitplugin.cpp +++ b/src/tools/ecode/plugins/git/gitplugin.cpp @@ -1007,7 +1007,7 @@ void GitPlugin::discard( const std::vector& files ) { [this, files]() { return mGit->restore( fixFilePaths( files ), mGit->repoPath( files[0] ) ); }, - true, false ); + true, true ); } ); msgBox->setCloseShortcut( { KEY_ESCAPE, KEYMOD_NONE } ); msgBox->setTitle( i18n( "git_confirm", "Confirm" ) ); @@ -1026,7 +1026,7 @@ void GitPlugin::discard( const std::string& file ) { msgBox->on( Event::OnConfirm, [this, file]( auto ) { runAsync( [this, file]() { return mGit->restore( fixFilePath( file ), mGit->repoPath( file ) ); }, - true, false ); + true, true ); } ); msgBox->setCloseShortcut( { KEY_ESCAPE, KEYMOD_NONE } ); msgBox->setTitle( i18n( "git_confirm", "Confirm" ) ); diff --git a/src/tools/ecode/universallocator.cpp b/src/tools/ecode/universallocator.cpp index dc13d0a46..99b2951c1 100644 --- a/src/tools/ecode/universallocator.cpp +++ b/src/tools/ecode/universallocator.cpp @@ -764,10 +764,10 @@ void UniversalLocator::updateSwitchFileTypeTable() { ->getDocumentRef() ->getSyntaxDefinition() .getLanguageName() ); - mLocateTable->getSelection().set( idx.isValid() ? idx - : mLocateTable->getModel()->index( 0 ) ); + mLocateTable->setSelection( idx.isValid() ? idx : mLocateTable->getModel()->index( 0 ) ); + } else { + mLocateTable->scrollToTop(); } - mLocateTable->scrollToTop(); mLocateTable->setColumnsVisible( { 0 } ); }