@@ -24,6 +24,7 @@ defmodule NextLS do
2424 alias GenLSP.Requests.TextDocumentFormatting
2525 alias GenLSP.Requests.TextDocumentHover
2626 alias GenLSP.Requests.TextDocumentReferences
27+ alias GenLSP.Requests.TextDocumentSignatureHelp
2728 alias GenLSP.Requests.WorkspaceApplyEdit
2829 alias GenLSP.Requests.WorkspaceSymbol
2930 alias GenLSP.Structures.ApplyWorkspaceEditParams
@@ -41,6 +42,8 @@ defmodule NextLS do
4142 alias GenLSP.Structures.Range
4243 alias GenLSP.Structures.SaveOptions
4344 alias GenLSP.Structures.ServerCapabilities
45+ alias GenLSP.Structures.SignatureHelp
46+ alias GenLSP.Structures.SignatureHelpParams
4447 alias GenLSP.Structures.SymbolInformation
4548 alias GenLSP.Structures.TextDocumentIdentifier
4649 alias GenLSP.Structures.TextDocumentItem
@@ -53,6 +56,7 @@ defmodule NextLS do
5356 alias NextLS.DiagnosticCache
5457 alias NextLS.Progress
5558 alias NextLS.Runtime
59+ alias NextLS.SignatureHelp
5660
5761 def start_link ( args ) do
5862 { args , opts } =
@@ -146,6 +150,9 @@ defmodule NextLS do
146150 "from-pipe"
147151 ]
148152 } ,
153+ signature_help_provider: % GenLSP.Structures.SignatureHelpOptions {
154+ trigger_characters: [ "(" , "," ]
155+ } ,
149156 hover_provider: true ,
150157 workspace_symbol_provider: true ,
151158 document_symbol_provider: true ,
@@ -699,6 +706,20 @@ defmodule NextLS do
699706 { :reply , nil , lsp }
700707 end
701708
709+ def handle_request (
710+ % TextDocumentSignatureHelp { params: % SignatureHelpParams { text_document: % { uri: uri } , position: position } } ,
711+ lsp
712+ ) do
713+ result =
714+ dispatch ( lsp . assigns . registry , :databases , fn entries ->
715+ for { pid , _ } <- entries do
716+ SignatureHelp . fetch ( URI . parse ( uri ) . path , { position . line + 1 , position . character + 1 } , pid )
717+ end
718+ end )
719+
720+ { :reply , List . first ( result ) , lsp }
721+ end
722+
702723 def handle_request ( % Shutdown { } , lsp ) do
703724 { :reply , nil , assign ( lsp , exit_code: 0 ) }
704725 end
0 commit comments