X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=usr_share_grml%2Fzsh%2Ffunctions%2FLookup%2FLOOKUP_query_handler;fp=usr_share_grml%2Fzsh%2Ffunctions%2FLookup%2FLOOKUP_query_handler;h=07afc5545debf37e052c2b9248b608f9d882cb11;hb=1ee27bd79f2b8eae519f6890bc43f5feca13a261;hp=0000000000000000000000000000000000000000;hpb=9ae0b0c0858f15dc7ec46fbd86660dafc3946695;p=grml-etc-core.git diff --git a/usr_share_grml/zsh/functions/Lookup/LOOKUP_query_handler b/usr_share_grml/zsh/functions/Lookup/LOOKUP_query_handler new file mode 100644 index 0000000..07afc55 --- /dev/null +++ b/usr_share_grml/zsh/functions/Lookup/LOOKUP_query_handler @@ -0,0 +1,52 @@ +### 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}