
分析完一个featureCommands后,其他的22个都是类似的。它们的作用是将编辑器对源码的操作接口进行标准化,它的核心接口如下:
textDocument/didOpen、textDocument/didChange、textDocument/didClosetextDocument/completiontextDocument/definition、textDocument/typeDefinitiontextDocument/referencestextDocument/documentSymbol、workspace/symboltextDocument/publishDiagnosticstextDocument/formatting、textDocument/rangeFormattingtextDocument/codeAction(支持生成测试、实现接口等)textDocument/rename、textDocument/prepareRenametextDocument/semanticTokens/full(增强语法高亮)workspace/executeCommand(go.mod 依赖操作)View(文件快照)、Snapshot(模块状态缓存)Package(集成 go/types 和 x/tools/go/packages)Analyzer(静态检查规则,如 nilness、unused)go/build 和 go list 输出Debug 端点(如 gopls/check_updates)
server的接口定义位于internal/protocol/tsserver.gotype Server interface {
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#progress
Progress(context.Context, *ProgressParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#setTrace
SetTrace(context.Context, *SetTraceParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchy_incomingCalls
IncomingCalls(context.Context, *CallHierarchyIncomingCallsParams) ([]CallHierarchyIncomingCall, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchy_outgoingCalls
OutgoingCalls(context.Context, *CallHierarchyOutgoingCallsParams) ([]CallHierarchyOutgoingCall, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeAction_resolve
ResolveCodeAction(context.Context, *CodeAction) (*CodeAction, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLens_resolve
ResolveCodeLens(context.Context, *CodeLens) (*CodeLens, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItem_resolve
ResolveCompletionItem(context.Context, *CompletionItem) (*CompletionItem, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLink_resolve
ResolveDocumentLink(context.Context, *DocumentLink) (*DocumentLink, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#exit
Exit(context.Context) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initialize
Initialize(context.Context, *ParamInitialize) (*InitializeResult, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initialized
Initialized(context.Context, *InitializedParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHint_resolve
Resolve(context.Context, *InlayHint) (*InlayHint, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocument_didChange
DidChangeNotebookDocument(context.Context, *DidChangeNotebookDocumentParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocument_didClose
DidCloseNotebookDocument(context.Context, *DidCloseNotebookDocumentParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocument_didOpen
DidOpenNotebookDocument(context.Context, *DidOpenNotebookDocumentParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocument_didSave
DidSaveNotebookDocument(context.Context, *DidSaveNotebookDocumentParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#shutdown
Shutdown(context.Context) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_codeAction
CodeAction(context.Context, *CodeActionParams) ([]CodeAction, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_codeLens
CodeLens(context.Context, *CodeLensParams) ([]CodeLens, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_colorPresentation
ColorPresentation(context.Context, *ColorPresentationParams) ([]ColorPresentation, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_completion
Completion(context.Context, *CompletionParams) (*CompletionList, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_declaration
Declaration(context.Context, *DeclarationParams) (*Or_textDocument_declaration, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_definition
Definition(context.Context, *DefinitionParams) ([]Location, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_diagnostic
Diagnostic(context.Context, *DocumentDiagnosticParams) (*DocumentDiagnosticReport, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_didChange
DidChange(context.Context, *DidChangeTextDocumentParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_didClose
DidClose(context.Context, *DidCloseTextDocumentParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_didOpen
DidOpen(context.Context, *DidOpenTextDocumentParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_didSave
DidSave(context.Context, *DidSaveTextDocumentParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_documentColor
DocumentColor(context.Context, *DocumentColorParams) ([]ColorInformation, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_documentHighlight
DocumentHighlight(context.Context, *DocumentHighlightParams) ([]DocumentHighlight, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_documentLink
DocumentLink(context.Context, *DocumentLinkParams) ([]DocumentLink, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_documentSymbol
DocumentSymbol(context.Context, *DocumentSymbolParams) ([]any, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_foldingRange
FoldingRange(context.Context, *FoldingRangeParams) ([]FoldingRange, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_formatting
Formatting(context.Context, *DocumentFormattingParams) ([]TextEdit, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_hover
Hover(context.Context, *HoverParams) (*Hover, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_implementation
Implementation(context.Context, *ImplementationParams) ([]Location, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_inlayHint
InlayHint(context.Context, *InlayHintParams) ([]InlayHint, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_inlineCompletion
InlineCompletion(context.Context, *InlineCompletionParams) (*Or_Result_textDocument_inlineCompletion, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_inlineValue
InlineValue(context.Context, *InlineValueParams) ([]InlineValue, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_linkedEditingRange
LinkedEditingRange(context.Context, *LinkedEditingRangeParams) (*LinkedEditingRanges, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_moniker
Moniker(context.Context, *MonikerParams) ([]Moniker, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_onTypeFormatting
OnTypeFormatting(context.Context, *DocumentOnTypeFormattingParams) ([]TextEdit, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_prepareCallHierarchy
PrepareCallHierarchy(context.Context, *CallHierarchyPrepareParams) ([]CallHierarchyItem, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_prepareRename
PrepareRename(context.Context, *PrepareRenameParams) (*PrepareRenameResult, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_prepareTypeHierarchy
PrepareTypeHierarchy(context.Context, *TypeHierarchyPrepareParams) ([]TypeHierarchyItem, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_rangeFormatting
RangeFormatting(context.Context, *DocumentRangeFormattingParams) ([]TextEdit, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_rangesFormatting
RangesFormatting(context.Context, *DocumentRangesFormattingParams) ([]TextEdit, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_references
References(context.Context, *ReferenceParams) ([]Location, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_rename
Rename(context.Context, *RenameParams) (*WorkspaceEdit, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_selectionRange
SelectionRange(context.Context, *SelectionRangeParams) ([]SelectionRange, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_semanticTokens_full
SemanticTokensFull(context.Context, *SemanticTokensParams) (*SemanticTokens, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_semanticTokens_full_delta
SemanticTokensFullDelta(context.Context, *SemanticTokensDeltaParams) (any, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_semanticTokens_range
SemanticTokensRange(context.Context, *SemanticTokensRangeParams) (*SemanticTokens, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_signatureHelp
SignatureHelp(context.Context, *SignatureHelpParams) (*SignatureHelp, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_typeDefinition
TypeDefinition(context.Context, *TypeDefinitionParams) ([]Location, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_willSave
WillSave(context.Context, *WillSaveTextDocumentParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocument_willSaveWaitUntil
WillSaveWaitUntil(context.Context, *WillSaveTextDocumentParams) ([]TextEdit, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchy_subtypes
Subtypes(context.Context, *TypeHierarchySubtypesParams) ([]TypeHierarchyItem, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchy_supertypes
Supertypes(context.Context, *TypeHierarchySupertypesParams) ([]TypeHierarchyItem, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#window_workDoneProgress_cancel
WorkDoneProgressCancel(context.Context, *WorkDoneProgressCancelParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_diagnostic
DiagnosticWorkspace(context.Context, *WorkspaceDiagnosticParams) (*WorkspaceDiagnosticReport, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_didChangeConfiguration
DidChangeConfiguration(context.Context, *DidChangeConfigurationParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_didChangeWatchedFiles
DidChangeWatchedFiles(context.Context, *DidChangeWatchedFilesParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_didChangeWorkspaceFolders
DidChangeWorkspaceFolders(context.Context, *DidChangeWorkspaceFoldersParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_didCreateFiles
DidCreateFiles(context.Context, *CreateFilesParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_didDeleteFiles
DidDeleteFiles(context.Context, *DeleteFilesParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_didRenameFiles
DidRenameFiles(context.Context, *RenameFilesParams) error
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_executeCommand
ExecuteCommand(context.Context, *ExecuteCommandParams) (any, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_symbol
Symbol(context.Context, *WorkspaceSymbolParams) ([]SymbolInformation, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_textDocumentContent
TextDocumentContent(context.Context, *TextDocumentContentParams) (*string, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_willCreateFiles
WillCreateFiles(context.Context, *CreateFilesParams) (*WorkspaceEdit, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_willDeleteFiles
WillDeleteFiles(context.Context, *DeleteFilesParams) (*WorkspaceEdit, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspace_willRenameFiles
WillRenameFiles(context.Context, *RenameFilesParams) (*WorkspaceEdit, error)
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbol_resolve
ResolveWorkspaceSymbol(context.Context, *WorkspaceSymbol) (*WorkspaceSymbol, error)
}研究这个文件的注释发现,这些接口都是通过代码生成的。
本文分享自 golang算法架构leetcode技术php 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!