typescript - VS Code 文档符号提供程序增量刷新
我正在尝试为我正在开发的 VS Code 插件实现一个文档符号提供者。它已经部分实现,当我打开文档时会调用它。我无法实现的是在文档更改后刷新。
是否有方法可以手动触发刷新,或者更改行为以便在文件保存或更改时自动刷新?
export class DocumentSymbolProvider implements vscode.DocumentSymbolProvider {
public async provideDocumentSymbols(document: vscode.TextDocument, token: vscode.CancellationToken): Promise<vscode.SymbolInformation[]> {
....
);
}
}
}
答案#1
editor.edit 黑客方法强制更新大纲
我想知道这是否会在以后造成任何问题,但在快速测试中似乎可以正常工作。它会删除并重新插入文档第一行的最后一个字符,保持其不变,但会触发大纲刷新:
vscode.workspace.onDidSaveTextDocument((e) => {
if (e.languageId === 'yourlang') {
const p = child_process.spawn('npx', ['yourmd', 'arg1', e.fileName])
p.on('close', (code) => {
if (code === 0) {
const editor = vscode.window.activeTextEditor
if (editor) {
const line = editor.document.lineAt(0)
const text = line.text
if (text.length) {
editor.edit(editBuilder => {
const c = line.range.end.character
editBuilder.delete(new vscode.Range(0, c-1, 0, c))
editBuilder.insert(new vscode.Position(0, c), text[c-1])
})
}
}
}
})
}
自动关闭的上游请求:https://github.com/microsoft/vscode/issues/71454
在 vscode 1.91.1 上测试。
