@@ -7,10 +7,48 @@ import (
77 "github.com/sourcegraph/go-lsp"
88)
99
10+ // ServerCapabilities is a temporary workaround for the missing folding range
11+ // provider field in Sourcegraph's go-lsp package. We will work on an in-house
12+ // version of the LSP implementation in Go in the future.
13+ type ServerCapabilities struct {
14+ TextDocumentSync * lsp.TextDocumentSyncOptionsOrKind `json:"textDocumentSync,omitempty"`
15+ HoverProvider bool `json:"hoverProvider,omitempty"`
16+ FoldingRangeProvider bool `json:"foldingRangeProvider,omitempty"`
17+ CompletionProvider * lsp.CompletionOptions `json:"completionProvider,omitempty"`
18+ SignatureHelpProvider * lsp.SignatureHelpOptions `json:"signatureHelpProvider,omitempty"`
19+ DefinitionProvider bool `json:"definitionProvider,omitempty"`
20+ TypeDefinitionProvider bool `json:"typeDefinitionProvider,omitempty"`
21+ ReferencesProvider bool `json:"referencesProvider,omitempty"`
22+ DocumentHighlightProvider bool `json:"documentHighlightProvider,omitempty"`
23+ DocumentSymbolProvider bool `json:"documentSymbolProvider,omitempty"`
24+ WorkspaceSymbolProvider bool `json:"workspaceSymbolProvider,omitempty"`
25+ ImplementationProvider bool `json:"implementationProvider,omitempty"`
26+ CodeActionProvider bool `json:"codeActionProvider,omitempty"`
27+ CodeLensProvider * lsp.CodeLensOptions `json:"codeLensProvider,omitempty"`
28+ DocumentFormattingProvider bool `json:"documentFormattingProvider,omitempty"`
29+ DocumentRangeFormattingProvider bool `json:"documentRangeFormattingProvider,omitempty"`
30+ DocumentOnTypeFormattingProvider * lsp.DocumentOnTypeFormattingOptions `json:"documentOnTypeFormattingProvider,omitempty"`
31+ RenameProvider bool `json:"renameProvider,omitempty"`
32+ ExecuteCommandProvider * lsp.ExecuteCommandOptions `json:"executeCommandProvider,omitempty"`
33+ SemanticHighlighting * lsp.SemanticHighlightingOptions `json:"semanticHighlighting,omitempty"`
34+ XWorkspaceReferencesProvider bool `json:"xworkspaceReferencesProvider,omitempty"`
35+ XDefinitionProvider bool `json:"xdefinitionProvider,omitempty"`
36+ XWorkspaceSymbolByProperties bool `json:"xworkspaceSymbolByProperties,omitempty"`
37+
38+ Experimental interface {} `json:"experimental,omitempty"`
39+ }
40+
41+ // InitializeResult is a temporary workaround for the missing folding range
42+ // provider field in Sourcegraph's go-lsp package. We will work on an in-house
43+ // version of the LSP implementation in Go in the future.
44+ type InitializeResult struct {
45+ Capabilities ServerCapabilities `json:"capabilities"`
46+ }
47+
1048// Initialize is the callback that runs on the "initialize" method
11- func (mh * MethodHandler ) Initialize (ctx context.Context , _ * jrpc2.Request ) (lsp. InitializeResult , error ) {
12- result := lsp. InitializeResult {
13- Capabilities : lsp. ServerCapabilities {
49+ func (mh * MethodHandler ) Initialize (ctx context.Context , _ * jrpc2.Request ) (InitializeResult , error ) {
50+ result := InitializeResult {
51+ Capabilities : ServerCapabilities {
1452 TextDocumentSync : & lsp.TextDocumentSyncOptionsOrKind {
1553 Options : & lsp.TextDocumentSyncOptions {
1654 OpenClose : true ,
@@ -20,7 +58,8 @@ func (mh *MethodHandler) Initialize(ctx context.Context, _ *jrpc2.Request) (lsp.
2058 CompletionProvider : & lsp.CompletionOptions {
2159 ResolveProvider : false ,
2260 },
23- HoverProvider : true ,
61+ HoverProvider : true ,
62+ FoldingRangeProvider : true ,
2463 },
2564 }
2665
0 commit comments