@@ -2034,7 +2034,7 @@ def _complete_keyword_arguments_at_position(
20342034 return None
20352035 else :
20362036 name_or_value , value = split_from_equals ((argument_token or token_at_position ).value )
2037- if value is not None and name_or_value :
2037+ if value is not None and name_or_value and any ( k for k in kw_arguments if k . name == name_or_value ) :
20382038 has_name = True
20392039 equal_index = (argument_token or token_at_position ).value .index ("=" )
20402040 if position .character <= completion_range .start .character + equal_index :
@@ -2046,6 +2046,21 @@ def _complete_keyword_arguments_at_position(
20462046
20472047 result = []
20482048
2049+ arg_index_before = tokens .index (argument_token or token_at_position ) - 1
2050+ if arg_index_before >= 0 :
2051+ while arg_index_before >= 0 and tokens [arg_index_before ].type != RobotToken .ARGUMENT :
2052+ arg_index_before -= 1
2053+
2054+ before_is_named = False
2055+ if arg_index_before >= 0 and tokens [arg_index_before ].type == RobotToken .ARGUMENT :
2056+ name_or_value , value = split_from_equals ((tokens [arg_index_before ]).value )
2057+ before_is_named = (
2058+ value is not None and name_or_value and any (k for k in kw_arguments if k .name == name_or_value )
2059+ )
2060+
2061+ if before_is_named and not has_name :
2062+ complete_argument_values = False
2063+
20492064 if (
20502065 complete_argument_values
20512066 and argument_index >= 0
@@ -2138,7 +2153,8 @@ def _complete_keyword_arguments_at_position(
21382153 kind = CompletionItemKind .ENUM_MEMBER ,
21392154 detail = type_info .name ,
21402155 documentation = MarkupContent (
2141- MarkupKind .MARKDOWN , f"```python\n { member .name } = { member .value } \n ```"
2156+ MarkupKind .MARKDOWN ,
2157+ f"```python\n { member .name } = { member .value } \n ```\n \n { type_info .to_markdown ()} " ,
21422158 ),
21432159 sort_text = f"09_{ i :03} _{ member_index :03} _{ member .name } " ,
21442160 insert_text_format = InsertTextFormat .PLAIN_TEXT ,
@@ -2196,12 +2212,13 @@ def _complete_keyword_arguments_at_position(
21962212 )
21972213
21982214 for i in range (len (positional )):
2199- known_names .append (kw_arguments [i ].name )
2215+ if i != argument_index :
2216+ known_names .append (kw_arguments [i ].name )
22002217 for n , _ in named :
22012218 known_names .append (n )
22022219
22032220 preselected = - 1
2204- if known_names :
2221+ if known_names and before_is_named :
22052222 n = known_names [- 1 ]
22062223 preselected = next ((i for i , e in enumerate (kw_arguments ) if e .name == n ), - 1 ) + 1
22072224 if preselected >= len (kw_arguments ):
0 commit comments