Skip to content

Commit 901d199

Browse files
Only print on the first-ish overload.
1 parent a2d62fb commit 901d199

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

internal/ls/codelens.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,37 @@ func (l *LanguageService) ProvideCodeLenses(ctx context.Context, documentURI lsp
2020
return lsproto.CodeLensResponse{}, nil
2121
}
2222

23-
var lenses []*lsproto.CodeLens
23+
// Keeps track of the last symbol to avoid duplicating code lenses across overloads.
24+
var lastSymbol *ast.Symbol
25+
var result []*lsproto.CodeLens
2426
var visit func(node *ast.Node) bool
2527
visit = func(node *ast.Node) bool {
2628
if ctx.Err() != nil {
2729
return true
2830
}
2931

30-
if userPrefs.ReferencesCodeLensEnabled && isValidReferenceLensNode(node, userPrefs) {
31-
lenses = append(lenses, l.newCodeLensForNode(documentURI, file, node, lsproto.CodeLensKindReferences))
32-
}
32+
if currentSymbol := node.Symbol(); lastSymbol != currentSymbol {
33+
lastSymbol = currentSymbol
34+
35+
if userPrefs.ReferencesCodeLensEnabled && isValidReferenceLensNode(node, userPrefs) {
36+
result = append(result, l.newCodeLensForNode(documentURI, file, node, lsproto.CodeLensKindReferences))
37+
}
3338

34-
if userPrefs.ImplementationsCodeLensEnabled && isValidImplementationsCodeLensNode(node, userPrefs) {
35-
lenses = append(lenses, l.newCodeLensForNode(documentURI, file, node, lsproto.CodeLensKindImplementations))
39+
if userPrefs.ImplementationsCodeLensEnabled && isValidImplementationsCodeLensNode(node, userPrefs) {
40+
result = append(result, l.newCodeLensForNode(documentURI, file, node, lsproto.CodeLensKindImplementations))
41+
}
3642
}
3743

44+
savedLastSymbol := lastSymbol
3845
node.ForEachChild(visit)
46+
lastSymbol = savedLastSymbol
3947
return false
4048
}
4149

4250
visit(file.AsNode())
4351

4452
return lsproto.CodeLensResponse{
45-
CodeLenses: &lenses,
53+
CodeLenses: &result,
4654
}, nil
4755
}
4856

0 commit comments

Comments
 (0)