Language Server Indexing Format Implementation for Go
Language Server Index Format
The purpose of the Language Server Index Format (LSIF) is to define a standard format for language servers or other programming tools to dump their knowledge about a workspace. This dump can later be used to answer language server LSP requests for the same workspace without running the language server itself. Since much of the information would be invalidated by a change to the workspace, the dumped information typically excludes requests used when mutating a document. So, for example, the result of a code complete request is typically not part of such a dump.
A first draft specification can be found here.
- Download and build this program via
go get github.com/sourcegraph/lsif-go.
- The binary
lsif-goshould be installed into your
- Make sure you have added
- Go to a root directory of a Go project, then execute
➜ lsif-go export 4 package(s), 10 file(s), 597 def(s), 11521 element(s) Processed in 770.817859ms
By default, the exporter dumps LSIF data to the file
data.lsif in the working directory.
lsif-go -h for more information
Try it out!
Go to https://sourcegraph.com/github.com/gorilla/mux@d83b6ff/-/blob/mux.go and try to hover and jump around!
lsif-util validate data.lsif
lsif-util visualize data.lsif --distance 2 | dot -Tpng -o image.png