Documentation
¶
Index ¶
- Constants
- func SupportedLanguages() []string
- type Client
- func (c *Client) Close() error
- func (c *Client) Completion(ctx context.Context, params CompletionParams) (*CompletionList, error)
- func (c *Client) Definition(ctx context.Context, params DefinitionParams) (*Location, error)
- func (c *Client) Exit(ctx context.Context) error
- func (c *Client) Hover(ctx context.Context, params HoverParams) (*Hover, error)
- func (c *Client) Initialize(ctx context.Context, rootURI *string, initOptions interface{}) (*InitializeResult, error)
- func (c *Client) Initialized(ctx context.Context) error
- func (c *Client) IsShutdown() bool
- func (c *Client) References(ctx context.Context, params ReferenceParams) ([]Location, error)
- func (c *Client) Shutdown(ctx context.Context) error
- func (c *Client) Start() error
- type ClientCapabilities
- type Command
- type CompletionCapabilities
- type CompletionContext
- type CompletionItem
- type CompletionItemCapabilities
- type CompletionList
- type CompletionOptions
- type CompletionParams
- type DefinitionCapabilities
- type DefinitionParams
- type DidChangeConfigurationCapabilities
- type Hover
- type HoverCapabilities
- type HoverParams
- type InitializeParams
- type InitializeResult
- type JSONRPCError
- type JSONRPCNotification
- type JSONRPCRequest
- type JSONRPCResponse
- type LanguageServerConfig
- type Location
- type Manager
- func (m *Manager) Close()
- func (m *Manager) CloseClient(language string) error
- func (m *Manager) GetActiveLanguages() []string
- func (m *Manager) GetClient(language string) (*Client, error)
- func (m *Manager) GetClientCount() int
- func (m *Manager) GetConfig(language string) *LanguageServerConfig
- func (m *Manager) GetRegisteredLanguages() []string
- func (m *Manager) GetRestartCount(language string) int
- func (m *Manager) InitializeClient(ctx context.Context, language string, rootURI string) (*InitializeResult, error)
- func (m *Manager) IsHealthy(language string) bool
- func (m *Manager) RegisterDefaultLanguages() error
- func (m *Manager) RegisterLanguage(config *LanguageServerConfig) error
- func (m *Manager) UnregisterLanguage(language string) error
- func (m *Manager) UpdateConfig(language string, config *LanguageServerConfig) error
- type MarkupContent
- type Position
- type Range
- type ReferenceContext
- type ReferenceParams
- type ReferencesCapabilities
- type ServerCapabilities
- type ServerInfo
- type TextDocumentClientCapabilities
- type TextDocumentIdentifier
- type TextDocumentPositionParams
- type TextDocumentSyncClientCapabilities
- type TextEdit
- type WorkspaceClientCapabilities
- type WorkspaceEditCapabilities
- type WorkspaceFolder
Constants ¶
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
const ( CompletionTriggerKindInvoked = 1 CompletionTriggerKindTriggerCharacter = 2 CompletionTriggerKindTriggerForIncompleteCompletions = 3 )
CompletionTriggerKind constants
const ( InsertTextFormatPlainText = 1 InsertTextFormatSnippet = 2 )
InsertTextFormat constants
const ( MarkupKindPlainText = "plaintext" MarkupKindMarkdown = "markdown" )
MarkupKind constants
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) Completion ¶
func (c *Client) Completion(ctx context.Context, params CompletionParams) (*CompletionList, error)
Completion sends a textDocument/completion request
func (*Client) Definition ¶
Definition sends a textDocument/definition 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 ¶
Initialized sends the initialized notification
func (*Client) IsShutdown ¶
IsShutdown returns true if the client is shutdown
func (*Client) References ¶
References sends a textDocument/references request
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 ¶
func (c *LanguageServerConfig) Clone() *LanguageServerConfig
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 Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager manages multiple language server clients
func (*Manager) CloseClient ¶
CloseClient closes the client for the specified language
func (*Manager) GetActiveLanguages ¶
GetActiveLanguages returns a list of languages with active clients
func (*Manager) GetClientCount ¶
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 ¶
GetRegisteredLanguages returns a list of registered languages
func (*Manager) GetRestartCount ¶
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) RegisterDefaultLanguages ¶
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 ¶
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 ¶
MarkupContent represents marked up content
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 ¶
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 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 ¶
WorkspaceFolder represents a workspace folder