Skip to content

Commit 3c5a797

Browse files
committed
fix(langserver): don't show argument completion if the cursor is in a keyword assignment
1 parent acb7d9e commit 3c5a797

File tree

1 file changed

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

1 file changed

+18
-4
lines changed

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

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1563,15 +1563,20 @@ async def complete_arguments() -> Optional[List[CompletionItem]]:
15631563

15641564
token_at_position = tokens_at_position[-1]
15651565

1566+
name_token = import_node.get_token(RobotToken.NAME)
1567+
if name_token is None or position.character < range_from_token(name_token).end.character:
1568+
return None
1569+
15661570
try:
15671571
libdoc = await self.namespace.get_imported_library_libdoc(
15681572
import_node.name, import_node.args, import_node.alias
15691573
)
15701574
if libdoc is not None:
15711575
init = next((v for v in libdoc.inits.values()), None)
15721576
if init:
1577+
name_token_index = import_node.tokens.index(name_token)
15731578
return self._complete_keyword_arguments_at_position(
1574-
init, kw_node.tokens, token_at_position, position
1579+
init, kw_node.tokens[name_token_index:], token_at_position, position
15751580
)
15761581

15771582
except (SystemExit, KeyboardInterrupt, asyncio.CancelledError):
@@ -1827,13 +1832,18 @@ async def complete_arguments() -> Optional[List[CompletionItem]]:
18271832

18281833
token_at_position = tokens_at_position[-1]
18291834

1835+
name_token = import_node.get_token(RobotToken.NAME)
1836+
if name_token is None or position.character < range_from_token(name_token).end.character:
1837+
return None
1838+
18301839
try:
18311840
libdoc = await self.namespace.get_imported_variables_libdoc(import_node.name, import_node.args)
18321841
if libdoc is not None:
18331842
init = next((v for v in libdoc.inits.values()), None)
18341843
if init:
1844+
name_token_index = import_node.tokens.index(name_token)
18351845
return self._complete_keyword_arguments_at_position(
1836-
init, kw_node.tokens, token_at_position, position
1846+
init, kw_node.tokens[name_token_index:], token_at_position, position
18371847
)
18381848

18391849
except (SystemExit, KeyboardInterrupt, asyncio.CancelledError):
@@ -1882,7 +1892,7 @@ async def _complete_KeywordCall_or_Fixture( # noqa: N802
18821892
keyword_doc_and_token: Optional[Tuple[Optional[KeywordDoc], Token]] = None
18831893

18841894
keyword_token = kw_node.get_token(keyword_name_token_type)
1885-
if keyword_token is None:
1895+
if keyword_token is None or position.character < range_from_token(keyword_token).end.character:
18861896
return None
18871897

18881898
keyword_doc_and_token = await self.get_keyworddoc_and_token_from_position(
@@ -1902,7 +1912,11 @@ async def _complete_KeywordCall_or_Fixture( # noqa: N802
19021912
if keyword_doc.is_any_run_keyword():
19031913
return None
19041914

1905-
return self._complete_keyword_arguments_at_position(keyword_doc, kw_node.tokens, token_at_position, position)
1915+
keyword_token_index = kw_node.tokens.index(keyword_token)
1916+
1917+
return self._complete_keyword_arguments_at_position(
1918+
keyword_doc, kw_node.tokens[keyword_token_index:], token_at_position, position
1919+
)
19061920

19071921
TRUE_STRINGS = {"TRUE", "YES", "ON", "1"}
19081922
FALSE_STRINGS = {"FALSE", "NO", "OFF", "0", "NONE", ""}

0 commit comments

Comments
 (0)