From f5b882c9a360a0bca1ff4e176f78060aa797690d Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:23:41 +0200 Subject: [PATCH 1/4] Add support for $type named types --- Pluto.tmbundle/Syntaxes/Pluto.tmLanguage | 183 +++++++++++++++++++++-- test.js | 76 ++++++++++ visual-check.pluto | 14 +- 3 files changed, 252 insertions(+), 21 deletions(-) diff --git a/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage b/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage index aa38e29..ad39a5e 100644 --- a/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage +++ b/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage @@ -212,17 +212,60 @@ punctuation.separator.comma.pluto - - - match - \b(function)($|\s+)(?:[a-zA-Z_][a-zA-Z0-9_]*([.:]))?([a-zA-Z_][a-zA-Z0-9_]*)? - captures - - 1 - - name - storage.type.function.pluto - + + + begin + (\$type)\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*(=) + beginCaptures + + 1 + + name + storage.type.named.pluto + + 2 + + name + entity.name.type.pluto + + 3 + + name + keyword.operator.assignment.pluto + + + end + (?=$) + name + meta.type.named.pluto + patterns + + + include + #function_type_no_colon + + + include + #table_type_no_colon + + + match + \??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\?? + name + storage.type.primitive.pluto + + + + + match + \b(function)($|\s+)(?:[a-zA-Z_][a-zA-Z0-9_]*([.:]))?([a-zA-Z_][a-zA-Z0-9_]*)? + captures + + 1 + + name + storage.type.function.pluto + 2 name @@ -1419,8 +1462,8 @@ - function_type_params - + function_type_params + patterns @@ -1469,9 +1512,117 @@ meta.typehint.pluto - - string_inner - + + function_type_no_colon + + begin + (function)\s*(?=\() + beginCaptures + + 1 + + name + storage.type.function.pluto + + + end + (?=[,)=\}\]\|$]) + name + meta.typehint.function.pluto + patterns + + + begin + \( + beginCaptures + + 0 + + name + punctuation.section.group.begin.pluto + + + end + \) + endCaptures + + 0 + + name + punctuation.section.group.end.pluto + + + patterns + + + include + #function_type_params + + + + + include + #function_type + + + include + #table_type + + + match + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\??) + captures + + 1 + + name + punctuation.separator.colon.pluto + + 2 + + name + storage.type.primitive.pluto + + + name + meta.typehint.pluto + + + + table_type_no_colon + + begin + (\{) + beginCaptures + + 0 + + name + punctuation.section.table.begin.pluto + + + end + \} + endCaptures + + 0 + + name + punctuation.section.table.end.pluto + + + name + meta.typehint.table.pluto + patterns + + + include + #table_type_body + + + + string_inner + patterns diff --git a/test.js b/test.js index 13db4d2..f0af7d3 100644 --- a/test.js +++ b/test.js @@ -190,6 +190,82 @@ async function main() ` - punctuation.section.group.end.pluto` ); + checkClassification( + `$type StringOrNumber = string|number`, + `----- storage.type.named.pluto`, + ` - meta.type.named.pluto`, + ` -------------- entity.name.type.pluto`, + ` - meta.type.named.pluto`, + ` - keyword.operator.assignment.pluto`, + ` - meta.type.named.pluto`, + ` ------------- storage.type.primitive.pluto` + ); + checkClassification( + `$type Point = { x: number, y: number }`, + `----- storage.type.named.pluto`, + ` - meta.type.named.pluto`, + ` ----- entity.name.type.pluto`, + ` - meta.type.named.pluto`, + ` - keyword.operator.assignment.pluto`, + ` - meta.type.named.pluto`, + ` - punctuation.section.table.begin.pluto`, + ` - meta.typehint.table.pluto`, + ` - variable.other.field.pluto`, + ` - punctuation.separator.colon.pluto`, + ` - meta.typehint.pluto`, + ` ------ storage.type.primitive.pluto`, + ` - punctuation.separator.comma.pluto`, + ` - meta.typehint.table.pluto`, + ` - variable.other.field.pluto`, + ` - punctuation.separator.colon.pluto`, + ` - meta.typehint.pluto`, + ` ------ storage.type.primitive.pluto`, + ` - meta.typehint.table.pluto`, + ` - punctuation.section.table.end.pluto` + ); + checkClassification( + `$type Point = { x: number; y: number }`, + `----- storage.type.named.pluto`, + ` - meta.type.named.pluto`, + ` ----- entity.name.type.pluto`, + ` - meta.type.named.pluto`, + ` - keyword.operator.assignment.pluto`, + ` - meta.type.named.pluto`, + ` - punctuation.section.table.begin.pluto`, + ` - meta.typehint.table.pluto`, + ` - variable.other.field.pluto`, + ` - punctuation.separator.colon.pluto`, + ` - meta.typehint.pluto`, + ` ------ storage.type.primitive.pluto`, + ` - punctuation.terminator.semicolon.pluto`, + ` - meta.typehint.table.pluto`, + ` - variable.other.field.pluto`, + ` - punctuation.separator.colon.pluto`, + ` - meta.typehint.pluto`, + ` ------ storage.type.primitive.pluto`, + ` - meta.typehint.table.pluto`, + ` - punctuation.section.table.end.pluto` + ); + checkClassification( + `$type Callback = function(a: string): int`, + `----- storage.type.named.pluto`, + ` - meta.type.named.pluto`, + ` -------- entity.name.type.pluto`, + ` - meta.type.named.pluto`, + ` - keyword.operator.assignment.pluto`, + ` - meta.type.named.pluto`, + ` -------- storage.type.function.pluto`, + ` - punctuation.section.group.begin.pluto`, + ` - variable.parameter.function.pluto`, + ` - punctuation.separator.colon.pluto`, + ` - meta.typehint.pluto`, + ` ------ storage.type.primitive.pluto`, + ` - punctuation.section.group.end.pluto`, + ` - punctuation.separator.colon.pluto`, + ` - meta.typehint.pluto`, + ` --- storage.type.primitive.pluto` + ); + const langConfig = JSON.parse( fs.readFileSync(path.join(__dirname, "language-config.json"), "utf8").replace(/\/\/.*$/gm, "") ); diff --git a/visual-check.pluto b/visual-check.pluto index 0cf329a..bffddaf 100644 --- a/visual-check.pluto +++ b/visual-check.pluto @@ -1,8 +1,12 @@ - -class Human extends Entity - static function sayHello() - end -end +$type StringOrNumber = string|number +$type Point = { x: number, y: number } +$type Point = { x: number; y: number } +$type Callback = function(a: string): int + +class Human extends Entity + static function sayHello() + end +end local h = new Human(1 + 2); print(h.name .. "\n"); h:sayHello() From 1227bd707e0c5093151c6592fe0b5a25b1cb352b Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:52:19 +0200 Subject: [PATCH 2/4] Highlight named type references --- Pluto.tmbundle/Syntaxes/Pluto.tmLanguage | 22 +++++++++++----------- test.js | 7 ++++++- visual-check.pluto | 1 + 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage b/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage index ad39a5e..2ae599c 100644 --- a/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage +++ b/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage @@ -51,7 +51,7 @@ end - (\))(?:(:)\s+(void|\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|\{[^}]*\})\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|\{[^}]*\})\??))?(\s*<nodiscard>)? + (\))(?:(:)\s+(void|\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*|\{[^}]*\})\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*|\{[^}]*\})\??))?(\s*<nodiscard>)? endCaptures 1 @@ -117,7 +117,7 @@ match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\??) + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) captures 1 @@ -250,7 +250,7 @@ match - \??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\?? + \??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\?? name storage.type.primitive.pluto @@ -620,7 +620,7 @@ match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\??) + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) captures 1 @@ -778,7 +778,7 @@ match - \b(?<!\.)(local|global)\s+(?!class)(?!pluto_class)(?!function)(?:(and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|pluto_use|pluto_switch|pluto_continue|pluto_enum|pluto_new|pluto_class|pluto_export|pluto_try|pluto_catch|switch|continue|enum|new|class|export|try|catch|return|then|true|until|while)\b|\w+)(?:\s*(:)\s+(?!function\s*\()(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\??))?(?!\s*=\s*\|[a-zA-Z0-9_,\s]*\|\s*->) + \b(?<!\.)(local|global)\s+(?!class)(?!pluto_class)(?!function)(?:(and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|pluto_use|pluto_switch|pluto_continue|pluto_enum|pluto_new|pluto_class|pluto_export|pluto_try|pluto_catch|switch|continue|enum|new|class|export|try|catch|return|then|true|until|while)\b|\w+)(?:\s*(:)\s+(?!function\s*\()(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??))?(?!\s*=\s*\|[a-zA-Z0-9_,\s]*\|\s*->) captures 1 @@ -1350,7 +1350,7 @@ match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\??) + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) captures 1 @@ -1399,7 +1399,7 @@ end - (?=[,)=\}\]\|$]) + (?=[,)=\}\]\|\s]|$) name meta.typehint.function.pluto patterns @@ -1443,7 +1443,7 @@ match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\??) + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) captures 1 @@ -1494,7 +1494,7 @@ match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\??) + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) captures 1 @@ -1526,7 +1526,7 @@ end - (?=[,)=\}\]\|$]) + (?=[,)=\}\]\|\s]|$) name meta.typehint.function.pluto patterns @@ -1570,7 +1570,7 @@ match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil)\??) + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) captures 1 diff --git a/test.js b/test.js index f0af7d3..e5f8f7d 100644 --- a/test.js +++ b/test.js @@ -163,7 +163,6 @@ async function main() ` - punctuation.separator.colon.pluto`, ` - meta.typehint.pluto`, ` --- storage.type.primitive.pluto`, - ` - meta.typehint.function.pluto`, ` - keyword.operator.assignment.pluto` ); @@ -265,6 +264,12 @@ async function main() ` - meta.typehint.pluto`, ` --- storage.type.primitive.pluto` ); + checkClassification( + `local f: Callback`, + `----- storage.modifier.pluto`, + ` - punctuation.separator.colon.pluto`, + ` -------- storage.type.primitive.pluto` + ); const langConfig = JSON.parse( fs.readFileSync(path.join(__dirname, "language-config.json"), "utf8").replace(/\/\/.*$/gm, "") diff --git a/visual-check.pluto b/visual-check.pluto index bffddaf..ab4e677 100644 --- a/visual-check.pluto +++ b/visual-check.pluto @@ -2,6 +2,7 @@ $type StringOrNumber = string|number $type Point = { x: number, y: number } $type Point = { x: number; y: number } $type Callback = function(a: string): int +local f: Callback class Human extends Entity static function sayHello() From 6ffed72b2cc1c5b80a8e5e1bf91e09cb749353be Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:54:08 +0200 Subject: [PATCH 3/4] Revert visual-check.pluto --- visual-check.pluto | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/visual-check.pluto b/visual-check.pluto index ab4e677..0cf329a 100644 --- a/visual-check.pluto +++ b/visual-check.pluto @@ -1,13 +1,8 @@ -$type StringOrNumber = string|number -$type Point = { x: number, y: number } -$type Point = { x: number; y: number } -$type Callback = function(a: string): int -local f: Callback - -class Human extends Entity - static function sayHello() - end -end + +class Human extends Entity + static function sayHello() + end +end local h = new Human(1 + 2); print(h.name .. "\n"); h:sayHello() From 6f21b22baef91edafc90701e56080ca870332848 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:54:26 +0200 Subject: [PATCH 4/4] Reindent --- Pluto.tmbundle/Syntaxes/Pluto.tmLanguage | 350 +++++++++++------------ 1 file changed, 175 insertions(+), 175 deletions(-) diff --git a/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage b/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage index 2ae599c..372f956 100644 --- a/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage +++ b/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage @@ -51,7 +51,7 @@ end - (\))(?:(:)\s+(void|\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*|\{[^}]*\})\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*|\{[^}]*\})\??))?(\s*<nodiscard>)? + (\))(?:(:)\s+(void|\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*|\{[^}]*\})\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*|\{[^}]*\})\??))?(\s*<nodiscard>)? endCaptures 1 @@ -117,7 +117,7 @@ match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) captures 1 @@ -212,60 +212,60 @@ punctuation.separator.comma.pluto - - - begin - (\$type)\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*(=) - beginCaptures - - 1 - - name - storage.type.named.pluto - - 2 - - name - entity.name.type.pluto - - 3 - - name - keyword.operator.assignment.pluto - - - end - (?=$) - name - meta.type.named.pluto - patterns - - - include - #function_type_no_colon - - - include - #table_type_no_colon - - - match - \??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\?? - name - storage.type.primitive.pluto - - - - - match - \b(function)($|\s+)(?:[a-zA-Z_][a-zA-Z0-9_]*([.:]))?([a-zA-Z_][a-zA-Z0-9_]*)? - captures - - 1 - - name - storage.type.function.pluto - + + + begin + (\$type)\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*(=) + beginCaptures + + 1 + + name + storage.type.named.pluto + + 2 + + name + entity.name.type.pluto + + 3 + + name + keyword.operator.assignment.pluto + + + end + (?=$) + name + meta.type.named.pluto + patterns + + + include + #function_type_no_colon + + + include + #table_type_no_colon + + + match + \??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\?? + name + storage.type.primitive.pluto + + + + + match + \b(function)($|\s+)(?:[a-zA-Z_][a-zA-Z0-9_]*([.:]))?([a-zA-Z_][a-zA-Z0-9_]*)? + captures + + 1 + + name + storage.type.function.pluto + 2 name @@ -620,7 +620,7 @@ match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) captures 1 @@ -778,7 +778,7 @@ match - \b(?<!\.)(local|global)\s+(?!class)(?!pluto_class)(?!function)(?:(and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|pluto_use|pluto_switch|pluto_continue|pluto_enum|pluto_new|pluto_class|pluto_export|pluto_try|pluto_catch|switch|continue|enum|new|class|export|try|catch|return|then|true|until|while)\b|\w+)(?:\s*(:)\s+(?!function\s*\()(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??))?(?!\s*=\s*\|[a-zA-Z0-9_,\s]*\|\s*->) + \b(?<!\.)(local|global)\s+(?!class)(?!pluto_class)(?!function)(?:(and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|pluto_use|pluto_switch|pluto_continue|pluto_enum|pluto_new|pluto_class|pluto_export|pluto_try|pluto_catch|switch|continue|enum|new|class|export|try|catch|return|then|true|until|while)\b|\w+)(?:\s*(:)\s+(?!function\s*\()(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??))?(?!\s*=\s*\|[a-zA-Z0-9_,\s]*\|\s*->) captures 1 @@ -1350,7 +1350,7 @@ match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) captures 1 @@ -1399,7 +1399,7 @@ end - (?=[,)=\}\]\|\s]|$) + (?=[,)=\}\]\|\s]|$) name meta.typehint.function.pluto patterns @@ -1443,7 +1443,7 @@ match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) captures 1 @@ -1462,8 +1462,8 @@ - function_type_params - + function_type_params + patterns @@ -1494,7 +1494,7 @@ match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) captures 1 @@ -1512,117 +1512,117 @@ meta.typehint.pluto - - function_type_no_colon - - begin - (function)\s*(?=\() - beginCaptures - - 1 - - name - storage.type.function.pluto - - - end - (?=[,)=\}\]\|\s]|$) - name - meta.typehint.function.pluto - patterns - - - begin - \( - beginCaptures - - 0 - - name - punctuation.section.group.begin.pluto - - - end - \) - endCaptures - - 0 - - name - punctuation.section.group.end.pluto - - - patterns - - - include - #function_type_params - - - - - include - #function_type - - - include - #table_type - - - match - (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) - captures - - 1 - - name - punctuation.separator.colon.pluto - - 2 - - name - storage.type.primitive.pluto - - - name - meta.typehint.pluto - - - - table_type_no_colon - - begin - (\{) - beginCaptures - - 0 - - name - punctuation.section.table.begin.pluto - - - end - \} - endCaptures - - 0 - - name - punctuation.section.table.end.pluto - - - name - meta.typehint.table.pluto - patterns - - - include - #table_type_body - - - - string_inner - + + function_type_no_colon + + begin + (function)\s*(?=\() + beginCaptures + + 1 + + name + storage.type.function.pluto + + + end + (?=[,)=\}\]\|\s]|$) + name + meta.typehint.function.pluto + patterns + + + begin + \( + beginCaptures + + 0 + + name + punctuation.section.group.begin.pluto + + + end + \) + endCaptures + + 0 + + name + punctuation.section.group.end.pluto + + + patterns + + + include + #function_type_params + + + + + include + #function_type + + + include + #table_type + + + match + (:)\s+(\??(?:(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\|)*(?:string|number|int|float|bool(?:ean)?|function|table|userdata|any|nil|[a-zA-Z_][a-zA-Z0-9_]*)\??) + captures + + 1 + + name + punctuation.separator.colon.pluto + + 2 + + name + storage.type.primitive.pluto + + + name + meta.typehint.pluto + + + + table_type_no_colon + + begin + (\{) + beginCaptures + + 0 + + name + punctuation.section.table.begin.pluto + + + end + \} + endCaptures + + 0 + + name + punctuation.section.table.end.pluto + + + name + meta.typehint.table.pluto + patterns + + + include + #table_type_body + + + + string_inner + patterns