lsp

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TextDocumentSyncNone        = 0
	TextDocumentSyncFull        = 1
	TextDocumentSyncIncremental = 2
)

TextDocumentSyncKind 文档同步策略。

View Source
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

func NewLSPClient(reader io.Reader, writer io.Writer, logger *zap.Logger) *LSPClient

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) Shutdown

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

Shutdown 关闭客户端

func (*LSPClient) Start

func (c *LSPClient) Start(ctx context.Context) error

Start 启动客户端消息循环

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

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

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

func (s *LSPServer) SendNotification(method string, params any) error

SendNotification 发送通知

func (*LSPServer) SetCapabilities

func (s *LSPServer) SetCapabilities(caps ServerCapabilities)

SetCapabilities 设置服务器能力

func (*LSPServer) Start

func (s *LSPServer) Start(ctx context.Context) error

Start 启动服务器

type Location

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

Location 位置(文件 + 范围)

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 Range

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

Range 文档范围

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

type RequestHandler func(ctx context.Context, params json.RawMessage) (any, error)

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

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

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 TextEdit

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

TextEdit 文本编辑

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 工作区编辑

Jump to

Keyboard shortcuts

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