Skip to content

Commit 7333eb9

Browse files
committed
fix(textmate): enhance variable assignment handling
1 parent 170c0af commit 7333eb9

File tree

2 files changed

+42
-14
lines changed

2 files changed

+42
-14
lines changed

syntaxes/robotframework.tmLanguage.json

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,29 @@
3838
"end": "^(?!(\\s*(\\.\\.\\.((( {2}| ?\\t)\\s*\\S.*)|(\\s*))?$))|(\\s*#.*$)|(\\s*$))",
3939
"patterns": [ { "include": "#arguments" } ]
4040
},
41+
"variable_assignment_index": {
42+
"name": "meta.variable.assign.index.robotframework",
43+
"contentName": "string.unquoted.argument.robotframework",
44+
"begin": "\\[",
45+
"end": "\\]",
46+
"beginCaptures": { "0": { "name": "punctuation.definition.variable.index.start.robotframework" } },
47+
"endCaptures": { "0": { "name": "punctuation.definition.variable.index.end.robotframework" } },
48+
"patterns": [
49+
{ "include": "#escape" },
50+
{ "include": "#variables" }
51+
]
52+
},
4153
"variable_assignment": {
4254
"name": "meta.variable.assign.robotframework",
4355
"contentName": "variable.name.readwrite.robotframework",
4456
"begin": "[$@&]\\{",
45-
"end": "(\\}( ?=)?)(?=( {2}| ?\\t| ?$))",
57+
"end": "(\\})((\\[.*\\]))*( ?=)?",
4658
"beginCaptures": { "0": { "name": "punctuation.definition.variable.begin.robotframework" } },
4759
"endCaptures": {
4860
"1": { "name": "punctuation.definition.variable.end.robotframework" },
49-
"2": { "name": "keyword.operator.robotframework" }
61+
"2": {
62+
"patterns": [ { "include": "#variable_assignment_index" } ] },
63+
"4": { "name": "keyword.operator.robotframework" }
5064
},
5165
"patterns": [ { "include": "#variables" } ]
5266
},
@@ -73,7 +87,7 @@
7387
"end": "\\}\\}",
7488
"beginCaptures": { "0": { "name": "punctuation.definition.expression.begin.robotframework" } },
7589
"endCaptures": { "0": { "name": "punctuation.definition.expression.end.robotframework" } },
76-
"patterns": [ { "include": "#variables" } ]
90+
"patterns": [ { "include": "#variables" }, { "include": "#expression" } ]
7791
},
7892
"embedded_argument": {
7993
"name": "meta.embedded_argument.robotframework",
@@ -394,14 +408,14 @@
394408
},
395409
"returning_keyword_call": {
396410
"name": "meta.returning-keyword-call.content.robotframework",
397-
"begin": "^(( {2}|\\t)(\\s*))([$&@]\\{(\\S+(?: \\S+)*)\\}(( ?=)?( {2}|\\t)(\\s*)))(.*?)(?= {2}| ?\\t| ?$)",
411+
"begin": "^(( {2}|\\t)(\\s*))(([$&@]\\{ ?(\\S+(?: \\S+)*) ?\\}((\\[( ?(\\S+(?: \\S+)*) ?)*\\])*( ?=)?( {2}|\\t)(\\s*)))+)(.*?)(?= {2}| ?\\t| ?$)",
398412
"end": "^(?!(\\s*(\\.\\.\\.((( {2}| ?\\t)\\s*\\S.*)|(\\s*))?$))|(\\s*#.*$)|(\\s*$))",
399413
"beginCaptures": {
400414
"4": {
401-
"name": "meta.returning-keyword-call.assign.robotframework",
415+
"name": "meta.returning-keyword-call.variables.robotframework",
402416
"patterns": [ { "include": "#variable_assignment" } ]
403417
},
404-
"10": {
418+
"14": {
405419
"name": "entity.name.function.keyword-call.robotframework",
406420
"patterns": [
407421
{ "include": "#escape" },
@@ -430,7 +444,7 @@
430444
},
431445
"var_statement": {
432446
"name": "meta.var-statement.robotframework",
433-
"begin": "^( {2}|\\t)(\\s*)(VAR)(( {2}|\\t)+(\\S.+?))?(?= {2}| ?\\t| ?$)",
447+
"begin": "^( {2}|\\t)(\\s*)(VAR)(( {2}|\\t)+(\\S.*?))?(?= {2}| ?\\t| ?$)",
434448
"end": "^(?!(\\s*(\\.\\.\\.((( {2}| ?\\t)\\s*\\S.*)|(\\s*))?$))|(\\s*#.*$)|(\\s*$))",
435449
"beginCaptures": {
436450
"3": { "name": "keyword.other.robotframework" },

syntaxes/robotframework.tmLanguage.template.json

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,29 @@
3838
"end": "^(?!(\\s*(\\.\\.\\.((( {2}| ?\\t)\\s*\\S.*)|(\\s*))?$))|(\\s*#.*$)|(\\s*$))",
3939
"patterns": [ { "include": "#arguments" } ]
4040
},
41+
"variable_assignment_index": {
42+
"name": "meta.variable.assign.index.robotframework",
43+
"contentName": "string.unquoted.argument.robotframework",
44+
"begin": "\\[",
45+
"end": "\\]",
46+
"beginCaptures": { "0": { "name": "punctuation.definition.variable.index.start.robotframework" } },
47+
"endCaptures": { "0": { "name": "punctuation.definition.variable.index.end.robotframework" } },
48+
"patterns": [
49+
{ "include": "#escape" },
50+
{ "include": "#variables" }
51+
]
52+
},
4153
"variable_assignment": {
4254
"name": "meta.variable.assign.robotframework",
4355
"contentName": "variable.name.readwrite.robotframework",
4456
"begin": "[$@&]\\{",
45-
"end": "(\\}( ?=)?)(?=( {2}| ?\\t| ?$))",
57+
"end": "(\\})((\\[.*\\]))*( ?=)?",
4658
"beginCaptures": { "0": { "name": "punctuation.definition.variable.begin.robotframework" } },
4759
"endCaptures": {
4860
"1": { "name": "punctuation.definition.variable.end.robotframework" },
49-
"2": { "name": "keyword.operator.robotframework" }
61+
"2": {
62+
"patterns": [ { "include": "#variable_assignment_index" } ] },
63+
"4": { "name": "keyword.operator.robotframework" }
5064
},
5165
"patterns": [ { "include": "#variables" } ]
5266
},
@@ -73,7 +87,7 @@
7387
"end": "\\}\\}",
7488
"beginCaptures": { "0": { "name": "punctuation.definition.expression.begin.robotframework" } },
7589
"endCaptures": { "0": { "name": "punctuation.definition.expression.end.robotframework" } },
76-
"patterns": [ { "include": "#variables" } ]
90+
"patterns": [ { "include": "#variables" }, { "include": "#expression" } ]
7791
},
7892
"embedded_argument": {
7993
"name": "meta.embedded_argument.robotframework",
@@ -394,14 +408,14 @@
394408
},
395409
"returning_keyword_call": {
396410
"name": "meta.returning-keyword-call.content.robotframework",
397-
"begin": "^(( {2}|\\t)(\\s*))([$&@]\\{(\\S+(?: \\S+)*)\\}(( ?=)?( {2}|\\t)(\\s*)))(.*?)(?= {2}| ?\\t| ?$)",
411+
"begin": "^(( {2}|\\t)(\\s*))(([$&@]\\{ ?(\\S+(?: \\S+)*) ?\\}((\\[( ?(\\S+(?: \\S+)*) ?)*\\])*( ?=)?( {2}|\\t)(\\s*)))+)(.*?)(?= {2}| ?\\t| ?$)",
398412
"end": "^(?!(\\s*(\\.\\.\\.((( {2}| ?\\t)\\s*\\S.*)|(\\s*))?$))|(\\s*#.*$)|(\\s*$))",
399413
"beginCaptures": {
400414
"4": {
401-
"name": "meta.returning-keyword-call.assign.robotframework",
415+
"name": "meta.returning-keyword-call.variables.robotframework",
402416
"patterns": [ { "include": "#variable_assignment" } ]
403417
},
404-
"10": {
418+
"14": {
405419
"name": "entity.name.function.keyword-call.robotframework",
406420
"patterns": [
407421
{ "include": "#escape" },
@@ -430,7 +444,7 @@
430444
},
431445
"var_statement": {
432446
"name": "meta.var-statement.robotframework",
433-
"begin": "^( {2}|\\t)(\\s*)(VAR)(( {2}|\\t)+(\\S.+?))?(?= {2}| ?\\t| ?$)",
447+
"begin": "^( {2}|\\t)(\\s*)(VAR)(( {2}|\\t)+(\\S.*?))?(?= {2}| ?\\t| ?$)",
434448
"end": "^(?!(\\s*(\\.\\.\\.((( {2}| ?\\t)\\s*\\S.*)|(\\s*))?$))|(\\s*#.*$)|(\\s*$))",
435449
"beginCaptures": {
436450
"3": { "name": "keyword.other.robotframework" },

0 commit comments

Comments
 (0)