Skip to content

Commit

Permalink
gopls/internal/lsp/source: factor edit conversion utils
Browse files Browse the repository at this point in the history
Change-Id: I85107134c426476f08a06940d53fc912f268ef60
Reviewed-on: https://go-review.googlesource.com/c/tools/+/556575
Reviewed-by: Robert Findley <rfindley@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
  • Loading branch information
adonovan committed Jan 19, 2024
1 parent 83c6c25 commit 186fcf3
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 58 deletions.
25 changes: 25 additions & 0 deletions gopls/internal/lsp/protocol/edits.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,3 +101,28 @@ func AsAnnotatedTextEdits(edits []TextEdit) []Or_TextDocumentEdit_edits_Elem {
}
return result
}

// TextEditsToDocumentChanges converts a set of edits within the
// specified (versioned) file to a singleton list of DocumentChanges
// (as required for a WorkspaceEdit).
func TextEditsToDocumentChanges(uri DocumentURI, version int32, edits []TextEdit) []DocumentChanges {
return []DocumentChanges{{
TextDocumentEdit: &TextDocumentEdit{
TextDocument: OptionalVersionedTextDocumentIdentifier{
Version: version,
TextDocumentIdentifier: TextDocumentIdentifier{URI: uri},
},
Edits: AsAnnotatedTextEdits(edits),
},
}}
}

// TextDocumentEditsToDocumentChanges wraps each TextDocumentEdit in a DocumentChange.
func TextDocumentEditsToDocumentChanges(edits []TextDocumentEdit) []DocumentChanges {
changes := []DocumentChanges{} // non-nil
for _, edit := range edits {
edit := edit
changes = append(changes, DocumentChanges{TextDocumentEdit: &edit})
}
return changes
}
12 changes: 1 addition & 11 deletions gopls/internal/lsp/source/change_quote.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,17 +78,7 @@ func ConvertStringLiteral(pgf *ParsedGoFile, fh file.Handle, rng protocol.Range)
Title: title,
Kind: protocol.RefactorRewrite,
Edit: &protocol.WorkspaceEdit{
DocumentChanges: []protocol.DocumentChanges{
{
TextDocumentEdit: &protocol.TextDocumentEdit{
TextDocument: protocol.OptionalVersionedTextDocumentIdentifier{
Version: fh.Version(),
TextDocumentIdentifier: protocol.TextDocumentIdentifier{URI: fh.URI()},
},
Edits: protocol.AsAnnotatedTextEdits(pedits),
},
},
},
DocumentChanges: protocol.TextEditsToDocumentChanges(fh.URI(), fh.Version(), pedits),
},
}, true
}
10 changes: 1 addition & 9 deletions gopls/internal/lsp/source/change_signature.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,15 +170,7 @@ func RemoveUnusedParameter(ctx context.Context, fh file.Handle, rng protocol.Ran
if err != nil {
return nil, fmt.Errorf("computing edits for %s: %v", uri, err)
}
changes = append(changes, protocol.DocumentChanges{
TextDocumentEdit: &protocol.TextDocumentEdit{
TextDocument: protocol.OptionalVersionedTextDocumentIdentifier{
Version: fh.Version(),
TextDocumentIdentifier: protocol.TextDocumentIdentifier{URI: uri},
},
Edits: protocol.AsAnnotatedTextEdits(pedits),
},
})
changes = append(changes, protocol.TextEditsToDocumentChanges(fh.URI(), fh.Version(), pedits)...)
}
return changes, nil
}
Expand Down
14 changes: 1 addition & 13 deletions gopls/internal/server/code_action.go
Original file line number Diff line number Diff line change
Expand Up @@ -687,19 +687,7 @@ func refactorInline(pkg *cache.Package, pgf *source.ParsedGoFile, rng protocol.R
}

func documentChanges(fh file.Handle, edits []protocol.TextEdit) []protocol.DocumentChanges {
return []protocol.DocumentChanges{
{
TextDocumentEdit: &protocol.TextDocumentEdit{
TextDocument: protocol.OptionalVersionedTextDocumentIdentifier{
Version: fh.Version(),
TextDocumentIdentifier: protocol.TextDocumentIdentifier{
URI: fh.URI(),
},
},
Edits: protocol.AsAnnotatedTextEdits(edits),
},
},
}
return protocol.TextEditsToDocumentChanges(fh.URI(), fh.Version(), edits)
}

// codeActionsMatchingDiagnostics fetches code actions for the provided
Expand Down
23 changes: 2 additions & 21 deletions gopls/internal/server/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -453,19 +453,7 @@ func (c *commandHandler) RemoveDependency(ctx context.Context, args command.Remo
}
response, err := c.s.client.ApplyEdit(ctx, &protocol.ApplyWorkspaceEditParams{
Edit: protocol.WorkspaceEdit{
DocumentChanges: []protocol.DocumentChanges{
{
TextDocumentEdit: &protocol.TextDocumentEdit{
TextDocument: protocol.OptionalVersionedTextDocumentIdentifier{
Version: deps.fh.Version(),
TextDocumentIdentifier: protocol.TextDocumentIdentifier{
URI: deps.fh.URI(),
},
},
Edits: protocol.AsAnnotatedTextEdits(edits),
},
},
},
DocumentChanges: documentChanges(deps.fh, edits),
},
})
if err != nil {
Expand Down Expand Up @@ -719,16 +707,9 @@ func applyFileEdits(ctx context.Context, cli protocol.Client, edits []protocol.T
if len(edits) == 0 {
return nil
}
documentChanges := []protocol.DocumentChanges{} // must be a slice
for _, change := range edits {
change := change
documentChanges = append(documentChanges, protocol.DocumentChanges{
TextDocumentEdit: &change,
})
}
response, err := cli.ApplyEdit(ctx, &protocol.ApplyWorkspaceEditParams{
Edit: protocol.WorkspaceEdit{
DocumentChanges: documentChanges,
DocumentChanges: protocol.TextDocumentEditsToDocumentChanges(edits),
},
})
if err != nil {
Expand Down
5 changes: 1 addition & 4 deletions gopls/internal/settings/settings.go
Original file line number Diff line number Diff line change
Expand Up @@ -1473,10 +1473,7 @@ func defaultAnalyzers() map[string]*Analyzer {
unusedwrite.Analyzer.Name: {Analyzer: unusedwrite.Analyzer, Enabled: false},
useany.Analyzer.Name: {Analyzer: useany.Analyzer, Enabled: false},
timeformat.Analyzer.Name: {Analyzer: timeformat.Analyzer, Enabled: true},
embeddirective.Analyzer.Name: {
Analyzer: embeddirective.Analyzer,
Enabled: true,
},
embeddirective.Analyzer.Name: {Analyzer: embeddirective.Analyzer, Enabled: true},

// gofmt -s suite:
simplifycompositelit.Analyzer.Name: {
Expand Down

0 comments on commit 186fcf3

Please sign in to comment.