@@ -366,6 +366,26 @@ async def generate_sem_sub_tokens(
366366 yield SemTokenInfo .from_token (token , sem_type , sem_mod , col_offset + kw_index , len (kw ))
367367 elif token .type == RobotToken .NAME and isinstance (node , (LibraryImport , ResourceImport , VariablesImport )):
368368 yield SemTokenInfo .from_token (token , RobotSemTokenTypes .NAMESPACE , sem_mod , col_offset , length )
369+ elif get_robot_version () >= (5 , 0 ) and token .type == RobotToken .OPTION :
370+ from robot .parsing .model .statements import ExceptHeader , WhileHeader
371+
372+ if (
373+ isinstance (node , ExceptHeader )
374+ and token .value .startswith ("type=" )
375+ or isinstance (node , WhileHeader )
376+ and token .value .startswith ("limit=" )
377+ ):
378+ if col_offset is None :
379+ col_offset = token .col_offset
380+
381+ name , value = token .value .split ("=" , 1 )
382+ yield SemTokenInfo .from_token (token , RobotSemTokenTypes .VARIABLE , sem_mod , col_offset , len (name ))
383+ yield SemTokenInfo .from_token (
384+ token , SemanticTokenTypes .OPERATOR , sem_mod , col_offset + len (name ), 1
385+ )
386+ yield SemTokenInfo .from_token (token , sem_type , sem_mod , col_offset + len (name ) + 1 , len (value ))
387+ else :
388+ yield SemTokenInfo .from_token (token , sem_type , sem_mod , col_offset , length )
369389 elif (
370390 token .type in RobotToken .SETTING_TOKENS
371391 and token .value
0 commit comments