### vim:ft=zsh:foldmethod=marker ## run query handlers ## Copyright: 2009, Frank Terbeck LOOKUP_guard || return 1 local old_lookup_ei qh qh_return ret local -a qhs zstyle -t "${lookup_context}" debug && printf 'LOOKUP_query_handler: current context: "%s"\n' "${lookup_context}" (( lookup_use_qh == 0 )) && return 0 zstyle -a "${lookup_context}" query-handlers qhs || return 0 qh_return=0 old_lookup_ei=${lookup_ei} lookup_ei='-queryhandler-' for qh in ${qhs} ; do if (( ${+functions[LOOKUP_qh_$qh]} == 0 )) ; then printf 'query-handler %s requires this function: %s\n' "${qa}" "LOOKUP_qh_${qh}" printf 'Hit any key to continue...\n' read -k 1 else if [[ ${lookup_qh_arg-wasunset} == 'wasunset' ]] ; then LOOKUP_qh_${qh} ret=$? else LOOKUP_qh_${qh} ${lookup_qh_arg} ret=$? fi case ${ret} in (1) # stop processing break ;; (2) # clear QUERY and stop processing QUERY='' break ;; (3) # clear QUERY and stop processing and return 1 # which means, the backends are supposed to return 1, too. # thus, no browser will be called. QUERY='' qh_return=1 break ;; (0|*) # just continue ;; esac fi done lookup_ei=${old_lookup_ei} return ${qh_return}