Skip to content

Commit 8ebe8e2

Browse files
committed
switch to our own go-lsp module
1 parent 118bdcd commit 8ebe8e2

26 files changed

+66
-127
lines changed

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.15
44

55
require (
66
github.com/creachadair/jrpc2 v0.10.3
7-
github.com/sourcegraph/go-lsp v0.0.0-20200429204803-219e11d77f5d
87
github.com/spf13/afero v1.4.1
98
github.com/urfave/cli/v2 v2.2.0
9+
pkg.nimblebun.works/go-lsp v1.0.3
1010
)

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0
1919
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
2020
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
2121
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
22-
github.com/sourcegraph/go-lsp v0.0.0-20200429204803-219e11d77f5d h1:afLbh+ltiygTOB37ymZVwKlJwWZn+86syPTbrrOAydY=
23-
github.com/sourcegraph/go-lsp v0.0.0-20200429204803-219e11d77f5d/go.mod h1:SULmZY7YNBsvNiQbrb/BEDdEJ84TGnfyUQxaHt8t8rY=
2422
github.com/spf13/afero v1.4.1 h1:asw9sl74539yqavKaglDM5hFpdJVK0Y5Dr/JOgQ89nQ=
2523
github.com/spf13/afero v1.4.1/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
2624
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -43,3 +41,5 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1N
4341
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
4442
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
4543
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
44+
pkg.nimblebun.works/go-lsp v1.0.3 h1:tKYx+vhdwgA6+2rDBFfZXEg4XuQBvB5GpbKZYKiE+NA=
45+
pkg.nimblebun.works/go-lsp v1.0.3/go.mod h1:Suh759Ki+DjU0zwf0xkl1H6Ln1C6/+GtYyNofbtfcug=

langserver/diagnostics/diagnostics.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"sync"
77

88
"github.com/creachadair/jrpc2"
9-
"github.com/sourcegraph/go-lsp"
9+
"pkg.nimblebun.works/go-lsp"
1010
)
1111

1212
// DocumentContext contains data about the document on which we have performed

langserver/filesystem/file.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package filesystem
22

33
import (
4-
"github.com/sourcegraph/go-lsp"
4+
"pkg.nimblebun.works/go-lsp"
55
"pkg.nimblebun.works/tsc-language-server/langserver/filesystem/filehandler"
66
)
77

langserver/filesystem/filehandler/file_handler.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"path/filepath"
66
"strings"
77

8-
"github.com/sourcegraph/go-lsp"
8+
"pkg.nimblebun.works/go-lsp"
99
"pkg.nimblebun.works/tsc-language-server/langserver/filesystem/uri"
1010
)
1111

langserver/filesystem/filesystem.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
"log"
77
"os"
88

9-
"github.com/sourcegraph/go-lsp"
109
"github.com/spf13/afero"
10+
"pkg.nimblebun.works/go-lsp"
1111
"pkg.nimblebun.works/tsc-language-server/langserver/filesystem/filehandler"
1212
"pkg.nimblebun.works/tsc-language-server/utils"
1313
)

langserver/handlers/cancel_request.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55

66
"github.com/creachadair/jrpc2"
7-
"github.com/sourcegraph/go-lsp"
7+
"pkg.nimblebun.works/go-lsp"
88
)
99

1010
// CancelRequest will be called on "$/cancelRequest"
@@ -16,7 +16,7 @@ func CancelRequest(ctx context.Context, req *jrpc2.Request) error {
1616
return err
1717
}
1818

19-
id := params.ID.Str
19+
id := params.ID.String()
2020
jrpc2.CancelRequest(ctx, id)
2121
return nil
2222
}

langserver/handlers/completion.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55

66
"github.com/creachadair/jrpc2"
7-
"github.com/sourcegraph/go-lsp"
7+
"pkg.nimblebun.works/go-lsp"
88
lsctx "pkg.nimblebun.works/tsc-language-server/langserver/context"
99
"pkg.nimblebun.works/tsc-language-server/tsc"
1010
)

langserver/handlers/did_change.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55

66
"github.com/creachadair/jrpc2"
7-
"github.com/sourcegraph/go-lsp"
7+
"pkg.nimblebun.works/go-lsp"
88
lsctx "pkg.nimblebun.works/tsc-language-server/langserver/context"
99
"pkg.nimblebun.works/tsc-language-server/langserver/filesystem/filehandler"
1010
"pkg.nimblebun.works/tsc-language-server/tsc/validators"

langserver/handlers/did_close.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55

66
"github.com/creachadair/jrpc2"
7-
"github.com/sourcegraph/go-lsp"
7+
"pkg.nimblebun.works/go-lsp"
88
lsctx "pkg.nimblebun.works/tsc-language-server/langserver/context"
99
"pkg.nimblebun.works/tsc-language-server/langserver/filesystem/filehandler"
1010
)

langserver/handlers/did_open.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55

66
"github.com/creachadair/jrpc2"
7-
"github.com/sourcegraph/go-lsp"
7+
"pkg.nimblebun.works/go-lsp"
88
lsctx "pkg.nimblebun.works/tsc-language-server/langserver/context"
99
"pkg.nimblebun.works/tsc-language-server/langserver/filesystem"
1010
"pkg.nimblebun.works/tsc-language-server/tsc/validators"

langserver/handlers/folding.go

+7-13
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,35 @@ import (
44
"context"
55

66
"github.com/creachadair/jrpc2"
7-
"github.com/sourcegraph/go-lsp"
7+
"pkg.nimblebun.works/go-lsp"
88
lsctx "pkg.nimblebun.works/tsc-language-server/langserver/context"
99
"pkg.nimblebun.works/tsc-language-server/langserver/filesystem/filehandler"
1010
"pkg.nimblebun.works/tsc-language-server/tsc"
1111
)
1212

13-
// FoldingRangeParams is a (loosely reproduced) structure that contains the
14-
// fields sent on a textDocument/foldingRange request.
15-
type FoldingRangeParams struct {
16-
TextDocument lsp.TextDocumentIdentifier `json:"textDocument"`
17-
}
18-
1913
// TextDocumentFoldingRange is the callback that runs on the
2014
// "textDocument/foldingRange" method.
21-
func (mh *MethodHandler) TextDocumentFoldingRange(ctx context.Context, req *jrpc2.Request) ([]tsc.FoldingRange, error) {
22-
var params FoldingRangeParams
15+
func (mh *MethodHandler) TextDocumentFoldingRange(ctx context.Context, req *jrpc2.Request) ([]lsp.FoldingRange, error) {
16+
var params lsp.FoldingRangeParams
2317
err := req.UnmarshalParams(jrpc2.NonStrict(&params))
2418
if err != nil {
25-
return []tsc.FoldingRange{}, err
19+
return []lsp.FoldingRange{}, err
2620
}
2721

2822
fs, err := lsctx.FileSystem(ctx)
2923
if err != nil {
30-
return []tsc.FoldingRange{}, err
24+
return []lsp.FoldingRange{}, err
3125
}
3226

3327
handler := filehandler.FromDocumentURI(params.TextDocument.URI)
3428
path, err := handler.FullPath()
3529
if err != nil {
36-
return []tsc.FoldingRange{}, err
30+
return []lsp.FoldingRange{}, err
3731
}
3832

3933
contents, err := fs.ReadFile(path)
4034
if err != nil {
41-
return []tsc.FoldingRange{}, err
35+
return []lsp.FoldingRange{}, err
4236
}
4337

4438
doc := lsp.TextDocumentItem{

langserver/handlers/hover.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package handlers
33
import (
44
"context"
55

6-
"github.com/sourcegraph/go-lsp"
6+
"pkg.nimblebun.works/go-lsp"
77
lsctx "pkg.nimblebun.works/tsc-language-server/langserver/context"
88
"pkg.nimblebun.works/tsc-language-server/langserver/filesystem/filehandler"
99
"pkg.nimblebun.works/tsc-language-server/tsc"
@@ -67,7 +67,10 @@ func (mh *MethodHandler) TextDocumentHover(ctx context.Context, params lsp.TextD
6767
info := tsc.GetHoverInfo(text, offset-startOffset, config)
6868

6969
if len(info) > 0 {
70-
result.Contents = append(result.Contents, lsp.RawMarkedString(info))
70+
result.Contents = lsp.MarkupContent{
71+
Kind: lsp.MKMarkdown,
72+
Value: info,
73+
}
7174
}
7275

7376
return result, nil

langserver/handlers/initialize.go

+9-49
Original file line numberDiff line numberDiff line change
@@ -4,62 +4,22 @@ import (
44
"context"
55

66
"github.com/creachadair/jrpc2"
7-
"github.com/sourcegraph/go-lsp"
7+
"pkg.nimblebun.works/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-
4810
// Initialize is the callback that runs on the "initialize" method
49-
func (mh *MethodHandler) Initialize(ctx context.Context, _ *jrpc2.Request) (InitializeResult, error) {
50-
result := InitializeResult{
51-
Capabilities: ServerCapabilities{
52-
TextDocumentSync: &lsp.TextDocumentSyncOptionsOrKind{
53-
Options: &lsp.TextDocumentSyncOptions{
54-
OpenClose: true,
55-
Change: lsp.TDSKIncremental,
56-
},
11+
func (mh *MethodHandler) Initialize(ctx context.Context, _ *jrpc2.Request) (lsp.InitializeResult, error) {
12+
result := lsp.InitializeResult{
13+
Capabilities: lsp.ServerCapabilities{
14+
TextDocumentSync: &lsp.TextDocumentSyncOptions{
15+
OpenClose: true,
16+
Change: lsp.TDSyncKindIncremental,
5717
},
5818
CompletionProvider: &lsp.CompletionOptions{
5919
ResolveProvider: false,
6020
},
61-
HoverProvider: true,
62-
FoldingRangeProvider: true,
21+
HoverProvider: &lsp.HoverOptions{},
22+
FoldingRangeProvider: &lsp.FoldingRangeRegistrationOptions{},
6323
},
6424
}
6525

langserver/textdocument/textdocument.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ package textdocument
77
import (
88
"math"
99

10-
"github.com/sourcegraph/go-lsp"
10+
"pkg.nimblebun.works/go-lsp"
1111
)
1212

1313
// TextDocument is a struct that extends the lsp.TextDocumentItem struct with

main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ func main() {
1212
app := cli.NewApp()
1313
app.Name = "tsc-ls"
1414
app.Usage = "language Server for the TSC scripting language"
15-
app.Version = "0.1.3"
15+
app.Version = "0.1.4"
1616

1717
app.Commands = []*cli.Command{
1818
{

tsc/completions.go

+11-8
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,28 @@
11
package tsc
22

33
import (
4-
"github.com/sourcegraph/go-lsp"
4+
"pkg.nimblebun.works/go-lsp"
55
"pkg.nimblebun.works/tsc-language-server/config"
66
)
77

88
// GetCompletions will return a list of completions that can be used for a
99
// provided TSC command.
1010
func GetCompletions(conf *config.Config) []lsp.CompletionItem {
11-
items := []lsp.CompletionItem{}
11+
items := make([]lsp.CompletionItem, 0)
1212

1313
definitions := conf.GetTSCDefinitions()
1414

1515
for idx, def := range definitions {
1616
item := lsp.CompletionItem{
17-
Label: def.Label,
18-
Detail: def.Detail,
19-
Documentation: def.Documentation,
20-
Kind: lsp.CIKFunction,
21-
Data: idx,
22-
InsertText: def.GetInsertText(),
17+
Label: def.Label,
18+
Detail: def.Detail,
19+
Documentation: lsp.MarkupContent{
20+
Kind: lsp.MKMarkdown,
21+
Value: def.Documentation,
22+
},
23+
Kind: lsp.CIKFunction,
24+
Data: idx,
25+
InsertText: def.GetInsertText(),
2326
}
2427

2528
if def.Nargs() > 0 {

tsc/completions_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package tsc_test
33
import (
44
"testing"
55

6-
"github.com/sourcegraph/go-lsp"
6+
"pkg.nimblebun.works/go-lsp"
77
"pkg.nimblebun.works/tsc-language-server/config"
88
"pkg.nimblebun.works/tsc-language-server/tsc"
99
)
@@ -30,7 +30,7 @@ func TestGetCompletions(t *testing.T) {
3030
t.Errorf("GetCompletions(&conf) @ %s (detail) got %v, want %v", val.Label, val.Detail, definition.Detail)
3131
}
3232

33-
if val.Documentation != definition.Documentation {
33+
if val.Documentation.Value != definition.Documentation {
3434
t.Errorf("GetCompletions(&conf) @ %s (documentation) got %v, want %v", val.Label, val.Documentation, definition.Documentation)
3535
}
3636

tsc/folding.go

+6-27
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,32 @@
11
package tsc
22

33
import (
4-
"github.com/sourcegraph/go-lsp"
4+
"pkg.nimblebun.works/go-lsp"
55
"pkg.nimblebun.works/tsc-language-server/langserver/textdocument"
66
"pkg.nimblebun.works/tsc-language-server/utils"
77
)
88

9-
const (
10-
// FRKComment resolves to the "comment" folding range kind.
11-
FRKComment = "comment"
12-
13-
// FRKImports resolves to the "imports" folding range kind.
14-
FRKImports = "imports"
15-
16-
// FRKRegion resolves to the "region" folding range kind.
17-
FRKRegion = "region"
18-
)
19-
20-
// FoldingRange defines a LSP-compatible folding range.
21-
type FoldingRange struct {
22-
StartLine int `json:"startLine"`
23-
StartCharacter int `json:"startCharacter,omitempty"`
24-
EndLine int `json:"endLine"`
25-
EndCharacter int `json:"endCharacter"`
26-
27-
Kind string `json:"kind,omitempty"`
28-
}
29-
30-
func createFoldingRange(start int, end int, document textdocument.TextDocument) FoldingRange {
9+
func createFoldingRange(start int, end int, document textdocument.TextDocument) lsp.FoldingRange {
3110
startPos := document.PositionAt(start)
3211
endPos := document.PositionAt(end)
3312

34-
return FoldingRange{
13+
return lsp.FoldingRange{
3514
StartLine: startPos.Line,
3615
StartCharacter: startPos.Character,
3716

3817
EndLine: endPos.Line,
3918
EndCharacter: endPos.Character,
4019

41-
Kind: FRKRegion,
20+
Kind: lsp.FoldingRangeKindRegion,
4221
}
4322
}
4423

4524
// GetFoldingRanges will return all foldable ranges from a given document.
46-
func GetFoldingRanges(textDocumentItem lsp.TextDocumentItem) []FoldingRange {
25+
func GetFoldingRanges(textDocumentItem lsp.TextDocumentItem) []lsp.FoldingRange {
4726
text := textDocumentItem.Text
4827

4928
document := textdocument.From(textDocumentItem)
50-
ranges := make([]FoldingRange, 0)
29+
ranges := make([]lsp.FoldingRange, 0)
5130

5231
start := -1
5332
end := -1

0 commit comments

Comments
 (0)