Skip to content

Commit 4cf0127

Browse files
committed
feat(langserver): send full completion info if language client does not support completionItem/resolve
1 parent c9954ad commit 4cf0127

File tree

2 files changed

+23
-4
lines changed
  • docs/02_get_started
  • packages/language_server/src/robotcode/language_server/common/parts

2 files changed

+23
-4
lines changed

docs/02_get_started/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ However, it's important to note that there are alternative and better methods fo
4545

4646
Create a `requirements.txt` file in the root folder of your project and add the following content:
4747

48-
```requirements.txt [requirements.txt]
48+
```txt [requirements.txt]
4949
robotframework
5050
```
5151

5252
If you require additional dependencies, you can include them in the `requirements.txt` file. For instance, if you wish to utilize [robotframework-tidy](https://github.com/MarketSquare/robotframework-tidy) for formatting your robot files and the [Browser library](https://robotframework-browser.org/) for website testing, you can add the following line to the `requirements.txt` file:
5353

54-
```requirements.txt [requirements.txt]
54+
```txt [requirements.txt]
5555
robotframework
5656
robotframework-tidy
5757
robotframework-browser

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

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import dataclasses
12
from concurrent.futures import CancelledError
23
from itertools import chain
34
from typing import TYPE_CHECKING, Any, Final, List, Optional, Union, cast
@@ -41,6 +42,7 @@ class CompletionProtocolPart(LanguageServerProtocolPart):
4142

4243
def __init__(self, parent: "LanguageServerProtocol") -> None:
4344
super().__init__(parent)
45+
self.resolve_support = False
4446

4547
@event
4648
def collect(
@@ -74,6 +76,16 @@ def extend_capabilities(self, capabilities: ServerCapabilities) -> None:
7476
]
7577
)
7678
)
79+
if (
80+
self.parent.client_capabilities is not None
81+
and self.parent.client_capabilities.text_document is not None
82+
and self.parent.client_capabilities.text_document.completion is not None
83+
and self.parent.client_capabilities.text_document.completion.completion_item is not None
84+
and self.parent.client_capabilities.text_document.completion.completion_item.resolve_support is not None
85+
and self.parent.client_capabilities.text_document.completion.completion_item.resolve_support.properties
86+
):
87+
self.resolve_support = True
88+
7789
capabilities.completion_provider = CompletionOptions(
7890
trigger_characters=trigger_chars if trigger_chars else None,
7991
all_commit_characters=commit_chars if commit_chars else None,
@@ -141,13 +153,20 @@ def _text_document_completion(
141153
)
142154
if len(result.items) == 0:
143155
return None
144-
return result
156+
157+
if self.resolve_support:
158+
return result
159+
160+
return dataclasses.replace(result, items=[self._completion_item_resolve(e) for e in result.items])
145161

146162
result = list(chain(*[k for k in results if isinstance(k, list)]))
147163
if not result:
148164
return None
149165

150-
return result
166+
if self.resolve_support:
167+
return result
168+
169+
return [self._completion_item_resolve(e) for e in result]
151170

152171
def update_completion_item_to_utf16(self, document: TextDocument, item: CompletionItem) -> None:
153172
if isinstance(item.text_edit, TextEdit):

0 commit comments

Comments
 (0)