lsp

package
v0.7.2 Latest Latest
Warning

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

Go to latest
Published: May 31, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DiagnosticSeverityError       = 1
	DiagnosticSeverityWarning     = 2
	DiagnosticSeverityInformation = 3
	DiagnosticSeverityHint        = 4
)

Variables

This section is empty.

Functions

func DiagnosticSeverityName

func DiagnosticSeverityName(severity int) string

func FileURI

func FileURI(path string) string

func FormatDiagnostics

func FormatDiagnostics(diagnostics []Diagnostic, filePath string, workingDir string) string

func FormatNewDiagnostics

func FormatNewDiagnostics(diagnostics []Diagnostic, filePath string, workingDir string) string

Types

type CallHierarchyClientCapabilities

type CallHierarchyClientCapabilities struct{}

type CallHierarchyIncomingCall

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

type CallHierarchyIncomingCallsParams

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

type CallHierarchyItem

type CallHierarchyItem struct {
	Name           string          `json:"name"`
	Kind           int             `json:"kind"`
	Detail         string          `json:"detail,omitempty"`
	URI            string          `json:"uri"`
	Range          Range           `json:"range"`
	SelectionRange Range           `json:"selectionRange"`
	Data           json.RawMessage `json:"data,omitempty"`
}

type CallHierarchyOutgoingCall

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

type CallHierarchyOutgoingCallsParams

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

type ClientCapabilities

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

type DefinitionClientCapabilities

type DefinitionClientCapabilities struct {
	LinkSupport bool `json:"linkSupport,omitempty"`
}

type Diagnostic

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

type DiagnosticClientCapabilities

type DiagnosticClientCapabilities struct{}

type DiagnosticTracker

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

func NewDiagnosticTracker

func NewDiagnosticTracker() *DiagnosticTracker

func (*DiagnosticTracker) FilterNew

func (t *DiagnosticTracker) FilterNew(uri string, diags []Diagnostic) []Diagnostic

func (*DiagnosticTracker) MarkDelivered

func (t *DiagnosticTracker) MarkDelivered(uri string, diags []Diagnostic)

func (*DiagnosticTracker) SetBaseline

func (t *DiagnosticTracker) SetBaseline(uri string, diags []Diagnostic)

type DidChangeTextDocumentParams

type DidChangeTextDocumentParams struct {
	TextDocument   VersionedTextDocumentIdentifier  `json:"textDocument"`
	ContentChanges []TextDocumentContentChangeEvent `json:"contentChanges"`
}

type DidOpenTextDocumentParams

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

type DidSaveTextDocumentParams

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

type DocumentDiagnosticParams

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

type DocumentSymbol

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

type DocumentSymbolClientCapabilities

type DocumentSymbolClientCapabilities struct{}

type DocumentSymbolParams

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

type FullDocumentDiagnosticReport

type FullDocumentDiagnosticReport struct {
	Kind  string       `json:"kind"`
	Items []Diagnostic `json:"items"`
}

type HoverClientCapabilities

type HoverClientCapabilities struct {
	ContentFormat []string `json:"contentFormat,omitempty"`
}

type HoverContents

type HoverContents struct {
	Value string
}

HoverContents handles the multiple formats that LSP servers may return: MarkupContent { kind, value }, a plain string, or MarkedString { language, value }.

func (*HoverContents) UnmarshalJSON

func (h *HoverContents) UnmarshalJSON(data []byte) error

type HoverResponse

type HoverResponse struct {
	Contents HoverContents `json:"contents"`
	Range    *Range        `json:"range,omitempty"`
}

type ImplementationClientCapabilities

type ImplementationClientCapabilities struct{}

type InitializeParams

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

type Location

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

type Manager

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

func NewManager

func NewManager(workingDir string) *Manager

func (*Manager) Close

func (m *Manager) Close()

func (*Manager) CollectAllDiagnostics

func (m *Manager) CollectAllDiagnostics(ctx context.Context) map[string][]Diagnostic

func (*Manager) DetectServers

func (m *Manager) DetectServers() []Server

func (*Manager) FindServer

func (m *Manager) FindServer(filePath string) *Server

FindServer returns the most-nested project root's server that handles the given file's extension, or nil if none.

func (*Manager) GetSession

func (m *Manager) GetSession(ctx context.Context, filePath string) (*Session, error)

func (*Manager) GetSessionByServer

func (m *Manager) GetSessionByServer(ctx context.Context, server Server) (*Session, error)

GetSessionByServer returns a cached session or creates a new one. If the server crashed, it restarts and re-opens previously opened documents.

func (*Manager) WorkingDir

func (m *Manager) WorkingDir() string

func (*Manager) WorkspaceDiagnostics

func (m *Manager) WorkspaceDiagnostics(ctx context.Context) (string, error)

func (*Manager) WorkspaceSymbols

func (m *Manager) WorkspaceSymbols(ctx context.Context, query string) (string, error)

type Position

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

type PublishDiagnosticsParams

type PublishDiagnosticsParams struct {
	URI         string       `json:"uri"`
	Diagnostics []Diagnostic `json:"diagnostics"`
}

type Range

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

type ReferenceContext

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

type ReferenceParams

type ReferenceParams struct {
	TextDocument TextDocumentIdentifier `json:"textDocument"`
	Position     Position               `json:"position"`
	Context      ReferenceContext       `json:"context"`
}

type ReferencesClientCapabilities

type ReferencesClientCapabilities struct{}

type Server

type Server struct {
	Name       string
	Command    string
	Args       []string
	Languages  []string
	LanguageID string
}

type Session

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

func (*Session) CallAndAwait

func (s *Session) CallAndAwait(ctx context.Context, method string, params any, result any) error

CallAndAwait retries transient LSP errors (e.g. rust-analyzer's "content modified") with exponential backoff.

func (*Session) CallHierarchy

func (s *Session) CallHierarchy(ctx context.Context, uri string, line, column int, incoming bool) (string, error)

func (*Session) ClearPushDiagnostics

func (s *Session) ClearPushDiagnostics(uri string)

func (*Session) Close

func (s *Session) Close()

func (*Session) CollectDiagnostics

func (s *Session) CollectDiagnostics(ctx context.Context, uri string) []Diagnostic

CollectDiagnostics prefers push-based diagnostics (publishDiagnostics notifications) and falls back to pull-based (textDocument/diagnostic).

func (*Session) Definition

func (s *Session) Definition(ctx context.Context, uri string, line, column int) (string, error)

func (*Session) Diagnostics

func (s *Session) Diagnostics(ctx context.Context, uri string, filePath string) (string, error)

func (*Session) DocumentSymbols

func (s *Session) DocumentSymbols(ctx context.Context, uri string, filePath string) (string, error)

func (*Session) Hover

func (s *Session) Hover(ctx context.Context, uri string, line, column int) (string, error)

func (*Session) Implementation

func (s *Session) Implementation(ctx context.Context, uri string, line, column int) (string, error)

func (*Session) IsAlive

func (s *Session) IsAlive() bool

func (*Session) OpenDocument

func (s *Session) OpenDocument(ctx context.Context, filePath string) (string, error)

func (*Session) OpenedDocURIs

func (s *Session) OpenedDocURIs() []string

func (*Session) PrepareCallHierarchy added in v0.6.9

func (s *Session) PrepareCallHierarchy(ctx context.Context, uri string, line, column int) (string, error)

func (*Session) PushDiagnostics

func (s *Session) PushDiagnostics(uri string) []Diagnostic

func (*Session) References

func (s *Session) References(ctx context.Context, uri string, line, column int) (string, error)

func (*Session) WaitForDiagnostics

func (s *Session) WaitForDiagnostics(ctx context.Context, uri string) []Diagnostic

type SymbolInformation

type SymbolInformation struct {
	Name     string   `json:"name"`
	Kind     int      `json:"kind"`
	Location Location `json:"location"`
}

type TextDocumentClientCapabilities

type TextDocumentClientCapabilities struct {
	Synchronization TextDocumentSyncClientCapabilities `json:"synchronization"`
	Hover           HoverClientCapabilities            `json:"hover"`
	Definition      DefinitionClientCapabilities       `json:"definition"`
	References      ReferencesClientCapabilities       `json:"references"`
	Implementation  ImplementationClientCapabilities   `json:"implementation"`
	DocumentSymbol  DocumentSymbolClientCapabilities   `json:"documentSymbol"`
	Diagnostic      DiagnosticClientCapabilities       `json:"diagnostic"`
	CallHierarchy   CallHierarchyClientCapabilities    `json:"callHierarchy"`
}

type TextDocumentContentChangeEvent

type TextDocumentContentChangeEvent struct {
	Text string `json:"text"`
}

type TextDocumentIdentifier

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

type TextDocumentItem

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

type TextDocumentPositionParams

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

type TextDocumentSyncClientCapabilities

type TextDocumentSyncClientCapabilities struct {
	DidSave bool `json:"didSave,omitempty"`
}

type VersionedTextDocumentIdentifier

type VersionedTextDocumentIdentifier struct {
	URI     string `json:"uri"`
	Version int    `json:"version"`
}

type WorkspaceSymbol

type WorkspaceSymbol struct {
	Name     string `json:"name"`
	Kind     int    `json:"kind"`
	Location struct {
		URI   string `json:"uri"`
		Range *Range `json:"range,omitempty"`
	} `json:"location"`
}

WorkspaceSymbol is the newer response type for workspace/symbol (since 3.17). Unlike SymbolInformation, its location range may be omitted.

type WorkspaceSymbolParams

type WorkspaceSymbolParams struct {
	Query string `json:"query"`
}

Directories

Path Synopsis
Package jsonrpc2 is a minimal implementation of the JSON RPC 2 spec.
Package jsonrpc2 is a minimal implementation of the JSON RPC 2 spec.

Jump to

Keyboard shortcuts

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