跳到主要内容

vscode.languages

参与某种语言的编辑功能:补全、诊断、悬停、代码操作等。编辑器负责界面,扩展按 DocumentSelector 提供数据。

选择器可以是语言 ID,或 { language, scheme, pattern, notebookType }。match(selector, document) 返回分数,大于 0 才匹配。* 为 5,精确或 glob 命中为 10。

诊断与语言列表​

方法作用
createDiagnosticCollection(name?)创建诊断集合。set 替换某个 Uri 的诊断,delete 清掉,clear 清空
getDiagnostics(uri?)读取当前全部诊断
onDidChangeDiagnostics全局诊断集合变化
getLanguages()已知语言 ID
setTextDocumentLanguage改一份文档的语言
createLanguageStatusItem状态栏语言区域里的一项
match计算选择器和文档的匹配分数

注册提供器​

每个函数都是 (selector, provider) => Disposable。多家可以并存。一家失败不会让整次请求失败。

方法功能
registerCompletionItemProvider补全。后面可跟触发字符
registerInlineCompletionItemProvider行内补全
registerHoverProvider悬停
registerSignatureHelpProvider参数签名
registerDefinitionProvider定义
registerDeclarationProvider声明
registerTypeDefinitionProvider类型定义
registerImplementationProvider实现
registerReferenceProvider引用
registerDocumentHighlightProvider文档内高亮同一符号
registerDocumentSymbolProvider符号、大纲
registerWorkspaceSymbolProvider工作区符号搜索
registerCodeActionsProvider代码操作。metadata 说明提供哪些 kind
registerCodeLensProviderCodeLens
registerDocumentLinkProvider文档里的链接
registerColorProvider颜色选择
registerDocumentFormattingEditProvider全文档格式化
registerDocumentRangeFormattingEditProvider选区格式化
registerOnTypeFormattingEditProvider打某个字符时格式化
registerRenameProvider重命名
registerFoldingRangeProvider折叠
registerSelectionRangeProvider扩大/缩小选区
registerCallHierarchyProvider调用层次
registerTypeHierarchyProvider类型层次
registerDocumentSemanticTokensProvider语义着色
registerLinkedEditingRangeProvider链接编辑,例如同时改标签名
registerInlayHintsProvider内嵌提示
setLanguageConfiguration括号、注释符号、缩进规则。返回 Disposable

提供器方法签名一般是 (document, position, token) 或 (document, token),返回结果或 Thenable。

补全的顺序​

多家补全提供器先按匹配分数排序。分数相同的一组会按顺序被询问,这一组里有人返回了结果,就可以不再问更低分的组。触发字符只询问注册了该字符的提供器。触发字符应避开单词字符,常见的是 .。

参考​