### vim:ft=zsh:foldmethod=marker
## Copyright: 2009, Frank Terbeck <ft@bewatermyfriend.org>

LOOKUP_guard || return 1

if [[ $1 != '-f' ]] ; then
    (( lookup_help == 0 )) && return 1
else
    shift
fi

local line use_pager pager_auto pager
local -i prompt_height
local -a lines

zstyle -t "${lookup_context}" use-pager  && use_pager='yes'  || use_pager='no'
zstyle -t "${lookup_context}" pager-auto && pager_auto='yes' || pager_auto='no'
zstyle -s "${lookup_context}" pager pager || pager=${PAGER:-more}
zstyle -s "${lookup_context}" prompt-height prompt_height || prompt_height=1
(( prompt_height == 0 )) && prompt_height=1

if [[ ${LINES} != [0-9]## ]] || [[ ${LINES} -eq 0 ]] ; then
    # $LINES is either 0, empty or other rubbish that's not a positive integer.
    pager_auto='no'
fi

if [[ ${use_pager} == 'no' ]] ; then
    LOOKUP_help_${backend}
    return 0
fi

if [[ ${use_pager} == 'yes' ]] && [[ ${pager_auto} == 'no' ]] ; then
    LOOKUP_help_${backend} | ${=pager}
    return 0
fi

# use-pager: true, pager-auto: true
lines=()
LOOKUP_help_${backend} | while IFS='' read -r line; do
    lines+=( "${line}" )
done

if (( ${#lines} > LINES - prompt_height )); then
    print -l -- "${lines[@]}" | ${=pager}
else
    print -l -- "${lines[@]}"
fi
return 0
