Я пытаюсь написать простое расширение для кода VS, которое переименовывает выделение в заданную строку. Приложение было загружено с генератором расширений: https://code.visualstudio.com/docs/extensions/example-hello-world#_generate-a-new-extension
Для этого я использую этот код:
const editor = vscode.window.activeTextEditor;
if (!editor) throw Error;
const position = editor.selection.active
const uri = editor.document.uri
vscode.commands.executeCommand("vscode.executeDocumentRenameProvider", uri, position, "donkey")
.then(edit => {
if (!edit) throw Error;
return vscode.workspace.applyEdit(edit);
});
Команда привязана к привязке клавиш. Я запускаю отладчик с помощью F5 (запускаю экземпляр кода vs для отладки, как в учебнике: https://code.visualstudio.com/docs/extensions/example-hello-world#_debugging-your-extension). Затем я выбираю кучу кода в файле, который я открыл в этом экземпляре отладки, и нажимаю привязку клавиш.
Однако в консоли отладки я получаю «отклоненное обещание, не обработанное в течение 1 секунды». Ошибка не возникает, и поскольку executeCommand является Thenable, а не настоящим обещанием, я не могу вызвать для него catch ().
Я попытался заключить вызов в блок try / catch, но безуспешно. Когда я пытаюсь сделать что-то другое, например, показывать сообщение с помощью vscode.window.showInformationMessage или предлагать пользователю ввести данные, он работает, и я не вижу ошибки.
Я также попытался сделать то же самое с версией расширения на Typescript, но у меня такое же поведение.
Я не вижу, что делаю неправильно, что-то мне не хватает?
catch
, верно? - person CertainPerformance   schedule 01.05.2018catch()
? - person kshetline   schedule 01.05.2018