README

lsp

internal/lsp provides much of the Language Server Protocol (lsp) implementation for gopls.

Documentation for users and contributors can be found in the gopls/doc directory.

Documentation

Overview

    Package lsp implements LSP for gopls.

    Index

    Constants

    View Source
    const (
    	// FromDidOpen is a file modification caused by opening a file.
    	FromDidOpen = ModificationSource(iota)
    
    	// FromDidChange is a file modification caused by changing a file.
    	FromDidChange
    
    	// FromDidChangeWatchedFiles is a file modification caused by a change to a
    	// watched file.
    	FromDidChangeWatchedFiles
    
    	// FromDidSave is a file modification caused by a file save.
    	FromDidSave
    
    	// FromDidClose is a file modification caused by closing a file.
    	FromDidClose
    
    	// FromRegenerateCgo refers to file modifications caused by regenerating
    	// the cgo sources for the workspace.
    	FromRegenerateCgo
    
    	// FromInitialWorkspaceLoad refers to the loading of all packages in the
    	// workspace when the view is first created.
    	FromInitialWorkspaceLoad
    )
    View Source
    const WorkspaceLoadFailure = "Error loading workspace"

    Variables

    This section is empty.

    Functions

    func DiagnosticWorkTitle

    func DiagnosticWorkTitle(cause ModificationSource) string

      DiagnosticWorkTitle returns the title of the diagnostic work resulting from a file change originating from the given cause.

      func SemMods

      func SemMods(n int) []string

        SemMods returns the []string equivalent of the mods, for gopls semtok.

        func SemType

        func SemType(n int) string

          SemType returns a string equivalent of the type, for gopls semtok

          func SemanticModifiers

          func SemanticModifiers() []string

            SemanticModifiers to use in case there is no client.

            func SemanticTypes

            func SemanticTypes() []string

              SemanticTypes to use in case there is no client, as in the command line, or tests

              Types

              type ModificationSource

              type ModificationSource int

                ModificationSource identifies the originating cause of a file modification.

                func (ModificationSource) String

                func (m ModificationSource) String() string

                type Server

                type Server struct {
                	// contains filtered or unexported fields
                }

                  Server implements the protocol.Server interface.

                  func NewServer

                  func NewServer(session source.Session, client protocol.Client) *Server

                    NewServer creates an LSP server and binds it to handle incoming client messages on on the supplied stream.

                    func (*Server) CodeAction

                    func (s *Server) CodeAction(ctx context.Context, params *protocol.CodeActionParams) ([]protocol.CodeAction, error)

                    func (*Server) CodeLens

                    func (s *Server) CodeLens(ctx context.Context, params *protocol.CodeLensParams) ([]protocol.CodeLens, error)

                    func (*Server) Completion

                    func (s *Server) Completion(ctx context.Context, params *protocol.CompletionParams) (*protocol.CompletionList, error)

                    func (*Server) Definition

                    func (s *Server) Definition(ctx context.Context, params *protocol.DefinitionParams) (protocol.Definition, error)

                    func (*Server) DidChange

                    func (s *Server) DidChange(ctx context.Context, params *protocol.DidChangeTextDocumentParams) error

                    func (*Server) DidChangeConfiguration

                    func (s *Server) DidChangeConfiguration(ctx context.Context, _ *protocol.DidChangeConfigurationParams) error

                    func (*Server) DidChangeWatchedFiles

                    func (s *Server) DidChangeWatchedFiles(ctx context.Context, params *protocol.DidChangeWatchedFilesParams) error

                    func (*Server) DidChangeWorkspaceFolders

                    func (s *Server) DidChangeWorkspaceFolders(ctx context.Context, params *protocol.DidChangeWorkspaceFoldersParams) error

                    func (*Server) DidClose

                    func (s *Server) DidClose(ctx context.Context, params *protocol.DidCloseTextDocumentParams) error

                    func (*Server) DidOpen

                    func (s *Server) DidOpen(ctx context.Context, params *protocol.DidOpenTextDocumentParams) error

                    func (*Server) DidSave

                    func (s *Server) DidSave(ctx context.Context, params *protocol.DidSaveTextDocumentParams) error

                    func (*Server) DocumentHighlight

                    func (s *Server) DocumentHighlight(ctx context.Context, params *protocol.DocumentHighlightParams) ([]protocol.DocumentHighlight, error)
                    func (s *Server) DocumentLink(ctx context.Context, params *protocol.DocumentLinkParams) ([]protocol.DocumentLink, error)

                    func (*Server) DocumentSymbol

                    func (s *Server) DocumentSymbol(ctx context.Context, params *protocol.DocumentSymbolParams) ([]interface{}, error)

                    func (*Server) ExecuteCommand

                    func (s *Server) ExecuteCommand(ctx context.Context, params *protocol.ExecuteCommandParams) (interface{}, error)

                    func (*Server) Exit

                    func (s *Server) Exit(ctx context.Context) error

                    func (*Server) FoldingRange

                    func (s *Server) FoldingRange(ctx context.Context, params *protocol.FoldingRangeParams) ([]protocol.FoldingRange, error)

                    func (*Server) Formatting

                    func (s *Server) Formatting(ctx context.Context, params *protocol.DocumentFormattingParams) ([]protocol.TextEdit, error)

                    func (*Server) Hover

                    func (s *Server) Hover(ctx context.Context, params *protocol.HoverParams) (*protocol.Hover, error)

                    func (*Server) Implementation

                    func (s *Server) Implementation(ctx context.Context, params *protocol.ImplementationParams) (protocol.Definition, error)

                    func (*Server) Initialize

                    func (s *Server) Initialize(ctx context.Context, params *protocol.ParamInitialize) (*protocol.InitializeResult, error)

                    func (*Server) Initialized

                    func (s *Server) Initialized(ctx context.Context, params *protocol.InitializedParams) error

                    func (*Server) LogTrace

                    func (*Server) Moniker

                    func (*Server) NonstandardRequest

                    func (s *Server) NonstandardRequest(ctx context.Context, method string, params interface{}) (interface{}, error)

                    func (*Server) PrepareCallHierarchy

                    func (s *Server) PrepareCallHierarchy(ctx context.Context, params *protocol.CallHierarchyPrepareParams) ([]protocol.CallHierarchyItem, error)

                    func (*Server) PrepareRename

                    func (s *Server) PrepareRename(ctx context.Context, params *protocol.PrepareRenameParams) (*protocol.Range, error)

                    func (*Server) References

                    func (s *Server) References(ctx context.Context, params *protocol.ReferenceParams) ([]protocol.Location, error)

                    func (*Server) Rename

                    func (s *Server) Rename(ctx context.Context, params *protocol.RenameParams) (*protocol.WorkspaceEdit, error)

                    func (*Server) ResolveCodeAction

                    func (s *Server) ResolveCodeAction(context.Context, *protocol.CodeAction) (*protocol.CodeAction, error)

                    func (*Server) ResolveCodeLens

                    func (s *Server) ResolveCodeLens(context.Context, *protocol.CodeLens) (*protocol.CodeLens, error)
                    func (s *Server) ResolveDocumentLink(context.Context, *protocol.DocumentLink) (*protocol.DocumentLink, error)

                    func (*Server) SemanticTokensFull

                    func (s *Server) SemanticTokensFull(ctx context.Context, p *protocol.SemanticTokensParams) (*protocol.SemanticTokens, error)

                    func (*Server) SemanticTokensFullDelta

                    func (s *Server) SemanticTokensFullDelta(ctx context.Context, p *protocol.SemanticTokensDeltaParams) (interface{}, error)

                    func (*Server) SemanticTokensRange

                    func (*Server) SemanticTokensRefresh

                    func (s *Server) SemanticTokensRefresh(ctx context.Context) error

                    func (*Server) SetTrace

                    func (*Server) Shutdown

                    func (s *Server) Shutdown(ctx context.Context) error

                    func (*Server) SignatureHelp

                    func (s *Server) SignatureHelp(ctx context.Context, params *protocol.SignatureHelpParams) (*protocol.SignatureHelp, error)

                    func (*Server) Symbol

                    func (*Server) TypeDefinition

                    func (s *Server) TypeDefinition(ctx context.Context, params *protocol.TypeDefinitionParams) (protocol.Definition, error)

                    func (*Server) WillSave

                    func (*Server) WorkDoneProgressCancel

                    func (s *Server) WorkDoneProgressCancel(ctx context.Context, params *protocol.WorkDoneProgressCancelParams) error

                    Directories

                    Path Synopsis
                    analysis
                    fillreturns
                    Package fillreturns defines an Analyzer that will attempt to automatically fill in a return statement that has missing values with zero value elements.
                    Package fillreturns defines an Analyzer that will attempt to automatically fill in a return statement that has missing values with zero value elements.
                    fillstruct
                    Package fillstruct defines an Analyzer that automatically fills in a struct declaration with zero value elements for each field.
                    Package fillstruct defines an Analyzer that automatically fills in a struct declaration with zero value elements for each field.
                    nonewvars
                    Package nonewvars defines an Analyzer that applies suggested fixes to errors of the type "no new variables on left side of :=".
                    Package nonewvars defines an Analyzer that applies suggested fixes to errors of the type "no new variables on left side of :=".
                    noresultvalues
                    Package noresultvalues defines an Analyzer that applies suggested fixes to errors of the type "no result values expected".
                    Package noresultvalues defines an Analyzer that applies suggested fixes to errors of the type "no result values expected".
                    simplifycompositelit
                    Package simplifycompositelit defines an Analyzer that simplifies composite literals.
                    Package simplifycompositelit defines an Analyzer that simplifies composite literals.
                    simplifyrange
                    Package simplifyrange defines an Analyzer that simplifies range statements.
                    Package simplifyrange defines an Analyzer that simplifies range statements.
                    simplifyslice
                    Package simplifyslice defines an Analyzer that simplifies slice statements.
                    Package simplifyslice defines an Analyzer that simplifies slice statements.
                    undeclaredname
                    Package undeclaredname defines an Analyzer that applies suggested fixes to errors of the type "undeclared name: %s".
                    Package undeclaredname defines an Analyzer that applies suggested fixes to errors of the type "undeclared name: %s".
                    unusedparams
                    Package unusedparams defines an analyzer that checks for unused parameters of functions.
                    Package unusedparams defines an analyzer that checks for unused parameters of functions.
                    Package browser provides utilities for interacting with users' browsers.
                    Package browser provides utilities for interacting with users' browsers.
                    Package cache implements the caching layer for gopls.
                    Package cache implements the caching layer for gopls.
                    cmd
                    Package cmd handles the gopls command line.
                    Package cmd handles the gopls command line.
                    test
                    Package cmdtest contains the test suite for the command line behavior of gopls.
                    Package cmdtest contains the test suite for the command line behavior of gopls.
                    Package debug exports debug information for gopls.
                    Package debug exports debug information for gopls.
                    log
                    Package log provides helper methods for exporting log events to the internal/event package.
                    Package log provides helper methods for exporting log events to the internal/event package.
                    tag
                    Package tag provides the labels used for telemetry throughout gopls.
                    Package tag provides the labels used for telemetry throughout gopls.
                    Package diff supports a pluggable diff algorithm.
                    Package diff supports a pluggable diff algorithm.
                    difftest
                    Package difftest supplies a set of tests that will operate on any implementation of a diff algorithm as exposed by "golang.org/x/tools/internal/lsp/diff"
                    Package difftest supplies a set of tests that will operate on any implementation of a diff algorithm as exposed by "golang.org/x/tools/internal/lsp/diff"
                    myers
                    Package myers implements the Myers diff algorithm.
                    Package myers implements the Myers diff algorithm.
                    Package fake provides fake implementations of a text editor, LSP client plugin, and Sandbox environment for use in tests.
                    Package fake provides fake implementations of a text editor, LSP client plugin, and Sandbox environment for use in tests.
                    Package fuzzy implements a fuzzy matching algorithm.
                    Package fuzzy implements a fuzzy matching algorithm.
                    Invoke with //go:generate helper/helper -t Server -d protocol/tsserver.go -u lsp -o server_gen.go invoke in internal/lsp
                    Invoke with //go:generate helper/helper -t Server -d protocol/tsserver.go -u lsp -o server_gen.go invoke in internal/lsp
                    Package lsprpc implements a jsonrpc2.StreamServer that may be used to serve the LSP on a jsonrpc2 channel.
                    Package lsprpc implements a jsonrpc2.StreamServer that may be used to serve the LSP on a jsonrpc2 channel.
                    Package mod provides core features related to go.mod file handling for use by Go editors and tools.
                    Package mod provides core features related to go.mod file handling for use by Go editors and tools.
                    Package protocol contains the structs that map directly to the wire format of the "Language Server Protocol".
                    Package protocol contains the structs that map directly to the wire format of the "Language Server Protocol".
                    Package snippet implements the specification for the LSP snippet format.
                    Package snippet implements the specification for the LSP snippet format.
                    Package source provides core features for use by Go editors and tools.
                    Package source provides core features for use by Go editors and tools.
                    completion
                    Package completion provides core functionality for code completion in Go editors and tools.
                    Package completion provides core functionality for code completion in Go editors and tools.
                    Package tests exports functionality to be used across a variety of gopls tests.
                    Package tests exports functionality to be used across a variety of gopls tests.