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