zsh完成リストの前後に固定されたテキスト行をラップする方法は?

zsh完成リストの前後に固定されたテキスト行をラップする方法は?

特に、(:completion:*コンテキストの)すべての完成リストの前に固定文字列(今は「ABC」と仮定)が続くようにソートしたいと思います。

私はいくつかの方法を試しましたが、前の行は取得できますが、次の行は取得できません。最良の方法は

  1. _main_completeで配列comppostfuncを使用してください。 _message -r を使用して行を印刷する機能が含まれています。しかし、comppostfunは_main_completeの終わりで実行されますが、明らかにリストが生成される前に文字列の終わりではなく開始を提供します。

  2. 新しい完成者(1を返す_completeクローンと_messageのみを実行する完成者)を作成します。アイデアは_messageの完成者を最後に置くことです。ある程度は効果がありますが、再び文字列が表示されますスタート完成したリスト。

  3. ラベル順序スタイルを使用してメッセージを最後に配置するには、1 または 2 を調整します。これはうまくいきません。

  4. 通常の操作(ある場合は_normal)を実行し、_messageで終わる_completeコンストラクタのバリアントを作成します。繰り返しますが、どちらも少しですが、常にメッセージを最初に転送します。タグの順序を使用しても、この内容は変更されません。

何か抜けたような気がします。たとえば、複数の完成器の出力を一緒に結合する完成器のスタイルを指定する方法はありますか?完成器で複数のタスクを実行すると、完成リストが順番に生成されないのはなぜですか? _message 出力を最後に配置するタグ順序スタイルをどのように取得できますか?

答え1

このtag-orderスタイルは出力順序を変更しません。使用する必要があるのはスタイルですgroup-order。また、開始メッセージと終了メッセージは互いに異なる必要がありますgroup-name。バラよりhttp://zsh.sourceforge.net/Doc/Release/Completion-System.html#Standard-Stylesより多くの情報を知りたいです。

関連情報