@@ -423,9 +423,7 @@ async def create_keyword_settings_completion_items(self, range: Optional[Range])
423423 ]
424424
425425 async def create_keyword_completion_items (
426- self ,
427- token : Optional [Token ],
428- position : Position ,
426+ self , token : Optional [Token ], position : Position , add_reserverd : bool = True
429427 ) -> List [CompletionItem ]:
430428 result : List [CompletionItem ] = []
431429 if self .document is None :
@@ -561,15 +559,16 @@ def enumerate_indexes(s: str, c: str) -> Iterator[int]:
561559 )
562560 result .append (c )
563561
564- for k in RESERVERD_KEYWORDS :
565- c = CompletionItem (
566- label = k ,
567- kind = CompletionItemKind .KEYWORD ,
568- sort_text = f"040_{ k } " ,
569- insert_text_format = InsertTextFormat .PLAINTEXT ,
570- text_edit = TextEdit (range = r , new_text = k ) if r is not None else None ,
571- )
572- result .append (c )
562+ if add_reserverd :
563+ for k in RESERVERD_KEYWORDS :
564+ c = CompletionItem (
565+ label = k ,
566+ kind = CompletionItemKind .KEYWORD ,
567+ sort_text = f"999_{ k } " ,
568+ insert_text_format = InsertTextFormat .PLAINTEXT ,
569+ text_edit = TextEdit (range = r , new_text = k ) if r is not None else None ,
570+ )
571+ result .append (c )
573572
574573 return result
575574
@@ -701,6 +700,14 @@ async def _complete_TestCase_or_Keyword( # noqa: N802
701700 from robot .parsing .lexer .tokens import Token as RobotToken
702701 from robot .parsing .model .statements import KeywordName , Statement , TestCaseName
703702
703+ # TODO should this be configurable?
704+ if (
705+ context is not None
706+ and context .trigger_kind == CompletionTriggerKind .TRIGGERCHARACTER
707+ and context .trigger_character in [" " , "\t " ]
708+ ):
709+ return None
710+
704711 index = 0
705712 in_assign = False
706713
@@ -854,6 +861,14 @@ async def _complete_SuiteSetup_or_SuiteTeardown_or_TestTemplate( # noqa: N802
854861 ) -> Union [List [CompletionItem ], CompletionList , None ]:
855862 from robot .parsing .model .statements import Statement
856863
864+ # TODO should this be configurable?
865+ if (
866+ context is not None
867+ and context .trigger_kind == CompletionTriggerKind .TRIGGERCHARACTER
868+ and context .trigger_character in [" " , "\t " ]
869+ ):
870+ return None
871+
857872 statement_node = cast (Statement , node )
858873 if len (statement_node .tokens ) > 1 :
859874 token = cast (Token , statement_node .tokens [1 ])
@@ -867,14 +882,16 @@ async def _complete_SuiteSetup_or_SuiteTeardown_or_TestTemplate( # noqa: N802
867882
868883 if position .is_in_range (r ) or r .end == position :
869884 return await self .create_keyword_completion_items (
870- statement_node .tokens [2 ] if r .end == position and len (statement_node .tokens ) > 2 else None , position
885+ statement_node .tokens [2 ] if r .end == position and len (statement_node .tokens ) > 2 else None ,
886+ position ,
887+ add_reserverd = False ,
871888 )
872889
873890 if len (statement_node .tokens ) > 2 :
874891 token = cast (Token , statement_node .tokens [2 ])
875892 r = range_from_token (token )
876893 if position .is_in_range (r ) or r .end == position :
877- return await self .create_keyword_completion_items (token , position )
894+ return await self .create_keyword_completion_items (token , position , add_reserverd = False )
878895
879896 return None
880897
@@ -947,6 +964,14 @@ async def complete_Setup_or_Teardown_or_Template( # noqa: N802
947964 ) -> Union [List [CompletionItem ], CompletionList , None ]:
948965 from robot .parsing .model .statements import Statement
949966
967+ # TODO should this be configurable?
968+ if (
969+ context is not None
970+ and context .trigger_kind == CompletionTriggerKind .TRIGGERCHARACTER
971+ and context .trigger_character in [" " , "\t " ]
972+ ):
973+ return None
974+
950975 statement_node = cast (Statement , node )
951976 if len (statement_node .tokens ) > 2 :
952977 token = cast (Token , statement_node .tokens [2 ])
@@ -960,14 +985,16 @@ async def complete_Setup_or_Teardown_or_Template( # noqa: N802
960985
961986 if position .is_in_range (r ) or r .end == position :
962987 return await self .create_keyword_completion_items (
963- statement_node .tokens [3 ] if r .end == position and len (statement_node .tokens ) > 3 else None , position
988+ statement_node .tokens [3 ] if r .end == position and len (statement_node .tokens ) > 3 else None ,
989+ position ,
990+ add_reserverd = False ,
964991 )
965992
966993 if len (statement_node .tokens ) > 3 :
967994 token = cast (Token , statement_node .tokens [3 ])
968995 r = range_from_token (token )
969996 if position .is_in_range (r ) or r .end == position :
970- return await self .create_keyword_completion_items (token , position )
997+ return await self .create_keyword_completion_items (token , position , add_reserverd = False )
971998
972999 return None
9731000
0 commit comments