lsp

package
v0.1.6 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	CompletionItemKindText          = 1
	CompletionItemKindMethod        = 2
	CompletionItemKindFunction      = 3
	CompletionItemKindConstructor   = 4
	CompletionItemKindField         = 5
	CompletionItemKindVariable      = 6
	CompletionItemKindClass         = 7
	CompletionItemKindInterface     = 8
	CompletionItemKindModule        = 9
	CompletionItemKindProperty      = 10
	CompletionItemKindUnit          = 11
	CompletionItemKindValue         = 12
	CompletionItemKindEnum          = 13
	CompletionItemKindKeyword       = 14
	CompletionItemKindSnippet       = 15
	CompletionItemKindColor         = 16
	CompletionItemKindFile          = 17
	CompletionItemKindReference     = 18
	CompletionItemKindFolder        = 19
	CompletionItemKindEnumMember    = 20
	CompletionItemKindConstant      = 21
	CompletionItemKindStruct        = 22
	CompletionItemKindEvent         = 23
	CompletionItemKindOperator      = 24
	CompletionItemKindTypeParameter = 25
)

CompletionItemKind constants

View Source
const (
	CompletionTriggerKindInvoked                         = 1
	CompletionTriggerKindTriggerCharacter                = 2
	CompletionTriggerKindTriggerForIncompleteCompletions = 3
)

CompletionTriggerKind constants

View Source
const (
	InsertTextFormatPlainText = 1
	InsertTextFormatSnippet   = 2
)

InsertTextFormat constants

View Source
const (
	MarkupKindPlainText = "plaintext"
	MarkupKindMarkdown  = "markdown"
)

MarkupKind constants

View Source
const (
	ParseError           = -32700
	InvalidRequest       = -32600
	MethodNotFound       = -32601
	InvalidParams        = -32602
	InternalError        = -32603
	ServerErrorStart     = -32099
	ServerErrorEnd       = -32000
	ServerNotInitialized = -32002
	UnknownErrorCode     = -32001
	RequestCancelled     = -32800
	ContentModified      = -32801
)

Error codes

Variables

This section is empty.

Functions

func SupportedLanguages

func SupportedLanguages() []string

SupportedLanguages returns a list of languages with default configurations

Types

type Client

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

Client represents an LSP client

func NewClient

func NewClient(config *LanguageServerConfig) (*Client, error)

NewClient creates a new LSP client

func (*Client) Close

func (c *Client) Close() error

Close closes the client and terminates the language server

func (*Client) Completion

func (c *Client) Completion(ctx context.Context, params CompletionParams) (*CompletionList, error)

Completion sends a textDocument/completion request

func (*Client) Definition

func (c *Client) Definition(ctx context.Context, params DefinitionParams) (*Location, error)

Definition sends a textDocument/definition request

func (*Client) Exit

func (c *Client) Exit(ctx context.Context) error

Exit sends the exit notification

func (*Client) Hover

func (c *Client) Hover(ctx context.Context, params HoverParams) (*Hover, error)

Hover sends a textDocument/hover request

func (*Client) Initialize

func (c *Client) Initialize(ctx context.Context, rootURI *string, initOptions interface{}) (*InitializeResult, error)

Initialize sends the initialize request

func (*Client) Initialized

func (c *Client) Initialized(ctx context.Context) error

Initialized sends the initialized notification

func (*Client) IsShutdown

func (c *Client) IsShutdown() bool

IsShutdown returns true if the client is shutdown

func (*Client) References

func (c *Client) References(ctx context.Context, params ReferenceParams) ([]Location, error)

References sends a textDocument/references request

func (*Client) Shutdown

func (c *Client) Shutdown(ctx context.Context) error

Shutdown sends the shutdown request

func (*Client) Start

func (c *Client) Start() error

Start starts the language server process

type ClientCapabilities

type ClientCapabilities struct {
	Workspace    WorkspaceClientCapabilities    `json:"workspace,omitempty"`
	TextDocument TextDocumentClientCapabilities `json:"textDocument,omitempty"`
	Experimental interface{}                    `json:"experimental,omitempty"`
}

ClientCapabilities defines the capabilities provided by the client

type Command

type Command struct {
	Title     string        `json:"title"`
	Command   string        `json:"command"`
	Arguments []interface{} `json:"arguments,omitempty"`
}

Command represents a reference to a command

type CompletionCapabilities

type CompletionCapabilities struct {
	DynamicRegistration bool                        `json:"dynamicRegistration,omitempty"`
	CompletionItem      *CompletionItemCapabilities `json:"completionItem,omitempty"`
}

CompletionCapabilities defines completion capabilities

type CompletionContext

type CompletionContext struct {
	TriggerKind      int     `json:"triggerKind"`
	TriggerCharacter *string `json:"triggerCharacter,omitempty"`
}

CompletionContext represents additional information about completion

type CompletionItem

type CompletionItem struct {
	Label               string      `json:"label"`
	Kind                *int        `json:"kind,omitempty"`
	Detail              string      `json:"detail,omitempty"`
	Documentation       interface{} `json:"documentation,omitempty"`
	Deprecated          bool        `json:"deprecated,omitempty"`
	Preselect           bool        `json:"preselect,omitempty"`
	SortText            string      `json:"sortText,omitempty"`
	FilterText          string      `json:"filterText,omitempty"`
	InsertText          string      `json:"insertText,omitempty"`
	InsertTextFormat    *int        `json:"insertTextFormat,omitempty"`
	TextEdit            *TextEdit   `json:"textEdit,omitempty"`
	AdditionalTextEdits []TextEdit  `json:"additionalTextEdits,omitempty"`
	CommitCharacters    []string    `json:"commitCharacters,omitempty"`
	Command             *Command    `json:"command,omitempty"`
	Data                interface{} `json:"data,omitempty"`
}

CompletionItem represents a completion item

type CompletionItemCapabilities

type CompletionItemCapabilities struct {
	SnippetSupport          bool     `json:"snippetSupport,omitempty"`
	CommitCharactersSupport bool     `json:"commitCharactersSupport,omitempty"`
	DocumentationFormat     []string `json:"documentationFormat,omitempty"`
}

CompletionItemCapabilities defines completion item capabilities

type CompletionList

type CompletionList struct {
	IsIncomplete bool             `json:"isIncomplete"`
	Items        []CompletionItem `json:"items"`
}

CompletionList represents a list of completion items

type CompletionOptions

type CompletionOptions struct {
	ResolveProvider   bool     `json:"resolveProvider,omitempty"`
	TriggerCharacters []string `json:"triggerCharacters,omitempty"`
}

CompletionOptions defines completion options

type CompletionParams

type CompletionParams struct {
	TextDocumentPositionParams
	Context *CompletionContext `json:"context,omitempty"`
}

CompletionParams represents completion request parameters

type DefinitionCapabilities

type DefinitionCapabilities struct {
	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
	LinkSupport         bool `json:"linkSupport,omitempty"`
}

DefinitionCapabilities defines definition capabilities

type DefinitionParams

type DefinitionParams struct {
	TextDocumentPositionParams
}

DefinitionParams represents definition request parameters

type DidChangeConfigurationCapabilities

type DidChangeConfigurationCapabilities struct {
	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}

DidChangeConfigurationCapabilities defines configuration change capabilities

type Hover

type Hover struct {
	Contents interface{} `json:"contents"`
	Range    *Range      `json:"range,omitempty"`
}

Hover represents hover information

type HoverCapabilities

type HoverCapabilities struct {
	DynamicRegistration bool     `json:"dynamicRegistration,omitempty"`
	ContentFormat       []string `json:"contentFormat,omitempty"`
}

HoverCapabilities defines hover capabilities

type HoverParams

type HoverParams struct {
	TextDocumentPositionParams
}

HoverParams represents hover request parameters

type InitializeParams

type InitializeParams struct {
	ProcessID             *int               `json:"processId"`
	RootPath              *string            `json:"rootPath,omitempty"`
	RootURI               *string            `json:"rootUri"`
	InitializationOptions interface{}        `json:"initializationOptions,omitempty"`
	Capabilities          ClientCapabilities `json:"capabilities"`
	Trace                 string             `json:"trace,omitempty"`
	WorkspaceFolders      []WorkspaceFolder  `json:"workspaceFolders,omitempty"`
}

InitializeParams represents the initialization parameters

type InitializeResult

type InitializeResult struct {
	Capabilities ServerCapabilities `json:"capabilities"`
	ServerInfo   *ServerInfo        `json:"serverInfo,omitempty"`
}

InitializeResult represents the initialization result

type JSONRPCError

type JSONRPCError struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data,omitempty"`
}

JSONRPCError represents a JSON-RPC 2.0 error

func (*JSONRPCError) Error

func (e *JSONRPCError) Error() string

Error implements the error interface

type JSONRPCNotification

type JSONRPCNotification struct {
	JSONRPC string      `json:"jsonrpc"`
	Method  string      `json:"method"`
	Params  interface{} `json:"params,omitempty"`
}

JSONRPCNotification represents a JSON-RPC 2.0 notification

type JSONRPCRequest

type JSONRPCRequest struct {
	JSONRPC string      `json:"jsonrpc"`
	ID      interface{} `json:"id,omitempty"`
	Method  string      `json:"method"`
	Params  interface{} `json:"params,omitempty"`
}

JSONRPCRequest represents a JSON-RPC 2.0 request

type JSONRPCResponse

type JSONRPCResponse struct {
	JSONRPC string          `json:"jsonrpc"`
	ID      interface{}     `json:"id,omitempty"`
	Result  json.RawMessage `json:"result,omitempty"`
	Error   *JSONRPCError   `json:"error,omitempty"`
}

JSONRPCResponse represents a JSON-RPC 2.0 response

type LanguageServerConfig

type LanguageServerConfig struct {
	// Language identifier (e.g., "go", "python", "typescript")
	Language string

	// Command to start the language server
	Command string

	// Arguments to pass to the language server
	Args []string

	// Environment variables for the language server process
	Env map[string]string

	// InitializationOptions sent during initialization
	InitializationOptions interface{}

	// Timeout for initialization
	InitTimeout time.Duration

	// Timeout for requests
	RequestTimeout time.Duration

	// Enable/disable specific capabilities
	EnableCompletion bool
	EnableHover      bool
	EnableDefinition bool
	EnableReferences bool

	// Auto-restart on failure
	AutoRestart bool

	// Maximum restart attempts
	MaxRestarts int

	// Health check interval
	HealthCheckInterval time.Duration
}

LanguageServerConfig represents configuration for a language server

func DefaultConfig

func DefaultConfig(language string) *LanguageServerConfig

DefaultConfig returns default configuration for a language

func (*LanguageServerConfig) Clone

Clone creates a deep copy of the configuration

func (*LanguageServerConfig) Merge

func (c *LanguageServerConfig) Merge(other *LanguageServerConfig)

Merge merges another configuration into this one (other takes precedence)

func (*LanguageServerConfig) Validate

func (c *LanguageServerConfig) Validate() error

Validate checks if the configuration is valid

type Location

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

Location represents a location inside a resource

type Manager

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

Manager manages multiple language server clients

func NewManager

func NewManager() *Manager

NewManager creates a new language server manager

func (*Manager) Close

func (m *Manager) Close()

Close closes all clients and stops the manager

func (*Manager) CloseClient

func (m *Manager) CloseClient(language string) error

CloseClient closes the client for the specified language

func (*Manager) GetActiveLanguages

func (m *Manager) GetActiveLanguages() []string

GetActiveLanguages returns a list of languages with active clients

func (*Manager) GetClient

func (m *Manager) GetClient(language string) (*Client, error)

GetClient returns or creates a client for the specified language

func (*Manager) GetClientCount

func (m *Manager) GetClientCount() int

GetClientCount returns the number of active clients

func (*Manager) GetConfig

func (m *Manager) GetConfig(language string) *LanguageServerConfig

GetConfig returns the configuration for a language

func (*Manager) GetRegisteredLanguages

func (m *Manager) GetRegisteredLanguages() []string

GetRegisteredLanguages returns a list of registered languages

func (*Manager) GetRestartCount

func (m *Manager) GetRestartCount(language string) int

GetRestartCount returns the restart count for a language

func (*Manager) InitializeClient

func (m *Manager) InitializeClient(ctx context.Context, language string, rootURI string) (*InitializeResult, error)

InitializeClient initializes a client for the specified language

func (*Manager) IsHealthy

func (m *Manager) IsHealthy(language string) bool

IsHealthy checks if a language server is healthy

func (*Manager) RegisterDefaultLanguages

func (m *Manager) RegisterDefaultLanguages() error

RegisterDefaultLanguages registers all supported languages with default configurations

func (*Manager) RegisterLanguage

func (m *Manager) RegisterLanguage(config *LanguageServerConfig) error

RegisterLanguage registers a language server configuration

func (*Manager) UnregisterLanguage

func (m *Manager) UnregisterLanguage(language string) error

UnregisterLanguage unregisters a language server

func (*Manager) UpdateConfig

func (m *Manager) UpdateConfig(language string, config *LanguageServerConfig) error

UpdateConfig updates the configuration for a language

type MarkupContent

type MarkupContent struct {
	Kind  string `json:"kind"`
	Value string `json:"value"`
}

MarkupContent represents marked up content

type Position

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

Position represents a position in a text document

type Range

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

Range represents a range in a text document

type ReferenceContext

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

ReferenceContext represents the context for reference requests

type ReferenceParams

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

ReferenceParams represents reference request parameters

type ReferencesCapabilities

type ReferencesCapabilities struct {
	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}

ReferencesCapabilities defines references capabilities

type ServerCapabilities

type ServerCapabilities struct {
	TextDocumentSync           interface{}        `json:"textDocumentSync,omitempty"`
	CompletionProvider         *CompletionOptions `json:"completionProvider,omitempty"`
	HoverProvider              interface{}        `json:"hoverProvider,omitempty"`
	DefinitionProvider         interface{}        `json:"definitionProvider,omitempty"`
	ReferencesProvider         interface{}        `json:"referencesProvider,omitempty"`
	DocumentFormattingProvider interface{}        `json:"documentFormattingProvider,omitempty"`
}

ServerCapabilities defines the capabilities provided by the server

type ServerInfo

type ServerInfo struct {
	Name    string `json:"name"`
	Version string `json:"version,omitempty"`
}

ServerInfo represents server information

type TextDocumentClientCapabilities

type TextDocumentClientCapabilities struct {
	Synchronization *TextDocumentSyncClientCapabilities `json:"synchronization,omitempty"`
	Completion      *CompletionCapabilities             `json:"completion,omitempty"`
	Hover           *HoverCapabilities                  `json:"hover,omitempty"`
	Definition      *DefinitionCapabilities             `json:"definition,omitempty"`
	References      *ReferencesCapabilities             `json:"references,omitempty"`
}

TextDocumentClientCapabilities defines text document capabilities

type TextDocumentIdentifier

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

TextDocumentIdentifier identifies a text document

type TextDocumentPositionParams

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

TextDocumentPositionParams represents parameters for position-based requests

type TextDocumentSyncClientCapabilities

type TextDocumentSyncClientCapabilities struct {
	DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
	WillSave            bool `json:"willSave,omitempty"`
	WillSaveWaitUntil   bool `json:"willSaveWaitUntil,omitempty"`
	DidSave             bool `json:"didSave,omitempty"`
}

TextDocumentSyncClientCapabilities defines text document sync capabilities

type TextEdit

type TextEdit struct {
	Range   Range  `json:"range"`
	NewText string `json:"newText"`
}

TextEdit represents a textual edit

type WorkspaceClientCapabilities

type WorkspaceClientCapabilities struct {
	ApplyEdit              bool                                `json:"applyEdit,omitempty"`
	WorkspaceEdit          *WorkspaceEditCapabilities          `json:"workspaceEdit,omitempty"`
	DidChangeConfiguration *DidChangeConfigurationCapabilities `json:"didChangeConfiguration,omitempty"`
}

WorkspaceClientCapabilities defines workspace capabilities

type WorkspaceEditCapabilities

type WorkspaceEditCapabilities struct {
	DocumentChanges bool `json:"documentChanges,omitempty"`
}

WorkspaceEditCapabilities defines workspace edit capabilities

type WorkspaceFolder

type WorkspaceFolder struct {
	URI  string `json:"uri"`
	Name string `json:"name"`
}

WorkspaceFolder represents a workspace folder

Jump to

Keyboard shortcuts

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