我希望能够创建/编写一个命令来折叠Visual Studio代码中所有打开的编辑器中的所有代码。
我相信我非常亲近。
我正在使用Marcel J. Kloubert编写的“脚本命令”扩展名
当我将以下脚本与7个左右的打开的编辑器组合使用时。我实现了以下目标:
我正在使用的脚本:
// Fold all code in all open editors.
function execute(args) {
// Obtain access to vscode
var vscode = args.require('vscode');
// Set number of open editors... (future: query vscode for number of open editors)
var numOpenEditor = 20;
// Loop for numOpenEditor times
for (var i = 0; i <= numOpenEditor; i++){
// Fold the current open editor
vscode.commands.executeCommand('editor.foldAll');
// Move to the next editor to the right
vscode.commands.executeCommand('workbench.action.nextEditor');
// Loop message
var statusString = 'Loop ->' + i
// print message
vscode.window.showErrorMessage(statusString);
}
}
// Script Commands must have a public execute() function to work.
exports.execute = execute;
当我将上述脚本与7个左右的开放式编辑器结合使用时,我会发现一个有趣的发现。具有两个或更多组。关于切换到新组的操作将允许命令{{1} } 去工作。请注意,如果组具有多个编辑器,则折叠其代码的唯一编辑器是组中的打开编辑器。因此,所有其他编辑器都不会折叠。
我还认为,也许...该脚本需要放慢速度,因此我添加了一个在每次迭代时暂停的函数。事实证明这也没有用。
任何帮助都会很棒!
答案 0 :(得分:1)
您只需要使此函数异步并等待executeCommand调用完成再继续:
// Fold all code in all open editors.
async function execute(args) {
// Obtain access to vscode
var vscode = args.require('vscode');
// Set number of open editors... (future: query vscode for number of open editors)
var numOpenEditor = 5;
// Loop for numOpenEditor times
for (var i = 0; i <= numOpenEditor; i++) {
// Fold the current open editor
await vscode.commands.executeCommand('editor.foldAll');
// Move to the next editor to the right
await vscode.commands.executeCommand('workbench.action.nextEditor');
// Loop message
var statusString = 'Loop ->' + i
// print message
vscode.window.showErrorMessage(statusString);
}
}
// Script Commands must have a public execute() function to work.
exports.execute = execute;