diff options
Diffstat (limited to 'contrib/povray')
-rw-r--r-- | contrib/povray | 107 |
1 files changed, 57 insertions, 50 deletions
diff --git a/contrib/povray b/contrib/povray index c69b0db4..4a4df011 100644 --- a/contrib/povray +++ b/contrib/povray @@ -1,59 +1,66 @@ -# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- -# ex: ts=8 sw=8 noet filetype=sh -# # povray completion by "David Necas (Yeti)" <yeti@physics.muni.cz> +have povray || have xpovray || have spovray && _povray() { - local cur prev povcur pfx oext defoext - defoext=png # default output extension, if cannot be determined FIXME + local cur prev povcur pfx oext defoext + defoext=png # default output extension, if cannot be determined FIXME - COMPREPLY=() - povcur=`_get_cword` - prev=${COMP_WORDS[COMP_CWORD-1]} + COMPREPLY=() + povcur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} - _expand || return 0 + _expand || return 0 - case $povcur in - [-+]I*) - cur="${povcur#[-+]I}" # to confuse _filedir - pfx="${povcur%"$cur"}" - _filedir pov - COMPREPLY=( ${COMPREPLY[@]/#/$pfx} ) - return 0 - ;; - [-+]O*) - # guess what output file type user may want - case $( ( IFS=$'\n'; echo "${COMP_WORDS[*]}" | grep '^[-+]F' ) ) in - [-+]FN) oext=png ;; - [-+]FP) oext=ppm ;; - [-+]F[CT]) oext=tga ;; - *) oext=$defoext ;; + case $povcur in + [-+]I*) + cur="${povcur#[-+]I}" # to confuse _filedir + pfx="${povcur%"$cur"}" + _filedir pov + COMPREPLY=( ${COMPREPLY[@]/#/$pfx} ) + return 0 + ;; + [-+]O*) + # guess what output file type user may want + case $( ( IFS=$'\n'; echo "${COMP_WORDS[*]}" | grep '^[-+]F' ) ) in + [-+]FN) oext=png ;; + [-+]FP) oext=ppm ;; + [-+]F[CT]) oext=tga ;; + *) oext=$defoext ;; + esac + # complete filename corresponding to previously specified +I + COMPREPLY=( $( ( IFS=$'\n'; echo "${COMP_WORDS[*]}" | grep '^[-+]I' ) ) ) + COMPREPLY=( ${COMPREPLY[@]#[-+]I} ) + COMPREPLY=( ${COMPREPLY[@]/%.pov/.$oext} ) + cur="${povcur#[-+]O}" # to confuse _filedir + pfx="${povcur%"$cur"}" + _filedir $oext + COMPREPLY=( ${COMPREPLY[@]/#/$pfx} ) + return 0 + ;; + *.ini\[|*.ini\[*[^]]) # sections in .ini files + cur="${povcur#*\[}" + pfx="${povcur%\["$cur"}" # prefix == filename + [ -r "$pfx" ] || return 0 + COMPREPLY=( $(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 0 + ;; + *) + cur="$povcur" + _filedir '?(ini|pov)' + return 0 + ;; esac - # complete filename corresponding to previously specified +I - COMPREPLY=( $( ( IFS=$'\n'; echo "${COMP_WORDS[*]}" | grep '^[-+]I' ) ) ) - COMPREPLY=( ${COMPREPLY[@]#[-+]I} ) - COMPREPLY=( ${COMPREPLY[@]/%.pov/.$oext} ) - cur="${povcur#[-+]O}" # to confuse _filedir - pfx="${povcur%"$cur"}" - _filedir $oext - COMPREPLY=( ${COMPREPLY[@]/#/$pfx} ) - return 0 - ;; - *.ini\[|*.ini\[*[^]]) # sections in .ini files - cur="${povcur#*\[}" - pfx="${povcur%\["$cur"}" # prefix == filename - [ -r "$pfx" ] || return 0 - COMPREPLY=( $(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 0 - ;; - *) - cur="$povcur" - _filedir '?(ini|pov)' - return 0 - ;; - esac -} +} && complete -F _povray $filenames povray xpovray spovray + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh |