Add zsh-lookup sub-system
[grml-etc-core.git] / usr_share_grml / zsh / functions / Lookup / LOOKUP_browser
1 ### vim:ft=zsh:foldmethod=marker
2 ##
3 ## Spawn an appropriate browser.
4 ## Copyright: 2009, Frank Terbeck <ft@bewatermyfriend.org>
5 ##
6
7 LOOKUP_guard || return 1
8 local arg debug format lookup_browser uri i lookup_context
9 local -a lookup_browser_args
10
11 lookup_ei='-browser-'
12 uri="$1"
13
14 lookup_context="$(LOOKUP_context)"
15
16 LOOKUP_hook -- "$@"
17 zstyle -t "${lookup_context}" debug &&
18     printf 'LOOKUP_browser: current context: "%s"\n' "${lookup_context}"
19
20 if (( lookup_printout > 0 )) || zstyle -t "${lookup_context}" debug ; then
21     debug='yes'
22 fi
23
24 if (( lookup_remote > 0 )) ; then
25     zstyle -s "${lookup_context}" gui-browser lookup_browser
26     zstyle -a "${lookup_context}" gui-formats lookup_browser_args
27 else
28     zstyle -s "${lookup_context}" txt-browser lookup_browser
29     zstyle -a "${lookup_context}" txt-formats lookup_browser_args
30 fi
31
32 [[ -z ${lookup_browser} ]] && lookup_browser=${BROWSER:-w3m}
33 (( ${#lookup_browser_args} == 0 )) && lookup_browser_args=( "%s" )
34
35 for i in {1..${#lookup_browser_args}} ; do
36     zformat -f format ${lookup_browser_args[$i]} s:${uri}
37     lookup_browser_args[$i]="${format}"
38 done
39
40 if [[ -n ${debug} ]] ; then
41     print -- ${lookup_browser} ${(qq)lookup_browser_args}
42     return 0
43 else
44     ${lookup_browser} ${lookup_browser_args}
45     return $?
46 fi