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 완료 기능을 수동으로 호출할 수 있습니까?)

관련 정보