robotcode-language-server 1.3.0.dev3__tar.gz → 1.3.0.dev5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/PKG-INFO +5 -5
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/pyproject.toml +4 -4
- robotcode_language_server-1.3.0.dev5/src/robotcode/language_server/__version__.py +1 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/configuration.py +1 -1
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/formatting.py +7 -6
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/hover.py +1 -1
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/keywords_treeview.py +122 -8
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/project_info.py +8 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/semantic_tokens.py +3 -1
- robotcode_language_server-1.3.0.dev3/src/robotcode/language_server/__version__.py +0 -1
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/.gitignore +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/LICENSE.txt +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/README.md +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/__init__.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/cli.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/__init__.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/decorators.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/__init__.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/code_action.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/code_lens.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/commands.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/completion.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/declaration.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/definition.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/diagnostics.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/document_highlight.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/document_symbols.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/documents.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/folding_range.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/formatting.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/hover.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/implementation.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/inlay_hint.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/inline_value.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/linked_editing_ranges.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/protocol_part.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/references.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/rename.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/selection_range.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/semantic_tokens.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/signature_help.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/window.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/workspace.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/workspace_symbols.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/protocol.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/server.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/hooks.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/py.typed +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/__init__.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/__init__.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/code_action_documentation.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/code_action_helper_mixin.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/code_action_quick_fixes.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/code_action_refactor.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/code_lens.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/completion.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/debugging_utils.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/diagnostics.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/document_highlight.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/document_symbols.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/documents_cache.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/folding_range.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/goto.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/http_server.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/inlay_hint.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/inline_value.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/protocol_part.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/references.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/rename.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/robocop_diagnostics.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/robocop_tidy_mixin.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/robot_workspace.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/selection_range.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/signature_help.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/workspace_symbols.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/protocol.py +0 -0
- {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/server.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: robotcode-language-server
|
|
3
|
-
Version: 1.3.0.
|
|
3
|
+
Version: 1.3.0.dev5
|
|
4
4
|
Summary: RobotCode Language Server for Robot Framework
|
|
5
5
|
Project-URL: Homepage, https://robotcode.io
|
|
6
6
|
Project-URL: Donate, https://opencollective.com/robotcode
|
|
@@ -25,10 +25,10 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
|
25
25
|
Classifier: Topic :: Utilities
|
|
26
26
|
Classifier: Typing :: Typed
|
|
27
27
|
Requires-Python: >=3.8
|
|
28
|
-
Requires-Dist: robotcode-analyze==1.3.0-dev.
|
|
29
|
-
Requires-Dist: robotcode-jsonrpc2==1.3.0-dev.
|
|
30
|
-
Requires-Dist: robotcode-robot==1.3.0-dev.
|
|
31
|
-
Requires-Dist: robotcode==1.3.0-dev.
|
|
28
|
+
Requires-Dist: robotcode-analyze==1.3.0-dev.5
|
|
29
|
+
Requires-Dist: robotcode-jsonrpc2==1.3.0-dev.5
|
|
30
|
+
Requires-Dist: robotcode-robot==1.3.0-dev.5
|
|
31
|
+
Requires-Dist: robotcode==1.3.0-dev.5
|
|
32
32
|
Requires-Dist: robotframework>=4.1.0
|
|
33
33
|
Description-Content-Type: text/markdown
|
|
34
34
|
|
{robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/pyproject.toml
RENAMED
|
@@ -27,10 +27,10 @@ classifiers = [
|
|
|
27
27
|
]
|
|
28
28
|
dependencies = [
|
|
29
29
|
"robotframework>=4.1.0",
|
|
30
|
-
"robotcode-jsonrpc2==1.3.0-dev.
|
|
31
|
-
"robotcode-robot==1.3.0-dev.
|
|
32
|
-
"robotcode-analyze==1.3.0-dev.
|
|
33
|
-
"robotcode==1.3.0-dev.
|
|
30
|
+
"robotcode-jsonrpc2==1.3.0-dev.5",
|
|
31
|
+
"robotcode-robot==1.3.0-dev.5",
|
|
32
|
+
"robotcode-analyze==1.3.0-dev.5",
|
|
33
|
+
"robotcode==1.3.0-dev.5",
|
|
34
34
|
]
|
|
35
35
|
dynamic = ["version"]
|
|
36
36
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.3.0-dev.5"
|
|
@@ -39,7 +39,7 @@ class RobotFormattingProtocolPart(RobotLanguageServerProtocolPart, RoboCopTidyMi
|
|
|
39
39
|
self.line_separator = os.linesep
|
|
40
40
|
self.short_test_name_length = 18
|
|
41
41
|
self.setting_and_variable_name_length = 14
|
|
42
|
-
self.
|
|
42
|
+
self.is_robocop_notification_shown = False
|
|
43
43
|
|
|
44
44
|
def get_tidy_config(self, document: TextDocument) -> RoboTidyConfig:
|
|
45
45
|
folder = self.parent.workspace.get_workspace_folder(document.uri)
|
|
@@ -65,14 +65,15 @@ class RobotFormattingProtocolPart(RobotLanguageServerProtocolPart, RoboCopTidyMi
|
|
|
65
65
|
**further_options: Any,
|
|
66
66
|
) -> Optional[List[TextEdit]]:
|
|
67
67
|
if (get_robot_version() >= (5, 0)) and self.robocop_installed and self.robocop_version >= (6, 0):
|
|
68
|
-
if not self.
|
|
68
|
+
if not self.is_robocop_notification_shown and self.robotidy_installed:
|
|
69
69
|
self.parent.window.show_message(
|
|
70
|
-
"`robotframework-robocop >= 6.0` is installed and will be used for formatting.\n"
|
|
71
|
-
"`robotframework-tidy` is also detected in the workspace
|
|
72
|
-
"
|
|
70
|
+
"`robotframework-robocop >= 6.0` is installed and will be used for formatting.\n\n"
|
|
71
|
+
"`robotframework-tidy` is also detected in the workspace, but its use is redundant.\n"
|
|
72
|
+
"Robocop fully supports all formatting tasks and provides a more comprehensive solution.\n\n"
|
|
73
|
+
"Note: The use of `robotframework-tidy` is deprecated and should be avoided in favor of Robocop.",
|
|
73
74
|
MessageType.INFO,
|
|
74
75
|
)
|
|
75
|
-
self.
|
|
76
|
+
self.is_robocop_notification_shown = True
|
|
76
77
|
|
|
77
78
|
return self.format_robocop(document, options, **further_options)
|
|
78
79
|
|
|
@@ -163,7 +163,7 @@ class RobotHoverProtocolPart(RobotLanguageServerProtocolPart, ModelHelper):
|
|
|
163
163
|
else:
|
|
164
164
|
value = ""
|
|
165
165
|
|
|
166
|
-
text = f"### {variable.type.value.title()} `{variable.
|
|
166
|
+
text = f"### {variable.type.value.title()} `{variable.convertable_name}`\n\n"
|
|
167
167
|
|
|
168
168
|
if value:
|
|
169
169
|
text += "```python\n"
|
|
@@ -2,6 +2,7 @@ from dataclasses import dataclass
|
|
|
2
2
|
from typing import TYPE_CHECKING, Any, List, Optional
|
|
3
3
|
|
|
4
4
|
from robotcode.core.lsp.types import TextDocumentIdentifier
|
|
5
|
+
from robotcode.core.uri import Uri
|
|
5
6
|
from robotcode.core.utils.dataclasses import CamelSnakeMixin
|
|
6
7
|
from robotcode.core.utils.logging import LoggingDescriptor
|
|
7
8
|
from robotcode.jsonrpc2.protocol import rpc_method
|
|
@@ -16,6 +17,26 @@ if TYPE_CHECKING:
|
|
|
16
17
|
@dataclass(repr=False)
|
|
17
18
|
class GetDocumentImportsParams(CamelSnakeMixin):
|
|
18
19
|
text_document: TextDocumentIdentifier
|
|
20
|
+
no_documentation: Optional[bool] = None
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@dataclass(repr=False)
|
|
24
|
+
class GetDocumentKeywordsParams(CamelSnakeMixin):
|
|
25
|
+
text_document: TextDocumentIdentifier
|
|
26
|
+
no_documentation: Optional[bool] = None
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@dataclass(repr=False)
|
|
30
|
+
class GetLibraryDocumentationParams(CamelSnakeMixin):
|
|
31
|
+
workspace_folder_uri: str
|
|
32
|
+
library_name: str
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@dataclass(repr=False)
|
|
36
|
+
class GetKeywordDocumentationParams(CamelSnakeMixin):
|
|
37
|
+
workspace_folder_uri: str
|
|
38
|
+
library_name: str
|
|
39
|
+
keyword_name: str
|
|
19
40
|
|
|
20
41
|
|
|
21
42
|
@dataclass(repr=False)
|
|
@@ -26,6 +47,14 @@ class Keyword(CamelSnakeMixin):
|
|
|
26
47
|
documentation: Optional[str] = None
|
|
27
48
|
|
|
28
49
|
|
|
50
|
+
@dataclass(repr=False)
|
|
51
|
+
class LibraryDocumentation(CamelSnakeMixin):
|
|
52
|
+
name: str
|
|
53
|
+
documentation: Optional[str] = None
|
|
54
|
+
keywords: Optional[List[Keyword]] = None
|
|
55
|
+
initializers: Optional[List[Keyword]] = None
|
|
56
|
+
|
|
57
|
+
|
|
29
58
|
@dataclass(repr=False)
|
|
30
59
|
class DocumentImport(CamelSnakeMixin):
|
|
31
60
|
name: str
|
|
@@ -54,6 +83,7 @@ class RobotKeywordsTreeViewPart(RobotLanguageServerProtocolPart, ModelHelper):
|
|
|
54
83
|
def _get_document_imports(
|
|
55
84
|
self,
|
|
56
85
|
text_document: TextDocumentIdentifier,
|
|
86
|
+
no_documentation: Optional[bool] = None,
|
|
57
87
|
*args: Any,
|
|
58
88
|
**kwargs: Any,
|
|
59
89
|
) -> Optional[List[DocumentImport]]:
|
|
@@ -72,16 +102,18 @@ class RobotKeywordsTreeViewPart(RobotLanguageServerProtocolPart, ModelHelper):
|
|
|
72
102
|
alias=v.alias,
|
|
73
103
|
id=str(hash(v)),
|
|
74
104
|
type="library",
|
|
75
|
-
documentation=v.library_doc.to_markdown(add_signature=False),
|
|
105
|
+
documentation=v.library_doc.to_markdown(add_signature=False) if not no_documentation else None,
|
|
76
106
|
keywords=[
|
|
77
107
|
Keyword(
|
|
78
108
|
l.name,
|
|
79
109
|
str(hash(l)),
|
|
80
110
|
l.parameter_signature(),
|
|
81
|
-
l.to_markdown(add_signature=False),
|
|
111
|
+
l.to_markdown(add_signature=False) if not no_documentation else None,
|
|
82
112
|
)
|
|
83
113
|
for l in v.library_doc.keywords.values()
|
|
84
|
-
]
|
|
114
|
+
]
|
|
115
|
+
if not no_documentation
|
|
116
|
+
else None,
|
|
85
117
|
)
|
|
86
118
|
)
|
|
87
119
|
for _k, v in namespace.get_resources().items():
|
|
@@ -91,21 +123,29 @@ class RobotKeywordsTreeViewPart(RobotLanguageServerProtocolPart, ModelHelper):
|
|
|
91
123
|
alias=None,
|
|
92
124
|
id=str(hash(v)),
|
|
93
125
|
type="resource",
|
|
94
|
-
documentation=v.library_doc.to_markdown(add_signature=False),
|
|
126
|
+
documentation=v.library_doc.to_markdown(add_signature=False) if not no_documentation else None,
|
|
95
127
|
keywords=[
|
|
96
|
-
Keyword(
|
|
128
|
+
Keyword(
|
|
129
|
+
l.name,
|
|
130
|
+
str(hash(l)),
|
|
131
|
+
l.parameter_signature(),
|
|
132
|
+
l.to_markdown(add_signature=False) if not no_documentation else None,
|
|
133
|
+
)
|
|
97
134
|
for l in v.library_doc.keywords.values()
|
|
98
|
-
]
|
|
135
|
+
]
|
|
136
|
+
if not no_documentation
|
|
137
|
+
else None,
|
|
99
138
|
)
|
|
100
139
|
)
|
|
101
140
|
|
|
102
141
|
return result
|
|
103
142
|
|
|
104
|
-
@rpc_method(name="robot/keywordsview/getDocumentKeywords", param_type=
|
|
143
|
+
@rpc_method(name="robot/keywordsview/getDocumentKeywords", param_type=GetDocumentKeywordsParams, threaded=True)
|
|
105
144
|
@_logger.call
|
|
106
145
|
def _get_document_keywords(
|
|
107
146
|
self,
|
|
108
147
|
text_document: TextDocumentIdentifier,
|
|
148
|
+
no_documentation: Optional[bool] = None,
|
|
109
149
|
*args: Any,
|
|
110
150
|
**kwargs: Any,
|
|
111
151
|
) -> Optional[List[Keyword]]:
|
|
@@ -116,7 +156,12 @@ class RobotKeywordsTreeViewPart(RobotLanguageServerProtocolPart, ModelHelper):
|
|
|
116
156
|
namespace = self.parent.documents_cache.get_namespace(document)
|
|
117
157
|
|
|
118
158
|
return [
|
|
119
|
-
Keyword(
|
|
159
|
+
Keyword(
|
|
160
|
+
l.name,
|
|
161
|
+
str(hash(l)),
|
|
162
|
+
l.parameter_signature(),
|
|
163
|
+
l.to_markdown(add_signature=False) if not no_documentation else None,
|
|
164
|
+
)
|
|
120
165
|
for l in namespace.get_library_doc().keywords.values()
|
|
121
166
|
]
|
|
122
167
|
|
|
@@ -165,3 +210,72 @@ class RobotKeywordsTreeViewPart(RobotLanguageServerProtocolPart, ModelHelper):
|
|
|
165
210
|
)
|
|
166
211
|
|
|
167
212
|
return None
|
|
213
|
+
|
|
214
|
+
@rpc_method(
|
|
215
|
+
name="robot/keywordsview/getLibraryDocumentation", param_type=GetLibraryDocumentationParams, threaded=True
|
|
216
|
+
)
|
|
217
|
+
@_logger.call
|
|
218
|
+
def _get_library_documentation(
|
|
219
|
+
self,
|
|
220
|
+
workspace_folder_uri: str,
|
|
221
|
+
library_name: str,
|
|
222
|
+
*args: Any,
|
|
223
|
+
**kwargs: Any,
|
|
224
|
+
) -> Optional[LibraryDocumentation]:
|
|
225
|
+
imports_manager = self.parent.documents_cache.get_imports_manager_for_uri(Uri(workspace_folder_uri))
|
|
226
|
+
|
|
227
|
+
libdoc = imports_manager.get_libdoc_for_library_import(library_name, (), ".")
|
|
228
|
+
if libdoc.errors:
|
|
229
|
+
raise ValueError(f"Errors while loading library documentation: {libdoc.errors}")
|
|
230
|
+
|
|
231
|
+
return LibraryDocumentation(
|
|
232
|
+
name=libdoc.name,
|
|
233
|
+
documentation=libdoc.to_markdown(),
|
|
234
|
+
keywords=[
|
|
235
|
+
Keyword(
|
|
236
|
+
l.name,
|
|
237
|
+
str(hash(l)),
|
|
238
|
+
l.parameter_signature(),
|
|
239
|
+
l.to_markdown(),
|
|
240
|
+
)
|
|
241
|
+
for l in libdoc.keywords.values()
|
|
242
|
+
],
|
|
243
|
+
initializers=[
|
|
244
|
+
Keyword(
|
|
245
|
+
s.name,
|
|
246
|
+
str(hash(s)),
|
|
247
|
+
s.parameter_signature(),
|
|
248
|
+
s.to_markdown(),
|
|
249
|
+
)
|
|
250
|
+
for s in libdoc.inits.values()
|
|
251
|
+
],
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
@rpc_method(
|
|
255
|
+
name="robot/keywordsview/getKeywordDocumentation", param_type=GetKeywordDocumentationParams, threaded=True
|
|
256
|
+
)
|
|
257
|
+
@_logger.call
|
|
258
|
+
def _get_keyword_documentation(
|
|
259
|
+
self,
|
|
260
|
+
workspace_folder_uri: str,
|
|
261
|
+
library_name: str,
|
|
262
|
+
keyword_name: str,
|
|
263
|
+
*args: Any,
|
|
264
|
+
**kwargs: Any,
|
|
265
|
+
) -> Optional[Keyword]:
|
|
266
|
+
imports_manager = self.parent.documents_cache.get_imports_manager_for_uri(Uri(workspace_folder_uri))
|
|
267
|
+
|
|
268
|
+
libdoc = imports_manager.get_libdoc_for_library_import(library_name, (), ".")
|
|
269
|
+
if libdoc.errors:
|
|
270
|
+
raise ValueError(f"Errors while loading library documentation: {libdoc.errors}")
|
|
271
|
+
|
|
272
|
+
kw = libdoc.keywords.get(keyword_name, None)
|
|
273
|
+
if kw is None:
|
|
274
|
+
raise ValueError(f"Keyword '{keyword_name}' not found in library '{library_name}'.")
|
|
275
|
+
|
|
276
|
+
return Keyword(
|
|
277
|
+
name=kw.name,
|
|
278
|
+
id=str(hash(kw)),
|
|
279
|
+
signature=kw.parameter_signature(),
|
|
280
|
+
documentation=kw.to_markdown(),
|
|
281
|
+
)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import sys
|
|
1
2
|
from dataclasses import dataclass
|
|
2
3
|
from typing import TYPE_CHECKING, Any, Optional
|
|
3
4
|
|
|
@@ -7,6 +8,7 @@ from robotcode.core.utils.dataclasses import CamelSnakeMixin
|
|
|
7
8
|
from robotcode.core.utils.logging import LoggingDescriptor
|
|
8
9
|
from robotcode.jsonrpc2.protocol import rpc_method
|
|
9
10
|
|
|
11
|
+
from ...__version__ import __version__ as robotcode_version
|
|
10
12
|
from .protocol_part import RobotLanguageServerProtocolPart
|
|
11
13
|
from .robocop_tidy_mixin import RoboCopTidyMixin
|
|
12
14
|
|
|
@@ -19,6 +21,9 @@ class ProjectInfo(CamelSnakeMixin):
|
|
|
19
21
|
robot_version_string: str
|
|
20
22
|
robocop_version_string: Optional[str]
|
|
21
23
|
tidy_version_string: Optional[str] = None
|
|
24
|
+
python_version_string: Optional[str] = None
|
|
25
|
+
python_executable: Optional[str] = None
|
|
26
|
+
robot_code_version_string: Optional[str] = None
|
|
22
27
|
|
|
23
28
|
|
|
24
29
|
class ProjectInfoPart(RobotLanguageServerProtocolPart, RoboCopTidyMixin):
|
|
@@ -46,4 +51,7 @@ class ProjectInfoPart(RobotLanguageServerProtocolPart, RoboCopTidyMixin):
|
|
|
46
51
|
robot_version_string=get_version(),
|
|
47
52
|
robocop_version_string=robocop_version_string,
|
|
48
53
|
tidy_version_string=tidy_version_string,
|
|
54
|
+
python_version_string=sys.version,
|
|
55
|
+
python_executable=sys.executable,
|
|
56
|
+
robot_code_version_string=robotcode_version,
|
|
49
57
|
)
|
|
@@ -471,7 +471,9 @@ class RobotSemanticTokenProtocolPart(RobotLanguageServerProtocolPart):
|
|
|
471
471
|
sem_mod.add(RobotSemTokenModifiers.BUILTIN)
|
|
472
472
|
|
|
473
473
|
if kw_doc is not None and kw_doc.is_embedded and kw_doc.matcher.embedded_arguments:
|
|
474
|
-
if get_robot_version() >= (
|
|
474
|
+
if get_robot_version() >= (7, 3):
|
|
475
|
+
m = kw_doc.matcher.embedded_arguments.name.fullmatch(kw)
|
|
476
|
+
elif get_robot_version() >= (6, 0):
|
|
475
477
|
m = kw_doc.matcher.embedded_arguments.match(kw)
|
|
476
478
|
else:
|
|
477
479
|
m = kw_doc.matcher.embedded_arguments.name.match(kw)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.3.0-dev.3"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|