Skip to content

Commit c7f05e3

Browse files
committed
correct semantic highlight of variables and settings
1 parent 9e580da commit c7f05e3

File tree

3 files changed

+40
-11
lines changed

3 files changed

+40
-11
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ All notable changes to the "robotcode" extension will be documented in this file
44

55
## [Unreleased]
66

7+
### added
8+
- correct semantic highlight of variables and settings
9+
710
## 0.4.4
811

912
### added

robotcode/language_server/robotframework/parts/semantic_tokens.py

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -236,11 +236,23 @@ async def generate_sem_sub_tokens(
236236
if length is None:
237237
length = token.end_col_offset - token.col_offset
238238

239-
yield SemTokenInfo(token.lineno, col_offset, 2, RobotSemTokenTypes.VARIABLE_BEGIN, sem_mod)
240-
yield SemTokenInfo.from_token(token, sem_type, sem_mod, col_offset + 2, length - 3)
241-
yield SemTokenInfo(
242-
token.lineno, col_offset + length - 1, 1, RobotSemTokenTypes.VARIABLE_END, sem_mod
243-
)
239+
last_index = token.value.rfind("}")
240+
if last_index >= 0:
241+
yield SemTokenInfo(token.lineno, col_offset, 2, RobotSemTokenTypes.VARIABLE_BEGIN, sem_mod)
242+
243+
yield SemTokenInfo.from_token(token, sem_type, sem_mod, col_offset + 2, last_index - 2)
244+
245+
yield SemTokenInfo(
246+
token.lineno, col_offset + last_index, 1, RobotSemTokenTypes.VARIABLE_END, sem_mod
247+
)
248+
249+
if length - last_index > 0:
250+
yield SemTokenInfo.from_token(
251+
token, sem_type, sem_mod, col_offset + last_index + 1, length - last_index - 1
252+
)
253+
else:
254+
yield SemTokenInfo.from_token(token, sem_type, sem_mod)
255+
244256
else:
245257
yield SemTokenInfo.from_token(token, sem_type, sem_mod)
246258

@@ -306,6 +318,20 @@ async def generate_sem_sub_tokens(
306318
yield SemTokenInfo.from_token(token, sem_type, sem_mod, col_offset + kw_index, len(kw))
307319
elif token.type == RobotToken.NAME and isinstance(node, (LibraryImport, ResourceImport, VariablesImport)):
308320
yield SemTokenInfo.from_token(token, RobotSemTokenTypes.NAMESPACE, sem_mod, col_offset, length)
321+
elif (
322+
token.type in RobotToken.SETTING_TOKENS
323+
and token.value
324+
and token.value[0] == "["
325+
and token.value[-1] == "]"
326+
):
327+
if col_offset is None:
328+
col_offset = token.col_offset
329+
if length is None:
330+
length = token.end_col_offset - token.col_offset
331+
332+
yield SemTokenInfo.from_token(token, SemanticTokenTypes.OPERATOR, sem_mod, col_offset, 1)
333+
yield SemTokenInfo.from_token(token, sem_type, sem_mod, col_offset + 1, length - 2)
334+
yield SemTokenInfo.from_token(token, SemanticTokenTypes.OPERATOR, sem_mod, col_offset + length - 1, 1)
309335
else:
310336
yield SemTokenInfo.from_token(token, sem_type, sem_mod, col_offset, length)
311337

syntaxes/robotframework.tmLanguage.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@
648648
"name": "keyword.operator.robotframework"
649649
},
650650
"2": {
651-
"name": "storage.type.method.robotframework"
651+
"name": "keyword.control.settings.robotframework"
652652
}
653653
},
654654
"contentName": "entity.name.tag.robotframework",
@@ -679,7 +679,7 @@
679679
"name": "keyword.operator.robotframework"
680680
},
681681
"2": {
682-
"name": "storage.type.method.robotframework"
682+
"name": "keyword.control.settings.robotframework"
683683
}
684684
},
685685
"contentName": "string.unquoted.argument.robotframework",
@@ -709,7 +709,7 @@
709709
"name": "keyword.operator.robotframework"
710710
},
711711
"2": {
712-
"name": "storage.type.method.robotframework"
712+
"name": "keyword.control.settings.robotframework"
713713
},
714714
"3": {
715715
"name": "keyword.operator.robotframework"
@@ -743,7 +743,7 @@
743743
"name": "keyword.operator.robotframework"
744744
},
745745
"2": {
746-
"name": "storage.type.method.robotframework"
746+
"name": "keyword.control.settings.robotframework"
747747
}
748748
},
749749
"contentName": "string.unquoted.argument.robotframework",
@@ -772,7 +772,7 @@
772772
"name": "keyword.operator.robotframework"
773773
},
774774
"2": {
775-
"name": "storage.type.method.robotframework"
775+
"name": "keyword.control.settings.robotframework"
776776
}
777777
},
778778
"contentName": "string.unquoted.argument.robotframework",
@@ -849,7 +849,7 @@
849849
"name": "keyword.operator.robotframework"
850850
},
851851
"2": {
852-
"name": "storage.type.method.robotframework"
852+
"name": "keyword.control.settings.robotframework"
853853
}
854854
},
855855
"contentName": "meta.keyword.arguments.robotframework",

0 commit comments

Comments
 (0)