robotcode-language-server 2.8.0.dev548__py3-none-any.whl → 2.8.0.dev670__py3-none-any.whl
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/__version__.py +1 -1
- robotcode/language_server/robotframework/parts/code_action_documentation.py +6 -26
- robotcode/language_server/robotframework/parts/references.py +60 -14
- robotcode/language_server/robotframework/parts/semantic_tokens.py +36 -4
- {robotcode_language_server-2.8.0.dev548.dist-info → robotcode_language_server-2.8.0.dev670.dist-info}/METADATA +5 -5
- {robotcode_language_server-2.8.0.dev548.dist-info → robotcode_language_server-2.8.0.dev670.dist-info}/RECORD +8 -8
- {robotcode_language_server-2.8.0.dev548.dist-info → robotcode_language_server-2.8.0.dev670.dist-info}/WHEEL +0 -0
- {robotcode_language_server-2.8.0.dev548.dist-info → robotcode_language_server-2.8.0.dev670.dist-info}/entry_points.txt +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "2.8.0-dev.
|
|
1
|
+
__version__ = "2.8.0-dev.670"
|
|
@@ -14,7 +14,6 @@ from robotcode.core.lsp.types import (
|
|
|
14
14
|
CodeActionContext,
|
|
15
15
|
CodeActionKind,
|
|
16
16
|
Command,
|
|
17
|
-
Position,
|
|
18
17
|
Range,
|
|
19
18
|
)
|
|
20
19
|
from robotcode.core.text_document import TextDocument
|
|
@@ -36,7 +35,6 @@ from robotcode.robot.diagnostics.semantic_analyzer.model import SemanticModel
|
|
|
36
35
|
from robotcode.robot.diagnostics.semantic_analyzer.nodes import (
|
|
37
36
|
DefinitionStatement,
|
|
38
37
|
ImportStatement,
|
|
39
|
-
KeywordCallStatement,
|
|
40
38
|
)
|
|
41
39
|
from robotcode.robot.utils.ast import get_node_at_position, range_from_token
|
|
42
40
|
from robotcode.robot.utils.markdown_docs import (
|
|
@@ -374,16 +372,13 @@ class RobotCodeActionDocumentationProtocolPart(RobotLanguageServerProtocolPart,
|
|
|
374
372
|
if isinstance(stmt, ImportStatement) and stmt.import_type in (ImportType.LIBRARY, ImportType.RESOURCE):
|
|
375
373
|
return self._import_target_from_model(stmt, document, range, namespace)
|
|
376
374
|
|
|
377
|
-
# Branch 2: keyword call / fixture / template
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
if kw_doc is None:
|
|
383
|
-
return None
|
|
384
|
-
if not self._cursor_on_keyword_reference(range.start, stmt):
|
|
375
|
+
# Branch 2: keyword call / fixture / template, also a call in the body
|
|
376
|
+
# of an inline IF and an inner call of a Run Keyword variant.
|
|
377
|
+
call = model.keyword_call_at(range.start.line + 1, range.start.character)
|
|
378
|
+
if call is not None:
|
|
379
|
+
if range.start != range.end or call.keyword_doc is None:
|
|
385
380
|
return None
|
|
386
|
-
return self.keyword_target(
|
|
381
|
+
return self.keyword_target(call.keyword_doc, call.lib_entry, document, namespace)
|
|
387
382
|
|
|
388
383
|
# Branch 3: keyword definition header.
|
|
389
384
|
if isinstance(stmt, DefinitionStatement) and stmt.kind is NodeKind.KEYWORD_DEF:
|
|
@@ -436,21 +431,6 @@ class RobotCodeActionDocumentationProtocolPart(RobotLanguageServerProtocolPart,
|
|
|
436
431
|
stmt.lib_entry.library_doc if stmt.lib_entry is not None else None,
|
|
437
432
|
)
|
|
438
433
|
|
|
439
|
-
@staticmethod
|
|
440
|
-
def _cursor_on_keyword_reference(pos: Position, stmt: KeywordCallStatement) -> bool:
|
|
441
|
-
"""Cursor is within the NAMESPACE / "." / KEYWORD SemanticTokens
|
|
442
|
-
that make up the keyword reference (BDD prefix excluded). Mirrors
|
|
443
|
-
the legacy `position.is_in_range(range_from_token(keyword_token))`
|
|
444
|
-
after the BDD-prefix strip that
|
|
445
|
-
`get_keyworddoc_and_token_from_position` does.
|
|
446
|
-
"""
|
|
447
|
-
ref_toks = [t for t in stmt.tokens if t.kind in (TokenKind.NAMESPACE, TokenKind.KEYWORD)]
|
|
448
|
-
if not ref_toks:
|
|
449
|
-
return False
|
|
450
|
-
# Contiguous span from namespace start to keyword end also covers the
|
|
451
|
-
# "." operator between them.
|
|
452
|
-
return pos in Range(start=ref_toks[0].range.start, end=ref_toks[-1].range.end)
|
|
453
|
-
|
|
454
434
|
def keyword_target(
|
|
455
435
|
self,
|
|
456
436
|
kw_doc: KeywordDoc,
|
|
@@ -150,7 +150,37 @@ class RobotReferencesProtocolPart(RobotLanguageServerProtocolPart):
|
|
|
150
150
|
if result is not None:
|
|
151
151
|
return result
|
|
152
152
|
|
|
153
|
-
return
|
|
153
|
+
return self._references_at_namespace_prefix(document, position, context)
|
|
154
|
+
|
|
155
|
+
def _references_at_namespace_prefix(
|
|
156
|
+
self,
|
|
157
|
+
document: TextDocument,
|
|
158
|
+
position: Position,
|
|
159
|
+
context: ReferenceContext,
|
|
160
|
+
) -> Optional[List[Location]]:
|
|
161
|
+
namespace = self.parent.documents_cache.get_namespace(document)
|
|
162
|
+
|
|
163
|
+
# the analysis keeps the range of every prefix of a keyword call, keyed by the library or resource it names
|
|
164
|
+
entries = [
|
|
165
|
+
entry
|
|
166
|
+
for entry, locations in namespace.namespace_references.items()
|
|
167
|
+
if not isinstance(entry, VariablesEntry) and any(position in location.range for location in locations)
|
|
168
|
+
]
|
|
169
|
+
if not entries:
|
|
170
|
+
return None
|
|
171
|
+
|
|
172
|
+
# a prefix has the references of the import it names
|
|
173
|
+
result: List[Location] = []
|
|
174
|
+
for entry in entries:
|
|
175
|
+
if isinstance(entry, ResourceEntry):
|
|
176
|
+
result.extend(self._resource_references(document, entry, context))
|
|
177
|
+
elif entry.alias:
|
|
178
|
+
result.extend(self._library_alias_references(document, entry, context))
|
|
179
|
+
else:
|
|
180
|
+
result.extend(self._library_references(document, entry.library_doc))
|
|
181
|
+
|
|
182
|
+
# a prefix can name more than one entry, and their answers overlap
|
|
183
|
+
return list(dict.fromkeys(result))
|
|
154
184
|
|
|
155
185
|
def _find_references_in_workspace(
|
|
156
186
|
self,
|
|
@@ -230,10 +260,7 @@ class RobotReferencesProtocolPart(RobotLanguageServerProtocolPart):
|
|
|
230
260
|
include_declaration: bool = True,
|
|
231
261
|
stop_at_first: bool = False,
|
|
232
262
|
) -> List[Location]:
|
|
233
|
-
result = []
|
|
234
|
-
|
|
235
|
-
if include_declaration and variable.source:
|
|
236
|
-
result.append(Location(str(Uri.from_path(variable.source)), variable.name_range))
|
|
263
|
+
result: List[Location] = []
|
|
237
264
|
|
|
238
265
|
if variable.type == VariableDefinitionType.LOCAL_VARIABLE:
|
|
239
266
|
result.extend(self.find_variable_references_in_file(document, variable, False))
|
|
@@ -243,6 +270,11 @@ class RobotReferencesProtocolPart(RobotLanguageServerProtocolPart):
|
|
|
243
270
|
result.append(next(iter(refs)))
|
|
244
271
|
else:
|
|
245
272
|
result.extend(refs)
|
|
273
|
+
|
|
274
|
+
# the declaration last: LSP4IJ searches from the first location, and finds nothing in a Python file
|
|
275
|
+
if include_declaration and variable.source:
|
|
276
|
+
result.append(Location(str(Uri.from_path(variable.source)), variable.name_range))
|
|
277
|
+
|
|
246
278
|
return result
|
|
247
279
|
|
|
248
280
|
@_logger.call
|
|
@@ -321,15 +353,16 @@ class RobotReferencesProtocolPart(RobotLanguageServerProtocolPart):
|
|
|
321
353
|
) -> List[Location]:
|
|
322
354
|
result = []
|
|
323
355
|
|
|
324
|
-
if include_declaration and kw_doc.source:
|
|
325
|
-
result.append(Location(str(Uri.from_path(kw_doc.source)), kw_doc.range))
|
|
326
|
-
|
|
327
356
|
refs = self.parent.documents_cache.get_project_index(document).find_keyword_references(kw_doc)
|
|
328
357
|
if stop_at_first and refs:
|
|
329
358
|
result.append(next(iter(refs)))
|
|
330
359
|
else:
|
|
331
360
|
result.extend(refs)
|
|
332
361
|
|
|
362
|
+
# the declaration last: LSP4IJ searches from the first location, and finds nothing in a Python file
|
|
363
|
+
if include_declaration and kw_doc.source:
|
|
364
|
+
result.append(Location(str(Uri.from_path(kw_doc.source)), kw_doc.range))
|
|
365
|
+
|
|
333
366
|
return result
|
|
334
367
|
|
|
335
368
|
@_logger.call
|
|
@@ -388,12 +421,7 @@ class RobotReferencesProtocolPart(RobotLanguageServerProtocolPart):
|
|
|
388
421
|
if library_doc is None:
|
|
389
422
|
return None
|
|
390
423
|
|
|
391
|
-
return self.
|
|
392
|
-
document,
|
|
393
|
-
False,
|
|
394
|
-
self._find_library_import_references_in_file,
|
|
395
|
-
library_doc,
|
|
396
|
-
)
|
|
424
|
+
return self._library_references(document, library_doc)
|
|
397
425
|
|
|
398
426
|
separator = import_node.get_token(RobotToken.WITH_NAME)
|
|
399
427
|
alias_token = import_node.get_tokens(RobotToken.NAME)[-1] if separator else None
|
|
@@ -413,6 +441,19 @@ class RobotReferencesProtocolPart(RobotLanguageServerProtocolPart):
|
|
|
413
441
|
if entry is None:
|
|
414
442
|
return None
|
|
415
443
|
|
|
444
|
+
return self._library_alias_references(document, entry, context)
|
|
445
|
+
|
|
446
|
+
def _library_references(self, document: TextDocument, library_doc: LibraryDoc) -> List[Location]:
|
|
447
|
+
return self._find_references_in_workspace(
|
|
448
|
+
document,
|
|
449
|
+
False,
|
|
450
|
+
self._find_library_import_references_in_file,
|
|
451
|
+
library_doc,
|
|
452
|
+
)
|
|
453
|
+
|
|
454
|
+
def _library_alias_references(
|
|
455
|
+
self, document: TextDocument, entry: LibraryEntry, context: ReferenceContext
|
|
456
|
+
) -> List[Location]:
|
|
416
457
|
result = list(self.parent.documents_cache.get_project_index(document).find_namespace_references(entry))
|
|
417
458
|
|
|
418
459
|
if context.include_declaration and entry.import_source:
|
|
@@ -475,6 +516,11 @@ class RobotReferencesProtocolPart(RobotLanguageServerProtocolPart):
|
|
|
475
516
|
if entry is None:
|
|
476
517
|
return None
|
|
477
518
|
|
|
519
|
+
return self._resource_references(document, entry, context)
|
|
520
|
+
|
|
521
|
+
def _resource_references(
|
|
522
|
+
self, document: TextDocument, entry: ResourceEntry, context: ReferenceContext
|
|
523
|
+
) -> List[Location]:
|
|
478
524
|
result = self._find_references_in_workspace(
|
|
479
525
|
document,
|
|
480
526
|
False,
|
|
@@ -21,6 +21,7 @@ from typing import (
|
|
|
21
21
|
Union,
|
|
22
22
|
cast,
|
|
23
23
|
)
|
|
24
|
+
from weakref import WeakKeyDictionary
|
|
24
25
|
|
|
25
26
|
from robot.parsing.lexer.tokens import Token
|
|
26
27
|
from robot.parsing.model.blocks import Section
|
|
@@ -55,6 +56,7 @@ from robotcode.core.lsp.types import (
|
|
|
55
56
|
SemanticTokenTypes,
|
|
56
57
|
)
|
|
57
58
|
from robotcode.core.text_document import TextDocument, range_to_utf16
|
|
59
|
+
from robotcode.robot.diagnostics.entities import ArgumentDefinition, EmbeddedArgumentDefinition
|
|
58
60
|
from robotcode.robot.diagnostics.keyword_finder import DEFAULT_BDD_PREFIX_REGEXP, build_bdd_prefix_regexp
|
|
59
61
|
from robotcode.robot.diagnostics.library_doc import (
|
|
60
62
|
ALL_RUN_KEYWORDS_MATCHERS,
|
|
@@ -1099,6 +1101,12 @@ class SemanticTokenGenerator:
|
|
|
1099
1101
|
TokenModifier.DOCUMENTATION: SemanticTokenModifiers.DOCUMENTATION,
|
|
1100
1102
|
}
|
|
1101
1103
|
|
|
1104
|
+
# Modifiers that change the type instead: a variable that names an argument
|
|
1105
|
+
# renders as `parameter`, like the argument's declaration.
|
|
1106
|
+
_TOKEN_MODIFIER_TO_SEM_TYPE: ClassVar[Dict[Tuple[TokenKind, TokenModifier], AnyTokenType]] = {
|
|
1107
|
+
(TokenKind.VARIABLE, TokenModifier.ARGUMENT): SemanticTokenTypes.PARAMETER,
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1102
1110
|
# --- Legacy-compat emission policy (design D7) ---
|
|
1103
1111
|
|
|
1104
1112
|
# Whole options of control structures render atomically: one control-flow
|
|
@@ -1151,6 +1159,8 @@ class SemanticTokenGenerator:
|
|
|
1151
1159
|
"""Initialize the generator with its own dependencies."""
|
|
1152
1160
|
self.token_mapper = SemanticTokenMapper()
|
|
1153
1161
|
self.keyword_analyzer = KeywordTokenAnalyzer(self.token_mapper)
|
|
1162
|
+
# a namespace holds the result of one analysis, so its argument uses never change
|
|
1163
|
+
self._argument_uses_cache: WeakKeyDictionary[Namespace, FrozenSet[Tuple[int, int]]] = WeakKeyDictionary()
|
|
1154
1164
|
|
|
1155
1165
|
def collect_tokens_from_model(
|
|
1156
1166
|
self,
|
|
@@ -1231,6 +1241,8 @@ class SemanticTokenGenerator:
|
|
|
1231
1241
|
mapped = {self._TOKEN_MODIFIER_TO_SEM[m] for m in token.modifiers if m in self._TOKEN_MODIFIER_TO_SEM}
|
|
1232
1242
|
if mapped:
|
|
1233
1243
|
sem_mods = (sem_mods or set()) | mapped
|
|
1244
|
+
for m in token.modifiers:
|
|
1245
|
+
sem_type = self._TOKEN_MODIFIER_TO_SEM_TYPE.get((token.kind, m), sem_type)
|
|
1234
1246
|
return SemTokenInfo(token.line, token.col_offset, token.length, sem_type, sem_mods)
|
|
1235
1247
|
|
|
1236
1248
|
def _iter_model_sem_tokens(
|
|
@@ -1815,26 +1827,46 @@ class SemanticTokenGenerator:
|
|
|
1815
1827
|
if not sub_tokens:
|
|
1816
1828
|
yield SemTokenInfo.from_token(token, sem_type, sem_mod)
|
|
1817
1829
|
return
|
|
1818
|
-
yield from self._iter_variable_name_sem_tokens(sub_tokens, sem_type, sem_mod)
|
|
1830
|
+
yield from self._iter_variable_name_sem_tokens(sub_tokens, sem_type, sem_mod, self._argument_uses(namespace))
|
|
1831
|
+
|
|
1832
|
+
def _argument_uses(self, namespace: Namespace) -> FrozenSet[Tuple[int, int]]:
|
|
1833
|
+
"""Where the analysis resolved a name to an argument from `[Arguments]`, the same resolution Find References
|
|
1834
|
+
and Rename use; embedded arguments are left out."""
|
|
1835
|
+
uses = self._argument_uses_cache.get(namespace)
|
|
1836
|
+
if uses is None:
|
|
1837
|
+
uses = frozenset(
|
|
1838
|
+
(location.range.start.line, location.range.start.character)
|
|
1839
|
+
for var, locations in namespace.variable_references.items()
|
|
1840
|
+
if isinstance(var, ArgumentDefinition) and not isinstance(var, EmbeddedArgumentDefinition)
|
|
1841
|
+
for location in locations
|
|
1842
|
+
)
|
|
1843
|
+
self._argument_uses_cache[namespace] = uses
|
|
1844
|
+
return uses
|
|
1819
1845
|
|
|
1820
1846
|
def _iter_variable_name_sem_tokens(
|
|
1821
1847
|
self,
|
|
1822
1848
|
sub_tokens: Sequence[SemanticToken],
|
|
1823
1849
|
sem_type: AnyTokenType,
|
|
1824
1850
|
sem_mod: Optional[Set[AnyTokenModifier]],
|
|
1851
|
+
argument_uses: FrozenSet[Tuple[int, int]],
|
|
1825
1852
|
) -> Iterator[SemTokenInfo]:
|
|
1826
1853
|
for sub in sub_tokens:
|
|
1827
1854
|
if sub.kind is TokenKind.VARIABLE:
|
|
1828
1855
|
if sub.sub_tokens:
|
|
1829
|
-
yield from self._iter_variable_name_sem_tokens(
|
|
1856
|
+
yield from self._iter_variable_name_sem_tokens(
|
|
1857
|
+
sub.sub_tokens, RobotSemTokenTypes.VARIABLE, None, argument_uses
|
|
1858
|
+
)
|
|
1830
1859
|
else:
|
|
1831
1860
|
yield SemTokenInfo(sub.line, sub.col_offset, sub.length, RobotSemTokenTypes.VARIABLE)
|
|
1832
1861
|
elif sub.kind is TokenKind.PYTHON_EXPRESSION:
|
|
1833
1862
|
continue
|
|
1834
1863
|
elif sub.sub_tokens:
|
|
1835
|
-
yield from self._iter_variable_name_sem_tokens(sub.sub_tokens, sem_type, sem_mod)
|
|
1864
|
+
yield from self._iter_variable_name_sem_tokens(sub.sub_tokens, sem_type, sem_mod, argument_uses)
|
|
1836
1865
|
elif sub.kind is TokenKind.VARIABLE_BASE:
|
|
1837
|
-
|
|
1866
|
+
# a use of an argument is a parameter, like its declaration
|
|
1867
|
+
is_argument = (sub.range.start.line, sub.range.start.character) in argument_uses
|
|
1868
|
+
base_type = SemanticTokenTypes.PARAMETER if is_argument else sem_type
|
|
1869
|
+
yield SemTokenInfo(sub.line, sub.col_offset, sub.length, base_type, sem_mod)
|
|
1838
1870
|
elif sub.kind is TokenKind.VARIABLE_TYPE_HINT:
|
|
1839
1871
|
yield SemTokenInfo(sub.line, sub.col_offset, sub.length, SemanticTokenTypes.TYPE)
|
|
1840
1872
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: robotcode-language-server
|
|
3
|
-
Version: 2.8.0-dev.
|
|
3
|
+
Version: 2.8.0-dev.670
|
|
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
|
|
@@ -26,10 +26,10 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
|
26
26
|
Classifier: Topic :: Utilities
|
|
27
27
|
Classifier: Typing :: Typed
|
|
28
28
|
Requires-Python: >=3.10
|
|
29
|
-
Requires-Dist: robotcode-analyze==2.8.0-dev.
|
|
30
|
-
Requires-Dist: robotcode-jsonrpc2==2.8.0-dev.
|
|
31
|
-
Requires-Dist: robotcode-robot==2.8.0-dev.
|
|
32
|
-
Requires-Dist: robotcode==2.8.0-dev.
|
|
29
|
+
Requires-Dist: robotcode-analyze==2.8.0-dev.670
|
|
30
|
+
Requires-Dist: robotcode-jsonrpc2==2.8.0-dev.670
|
|
31
|
+
Requires-Dist: robotcode-robot==2.8.0-dev.670
|
|
32
|
+
Requires-Dist: robotcode==2.8.0-dev.670
|
|
33
33
|
Requires-Dist: robotframework>=5.0.0
|
|
34
34
|
Description-Content-Type: text/markdown
|
|
35
35
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
robotcode/language_server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
robotcode/language_server/__version__.py,sha256=
|
|
2
|
+
robotcode/language_server/__version__.py,sha256=H0IFmU7VH6n_W0CbM7UtSwMIjNMI6OcCSdI7uBsndDU,30
|
|
3
3
|
robotcode/language_server/cli.py,sha256=FsutR2FF8YjCMRtq2c_i0wYSktP8KkhGnnfEy4fcpww,4136
|
|
4
4
|
robotcode/language_server/hooks.py,sha256=wahxowTEo9Q16q5VK7AmhKDMdbtxcvqg9242-_L9tTA,204
|
|
5
5
|
robotcode/language_server/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
|
|
@@ -39,7 +39,7 @@ robotcode/language_server/robotframework/configuration.py,sha256=G6jchWIawSKiqKT
|
|
|
39
39
|
robotcode/language_server/robotframework/protocol.py,sha256=ONaBVaqz4LZ0DGd9iKy43z4FPh2lI7jt5J1CIDH6mfw,10831
|
|
40
40
|
robotcode/language_server/robotframework/server.py,sha256=-1EQ1zGyLAS1LM6aMa6IRT2KqYiLWWVr6GOhiQZ8Ncw,1045
|
|
41
41
|
robotcode/language_server/robotframework/parts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
|
-
robotcode/language_server/robotframework/parts/code_action_documentation.py,sha256=
|
|
42
|
+
robotcode/language_server/robotframework/parts/code_action_documentation.py,sha256=TFztfmk_nZDGJ6nNPHXTDyqL5zx3ZIa4O-DcGCYQVks,27583
|
|
43
43
|
robotcode/language_server/robotframework/parts/code_action_helper_mixin.py,sha256=hAd3e5hMnpqi8vGReHQCI6bS8cwNggr6RA7F_knFL1o,4553
|
|
44
44
|
robotcode/language_server/robotframework/parts/code_action_quick_fixes.py,sha256=wIJduFlNwvzZY371VaaTchXm8GgivSbQyPWQ30DpNOY,33770
|
|
45
45
|
robotcode/language_server/robotframework/parts/code_action_refactor.py,sha256=t9QVp3zZ9VRvv1PSACegdGUiIgHzvE9vvCisIAtqcO8,27419
|
|
@@ -61,16 +61,16 @@ robotcode/language_server/robotframework/parts/keywords_treeview.py,sha256=kSfVR
|
|
|
61
61
|
robotcode/language_server/robotframework/parts/model_variables.py,sha256=F4u_Nua4a_Tga3cVV1pD-hE9xZsxcWITN8umck58Kn0,14137
|
|
62
62
|
robotcode/language_server/robotframework/parts/project_info.py,sha256=5v_livYd7G-x5ZV5SbCt7R7kri0-qfZuqOrFgtd2KaY,1631
|
|
63
63
|
robotcode/language_server/robotframework/parts/protocol_part.py,sha256=4LHac_eBg18Df6J9dJCMtvmR_Y1F6lYMVlghK1Ne8m8,413
|
|
64
|
-
robotcode/language_server/robotframework/parts/references.py,sha256=
|
|
64
|
+
robotcode/language_server/robotframework/parts/references.py,sha256=UPTs2kvn4r0xZMTCzDlXZE0eoBp18ScMeyxGgNt0btY,24471
|
|
65
65
|
robotcode/language_server/robotframework/parts/rename.py,sha256=fynUSzMy5tZ_URjPKyY_6DW42MBj0LagZjchKIzkXAE,9467
|
|
66
66
|
robotcode/language_server/robotframework/parts/robocop_diagnostics.py,sha256=Z94zXFoqDTdGl3hJOrw__wFcLY6sTnNrhDr7QiSOBrQ,10643
|
|
67
67
|
robotcode/language_server/robotframework/parts/robocop_helper.py,sha256=SRmcAq4pRVzT_oP4R8FUB2oACeLcds9rYZqgFNWsmI0,3592
|
|
68
68
|
robotcode/language_server/robotframework/parts/robot_workspace.py,sha256=0IrBgUWs1oed11GeVLwZR_G44vXZmmn27AD29wjM59I,14790
|
|
69
69
|
robotcode/language_server/robotframework/parts/selection_range.py,sha256=ye0PkchedHgkrVJ7IthkAVTVstH7LEcmAcBQPw8t2mQ,3504
|
|
70
|
-
robotcode/language_server/robotframework/parts/semantic_tokens.py,sha256=
|
|
70
|
+
robotcode/language_server/robotframework/parts/semantic_tokens.py,sha256=pbRpMMdV5XeVfhozYf6uUZG_XmMCN9MYwylBUBqFkPI,84553
|
|
71
71
|
robotcode/language_server/robotframework/parts/signature_help.py,sha256=CJnG8LH21O60kZQLFltb0PzSsN745pYrmtASdE1d2Nw,31306
|
|
72
72
|
robotcode/language_server/robotframework/parts/workspace_symbols.py,sha256=eywbtK56TTLbwuTwoUvNtlhIyAX-2l1BcZntYODuhPQ,3688
|
|
73
|
-
robotcode_language_server-2.8.0.
|
|
74
|
-
robotcode_language_server-2.8.0.
|
|
75
|
-
robotcode_language_server-2.8.0.
|
|
76
|
-
robotcode_language_server-2.8.0.
|
|
73
|
+
robotcode_language_server-2.8.0.dev670.dist-info/METADATA,sha256=MeeZJAd1tC39VheE9Wvw1Wu7EX52z9IZH40LLHfAw3I,3324
|
|
74
|
+
robotcode_language_server-2.8.0.dev670.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
75
|
+
robotcode_language_server-2.8.0.dev670.dist-info/entry_points.txt,sha256=Mz2JImlHxd6aYE41Z2r8KaoCnbOcXlR5Zm9Qw_G9Ff0,57
|
|
76
|
+
robotcode_language_server-2.8.0.dev670.dist-info/RECORD,,
|
|
File without changes
|