mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-01-09 20:33:34 -08:00
65 lines
2.0 KiB
Bash
65 lines
2.0 KiB
Bash
# povray completion -*- shell-script -*-
|
|
# by "David Necas (Yeti)" <yeti@physics.muni.cz>
|
|
|
|
_povray()
|
|
{
|
|
local cur prev words cword
|
|
_init_completion || return
|
|
|
|
local povcur=$cur pfx oext defoext
|
|
defoext=png # default output extension, if cannot be determined FIXME
|
|
|
|
_expand || return
|
|
|
|
case $povcur in
|
|
[-+]I*)
|
|
cur="${povcur#[-+]I}" # to confuse _filedir
|
|
pfx="${povcur%"$cur"}"
|
|
_filedir pov
|
|
COMPREPLY=(${COMPREPLY[@]/#/$pfx})
|
|
return
|
|
;;
|
|
[-+]O*)
|
|
# guess what output file type user may want
|
|
case $(
|
|
IFS=$'\n'
|
|
command grep '^[-+]F' <<<"${words[*]}"
|
|
) in
|
|
[-+]FN) oext=png ;;
|
|
[-+]FP) oext=ppm ;;
|
|
[-+]F[CT]) oext=tga ;;
|
|
*) oext=$defoext ;;
|
|
esac
|
|
# complete filename corresponding to previously specified +I
|
|
COMPREPLY=($(
|
|
IFS=$'\n'
|
|
command grep '^[-+]I' <<<"${words[*]}"
|
|
))
|
|
COMPREPLY=(${COMPREPLY[@]#[-+]I})
|
|
COMPREPLY=(${COMPREPLY[@]/%.pov/.$oext})
|
|
cur="${povcur#[-+]O}" # to confuse _filedir
|
|
pfx="${povcur%"$cur"}"
|
|
_filedir $oext
|
|
COMPREPLY=(${COMPREPLY[@]/#/$pfx})
|
|
return
|
|
;;
|
|
*.ini\[ | *.ini\[*[^]]) # sections in .ini files
|
|
cur="${povcur#*\[}"
|
|
pfx="${povcur%\["$cur"}" # prefix == filename
|
|
[[ -r $pfx ]] || return
|
|
COMPREPLY=($(command sed -e 's/^[[:space:]]*\[\('"$cur"'[^]]*\]\).*$/\1/' \
|
|
-e 't' -e 'd' -- "$pfx"))
|
|
# to prevent [bar] expand to nothing. can be done more easily?
|
|
COMPREPLY=("${COMPREPLY[@]/#/${pfx}[}")
|
|
return
|
|
;;
|
|
*)
|
|
_filedir '@(ini|pov)'
|
|
return
|
|
;;
|
|
esac
|
|
} &&
|
|
complete -F _povray povray xpovray spovray
|
|
|
|
# ex: filetype=sh
|