From 3fe08dd1d7d3bcf6977d96e399bf5d257ff41663 Mon Sep 17 00:00:00 2001
From: Sainan <63328889+Sainan@users.noreply.github.com>
Date: Sun, 24 Aug 2025 06:01:15 +0200
Subject: [PATCH] Highlight type hints for multiple return values
---
Pluto.tmbundle/Syntaxes/Pluto.tmLanguage | 14 +++++++-------
test.js | 13 +++++++++++++
2 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage b/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage
index 036ef1a..390bb2a 100644
--- a/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage
+++ b/Pluto.tmbundle/Syntaxes/Pluto.tmLanguage
@@ -56,7 +56,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
@@ -122,7 +122,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
@@ -625,7 +625,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
@@ -1428,7 +1428,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
@@ -1521,7 +1521,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
@@ -1572,7 +1572,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
@@ -1648,7 +1648,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
diff --git a/test.js b/test.js
index 0f8076f..a72b42b 100644
--- a/test.js
+++ b/test.js
@@ -189,6 +189,19 @@ async function main()
` - punctuation.section.group.end.pluto`
);
+ checkClassification(
+ `local function f(): (bool, int)`,
+ `----- storage.modifier.pluto`,
+ ` -------- storage.type.function.pluto`,
+ ` - meta.function.pluto`,
+ ` - entity.name.function.pluto`,
+ ` - punctuation.section.group.begin.pluto`,
+ ` - punctuation.section.group.end.pluto`,
+ ` - punctuation.separator.colon.pluto`,
+ ` - meta.function.pluto`,
+ ` ----------- storage.type.primitive.pluto`
+ );
+
checkClassification(
`$type StringOrNumber = string|number`,
`----- storage.type.named.pluto`,