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.
Files changed (77) hide show
  1. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/PKG-INFO +5 -5
  2. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/pyproject.toml +4 -4
  3. robotcode_language_server-1.3.0.dev5/src/robotcode/language_server/__version__.py +1 -0
  4. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/configuration.py +1 -1
  5. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/formatting.py +7 -6
  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
  7. {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
  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
  9. {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
  10. robotcode_language_server-1.3.0.dev3/src/robotcode/language_server/__version__.py +0 -1
  11. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/.gitignore +0 -0
  12. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/LICENSE.txt +0 -0
  13. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/README.md +0 -0
  14. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/__init__.py +0 -0
  15. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/cli.py +0 -0
  16. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/__init__.py +0 -0
  17. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/decorators.py +0 -0
  18. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/__init__.py +0 -0
  19. {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
  20. {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
  21. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/commands.py +0 -0
  22. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/completion.py +0 -0
  23. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/declaration.py +0 -0
  24. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/definition.py +0 -0
  25. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/diagnostics.py +0 -0
  26. {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
  27. {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
  28. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/documents.py +0 -0
  29. {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
  30. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/formatting.py +0 -0
  31. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/hover.py +0 -0
  32. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/implementation.py +0 -0
  33. {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
  34. {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
  35. {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
  36. {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
  37. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/references.py +0 -0
  38. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/rename.py +0 -0
  39. {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
  40. {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
  41. {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
  42. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/window.py +0 -0
  43. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/parts/workspace.py +0 -0
  44. {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
  45. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/protocol.py +0 -0
  46. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/common/server.py +0 -0
  47. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/hooks.py +0 -0
  48. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/py.typed +0 -0
  49. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/__init__.py +0 -0
  50. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/__init__.py +0 -0
  51. {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
  52. {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
  53. {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
  54. {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
  55. {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
  56. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/completion.py +0 -0
  57. {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
  58. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/diagnostics.py +0 -0
  59. {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
  60. {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
  61. {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
  62. {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
  63. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/goto.py +0 -0
  64. {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
  65. {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
  66. {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
  67. {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
  68. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/references.py +0 -0
  69. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/parts/rename.py +0 -0
  70. {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
  71. {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
  72. {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
  73. {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
  74. {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
  75. {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
  76. {robotcode_language_server-1.3.0.dev3 → robotcode_language_server-1.3.0.dev5}/src/robotcode/language_server/robotframework/protocol.py +0 -0
  77. {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.dev3
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.3
29
- Requires-Dist: robotcode-jsonrpc2==1.3.0-dev.3
30
- Requires-Dist: robotcode-robot==1.3.0-dev.3
31
- Requires-Dist: robotcode==1.3.0-dev.3
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
 
@@ -27,10 +27,10 @@ classifiers = [
27
27
  ]
28
28
  dependencies = [
29
29
  "robotframework>=4.1.0",
30
- "robotcode-jsonrpc2==1.3.0-dev.3",
31
- "robotcode-robot==1.3.0-dev.3",
32
- "robotcode-analyze==1.3.0-dev.3",
33
- "robotcode==1.3.0-dev.3",
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"
@@ -52,7 +52,7 @@ class RoboTidyConfig(ConfigBase):
52
52
  class DocumentationServerConfig(ConfigBase):
53
53
  start_port: int = 3100
54
54
  end_port: int = 3199
55
- start_on_demand: bool = True
55
+ start_on_demand: bool = False
56
56
 
57
57
 
58
58
  @config_section("robotcode.inlayHints")
@@ -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.robocop_installed_message_shown = False
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.robocop_installed_message_shown and self.robotidy_installed:
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
- "It is not needed as `robocop` handles formatting tasks.\n",
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.robocop_installed_message_shown = True
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.name}`\n\n"
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(l.name, str(hash(l)), l.parameter_signature(), l.to_markdown(add_signature=False))
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=GetDocumentImportsParams, threaded=True)
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(l.name, str(hash(l)), l.parameter_signature(), l.to_markdown(add_signature=False))
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() >= (6, 0):
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"