Skip to content

Commit 039682d

Browse files
committed
feat(language_server): enhanced hover representation of variables
1 parent 5dba571 commit 039682d

File tree

1 file changed

+27
-12
lines changed
  • packages/language_server/src/robotcode/language_server/robotframework/parts

1 file changed

+27
-12
lines changed

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

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,16 @@
4444
_HoverMethod = Callable[[ast.AST, List[ast.AST], TextDocument, Position], Optional[Hover]]
4545

4646

47+
class MyRepr(reprlib.Repr):
48+
def __init__(self) -> None:
49+
super().__init__()
50+
self.maxstring = 50
51+
self.indent = 4
52+
53+
54+
_my_repr = MyRepr()
55+
56+
4757
class RobotHoverProtocolPart(RobotLanguageServerProtocolPart, ModelHelper):
4858
_logger = LoggingDescriptor()
4959

@@ -115,6 +125,7 @@ def _hover_default(self, nodes: List[ast.AST], document: TextDocument, position:
115125
)
116126
)
117127
value = None
128+
real_value = None
118129
if found_range is not None:
119130
highlight_range = found_range
120131
if variable.has_value or variable.resolvable:
@@ -132,13 +143,14 @@ def _hover_default(self, nodes: List[ast.AST], document: TextDocument, position:
132143
value = "[]"
133144
else:
134145
try:
135-
value = reprlib.repr(
136-
namespace.imports_manager.resolve_variable(
137-
variable.name,
138-
str(document.uri.to_path().parent),
139-
namespace.get_resolvable_variables(nodes, position),
140-
)
146+
real_value = namespace.imports_manager.resolve_variable(
147+
variable.name,
148+
str(document.uri.to_path().parent),
149+
namespace.get_resolvable_variables(nodes, position),
141150
)
151+
152+
value = _my_repr.repr(real_value)
153+
142154
except (
143155
asyncio.CancelledError,
144156
SystemExit,
@@ -150,15 +162,18 @@ def _hover_default(self, nodes: List[ast.AST], document: TextDocument, position:
150162
value = ""
151163
else:
152164
value = ""
153-
if text is None:
154-
text = ""
155-
if text:
156-
text += "\n"
157165

158-
text += f"| ({variable.type.value}) | {variable.name} | {f' `{value}`' if value else ''} |"
166+
text = f"### {variable.type.value.title()} `{variable.name}`\n\n"
167+
168+
if value:
159169

170+
text += "```python\n"
171+
text += f"value: {type(real_value).__name__} = {value}\n"
172+
text += "```\n"
173+
174+
text += "\n"
160175
if text:
161-
text = "| | | |\n|:--|:--|:--|\n" + text
176+
162177
return Hover(
163178
contents=MarkupContent(kind=MarkupKind.MARKDOWN, value=text),
164179
range=highlight_range,

0 commit comments

Comments
 (0)