日々是好日

プログラミングについてのあれこれ、ムダ知識など

ファイル・フォルダを生成して VSCode エクスプローラにドンッッ

やりたいこと

コード

vscode.WorkspaceEditvscode.workspace.applyEditを使えばできそうだと思いましたが、 ファイルできる気配がない……( ˘ω˘)ウーン

const edit = new vscode.WorkspaceEdit();
const options = {
    overwrite: false,
    ignoreIfExists: false
};

edit.createFile(vscode.Uri.parse(root + "\\images"), options);
edit.createFile(vscode.Uri.parse(root + "\\content.md"), options);
edit.createFile(vscode.Uri.parse(root + "\\config.json"), options);
vscode.workspace.applyEdit(edit).then(value => {
    console.log(value);
    console.log(vscode.workspace.workspaceFolders);
});
//出力
//false
//undefined

そこでfs.mkdir等を使って生成し、vscode.executeCommandでフォルダを開くことで解決しました。

fs.mkdir(root, (err) => {
    if (err !== null){
        console.log(err);
        throw err;
    } else {
        fs.mkdir(root + '\\images', (err) => {
            if (err !== null){
                console.log(err);
                throw err;
            }
        });
        ...
    }

    return root;
}).then(root => {
    vscode.commands.executeCommand('vscode.openFolder', vscode.Uri.parse(root));
});

fs.mkdirは非同期処理でThenableを返します。

余談

VSCode API で提供されているんだと思ったら、意外にも無かったのでだいぶ時間食ってしまった。

あとvscode.WorkspaceEditってどう使うものなんじゃ……

参考

github.com