v1.0.1-SNAPSHOT: named args in calls
This commit is contained in:
1 parent
d6e6d68b18
commit
2d721101dd
14 files changed
+695
-170
No files matched your search
@@ -25,6 +25,7 @@ Files
|
||||
- Operators including ranges (`..`, `..<`, `...`), null-safe (`?.`, `?[`, `?(`, `?{`, `?:`, `??`), arrows (`->`, `=>`, `::`), match operators (`=~`, `!~`), bitwise, arithmetic, etc.
|
||||
- Shuttle operator `<=>`
|
||||
- Division operator `/` (note: Lyng has no regex literal syntax; `/` is always division)
|
||||
- Named arguments at call sites `name: value` (the `name` part is highlighted as `variable.parameter.named.lyng` and the `:` as punctuation). The rule is anchored to `(` or `,` and excludes `::` to avoid conflicts.
|
||||
|
||||
Install in IntelliJ IDEA (and other JetBrains IDEs)
|
||||
---------------------------------------------------
|
||||
@@ -56,6 +57,7 @@ Notes and limitations
|
||||
---------------------
|
||||
- Type highlighting is heuristic (Capitalized identifiers). The IntelliJ plugin will use language semantics and avoid false positives.
|
||||
- If your language adds or changes tokens, please update patterns in `lyng.tmLanguage.json`. The Kotlin sources in `lynglib/src/commonMain/kotlin/net/sergeych/lyng/highlight/` are a good reference for token kinds.
|
||||
- Labels `name:` at statement level remain supported and are kept distinct from named call arguments by context. The grammar prefers named-argument matching when a `name:` appears right after `(` or `,`.
|
||||
|
||||
Lyng specifics
|
||||
--------------
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "lyng-textmate",
|
||||
"displayName": "Lyng",
|
||||
"description": "TextMate grammar for the Lyng language (for JetBrains IDEs via TextMate Bundles and VS Code).",
|
||||
"version": "0.0.2",
|
||||
"version": "0.0.3",
|
||||
"publisher": "lyng",
|
||||
"license": "Apache-2.0",
|
||||
"engines": { "vscode": "^1.0.0" },
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
{ "include": "#keywords" },
|
||||
{ "include": "#constants" },
|
||||
{ "include": "#types" },
|
||||
{ "include": "#namedArgs" },
|
||||
{ "include": "#annotations" },
|
||||
{ "include": "#labels" },
|
||||
{ "include": "#directives" },
|
||||
@@ -41,6 +42,18 @@
|
||||
]
|
||||
},
|
||||
"annotations": { "patterns": [ { "name": "entity.name.label.at.lyng", "match": "@[\\p{L}_][\\p{L}\\p{N}_]*:" }, { "name": "storage.modifier.annotation.lyng", "match": "@[\\p{L}_][\\p{L}\\p{N}_]*" } ] },
|
||||
"namedArgs": {
|
||||
"patterns": [
|
||||
{
|
||||
"name": "meta.argument.named.lyng",
|
||||
"match": "(?:(?<=\\()|(?<=,))\\s*([\\p{L}_][\\p{L}\\p{N}_]*)\\s*(:)(?!:)",
|
||||
"captures": {
|
||||
"1": { "name": "variable.parameter.named.lyng" },
|
||||
"2": { "name": "punctuation.separator.colon.lyng" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"labels": { "patterns": [ { "name": "entity.name.label.lyng", "match": "[\\p{L}_][\\p{L}\\p{N}_]*:" } ] },
|
||||
"directives": { "patterns": [ { "name": "meta.directive.lyng", "match": "^\\s*#[_A-Za-z][_A-Za-z0-9]*" } ] },
|
||||
"declarations": { "patterns": [ { "name": "meta.function.declaration.lyng", "match": "\\b(?:fun|fn)\\s+([\\p{L}_][\\p{L}\\p{N}_]*)", "captures": { "1": { "name": "entity.name.function.lyng" } } }, { "name": "meta.type.declaration.lyng", "match": "\\b(?:class|enum)\\s+([\\p{L}_][\\p{L}\\p{N}_]*)", "captures": { "1": { "name": "entity.name.type.lyng" } } }, { "name": "meta.variable.declaration.lyng", "match": "\\b(?:val|var)\\s+([\\p{L}_][\\p{L}\\p{N}_]*)", "captures": { "1": { "name": "variable.other.declaration.lyng" } } } ] },
|
||||
|
||||
Reference in new issue
Block a user