A VS Code extension that adds CodeLens annotations to your Go code. showing reference counts, interface implementations, and method relationships inline.
- Added type alias, constant and variable codelens
- Added an option to choose the caching strategy.
See full changelog here https://github.com/XiaoXuxxxx/gogo-codelens/blob/main/CHANGELOG.md
- Show reference count or implement count above function, interface, interface method, method, struct, type alias, constant, variable in Go code
- Fully customizable — You can enable/disable each annotation type and change how the codelens should be displayed
| Interface | Method |
![]() |
![]() |
| Function | Struct |
![]() |
![]() |
| Type alias | Variable |
![]() |
![]() |
| Constant | |
![]() |
Don't worry, all annotations are fully customizable and can be turned off if you prefer a cleaner view.
You can download it from https://marketplace.visualstudio.com/items?itemName=xiaoxuxxxx.gogo-codelens
In case you don't trust my provided bundle vsix file (you should not trust any unknown extension in marketplace). Here's step to build
- install the dependencies
npm i - run build command
vsce packageand your .vsix file will be generated in workspace directory
-
From your VS Code, go to extension tab
-
Click
...and then clickInstall From VSIX -
Select builded file
Tips: You can just drag and drop the
.vsixfile to the Extension tab to install it
You can configure the extension in your VS Code settings.json or through the settings UI.
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.cacheStrategy |
Define the caching strategy when generating the codelens | VERSION_AND_TIMESTAMP |
| Possible Value | Description |
|---|---|
VERSION_AND_TIMESTAMP |
Caches results based on the document version and the last updated dattime of all documents |
NO_CACHE |
Disables caching, forcing recalculation every time the file is switched or edited. |
If you notice that the CodeLens is not updating correctly or behaves inconsistently, it may be due to caching issues. To resolve this, consider using
NO_CACHE
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.enabled.showReferences |
Enable CodeLens annotations for all supported symbols to show how many times they are referenced. | true |
gogoCodeLens.codelens.enabled.showImplementations |
Enable CodeLens annotations for all supported symbols to show their implementations. | true |
Enable Only references |
|---|
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.function.references.isEnabled |
Enable CodeLens annotations above functions to show how many times they are referenced. | true |
gogoCodeLens.codelens.function.references.singularTemplate |
Template text displayed above a function with exactly one reference. | {{ count }} reference |
gogoCodeLens.codelens.function.references.pluralTemplate |
Template text displayed above a function with multiple references. | {{ count }} references |
gogoCodeLens.codelens.function.references.emptyText |
Text displayed above a function when no references are found. Leave empty to disable the annotation. | (empty — hides CodeLens) |
Enable Only references |
Enable Both implementBy and references |
|---|---|
![]() |
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.interface.references.isEnabled |
Enable CodeLens annotations above interfaces to show how many times they are referenced. | true |
gogoCodeLens.codelens.interface.references.singularTemplate |
Template text displayed above an interface with exactly one reference. | {{ count }} reference |
gogoCodeLens.codelens.interface.references.pluralTemplate |
Template text displayed above an interface with multiple references. | {{ count }} references |
gogoCodeLens.codelens.interface.references.emptyText |
Text displayed above an interface when no references are found. Leave empty to disable the annotation. | (empty — hides CodeLens) |
Enable Only implementBy |
Enable Both implementBy and references |
|---|---|
![]() |
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.interface.implementBy.isEnabled |
Enable CodeLens annotations above interfaces to show how many types implement them. | true |
gogoCodeLens.codelens.interface.implementBy.singularTemplate |
Template text displayed above an interface with exactly one implementation. | "↓↓ implemented below |
gogoCodeLens.codelens.interface.implementBy.pluralTemplate |
Template text displayed above an interface with multiple implementations. | ↓↓ implemented by {{ count }} |
gogoCodeLens.codelens.interface.implementBy.emptyText |
Text displayed above an interface when no implementations are found. Leave empty to disable the annotation. | (empty — hides CodeLens) |
Enable Only references |
Enable Both implementBy and references |
|---|---|
![]() |
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.childMethodInterface.references.isEnabled |
Enable CodeLens annotations above interface methods to show how many times they are referenced. | true |
gogoCodeLens.codelens.childMethodInterface.references.singularTemplate |
Template text displayed above an interface method with exactly one reference. | {{ count }} reference |
gogoCodeLens.codelens.childMethodInterface.references.pluralTemplate |
Template text displayed above an interface method with multiple references. | {{ count }} references |
gogoCodeLens.codelens.childMethodInterface.references.emptyText |
Text displayed above an interface method when no references are found. Leave empty to disable the annotation. | 0 references |
Enable Only implementBy |
Enable Both implementBy and references |
|---|---|
![]() |
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.childMethodInterface.implementBy.isEnabled |
Enable CodeLens annotations above interface methods to show how many types implement them. | true |
gogoCodeLens.codelens.childMethodInterface.implementBy.singularTemplate |
Template text displayed above an interface method with exactly one implementation. | ↓↓ implemented below |
gogoCodeLens.codelens.childMethodInterface.implementBy.pluralTemplate |
Template text displayed above an interface method with multiple implementations. | ↓↓ implemented by {{ count }} |
gogoCodeLens.codelens.childMethodInterface.implementBy.emptyText |
Text displayed above an interface method when no implementations are found. Leave empty to disable the annotation. | no implementation |
Enable Only references |
Enable Both implementFrom and references |
|---|---|
![]() |
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.method.references.isEnabled |
Enable CodeLens annotations above methods to show how many times they are referenced. | true |
gogoCodeLens.codelens.method.references.singularTemplate |
Template text displayed above a method with exactly one reference. | {{ count }} reference |
gogoCodeLens.codelens.method.references.pluralTemplate |
Template text displayed above a method with multiple references. | "{{ count }} references |
"gogoCodeLens.codelens.method.references.emptyText |
Text displayed above a method when no references are found. Leave empty to disable the annotation. | (empty — hides CodeLens) |
Enable Only implementFrom |
Enable Both implementFrom and references |
|---|---|
![]() |
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.method.implementFrom.isEnabled |
Enable CodeLens annotations above methods to show how many interface methods they implement. | true |
gogoCodeLens.codelens.method.implementFrom.singularTemplate |
Template text displayed above a method that implements exactly one interface method. | ↑↑ from interface |
gogoCodeLens.codelens.method.implementFrom.pluralTemplate |
Template text displayed above a method that implements multiple interface methods. | ↑↑ from interface ({{ count }}) |
gogoCodeLens.codelens.method.implementFrom.emptyText |
Text displayed above a method that does not implement any interface methods. Leave empty to disable the annotation. | (empty — hides CodeLens) |
Enable Only references |
Enable Both implementFrom and references |
|---|---|
![]() |
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.struct.references.isEnabled |
Enable CodeLens annotations above structs to show how many times they are referenced. | true |
gogoCodeLens.codelens.struct.references.singularTemplate |
Template text displayed above a struct with exactly one reference. | {{ count }} reference |
gogoCodeLens.codelens.struct.references.pluralTemplate |
Template text displayed above a struct with multiple references. | {{ count }} references |
gogoCodeLens.codelens.struct.references.emptyText |
Text displayed above a struct when no references are found. Leave empty to disable the annotation. | (empty — hides CodeLens) |
Enable Only implementFrom |
Enable Both implementFrom and references |
|---|---|
![]() |
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.struct.implementFrom.isEnabled |
Enable CodeLens annotations above structs to show how many interfaces they implement. | true |
gogoCodeLens.codelens.struct.implementFrom.singularTemplat |
Template text displayed above a struct that implements exactly one interface. | ↑↑ from interface |
gogoCodeLens.codelens.struct.implementFrom.pluralTemplate |
Template text displayed above a struct that implements multiple interfaces. | ↑↑ from interface ({{ count }}) |
gogoCodeLens.codelens.struct.implementFrom.emptyText |
Text displayed above a struct that does not implement any interfaces. Leave empty to disable the annotation. | (empty — hides CodeLens) |
Enable Only references |
Enable Both implementFrom and references |
|---|---|
![]() |
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.typeAlias.references.isEnabled |
Enable CodeLens annotations above type aliases to show how many times they are referenced. | true |
gogoCodeLens.codelens.typeAlias.references.singularTemplate |
Template text displayed above a type alias with exactly one reference. | {{ count }} reference |
gogoCodeLens.codelens.typeAlias.references.pluralTemplate |
Template text displayed above a type alias with multiple references. | {{ count }} references |
gogoCodeLens.codelens.typeAlias.references.emptyText |
Text displayed above a type alias when no references are found. Leave empty to disable the annotation. | (empty — hides CodeLens) |
Enable Only implementFrom |
Enable Both implementFrom and references |
|---|---|
![]() |
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.typeAlias.implementFrom.isEnabled |
Enable CodeLens annotations above type aliases to show how many interfaces they implement. | true |
gogoCodeLens.codelens.typeAlias.implementFrom.singularTemplat |
Template text displayed above a type alias that implements exactly one interface. | ↑↑ from interface |
gogoCodeLens.codelens.typeAlias.implementFrom.pluralTemplate |
Template text displayed above a type alias that implements multiple interfaces. | ↑↑ from interface ({{ count }}) |
gogoCodeLens.codelens.typeAlias.implementFrom.emptyText |
Text displayed above a type alias that does not implement any interfaces. Leave empty to disable the annotation. | (empty — hides CodeLens) |
Enable Only references |
|---|
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.constant.references.isEnabled |
Enable CodeLens annotations above constants to show how many times they are referenced. | true |
gogoCodeLens.codelens.constant.references.singularTemplate |
Template text displayed above a constant with exactly one reference. | {{ count }} reference |
gogoCodeLens.codelens.constant.references.pluralTemplate |
Template text displayed above a constant with multiple references. | {{ count }} references |
gogoCodeLens.codelens.constant.references.emptyText |
Text displayed above a constant when no references are found. Leave empty to disable the annotation. | (empty — hides CodeLens) |
Enable Only references |
|---|
![]() |
| Setting | Description | Default |
|---|---|---|
gogoCodeLens.codelens.variable.references.isEnabled |
Enable CodeLens annotations above variables to show how many times they are referenced. | true |
gogoCodeLens.codelens.variable.references.singularTemplate |
Template text displayed above a variable with exactly one reference. | {{ count }} reference |
gogoCodeLens.codelens.variable.references.pluralTemplate |
Template text displayed above a variable with multiple references. | {{ count }} references |
gogoCodeLens.codelens.variable.references.emptyText |
Text displayed above a variable when no references are found. Leave empty to disable the annotation. | (empty — hides CodeLens) |


















