gpt4 book ai didi

javascript - vscode.commands.executeCommand 不工作

转载 作者:行者123 更新时间:2023-12-01 15:28:33 26 4
gpt4 key购买 nike

我正在编写一个 VS Code 扩展来帮助迁移 React.createClass 类扩展 React.Component .这里的问题是,我无法获得 vscode.commands.executeCommand('vscode.executeFormatDocumentProvider', ...)去工作。

请注意,下面的代码是纯 JavaScript,而不是 TypeScript。

function activate(context) {
context.subscriptions.push(vscode.commands.registerCommand('migrate-to-react-es6-class', () => {
const editor = vscode.window.activeTextEditor
const document = editor.document

try {
const originalCode = document.getText()
const modifiedCode = 'do something and return new code'

if (originalCode === modifiedCode) {
vscode.window.showInformationMessage('Nothing is to be migrated.')

} else {
editor.edit(edit => {
const editingRange = document.validateRange(new vscode.Range(0, 0, Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER))
edit.replace(editingRange, modifiedCode)
})

if (document.isUntitled === false) {
vscode.commands.executeCommand('vscode.executeFormatDocumentProvider', document.uri, { insertSpaces: true, tabSize: 2 })
}
}

} catch (error) {
vscode.window.showErrorMessage(error.message)
console.error(error)
}
}))
}

最佳答案

3.25 年后,您现在可能已经弄清楚了,但为了记录,我假设您在 editor.edit() 上挂了一个 .then(),然后将 executeCommand 移到 then() 中,对吧?

editor.edit(edit => {
const editingRange = ...
edit.replace(editingRange, modifiedCode)
}).then(editWorked => {if (editWorked && !document.isUntitled) {
vscode.commands.executeCommand('vscode.executeFormatDocumentProvider', ...) })

关于javascript - vscode.commands.executeCommand 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43812900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com