zsh完了関数を呼び出して結果を取得します。

zsh完了関数を呼び出して結果を取得します。

私のスクリプトでzshの完成ウィジェットを使用しようとしています。ある時点で、zshは各アクティビティ完了結果にアクセスできるようにしたいです。または、むしろ完了チェーンの最終結果を取得したいと思います。

function foo() {
  do_unrelated_stuff()

  # call zsh completion
  comp_results=_main_complete_() # won't work like this, can only be called from within a completion function

  if [[ "$#comp_results" -gt "0" ]]; then
    # do something
    echo "results:"
  else
    # do something else
    echo "no results"
  fi
}

_main_complete私は他の関数がアクセスできるように(または適切な関数)呼び出して、結果をエクスポートした変数に保存するカスタム完了関数を作成することを検討しました。ただし、これは何らかの方法でカスタム補完関数を呼び出すことを意味します。方法はわかりません。実際の完了を行わずに「中」の完了結果を得ることはできますか?

ベストアンサー1

zshがなぜこの機能を提供しないのかわかりません...https://github.com/Valodim/zsh-capture-completion

$ capture.zsh 'man gr'
grep
<snip>
groff
<snip>

これにより、完了した完成リストにのみアクセスできます。つまり。内部zshオブジェクトではない(説明など)

(乳剤:zsh完了機能を手動で呼び出すことはできますか?)

おすすめ記事