バックグラウンド
最近、私はコンピューターで作業しているときに入力するすべてのものが「DRY」と互換性があるべきだという狂信者になりました。いずれかのコンテキストで複数回入力する必要があるものがある場合は、ユーザーに対応したオートコンプリートオプションを使用して、作業の一部を実行してもらいたいと思います。常に例外はありません。
Windowsで作業する必要があるので、この非常識な目標を実現するためのGUIソリューションを検討しました。
(ほぼ)最適なソリューション
少し時間があれば、Firefox 3.0を開いて、アドレスバーに数回のキーストロークを入力します。入力した内容のスペースで区切られたサブ文字列に基づいて、一種のインクリメンタル オートコンプリートを実行することに気付くでしょう。同様のことを行うFirefoxの別の場所はabout:config
URLです。
Firefoxだけでこれを望まないので、これは最適ではありません。どこでも使いたいです。
質問
汎用の「どこでも実行」ツールとして使用できる、めちゃくちゃ良いインクリメンタルオートコンプリートしか実行しないウィジェットやアプリを知っている人はいますか?ユーザーが次のことを行えるようにするもの:1)1つ以上の「完了候補ファイル」を維持する。2)Firefox3.0スタイルの補完のソースとしてこれらのファイルの1つを選択します。3)結果を返し(ユーザーがキャンセルした場合は空白)、これら3つのことだけを行いますか?
詳細
動作方法は次のとおりです。
- ステップ1:ユーザーは自分のハードドライブのどこかに1つ以上のcsvファイル(または他の簡単に編集できる形式)を保存します
- ステップ2:ユーザーがWindows Script Hostスクリプトを作成するか、バッチファイル(またはその他)がFilterAsYouTypeGUIをインスタンス化します
- ステップ3:ユーザーがスクリプトファイルを実行し、スクリプトファイルがGUIをインスタンス化して、すべての潜在的な補完のソースとして使用するCSVファイルを指示します
- ステップ4:ユーザーは、補完の1つを選択するか、リストにない独自のテキストを提供するか、何も提供せずにキャンセルします。
- ステップ5:ユーザーが完了すると、スクリプトは結果を変数に保存し、それを使って何かを行います
スクリプトの擬似コードは次のとおりです。
include "GenericTypeaheadWidget";
var gengui = new GenericTypaheadWidget('c:\docs\favorite_foods.csv');
var fave_food = gengui.get_user_input();
if(fave_food != ''){
alert('you chose '+fave_food+'!');
}
理論的根拠
目標は、リストが数千のアイテムであっても、任意のアイテムのリストから常に自動完了を実行できる方法を用意することであり、IDEまたはスタンドアロンアプリケーションに組み込まれていることに依存する必要はありません。特定の種類の入力のみを受け入れるか、このタスクの単純さに比べてAPIが非常に複雑です。
CSV(またはテキストまたはsqliteデータベース)は、「候補リスト」または「履歴ログ」を自己生成し、それらのログを可能な補完のソースとして使用する方法を提供します。
免責事項
私はいくつかのGUI「ランチャー」プログラム、PowerShellやスクリプトシェルなどのコマンドラインエンジン、さまざまな満足度の通常の昔ながらのコマンドライン履歴を試しました。これらの問題は、ディレクトリの検索や組み込みコマンドなど、余分な処理をすべて実行することです。たまたま指しているCSVファイルにあるものだけが欲しいのです。
上で説明したこと以外は何もしない簡単なツールがあるかどうか疑問に思います。
更新:この質問は、ここに提示されている基本的なアイデアを捉えたグラフィカルコマンドシェルと非常に密接に関連しているようです。