つららの書き込み--
ほとんどの場合、Icicles はミニバッファーの完成に関するものです。バッファー内 (コードなど) での補完を提供する場合もいくつかありますが、主にミニバッファーの補完に関するものです。
ほとんどの人は、ミニバッファー補完について考えるとき、ファイル名補完、バッファー名補完、およびコマンド名補完を思い浮かべます。しかし、それだけではありません。
Emacs-Lisp プログラマーは、ユーザーに対話的に選択させたい場合はいつでも補完を使用できます。それはかなり一般的です!
補完は実際には、 set を定義するためのパターン マッチングに関するものであり、後で操作することができます。
ほとんどの人は、ミニバッファー補完の唯一の目的は、単一の名前 (ファイル、バッファー、コマンド、変数など) を選択することだと考えています。しかし、補完の力は実際には、ファイル名、バッファー名などの完全なセットをさまざまな方法でフィルタリングし、場合によっては並べ替えてから、ユーザーが結果のセット(必ずしも単一のオブジェクトである必要はありません)に対して何かを実行できるようにすることです。
それがIciclesの目的です: pattern-matching を使用してセットを動的に (インクリメンタルに) 定義し、選択したメンバーまたはそれらのセットのすべてのメンバーに作用させます。
これはIdoや他の補完パッケージの目的ではありませんが、 Helm (Anything)は例外となる可能性があります。
Helm (Anything)とは異なり、オブジェクト タイプとアクションよりもオブジェクト名を開始点として優先しますが、 Iciclesでは通常、コマンドを呼び出して特定のタイプの 1 つまたは複数のオブジェクト(バッファなど)に対して何かを実行し、次にオブジェクトを絞り込みます。これらのオブジェクトのセットで、通常は名前の一致によって行われます。Iciclesでは、同じコマンド内で複数の関連する方法でこれらのオブジェクトを操作できることがよくあります。
Helm (Anything)では、一般に、入力は最初にオブジェクト名によってすべてのタイプのオブジェクトの宇宙全体と照合され、その後、実行する操作を絞り込むために絞り込まれます。
最後に、さまざまな補完アプローチのそれぞれが、エンド ユーザー向けのもの (コマンドなど) とプログラマ向けのもの (補完機能など) の両方を提供することに注意してください。
コード補完を行っている場合は、通常、ポイントで名前を補完したいだけです。コード補完の主な興味深い点は、適切な候補が何であるかを判断することです。そのためには、通常、テキスト (コードなど) のコンテキストが非常に重要です。スマートな選択を提供するには、補完機能でコンテキスト (コード) を分析する必要があります。これには、あらゆるコンテキスト (プロジェクト コードなど) が含まれます。
一方、ミニバッファーの補完は、複数のアクションを持つ複数の選択肢を含む、あらゆる種類の選択とアクションに使用できます。ここでは、すべての部分が興味深いです: どの候補を提供するか、それらで何ができるかなどです。
それが役立つかどうかはわかりませんが、とにかくそれが私の見解です。