- 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」伍長を参考にさせていただきました。
|
|