Documentation
¶
Index ¶
- Constants
- type ClientCapabilities
- type CodeAction
- type CodeActionContext
- type CodeActionKind
- type CodeActionOptions
- type CodeActionParams
- type Command
- type CompletionClientCapabilities
- type CompletionItem
- type CompletionItemKind
- type CompletionOptions
- type CompletionParams
- type DefinitionParams
- type Diagnostic
- type DiagnosticSeverity
- type DiagnosticTag
- type DidChangeTextDocumentParams
- type DidCloseTextDocumentParams
- type DidOpenTextDocumentParams
- type DocumentHighlight
- type DocumentHighlightKind
- type DocumentSymbol
- type DocumentSymbolParams
- type Hover
- type HoverClientCapabilities
- type HoverParams
- type InitializeParams
- type InitializeResult
- type LSPClient
- func (c *LSPClient) Initialize(ctx context.Context, params InitializeParams) (*InitializeResult, error)
- func (c *LSPClient) RegisterNotificationHandler(method string, handler NotificationHandler)
- func (c *LSPClient) Shutdown(ctx context.Context) error
- func (c *LSPClient) Start(ctx context.Context) error
- func (c *LSPClient) TextDocumentCodeAction(ctx context.Context, params CodeActionParams) ([]CodeAction, error)
- func (c *LSPClient) TextDocumentCompletion(ctx context.Context, params CompletionParams) ([]CompletionItem, error)
- func (c *LSPClient) TextDocumentDefinition(ctx context.Context, params DefinitionParams) ([]Location, error)
- func (c *LSPClient) TextDocumentDidChange(params DidChangeTextDocumentParams) error
- func (c *LSPClient) TextDocumentDidClose(params DidCloseTextDocumentParams) error
- func (c *LSPClient) TextDocumentDidOpen(params DidOpenTextDocumentParams) error
- func (c *LSPClient) TextDocumentDocumentSymbol(ctx context.Context, params DocumentSymbolParams) ([]DocumentSymbol, error)
- func (c *LSPClient) TextDocumentHover(ctx context.Context, params HoverParams) (*Hover, error)
- func (c *LSPClient) TextDocumentReferences(ctx context.Context, params ReferenceParams) ([]Location, error)
- type LSPError
- type LSPMessage
- type LSPServer
- type Location
- type MarkupContent
- type MarkupKind
- type NotificationHandler
- type ParameterInformation
- type Position
- type Range
- type ReferenceContext
- type ReferenceParams
- type RequestHandler
- type ServerCapabilities
- type ServerInfo
- type SignatureHelp
- type SignatureHelpClientCapabilities
- type SignatureHelpOptions
- type SignatureInformation
- type SymbolInformation
- type SymbolKind
- type TextDocumentClientCapabilities
- type TextDocumentContentChangeEvent
- type TextDocumentEdit
- type TextDocumentIdentifier
- type TextDocumentItem
- type TextEdit
- type VersionedTextDocumentIdentifier
- type WorkspaceEdit
Constants ¶
const ( TextDocumentSyncNone = 0 TextDocumentSyncFull = 1 TextDocumentSyncIncremental = 2 )
TextDocumentSyncKind 文档同步策略。
const LSPVersion = "3.17"
LSPVersion LSP 协议版本
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClientCapabilities ¶
type ClientCapabilities struct {
TextDocument TextDocumentClientCapabilities `json:"textDocument,omitempty"`
}
ClientCapabilities 客户端能力
type CodeAction ¶
type CodeAction struct {
Title string `json:"title"`
Kind CodeActionKind `json:"kind,omitempty"`
Diagnostics []Diagnostic `json:"diagnostics,omitempty"`
IsPreferred bool `json:"isPreferred,omitempty"`
Edit *WorkspaceEdit `json:"edit,omitempty"`
Command *Command `json:"command,omitempty"`
Data any `json:"data,omitempty"`
}
CodeAction 代码操作
type CodeActionContext ¶
type CodeActionContext struct {
Diagnostics []Diagnostic `json:"diagnostics"`
}
CodeActionContext 代码操作上下文
type CodeActionKind ¶
type CodeActionKind string
CodeActionKind 代码操作类型
const ( CodeActionQuickFix CodeActionKind = "quickfix" CodeActionRefactor CodeActionKind = "refactor" CodeActionRefactorExtract CodeActionKind = "refactor.extract" CodeActionRefactorInline CodeActionKind = "refactor.inline" CodeActionRefactorRewrite CodeActionKind = "refactor.rewrite" CodeActionSource CodeActionKind = "source" CodeActionSourceOrganizeImports CodeActionKind = "source.organizeImports" )
type CodeActionOptions ¶
type CodeActionOptions struct {
CodeActionKinds []CodeActionKind `json:"codeActionKinds,omitempty"`
}
CodeActionOptions 代码操作选项
type CodeActionParams ¶
type CodeActionParams struct {
TextDocument TextDocumentIdentifier `json:"textDocument"`
Range Range `json:"range"`
Context CodeActionContext `json:"context"`
}
CodeActionParams 代码操作参数
type Command ¶
type Command struct {
Title string `json:"title"`
Command string `json:"command"`
Arguments []any `json:"arguments,omitempty"`
}
Command 命令
type CompletionClientCapabilities ¶
type CompletionClientCapabilities struct {
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
CompletionClientCapabilities 补全客户端能力
type CompletionItem ¶
type CompletionItem struct {
Label string `json:"label"`
Kind CompletionItemKind `json:"kind"`
Detail string `json:"detail,omitempty"`
Documentation string `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"`
TextEdit *TextEdit `json:"textEdit,omitempty"`
AdditionalEdits []TextEdit `json:"additionalTextEdits,omitempty"`
CommitCharacters []string `json:"commitCharacters,omitempty"`
Data any `json:"data,omitempty"`
}
CompletionItem 代码补全项
type CompletionItemKind ¶
type CompletionItemKind int
CompletionItemKind 补全项类型
const ( CompletionText CompletionItemKind = 1 CompletionMethod CompletionItemKind = 2 CompletionFunction CompletionItemKind = 3 CompletionConstructor CompletionItemKind = 4 CompletionField CompletionItemKind = 5 CompletionVariable CompletionItemKind = 6 CompletionClass CompletionItemKind = 7 CompletionInterface CompletionItemKind = 8 CompletionModule CompletionItemKind = 9 CompletionProperty CompletionItemKind = 10 CompletionKeyword CompletionItemKind = 14 CompletionSnippet CompletionItemKind = 15 )
type CompletionOptions ¶
type CompletionOptions struct {
TriggerCharacters []string `json:"triggerCharacters,omitempty"`
ResolveProvider bool `json:"resolveProvider,omitempty"`
}
CompletionOptions 补全选项
type CompletionParams ¶
type CompletionParams struct {
TextDocument TextDocumentIdentifier `json:"textDocument"`
Position Position `json:"position"`
}
CompletionParams 补全参数
type DefinitionParams ¶
type DefinitionParams struct {
TextDocument TextDocumentIdentifier `json:"textDocument"`
Position Position `json:"position"`
}
DefinitionParams 定义参数
type Diagnostic ¶
type Diagnostic struct {
Range Range `json:"range"`
Severity DiagnosticSeverity `json:"severity"`
Code string `json:"code,omitempty"`
Source string `json:"source,omitempty"`
Message string `json:"message"`
Tags []DiagnosticTag `json:"tags,omitempty"`
}
Diagnostic 诊断信息(错误/警告)
type DiagnosticSeverity ¶
type DiagnosticSeverity int
DiagnosticSeverity 诊断严重性
const ( SeverityError DiagnosticSeverity = 1 SeverityWarning DiagnosticSeverity = 2 SeverityInformation DiagnosticSeverity = 3 SeverityHint DiagnosticSeverity = 4 )
type DiagnosticTag ¶
type DiagnosticTag int
DiagnosticTag 诊断标签
const ( TagUnnecessary DiagnosticTag = 1 TagDeprecated DiagnosticTag = 2 )
type DidChangeTextDocumentParams ¶
type DidChangeTextDocumentParams struct {
TextDocument VersionedTextDocumentIdentifier `json:"textDocument"`
ContentChanges []TextDocumentContentChangeEvent `json:"contentChanges"`
}
DidChangeTextDocumentParams 文档变更参数。
type DidCloseTextDocumentParams ¶
type DidCloseTextDocumentParams struct {
TextDocument TextDocumentIdentifier `json:"textDocument"`
}
DidCloseTextDocumentParams 文档关闭参数。
type DidOpenTextDocumentParams ¶
type DidOpenTextDocumentParams struct {
TextDocument TextDocumentItem `json:"textDocument"`
}
DidOpenTextDocumentParams 文档打开参数。
type DocumentHighlight ¶
type DocumentHighlight struct {
Range Range `json:"range"`
Kind DocumentHighlightKind `json:"kind,omitempty"`
}
DocumentHighlight 文档高亮
type DocumentHighlightKind ¶
type DocumentHighlightKind int
DocumentHighlightKind 高亮类型
const ( HighlightText DocumentHighlightKind = 1 HighlightRead DocumentHighlightKind = 2 HighlightWrite DocumentHighlightKind = 3 )
type DocumentSymbol ¶
type DocumentSymbol struct {
Name string `json:"name"`
Detail string `json:"detail,omitempty"`
Kind SymbolKind `json:"kind"`
Deprecated bool `json:"deprecated,omitempty"`
Range Range `json:"range"`
SelectionRange Range `json:"selectionRange"`
Children []DocumentSymbol `json:"children,omitempty"`
}
DocumentSymbol 文档符号(层次结构)
type DocumentSymbolParams ¶
type DocumentSymbolParams struct {
TextDocument TextDocumentIdentifier `json:"textDocument"`
}
DocumentSymbolParams 文档符号参数
type Hover ¶
type Hover struct {
Contents MarkupContent `json:"contents"`
Range *Range `json:"range,omitempty"`
}
Hover 悬停信息
type HoverClientCapabilities ¶
type HoverClientCapabilities struct {
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
HoverClientCapabilities 悬停客户端能力
type HoverParams ¶
type HoverParams struct {
TextDocument TextDocumentIdentifier `json:"textDocument"`
Position Position `json:"position"`
}
HoverParams 悬停参数
type InitializeParams ¶
type InitializeParams struct {
ProcessID int `json:"processId"`
RootURI string `json:"rootUri"`
Capabilities ClientCapabilities `json:"capabilities"`
InitializationOptions any `json:"initializationOptions,omitempty"`
}
InitializeParams 初始化参数
type InitializeResult ¶
type InitializeResult struct {
Capabilities ServerCapabilities `json:"capabilities"`
ServerInfo ServerInfo `json:"serverInfo"`
}
InitializeResult 初始化结果
type LSPClient ¶
type LSPClient struct {
// contains filtered or unexported fields
}
LSPClient LSP 客户端实现
func NewLSPClient ¶
NewLSPClient 创建 LSP 客户端
func (*LSPClient) Initialize ¶
func (c *LSPClient) Initialize(ctx context.Context, params InitializeParams) (*InitializeResult, error)
Initialize 初始化客户端
func (*LSPClient) RegisterNotificationHandler ¶
func (c *LSPClient) RegisterNotificationHandler(method string, handler NotificationHandler)
RegisterNotificationHandler 注册通知处理器
func (*LSPClient) TextDocumentCodeAction ¶
func (c *LSPClient) TextDocumentCodeAction(ctx context.Context, params CodeActionParams) ([]CodeAction, error)
TextDocumentCodeAction 请求代码操作
func (*LSPClient) TextDocumentCompletion ¶
func (c *LSPClient) TextDocumentCompletion(ctx context.Context, params CompletionParams) ([]CompletionItem, error)
TextDocumentCompletion 请求代码补全
func (*LSPClient) TextDocumentDefinition ¶
func (c *LSPClient) TextDocumentDefinition(ctx context.Context, params DefinitionParams) ([]Location, error)
TextDocumentDefinition 请求定义位置
func (*LSPClient) TextDocumentDidChange ¶
func (c *LSPClient) TextDocumentDidChange(params DidChangeTextDocumentParams) error
TextDocumentDidChange 发送文档变更通知。
func (*LSPClient) TextDocumentDidClose ¶
func (c *LSPClient) TextDocumentDidClose(params DidCloseTextDocumentParams) error
TextDocumentDidClose 发送文档关闭通知。
func (*LSPClient) TextDocumentDidOpen ¶
func (c *LSPClient) TextDocumentDidOpen(params DidOpenTextDocumentParams) error
TextDocumentDidOpen 发送文档打开通知。
func (*LSPClient) TextDocumentDocumentSymbol ¶
func (c *LSPClient) TextDocumentDocumentSymbol(ctx context.Context, params DocumentSymbolParams) ([]DocumentSymbol, error)
TextDocumentDocumentSymbol 请求文档符号
func (*LSPClient) TextDocumentHover ¶
TextDocumentHover 请求悬停信息
func (*LSPClient) TextDocumentReferences ¶
func (c *LSPClient) TextDocumentReferences(ctx context.Context, params ReferenceParams) ([]Location, error)
TextDocumentReferences 请求引用位置
type LSPError ¶
type LSPError struct {
Code int `json:"code"`
Message string `json:"message"`
Data any `json:"data,omitempty"`
}
LSPError LSP 错误
type LSPMessage ¶
type LSPMessage struct {
JSONRPC string `json:"jsonrpc"`
ID any `json:"id,omitempty"`
Method string `json:"method,omitempty"`
Params json.RawMessage `json:"params,omitempty"`
Result any `json:"result,omitempty"`
Error *LSPError `json:"error,omitempty"`
}
LSPMessage LSP 消息
type LSPServer ¶
type LSPServer struct {
// contains filtered or unexported fields
}
LSPServer LSP 服务器实现
func NewLSPServer ¶
func NewLSPServer(info ServerInfo, reader io.Reader, writer io.Writer, logger *zap.Logger) *LSPServer
NewLSPServer 创建 LSP 服务器
func (*LSPServer) RegisterHandler ¶
func (s *LSPServer) RegisterHandler(method string, handler RequestHandler)
RegisterHandler 注册请求处理器
func (*LSPServer) SendNotification ¶
SendNotification 发送通知
func (*LSPServer) SetCapabilities ¶
func (s *LSPServer) SetCapabilities(caps ServerCapabilities)
SetCapabilities 设置服务器能力
type MarkupContent ¶
type MarkupContent struct {
Kind MarkupKind `json:"kind"`
Value string `json:"value"`
}
MarkupContent 标记内容
type MarkupKind ¶
type MarkupKind string
MarkupKind 标记类型
const ( MarkupPlainText MarkupKind = "plaintext" MarkupMarkdown MarkupKind = "markdown" )
type NotificationHandler ¶
type NotificationHandler func(method string, params json.RawMessage)
NotificationHandler 通知处理器
type ParameterInformation ¶
type ParameterInformation struct {
Label string `json:"label"`
Documentation *MarkupContent `json:"documentation,omitempty"`
}
ParameterInformation 参数信息
type Position ¶
type Position struct {
Line int `json:"line"` // 行号(从 0 开始)
Character int `json:"character"` // 列号(从 0 开始)
}
Position 文档位置
type ReferenceContext ¶
type ReferenceContext struct {
IncludeDeclaration bool `json:"includeDeclaration"`
}
ReferenceContext 引用上下文
type ReferenceParams ¶
type ReferenceParams struct {
TextDocument TextDocumentIdentifier `json:"textDocument"`
Position Position `json:"position"`
Context ReferenceContext `json:"context"`
}
ReferenceParams 引用参数
type RequestHandler ¶
RequestHandler 请求处理器
type ServerCapabilities ¶
type ServerCapabilities struct {
TextDocumentSync int `json:"textDocumentSync,omitempty"`
CompletionProvider *CompletionOptions `json:"completionProvider,omitempty"`
HoverProvider bool `json:"hoverProvider,omitempty"`
SignatureHelpProvider *SignatureHelpOptions `json:"signatureHelpProvider,omitempty"`
DefinitionProvider bool `json:"definitionProvider,omitempty"`
ReferencesProvider bool `json:"referencesProvider,omitempty"`
DocumentHighlightProvider bool `json:"documentHighlightProvider,omitempty"`
DocumentSymbolProvider bool `json:"documentSymbolProvider,omitempty"`
WorkspaceSymbolProvider bool `json:"workspaceSymbolProvider,omitempty"`
CodeActionProvider *CodeActionOptions `json:"codeActionProvider,omitempty"`
DocumentFormattingProvider bool `json:"documentFormattingProvider,omitempty"`
RenameProvider bool `json:"renameProvider,omitempty"`
}
ServerCapabilities 服务器能力
type ServerInfo ¶
ServerInfo 服务器信息
type SignatureHelp ¶
type SignatureHelp struct {
Signatures []SignatureInformation `json:"signatures"`
ActiveSignature int `json:"activeSignature,omitempty"`
ActiveParameter int `json:"activeParameter,omitempty"`
}
SignatureHelp 签名帮助
type SignatureHelpClientCapabilities ¶
type SignatureHelpClientCapabilities struct {
DynamicRegistration bool `json:"dynamicRegistration,omitempty"`
}
SignatureHelpClientCapabilities 签名帮助客户端能力
type SignatureHelpOptions ¶
type SignatureHelpOptions struct {
TriggerCharacters []string `json:"triggerCharacters,omitempty"`
}
SignatureHelpOptions 签名帮助选项
type SignatureInformation ¶
type SignatureInformation struct {
Label string `json:"label"`
Documentation *MarkupContent `json:"documentation,omitempty"`
Parameters []ParameterInformation `json:"parameters,omitempty"`
ActiveParameter int `json:"activeParameter,omitempty"`
}
SignatureInformation 签名信息
type SymbolInformation ¶
type SymbolInformation struct {
Name string `json:"name"`
Kind SymbolKind `json:"kind"`
Deprecated bool `json:"deprecated,omitempty"`
Location Location `json:"location"`
ContainerName string `json:"containerName,omitempty"`
}
SymbolInformation 符号信息
type SymbolKind ¶
type SymbolKind int
SymbolKind 符号类型
const ( SymbolFile SymbolKind = 1 SymbolModule SymbolKind = 2 SymbolNamespace SymbolKind = 3 SymbolPackage SymbolKind = 4 SymbolClass SymbolKind = 5 SymbolMethod SymbolKind = 6 SymbolProperty SymbolKind = 7 SymbolField SymbolKind = 8 SymbolConstructor SymbolKind = 9 SymbolEnum SymbolKind = 10 SymbolInterface SymbolKind = 11 SymbolFunction SymbolKind = 12 SymbolVariable SymbolKind = 13 SymbolConstant SymbolKind = 14 SymbolString SymbolKind = 15 SymbolNumber SymbolKind = 16 SymbolBoolean SymbolKind = 17 SymbolArray SymbolKind = 18 )
type TextDocumentClientCapabilities ¶
type TextDocumentClientCapabilities struct {
Completion *CompletionClientCapabilities `json:"completion,omitempty"`
Hover *HoverClientCapabilities `json:"hover,omitempty"`
SignatureHelp *SignatureHelpClientCapabilities `json:"signatureHelp,omitempty"`
}
TextDocumentClientCapabilities 文本文档客户端能力
type TextDocumentContentChangeEvent ¶
type TextDocumentContentChangeEvent struct {
Range *Range `json:"range,omitempty"`
RangeLength int `json:"rangeLength,omitempty"`
Text string `json:"text"`
}
TextDocumentContentChangeEvent 文档变更条目。
type TextDocumentEdit ¶
type TextDocumentEdit struct {
TextDocument VersionedTextDocumentIdentifier `json:"textDocument"`
Edits []TextEdit `json:"edits"`
}
TextDocumentEdit 文档编辑
type TextDocumentIdentifier ¶
type TextDocumentIdentifier struct {
URI string `json:"uri"`
}
TextDocumentIdentifier 文本文档标识
type TextDocumentItem ¶
type TextDocumentItem struct {
URI string `json:"uri"`
LanguageID string `json:"languageId,omitempty"`
Version int `json:"version"`
Text string `json:"text"`
}
TextDocumentItem 文档内容。
type VersionedTextDocumentIdentifier ¶
type VersionedTextDocumentIdentifier struct {
URI string `json:"uri"`
Version int `json:"version"`
}
VersionedTextDocumentIdentifier 版本化文档标识
type WorkspaceEdit ¶
type WorkspaceEdit struct {
Changes map[string][]TextEdit `json:"changes,omitempty"`
DocumentChanges []TextDocumentEdit `json:"documentChanges,omitempty"`
}
WorkspaceEdit 工作区编辑