@@ -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
0 commit comments