ecode: TSX and JSX support improvements.

This commit is contained in:
Martín Lucas Golini
2023-05-22 23:28:16 -03:00
parent d4091a2adf
commit d368065efd
5 changed files with 227 additions and 14 deletions

View File

@@ -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",

View File

@@ -89,6 +89,8 @@ class EE_API SyntaxDefinition {
std::vector<SyntaxPattern> getPatternsOfType( const std::string& type ) const;
SyntaxDefinition& setFileTypes( const std::vector<std::string>& types );
protected:
std::string mLanguageName;
String::HashType mLanguageId;

View File

@@ -46,6 +46,11 @@ std::vector<SyntaxPattern> SyntaxDefinition::getPatternsOfType( const std::strin
return patterns;
}
SyntaxDefinition& SyntaxDefinition::setFileTypes( const std::vector<std::string>& types ) {
mFiles = types;
return *this;
}
const std::vector<SyntaxPattern>& SyntaxDefinition::getPatterns() const {
return mPatterns;
}

View File

@@ -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" },
},
"//",
} );