のらてつの雑記帳

VSCode拡張機能開発ノート / 6

9 コメント
views
0 フォロー
6
noratetsu 2023/04/18 (火) 22:00:28
通報 ...
  • 7
    noratetsu 2023/04/18 (火) 22:03:03 >> 6

    簡単なラッパーを作ってみる

    function createQuickPick(items: vscode.QuickPickItem[], selectHandler: (quickPick: vscode.QuickPick<vscode.QuickPickItem>) => void, defaultValue: string) {
        const quickPick = vscode.window.createQuickPick();
        quickPick.items = items;
        quickPick.value = defaultValue;
        quickPick.onDidAccept(() => selectHandler(quickPick));
        return quickPick;
    }
    

    QuickPickには色々メソッドやプロパティがあるのでこれでは不十分だが、とりあえず練習として。

    8
    noratetsu 2023/04/18 (火) 22:05:50 >> 7

    このラッパーを使ってファイルピッカー?を作る

    function showFilePicker(root: string, defaultValue: string, query: string) {
        const selectHandler = (quickPick: vscode.QuickPick<vscode.QuickPickItem>) => {
            const selected = quickPick.selectedItems[0].label;
            const path = vscode.Uri.parse(root + encodeURI(selected));
            vscode.workspace.openTextDocument(path)
                .then(doc => vscode.window.showTextDocument(doc));
            quickPick.hide();
        };
        vscode.workspace.findFiles(query)
            .then(urls => { return urls.map(url => decodeURI(url.toString().replace(root, ''))); })
            .then(map => {
                const items = map.map(url => { return { label: url }; });
                const quickPick = createQuickPick(items, selectHandler, defaultValue);
                quickPick.show();
            });
    }