【发布时间】:2019-02-02 13:52:07
【问题描述】:
我们尝试像这样执行 VSCode 的 Organize imports 命令:vscode.commands.executeCommand('editor.action.organizeImports') 并成功执行:在测试文件中,我们看到已订购导入,但文件未保存。
我们想编写一个扩展来进一步格式化/排序/排序导入,所以我们想在executeCommand 的回调中编写代码,如下所示:
export function activate(context: vscode.ExtensionContext) {
const sortDisposable = vscode.commands.registerTextEditorCommand(SORT_EXTENSION_ID, (editor: vscode.TextEditor) => {
// execute VS Code's Organize imports command
return vscode.commands
.executeCommand('editor.action.organizeImports')
.then(_ => {
const content: string = editor.document.getText();
console.log(`contet`, content)
}, _ => console.log(`failure`));
});
context.subscriptions.push(sortDisposable);
}
然而,editor.document.getText() 实际上是在 VS Code 的 Organize imports 组织导入之前返回文档的状态。
也就是说,我们提供的回调并没有在 VSCode 的Organize imports 之后执行。
我们也尝试过this suggestion,但还是不行。
在执行命令后,有没有办法从 VSCode 获得真正的回调?根据this sample(来自 VSCode 团队本身)的说法,这是可以做到的,但由于某种原因,它对我们不起作用。 是因为我们调用了 VSCode 的内部方法吗?有人有什么建议吗?
【问题讨论】:
标签: typescript visual-studio-code vscode-extensions