Man*_*nta 5 javascript visual-studio-code vscode-extensions
我正在写VS代码扩展到帮助迁移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)
}
}))
}
Run Code Online (Sandbox Code Playgroud)
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', ...) })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
686 次 |
| 最近记录: |