Skip to content

Commit 26c6eda

Browse files
committed
fix(langserver): dont show values in completions if the token before is an named argument token
1 parent 4f144c4 commit 26c6eda

File tree

1 file changed

+21
-4
lines changed
  • packages/language_server/src/robotcode/language_server/robotframework/parts

1 file changed

+21
-4
lines changed

packages/language_server/src/robotcode/language_server/robotframework/parts/completion.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)