Skip to content

Commit b3c1ce2

Browse files
committed
feat(langserver): support for folding WHILE and TRY/EXCEPT/FINALLY statements
1 parent d6b2ff4 commit b3c1ce2

File tree

169 files changed

+2800
-5
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

169 files changed

+2800
-5
lines changed

.vscode/launch.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@
167167
"args": [
168168
"--full-trace",
169169
"--tb=native",
170+
"--regtest2-reset",
170171
//"--regtest-reset",
171172
//"tests/robotcode/language_server/robotframework/parts/test_foldingrange.py"
172173
//"tests/robotcode/language_server/robotframework/parts/test_references.py"
@@ -175,7 +176,8 @@
175176
//"tests/robotcode/utils/test_dataclasses.py::test_really_complex_data"
176177
//"tests/robotcode/language_server/robotframework/parts/test_foldingrange.py"
177178
//"tests/robotcode/language_server/robotframework/parts/test_document_symbols.py",
178-
"./tests/robotcode/language_server/robotframework/parts/test_semantic_tokens.py "
179+
// "./tests/robotcode/language_server/robotframework/parts/test_semantic_tokens.py "
180+
"tests/robotcode/language_server/robotframework/parts/test_foldingrange.py::test[False-foldingrange.robot-123-001-try end]"
179181
],
180182
"console": "integratedTerminal",
181183
"justMyCode": false,

hatch.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ pre-install-commands = ["install-packages"]
3737
cov = "pytest --cov-report=term-missing --cov-config=pyproject.toml --cov=robotcode --cov=tests {args}"
3838
no-cov = "cov --no-cov {args}"
3939
test = "pytest {args}"
40-
test-reset = "test --regtest2-reset"
40+
test-reset = "pytest --regtest2-reset {args}"
4141
install-bundled-editable = "python ./scripts/install_bundled_editable.py"
4242
create-json-schema = "python ./scripts/create_robot_toml_json_schema.py"
4343
generate-rf-options = "python ./scripts/generate_rf_options.py"

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,7 @@
607607
},
608608
"extensions": [
609609
".robotrepl",
610-
".robotsript"
610+
".robotscript"
611611
],
612612
"configuration": "./language-configuration.json"
613613
},

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,17 @@
1010
from robotcode.core.lsp.types import FoldingRange
1111
from robotcode.core.text_document import TextDocument
1212
from robotcode.core.utils.logging import LoggingDescriptor
13+
from robotcode.robot.utils import get_robot_version
1314
from robotcode.robot.utils.visitor import Visitor
1415

1516
from .protocol_part import RobotLanguageServerProtocolPart
1617

1718
if TYPE_CHECKING:
1819
from ..protocol import RobotLanguageServerProtocol
1920

21+
if get_robot_version() >= (5, 0):
22+
from robot.parsing.model.blocks import Try, While
23+
2024

2125
class _Visitor(Visitor):
2226
def __init__(self, parent: RobotFoldingRangeProtocolPart) -> None:
@@ -117,6 +121,19 @@ def visit_If(self, node: If) -> None: # noqa: N802
117121
if node.type == "IF":
118122
self.current_if.remove(node)
119123

124+
if get_robot_version() >= (5, 0):
125+
126+
def visit_While(self, node: While) -> None: # noqa: N802
127+
self.__append(node, kind="while")
128+
self.generic_visit(node)
129+
130+
def visit_Try(self, node: Try) -> None: # noqa: N802
131+
self.__append(node, kind="try", end_node=node.body[-1] if node.body else None)
132+
self.generic_visit(node)
133+
134+
135+
#
136+
120137

121138
class RobotFoldingRangeProtocolPart(RobotLanguageServerProtocolPart):
122139
_logger = LoggingDescriptor()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
data: !GeneratedTestData
2+
character: 1
3+
line: 82
4+
name: while start
5+
result: []
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
data: !GeneratedTestData
2+
character: 1
3+
line: 86
4+
name: while end
5+
result: []
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
data: !GeneratedTestData
2+
character: 1
3+
line: 93
4+
name: try start
5+
result: []
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
data: !GeneratedTestData
2+
character: 1
3+
line: 96
4+
name: except start
5+
result: []
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
data: !GeneratedTestData
2+
character: 1
3+
line: 99
4+
name: try end
5+
result: []
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
data: !GeneratedTestData
2+
character: 1
3+
line: 102
4+
name: try start
5+
result: []

0 commit comments

Comments
 (0)