Help us shape the future of Go! Take the 2026 Go Developer Survey

lsp

package
v0.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

Package lsp provides a generic JSON-RPC 2.0 client for communicating with Language Server Protocol servers via stdin/stdout.

Index

Constants

View Source
const (
	SKFunction    = 12
	SKMethod      = 6
	SKClass       = 5
	SKInterface   = 11
	SKVariable    = 13
	SKConstant    = 14
	SKConstructor = 9
)

SymbolKind constants (subset).

View Source
const (
	DiagError   = 1
	DiagWarning = 2
	DiagInfo    = 3
	DiagHint    = 4
)

DiagnosticSeverity constants.

Variables

This section is empty.

Functions

This section is empty.

Types

type CallHierarchyCapability

type CallHierarchyCapability struct {
	DynamicRegistration bool `json:"dynamicRegistration"`
}

CallHierarchyCapability describes call hierarchy capabilities.

type CallHierarchyIncomingCall

type CallHierarchyIncomingCall struct {
	From       CallHierarchyItem `json:"from"`
	FromRanges []Range           `json:"fromRanges"`
}

CallHierarchyIncomingCall represents an incoming call.

type CallHierarchyIncomingCallsParams

type CallHierarchyIncomingCallsParams struct {
	Item CallHierarchyItem `json:"item"`
}

CallHierarchyIncomingCallsParams is the params for callHierarchy/incomingCalls.

type CallHierarchyItem

type CallHierarchyItem struct {
	Name           string `json:"name"`
	Kind           int    `json:"kind"`
	URI            string `json:"uri"`
	Range          Range  `json:"range"`
	SelectionRange Range  `json:"selectionRange"`
}

CallHierarchyItem represents a call hierarchy item.

type CallHierarchyOutgoingCall

type CallHierarchyOutgoingCall struct {
	To         CallHierarchyItem `json:"to"`
	FromRanges []Range           `json:"fromRanges"`
}

CallHierarchyOutgoingCall represents an outgoing call.

type CallHierarchyOutgoingCallsParams

type CallHierarchyOutgoingCallsParams struct {
	Item CallHierarchyItem `json:"item"`
}

CallHierarchyOutgoingCallsParams is the params for callHierarchy/outgoingCalls.

type CallHierarchyPrepareParams

type CallHierarchyPrepareParams struct {
	TextDocumentPositionParams
}

CallHierarchyPrepareParams is the params for callHierarchy/prepare.

type Client

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

Client manages a language server subprocess lifecycle.

func Start

func Start(command string, args []string, rootDir string) (*Client, error)

Start spawns a language server subprocess.

func (*Client) CallHierarchyIncoming

func (c *Client) CallHierarchyIncoming(item CallHierarchyItem) ([]CallHierarchyIncomingCall, error)

CallHierarchyIncoming returns incoming calls to a symbol.

func (*Client) CallHierarchyOutgoing

func (c *Client) CallHierarchyOutgoing(item CallHierarchyItem) ([]CallHierarchyOutgoingCall, error)

CallHierarchyOutgoing returns outgoing calls from a symbol.

func (*Client) CallHierarchyPrepare

func (c *Client) CallHierarchyPrepare(uri string, line, col int) ([]CallHierarchyItem, error)

CallHierarchyPrepare prepares a call hierarchy for the symbol at position.

func (*Client) DidOpen

func (c *Client) DidOpen(uri, languageID, text string) error

DidOpen notifies the server that a document was opened.

func (*Client) DocumentSymbols

func (c *Client) DocumentSymbols(uri string) ([]DocumentSymbol, error)

DocumentSymbols returns all symbols in a file.

func (*Client) Initialize

func (c *Client) Initialize(rootURI string) (*InitializeResult, error)

Initialize sends the LSP initialize request with capabilities.

func (*Client) Notify

func (c *Client) Notify(method string, params interface{}) error

Notify sends a JSON-RPC notification (no response expected).

func (*Client) References

func (c *Client) References(uri string, line, col int) ([]Location, error)

References finds all references to a symbol at position.

func (*Client) Request

func (c *Client) Request(method string, params interface{}) (json.RawMessage, error)

Request sends a JSON-RPC request and waits for the response.

func (*Client) SetTimeout

func (c *Client) SetTimeout(d time.Duration)

SetTimeout sets the per-request timeout.

func (*Client) Shutdown

func (c *Client) Shutdown() error

Shutdown gracefully stops the server.

type ClientCapabilities

type ClientCapabilities struct {
	TextDocument TextDocumentClientCapabilities `json:"textDocument,omitempty"`
}

ClientCapabilities describes the client's capabilities.

type Diagnostic

type Diagnostic struct {
	Range    Range  `json:"range"`
	Severity int    `json:"severity,omitempty"`
	Code     string `json:"code,omitempty"`
	Source   string `json:"source,omitempty"`
	Message  string `json:"message"`
}

Diagnostic represents a LSP diagnostic.

type DidOpenTextDocumentParams

type DidOpenTextDocumentParams struct {
	TextDocument TextDocumentItem `json:"textDocument"`
}

DidOpenTextDocumentParams is for textDocument/didOpen.

type DocumentSymbol

type DocumentSymbol struct {
	Name           string           `json:"name"`
	Kind           int              `json:"kind"`
	Range          Range            `json:"range"`
	SelectionRange Range            `json:"selectionRange"`
	Children       []DocumentSymbol `json:"children,omitempty"`
}

DocumentSymbol represents a symbol in a document.

type DocumentSymbolCapability

type DocumentSymbolCapability struct {
	HierarchicalDocumentSymbolSupport bool `json:"hierarchicalDocumentSymbolSupport"`
}

DocumentSymbolCapability describes document symbol capabilities.

type DocumentSymbolParams

type DocumentSymbolParams struct {
	TextDocument TextDocumentIdentifier `json:"textDocument"`
}

DocumentSymbolParams is for textDocument/documentSymbol.

type InitializeParams

type InitializeParams struct {
	ProcessID    int                `json:"processId"`
	RootURI      string             `json:"rootUri"`
	Capabilities ClientCapabilities `json:"capabilities"`
}

InitializeParams is the LSP initialize request params.

type InitializeResult

type InitializeResult struct {
	Capabilities ServerCapabilities `json:"capabilities"`
}

InitializeResult is the LSP initialize response.

type Location

type Location struct {
	URI   string `json:"uri"`
	Range Range  `json:"range"`
}

Location is a position in a URI.

type Position

type Position struct {
	Line      int `json:"line"`
	Character int `json:"character"`
}

Position in a text document (0-indexed).

type Range

type Range struct {
	Start Position `json:"start"`
	End   Position `json:"end"`
}

Range in a text document.

type ReferenceContext

type ReferenceContext struct {
	IncludeDeclaration bool `json:"includeDeclaration"`
}

ReferenceContext is the context for a references request.

type ReferenceParams

type ReferenceParams struct {
	TextDocumentPositionParams
	Context ReferenceContext `json:"context"`
}

ReferenceParams extends TextDocumentPositionParams with context.

type ReferencesCapability

type ReferencesCapability struct {
	DynamicRegistration bool `json:"dynamicRegistration"`
}

ReferencesCapability describes references capabilities.

type ServerCapabilities

type ServerCapabilities struct {
	TextDocumentSync       interface{} `json:"textDocumentSync,omitempty"`
	DocumentSymbolProvider bool        `json:"documentSymbolProvider,omitempty"`
	ReferencesProvider     bool        `json:"referencesProvider,omitempty"`
	CallHierarchyProvider  bool        `json:"callHierarchyProvider,omitempty"`
}

ServerCapabilities describes the server's capabilities.

type TextDocumentClientCapabilities

type TextDocumentClientCapabilities struct {
	DocumentSymbol *DocumentSymbolCapability `json:"documentSymbol,omitempty"`
	References     *ReferencesCapability     `json:"references,omitempty"`
	CallHierarchy  *CallHierarchyCapability  `json:"callHierarchy,omitempty"`
}

TextDocumentClientCapabilities describes text document capabilities.

type TextDocumentIdentifier

type TextDocumentIdentifier struct {
	URI string `json:"uri"`
}

TextDocumentIdentifier identifies a text document.

type TextDocumentItem

type TextDocumentItem struct {
	URI        string `json:"uri"`
	LanguageID string `json:"languageId"`
	Version    int    `json:"version"`
	Text       string `json:"text"`
}

TextDocumentItem is an item for textDocument/didOpen.

type TextDocumentPositionParams

type TextDocumentPositionParams struct {
	TextDocument TextDocumentIdentifier `json:"textDocument"`
	Position     Position               `json:"position"`
}

TextDocumentPositionParams identifies a position in a text document.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL