Skip to content

Commit 1328e4e

Browse files
committed
Some cleanup for signature help
1 parent fca850c commit 1328e4e

File tree

2 files changed

+4
-54
lines changed

2 files changed

+4
-54
lines changed

src/text/text_editor.nim

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -311,12 +311,8 @@ type TextDocumentEditor* = ref object of DocumentEditor
311311

312312
# signatureHelp
313313
showSignatureHelpTask: DelayedTask # for showing signatureHelp info after a delay
314-
hideSignatureHelpTask: DelayedTask # for hiding signatureHelp info after a delay
315-
currentSignatureHelpLocation: Cursor # the location of the mouse signatureHelp
316314
showSignatureHelp*: bool # whether to show signatureHelp info in ui
317-
signatureHelpText*: string # the text to show in the signatureHelp info
318315
signatureHelpLocation*: Cursor # where to show the signatureHelp info
319-
signatureHelpScrollOffset*: float # the scroll offset inside the signatureHelp window
320316
signatures*: seq[lsp_types.SignatureInformation]
321317
currentSignature*: int
322318
currentSignatureParam*: int
@@ -717,7 +713,6 @@ method deinit*(self: TextDocumentEditor) =
717713
if self.showHoverTask.isNotNil: self.showHoverTask.pause()
718714
if self.hideHoverTask.isNotNil: self.hideHoverTask.pause()
719715
if self.showSignatureHelpTask.isNotNil: self.showSignatureHelpTask.pause()
720-
if self.hideSignatureHelpTask.isNotNil: self.hideSignatureHelpTask.pause()
721716

722717
if self.completionEngine.isNotNil:
723718
self.completionEngine.onCompletionsUpdated.unsubscribe(self.onCompletionsUpdatedHandle)
@@ -3737,9 +3732,6 @@ proc showHoverForAsync(self: TextDocumentEditor, cursor: Cursor): Future[void] {
37373732
self.markDirty()
37383733

37393734
proc showSignatureHelpAsync(self: TextDocumentEditor, cursor: Cursor, hideIfEmpty: bool): Future[void] {.async.} =
3740-
if self.hideSignatureHelpTask.isNotNil:
3741-
self.hideSignatureHelpTask.pause()
3742-
37433735
let languageServer = self.document.getLanguageServer()
37443736
if self.document.isNil:
37453737
return
@@ -3752,13 +3744,9 @@ proc showSignatureHelpAsync(self: TextDocumentEditor, cursor: Cursor, hideIfEmpt
37523744
if self.selection.last.line != cursor.line:
37533745
return
37543746

3755-
self.signatureHelpText = "No signatures found"
37563747
if signatureHelps.isSuccess:
37573748
self.showSignatureHelp = true
3758-
self.signatureHelpScrollOffset = 0
37593749
var signatures: seq[lsp_types.SignatureInformation]
3760-
var text = ""
3761-
var k = 0
37623750
var signatureIndex = 0
37633751
var parameterIndex = 0
37643752
for res in signatureHelps.result:
@@ -3769,26 +3757,12 @@ proc showSignatureHelpAsync(self: TextDocumentEditor, cursor: Cursor, hideIfEmpt
37693757
parameterIndex = res.activeParameter.get()
37703758

37713759
for sig in res.signatures:
3772-
defer:
3773-
inc k
37743760
signatures.add sig
37753761

3776-
if k > 0:
3777-
text.add "\n"
3778-
text.add sig.label
3779-
# for i, p in sig.parameters:
3780-
# if i > 0:
3781-
# text.add ", "
3782-
# if p.label.kind == JString:
3783-
# text.add p.label.getStr
3784-
# else:
3785-
# text.add $p.label
3786-
3787-
if text.len > 0:
3762+
if signatures.len > 0:
37883763
self.signatures = signatures
37893764
self.currentSignature = signatureIndex
37903765
self.currentSignatureParam = parameterIndex
3791-
self.signatureHelpText = text
37923766
self.signatureHelpLocation = cursor
37933767

37943768
let move = self.settings.signatureHelpMove.get()
@@ -3865,26 +3839,8 @@ proc showHoverForDelayed*(self: TextDocumentEditor, cursor: Cursor) =
38653839

38663840
self.markDirty()
38673841

3868-
proc hideSignatureHelpDelayed*(self: TextDocumentEditor) =
3869-
## Hides the hover information after a delay.
3870-
if self.showSignatureHelpTask.isNotNil:
3871-
self.showSignatureHelpTask.pause()
3872-
3873-
let hoverDelayMs = self.settings.hoverDelay.get()
3874-
if self.hideSignatureHelpTask.isNil:
3875-
self.hideSignatureHelpTask = startDelayed(hoverDelayMs, repeat=false):
3876-
self.hideSignatureHelp()
3877-
else:
3878-
self.hideSignatureHelpTask.interval = hoverDelayMs
3879-
self.hideSignatureHelpTask.reschedule()
3880-
38813842
proc showSignatureHelpForDelayed*(self: TextDocumentEditor, cursor: Cursor) =
38823843
## Show hover information for the given cursor after a delay.
3883-
# self.currentSignatureHelpLocation = cursor
3884-
3885-
# if self.hideSignatureHelpTask.isNotNil:
3886-
# self.hideSignatureHelpTask.pause()
3887-
38883844
let hoverDelayMs = self.settings.hoverDelay.get()
38893845
if self.showSignatureHelpTask.isNil:
38903846
self.showSignatureHelpTask = startDelayed(hoverDelayMs, repeat=false):

src/ui/widget_builder_text_document.nim

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -194,15 +194,6 @@ proc createSignatureHelp(self: TextDocumentEditor, builder: UINodeBuilder, app:
194194
let inactiveSignatureColor = app.themes.theme.color("editor.foreground", color(1, 1, 1)).darken(0.15)
195195
let activeSignatureColor = app.themes.theme.color("editor.foreground", color(1, 1, 1))
196196
let activeParamColor = app.themes.theme.color("editor.foreground.highlight", activeSignatureColor.lighten(0.15))
197-
let docsColor = app.themes.theme.color("editor.foreground", color(1, 1, 1))
198-
199-
let numLinesToShow = min(10, self.signatureHelpText.countLines)
200-
let (top, bottom) = (
201-
cursorBounds.yh.float - floor(builder.charWidth * 0.5),
202-
cursorBounds.yh.float + totalLineHeight * numLinesToShow.float - floor(builder.charWidth * 0.5))
203-
let height = bottom - top
204-
205-
let border = ceil(builder.charWidth * 0.5)
206197

207198
proc drawSignature(color: Color, sig: lsp_types.SignatureInformation) =
208199
let activeParameter = sig.activeParameter.get(self.currentSignatureParam)
@@ -234,6 +225,9 @@ proc createSignatureHelp(self: TextDocumentEditor, builder: UINodeBuilder, app:
234225
if self.currentSignature in 0..self.signatures.high:
235226
drawSignature(activeSignatureColor, self.signatures[self.currentSignature])
236227

228+
if self.signatures.len == 0:
229+
builder.panel(&{DrawText, SizeToContentX, SizeToContentY}, text = "No signatures", textColor = activeSignatureColor)
230+
237231
var clampedX = cursorBounds.x
238232
if clampedX + signatureHelpPanel.bounds.w > builder.root.w:
239233
clampedX = max(builder.root.w - signatureHelpPanel.bounds.w, 0)

0 commit comments

Comments
 (0)