From d368065efd24bffdf588245f054dde3c0fe8ebac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Mon, 22 May 2023 23:28:16 -0300 Subject: [PATCH] ecode: TSX and JSX support improvements. --- bin/assets/plugins/lspclient.json | 16 +- include/eepp/ui/doc/syntaxdefinition.hpp | 2 + src/eepp/ui/doc/syntaxdefinition.cpp | 5 + src/eepp/ui/doc/syntaxdefinitionmanager.cpp | 216 ++++++++++++++++++-- src/thirdparty/efsw | 2 +- 5 files changed, 227 insertions(+), 14 deletions(-) diff --git a/bin/assets/plugins/lspclient.json b/bin/assets/plugins/lspclient.json index 142d40fb0..422817ade 100644 --- a/bin/assets/plugins/lspclient.json +++ b/bin/assets/plugins/lspclient.json @@ -7,8 +7,9 @@ "name": "typescript-language-server", "url": "https://github.com/theia-ide/typescript-language-server", "command": "typescript-language-server --stdio", - "file_patterns": ["%.ts$", "%.tsx$"], + "file_patterns": ["%.ts$"], "rootIndicationFileNames": ["package.json", "package-lock.json"], + "share_process": true, "initializationOptions": { "preferences": { "allowIncompleteCompletions": true, @@ -29,11 +30,24 @@ } } }, + { + "language": "tsx", + "use": "typescript-language-server", + "share_process": true, + "file_patterns": ["%.tsx$"] + }, { "language": "javascript", "use": "typescript-language-server", + "share_process": true, "file_patterns": ["%.js$"] }, + { + "language": "jsx", + "use": "typescript-language-server", + "share_process": true, + "file_patterns": ["%.jsx$"] + }, { "language": "go", "name": "gopls", diff --git a/include/eepp/ui/doc/syntaxdefinition.hpp b/include/eepp/ui/doc/syntaxdefinition.hpp index 4db18c104..6bafa93c7 100644 --- a/include/eepp/ui/doc/syntaxdefinition.hpp +++ b/include/eepp/ui/doc/syntaxdefinition.hpp @@ -89,6 +89,8 @@ class EE_API SyntaxDefinition { std::vector getPatternsOfType( const std::string& type ) const; + SyntaxDefinition& setFileTypes( const std::vector& types ); + protected: std::string mLanguageName; String::HashType mLanguageId; diff --git a/src/eepp/ui/doc/syntaxdefinition.cpp b/src/eepp/ui/doc/syntaxdefinition.cpp index 5a0d5a148..afbaccc13 100644 --- a/src/eepp/ui/doc/syntaxdefinition.cpp +++ b/src/eepp/ui/doc/syntaxdefinition.cpp @@ -46,6 +46,11 @@ std::vector SyntaxDefinition::getPatternsOfType( const std::strin return patterns; } +SyntaxDefinition& SyntaxDefinition::setFileTypes( const std::vector& types ) { + mFiles = types; + return *this; +} + const std::vector& SyntaxDefinition::getPatterns() const { return mPatterns; } diff --git a/src/eepp/ui/doc/syntaxdefinitionmanager.cpp b/src/eepp/ui/doc/syntaxdefinitionmanager.cpp index 9b2c9f4a4..551a90c0b 100644 --- a/src/eepp/ui/doc/syntaxdefinitionmanager.cpp +++ b/src/eepp/ui/doc/syntaxdefinitionmanager.cpp @@ -441,7 +441,9 @@ static void addJavaScript() { { { { "//.-\n" }, "comment" }, { { "/%*", "%*/" }, "comment" }, - { { "/[%+%-%*%^%!%=%&%|%?%:%;%,%(%[%{%<%>%\\]", "/[igm]?", "\\" }, "string" }, + { { "/[%+%-%*%^%!%=%&%|%?%:%;%,%(%[%{%<%>%\\]", "/[igmsuyd][igmsuyd]?[igmsuyd]?", + "\\" }, + "string" }, { { "\"", "\"", "\\" }, "string" }, { { "'", "'", "\\" }, "string" }, { { "`", "`", "\\" }, "string" }, @@ -502,13 +504,15 @@ static void addJSON() { } static void addTypeScript() { - SyntaxDefinitionManager::instance()->add( + SyntaxDefinition& ts = SyntaxDefinitionManager::instance()->add( { "TypeScript", - { "%.ts$", "%.tsx$", "%.d.ts$" }, + { "%.ts$", "%.d.ts$" }, { { { "//.-\n" }, "comment" }, { { "/%*", "%*/" }, "comment" }, - { { "/[%+%-%*%^%!%=%&%|%?%:%;%,%(%[%{%<%>%\\]", "/[igm]?", "\\" }, "string" }, + { { "/[%+%-%*%^%!%=%&%|%?%:%;%,%(%[%{%<%>%\\]", "/[igmsuyd][igmsuyd]?[igmsuyd]?", + "\\" }, + "string" }, { { "\"", "\"", "\\" }, "string" }, { { "'", "'", "\\" }, "string" }, { { "`", "`", "\\" }, "string" }, @@ -516,6 +520,8 @@ static void addTypeScript() { { { "-?%d+[%d%.eE]*" }, "number" }, { { "-?%.?%d+" }, "number" }, { { "[%+%-=/%*%^%%<>!~|&]" }, "operator" }, + { { "(interface%s)([%a_][%w_]*)" }, { "normal", "keyword", "keyword2" } }, + { { "(type%s)([%a_][%w_]*)" }, { "normal", "keyword", "keyword2" } }, { { "[%a_][%w_$]*%f[(]" }, "function" }, { { "[%a_][%w_]*" }, "symbol" }, }, @@ -542,6 +548,12 @@ static void addTypeScript() { { "var", "keyword" }, { "void", "keyword" }, { "while", "keyword" }, { "with", "keyword" }, { "yield", "keyword" }, { "unknown", "keyword2" } }, "//" } ); + + SyntaxDefinition tsx( ts ); + tsx.setLanguageName( "TSX" ); + tsx.setFileTypes( { "%.tsx$" } ); + tsx.addPatternToFront( { { "return%s+%(", "%s*);" }, "keyword", "HTML" } ); + SyntaxDefinitionManager::instance()->add( std::move( tsx ) ); } static void addPython() { @@ -2688,6 +2700,7 @@ static void addJSX() { { "JSX", { "%.jsx$" }, { + { { "return%s+%(", "%s*);" }, "keyword", "HTML" }, { { "//.-\n" }, "comment" }, { { "/%*", "%*/" }, "comment" }, { { "\"", "\"", "\\" }, "string" }, @@ -3147,7 +3160,6 @@ static void addSass() { { { "'", "'", "\\" }, "string" }, { { "$%w+" }, "keyword" }, { { "@%w+" }, "literal" }, - { { "[#,]%w+" }, "function" }, { { "&" }, "keyword2" }, { { "[:%/%*%-]" }, "operator" }, { { "[%a][%w-]*%s*%f[:]" }, "keyword2" }, @@ -3155,16 +3167,196 @@ static void addSass() { { { "-?%d+[%d%.]*deg" }, "number" }, { { "-?%d+[%d%.]*[s%%]" }, "number" }, { { "-?%d+[%d%.]*" }, "number" }, + { { "^%s*#[%a%_%-][%w%_%-]*" }, "keyword2" }, + { { ",%s*#[%a%_%-][%w%_%-]*" }, "keyword2" }, + { { "#%x%x?%x?%x?%x?%x?%x?%x?" }, "string" }, + { { "#[%a%_%-][%w%_%-]*" }, "keyword2" }, + { { "%-%-%a[%w%-%_]*" }, "keyword2" }, + { { "-?%d+[%d%.]*p[xt]" }, "number" }, + { { "-?%d+[%d%.]*deg" }, "number" }, + { { "-?%d+[%d%.]*" }, "number" }, + { { "@[%a][%w%_%-]*" }, "keyword2" }, + { { "%.[%a%_%-][%w%_%-]*" }, "keyword2" }, + { { "(:)(hover)" }, { "normal", "operator", "literal" } }, + { { "(:)(focus%-within)" }, { "normal", "operator", "literal" } }, + { { "(:)(focus)" }, { "normal", "operator", "literal" } }, + { { "(:)(selected)" }, { "normal", "operator", "literal" } }, + { { "(:)(pressed)" }, { "normal", "operator", "literal" } }, + { { "(:)(disabled)" }, { "normal", "operator", "literal" } }, + { { "(:)(checked)" }, { "normal", "operator", "literal" } }, + { { "(:)(root)" }, { "normal", "operator", "link" } }, + { { "(%a+)(%()" }, { "normal", "function", "normal" } }, + { { "[%a][%w-]*%s*%f[:]" }, "keyword" }, + { { "[{}:>~!]" }, "operator" }, + { { "[#,]%w+" }, "function" }, { { "[%a_][%w_]*" }, "symbol" }, }, { - { "transparent", "literal" }, { "none", "literal" }, { "absolute", "literal" }, - { "relative", "literal" }, { "solid", "literal" }, { "flex", "literal" }, - { "flex-start", "literal" }, { "flex-end", "literal" }, { "row", "literal" }, - { "center", "literal" }, { "column", "literal" }, { "pointer", "literal" }, - { "ease", "literal" }, { "white", "function" }, { "black", "function" }, - { "gray", "function" }, { "blue", "function" }, { "red", "function" }, - { "purple", "function" }, { "green", "function" }, { "yellow", "function" }, + { "true", "literal" }, + { "false", "literal" }, + { "transparent", "literal" }, + { "none", "literal" }, + { "center", "literal" }, + { "arrow", "literal" }, + { "hand", "literal" }, + { "ibeam", "literal" }, + { "wait", "literal" }, + { "crosshair", "literal" }, + { "waitarrow", "literal" }, + { "sizenwse", "literal" }, + { "sizenesw", "literal" }, + { "sizewe", "literal" }, + { "sizens", "literal" }, + { "sizeall", "literal" }, + { "nocursor", "literal" }, + { "important", "literal" }, + { "aliceblue", "literal" }, + { "antiquewhite", "literal" }, + { "aqua", "literal" }, + { "aquamarine", "literal" }, + { "azure", "literal" }, + { "beige", "literal" }, + { "bisque", "literal" }, + { "black", "literal" }, + { "blanchedalmond", "literal" }, + { "blue", "literal" }, + { "blueviolet", "literal" }, + { "brown", "literal" }, + { "burlywood", "literal" }, + { "cadetblue", "literal" }, + { "chartreuse", "literal" }, + { "chocolate", "literal" }, + { "coral", "literal" }, + { "cornflowerblue", "literal" }, + { "cornsilk", "literal" }, + { "crimson", "literal" }, + { "cyan", "literal" }, + { "darkblue", "literal" }, + { "darkcyan", "literal" }, + { "darkgoldenrod", "literal" }, + { "darkgray", "literal" }, + { "darkgreen", "literal" }, + { "darkgrey", "literal" }, + { "darkkhaki", "literal" }, + { "darkmagenta", "literal" }, + { "darkolivegreen", "literal" }, + { "darkorange", "literal" }, + { "darkorchid", "literal" }, + { "darkred", "literal" }, + { "darksalmon", "literal" }, + { "darkseagreen", "literal" }, + { "darkslateblue", "literal" }, + { "darkslategray", "literal" }, + { "darkslategrey", "literal" }, + { "darkturquoise", "literal" }, + { "darkviolet", "literal" }, + { "deeppink", "literal" }, + { "deepskyblue", "literal" }, + { "dimgray", "literal" }, + { "dimgrey", "literal" }, + { "dodgerblue", "literal" }, + { "firebrick", "literal" }, + { "floralwhite", "literal" }, + { "forestgreen", "literal" }, + { "fuchsia", "literal" }, + { "gainsboro", "literal" }, + { "ghostwhite", "literal" }, + { "gold", "literal" }, + { "goldenrod", "literal" }, + { "gray", "literal" }, + { "green", "literal" }, + { "greenyellow", "literal" }, + { "grey", "literal" }, + { "honeydew", "literal" }, + { "hotpink", "literal" }, + { "indianred", "literal" }, + { "indigo", "literal" }, + { "ivory", "literal" }, + { "khaki", "literal" }, + { "lavender", "literal" }, + { "lavenderblush", "literal" }, + { "lawngreen", "literal" }, + { "lemonchiffon", "literal" }, + { "lightblue", "literal" }, + { "lightcoral", "literal" }, + { "lightcyan", "literal" }, + { "lightgoldenrodyellow", "literal" }, + { "lightgray", "literal" }, + { "lightgreen", "literal" }, + { "lightgrey", "literal" }, + { "lightpink", "literal" }, + { "lightsalmon", "literal" }, + { "lightseagreen", "literal" }, + { "lightskyblue", "literal" }, + { "lightslategray", "literal" }, + { "lightslategrey", "literal" }, + { "lightsteelblue", "literal" }, + { "lightyellow", "literal" }, + { "lime", "literal" }, + { "limegreen", "literal" }, + { "linen", "literal" }, + { "magenta", "literal" }, + { "maroon", "literal" }, + { "mediumaquamarine", "literal" }, + { "mediumblue", "literal" }, + { "mediumorchid", "literal" }, + { "mediumpurple", "literal" }, + { "mediumseagreen", "literal" }, + { "mediumslateblue", "literal" }, + { "mediumspringgreen", "literal" }, + { "mediumturquoise", "literal" }, + { "mediumvioletred", "literal" }, + { "midnightblue", "literal" }, + { "mintcream", "literal" }, + { "mistyrose", "literal" }, + { "moccasin", "literal" }, + { "navajowhite", "literal" }, + { "navy", "literal" }, + { "oldlace", "literal" }, + { "olive", "literal" }, + { "olivedrab", "literal" }, + { "orange", "literal" }, + { "orangered", "literal" }, + { "orchid", "literal" }, + { "palegoldenrod", "literal" }, + { "palegreen", "literal" }, + { "paleturquoise", "literal" }, + { "palevioletred", "literal" }, + { "papayawhip", "literal" }, + { "peachpuff", "literal" }, + { "peru", "literal" }, + { "pink", "literal" }, + { "plum", "literal" }, + { "powderblue", "literal" }, + { "purple", "literal" }, + { "red", "literal" }, + { "rosybrown", "literal" }, + { "royalblue", "literal" }, + { "saddlebrown", "literal" }, + { "salmon", "literal" }, + { "sandybrown", "literal" }, + { "seagreen", "literal" }, + { "seashell", "literal" }, + { "sienna", "literal" }, + { "silver", "literal" }, + { "skyblue", "literal" }, + { "slateblue", "literal" }, + { "slategray", "literal" }, + { "slategrey", "literal" }, + { "snow", "literal" }, + { "springgreen", "literal" }, + { "steelblue", "literal" }, + { "tan", "literal" }, + { "teal", "literal" }, + { "thistle", "literal" }, + { "tomato", "literal" }, + { "turquoise", "literal" }, + { "violet", "literal" }, + { "wheat", "literal" }, + { "white", "literal" }, + { "whitesmoke", "literal" }, + { "yellow", "literal" }, + { "yellowgreen", "literal" }, }, "//", } ); diff --git a/src/thirdparty/efsw b/src/thirdparty/efsw index 3fd18f71b..5d0fa1b41 160000 --- a/src/thirdparty/efsw +++ b/src/thirdparty/efsw @@ -1 +1 @@ -Subproject commit 3fd18f71b50befb8b1b3e221eceefc55500a2e75 +Subproject commit 5d0fa1b4103ddb091ab418566e6220b2faec7260