Visual Studio Code - 拡張機能作成 - 作成


クラウディア 


1. 概要
2. 順番
3. 参考サイト

1. 概要

 前ページまでを準備として。  作成したいのは、検索機能なのです。  もし、検索機能ができたならば、置換まで移行したい。  そもそも「Visual Studio Code」に「検索/置換」機能は、元々あります。  なのに、なぜ作りたいか・・・。  「Visual Studio Code」の検索機能の履歴の扱いが「くそ」だからです。  多くのエディタでは、検索の履歴は、以前に検索したものをもう一度検索すると、履歴の最上位にもってきますが、「Visual Studio Code」は、履歴の順番が変わらないので、以前に検索したものを探すには、新規に入力するか、履歴に表示されるまで、ひたすら上矢印で探さなければならない。  これが「や」なのです。

2. 順番

 参考サイトのいうがままに、ソースを変更します。  まずは、履歴の順番を確認します。

out/extension.js
 を編集します。  まんま、下記を記述します。

import * as vscode from 'vscode';

// 履歴を保持する配列(起動中はメモリに保持されます)
let searchHistory: string[] = ['あ', 'い', 'う'];

export function activate(context: vscode.ExtensionContext) {

    let disposable = vscode.commands.registerCommand('exercise.helloWorld', async () => {

        // QuickPick(選択肢付き入力欄)を表示
        const quickPick = vscode.window.createQuickPick();

        // 履歴をセット(最新が上にくるように表示)
        quickPick.items = searchHistory.map(label => ({ label }));
        quickPick.placeholder = '検索ワードを入力、または履歴から選択してください';

        // 項目が確定(Enter)された時の処理
        quickPick.onDidAccept(() => {
            const selected = quickPick.selectedItems[0]?.label || quickPick.value;

            if (selected) {
                // 【核心ロジック】既存の履歴から削除して、先頭に追加(=最新化)
                searchHistory = [selected, ...searchHistory.filter(item => item !== selected)];

                // 結果を表示(後でここに本物の検索処理を入れます)
                vscode.window.showInformationMessage('「${selected}」で検索します。現在の履歴順: ${searchHistory.join(' > ')}');
            }
            quickPick.hide();
        });

        quickPick.show();
    });

    context.subscriptions.push(disposable);
}
 問題やら、なにやら出てますが、とりあえず、無視。  プロジェクトのフォルダで、コマンド開いて。

npm run compile

> exercise@0.0.1 compile
> tsc -p ./
 終わったら、F5 もしくは、「実行」→「デバッグの開始」  「Visual Studio Code」が開きますので、Ctrl+Shift+P で「Hello World」  検索を模擬したものが表示されます。  「あ」「い」「う」の順になっています。  「う」を選択して Enter

 履歴順が変わったというメッセージが表示されます。


 再度、コマンドで「Hello World」すると、履歴が変わったことが確認できます。


3. 参考サイト

 本ページは、「Gemini」伍長を参考にさせていただきました。

audiobook.jp
audiobook.jp
AbemaTV 無料体験
ハイスピードプラン