Мы попытались выполнить команду Organize imports
VSCode следующим образом: 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 1010 * VS организовал импорт.
Другими словами, обратный вызов, который мы предоставили, не выполняется после Organize imports
.
VSCode.
Мы также попробовали это предложение , но оно не работает.
Есть ли способ получить истинный обратный вызов из VSCode после того, как он выполнил команду? Согласно этот пример (от самой команды VSCode) это можно сделать, но по некоторым причинам он не работает для нас.
Это потому, что мы вызываем внутренний метод VSCode? У кого-нибудь есть предложение, что мы можем сделать здесь?