# lyx(1) completion
# Copyleft 2010 Cengiz Gunay <cengique@users.sf.net>
-have lyx &&
+_have lyx &&
_lyx()
{
local cur g last
local dbg_cmds=( "none info init key gui \
parser lyxrc kbmap latex mathed font tclass \
- lyxvc lyxserver roff action lyxlex depend insets \
- files workarea insettext graphics changes \
- external painting debug any" )
+ lyxvc lyxserver action lyxlex depend insets \
+ files workarea clipboard graphics changes \
+ external painting debug any undo scrolling \
+ macros rtl locale selection find" )
+
+ # The below code would get rid of the hardcoding, but could be fragile:
+ # local dbg_cmds=$( lyx -dbg | awk '{print $2}' | tail -n +2 )
+ # If it is ever used, please put a comment in the code for -dbg output
+ # about breaking auto completion if the format is changed.
#echo "cmds: '$dbg_cmds'"
fi
case "$last" in
- +\(--export|-e\))
- _filedir '+(pdf[1234]|PDF[1234]|pdf|PDF|ps|PS|xhtml|XHTML)';;
+ # check for export fmt. Short list presented
+ --export|-e|-E|--export-to)
+ COMPREPLY=( $(compgen -W 'latex pdflatex luatex xetex xhtml' -- $cur) );;
+ --import|-i)
+ # check for import format. Short list presented
+ # (-i | --import) requireas a second input _filedir
+ # must point to *tex | *text | *xhtml depending on choice
+ COMPREPLY=( $(compgen -W 'latex text luatex xetex xhtml' -- $cur) );;
-dbg)
# check for multiple debug commands
if [[ $cur == *,* ]]; then #
else
COMPREPLY=( $( compgen -W '$dbg_cmds' -- $cur ) )
fi;;
+ --force-overwrite|-f)
+ COMPREPLY=( $( compgen -W 'all main none' -- $cur ) );;
+
+ latex|xetex|luatex|text|xhtml)
+ # we need to know if previous token was -i or -E
+ if [[ $COMP_CWORD > 2 ]]; then
+ prev=${COMP_WORDS[$(($COMP_CWORD - 2))]}
+ else
+ prev=''
+ fi
+ if (test $prev=="-i")|(test $prev=="-E"); then
+ case $last in
+ text)
+ _filedir '@(txt)' ;;
+ latex|luatex|xetex)
+ _filedir '@(tex)' ;;
+ xhtml)
+ _filedir '@(xhtml)' ;;
+ esac
+ fi;;
+ pdflatex)
+ # we need to know if previous token was -E
+ if [[ $COMP_CWORD > 2 ]]; then
+ prev=${COMP_WORDS[$(($COMP_CWORD - 2))]}
+ else
+ prev=''
+ fi
+ if test $prev == "-E"; then
+ _filedir '@(pdf)'
+ fi;;
*)
case "$cur" in
-*)
# LyX command line options
COMPREPLY=( $( compgen -W '-help -userdir -sysdir \
-geometry -dbg -x --execute -e --export \
- -i --import -version -batch ' -- $cur ) ) ;;
+ -i --import -version -batch -E --export-to \
+ -f --force-overwrite -n --no-remote \
+ -r --remote ' -- $cur ) ) ;;
*)
# LyX files
- _filedir '@(lyx)'
+ _filedir '@(lyx)'
esac
esac
# turn it off if necessary
test $g -eq 0 && shopt -u extglob
-}
-[ "${have:-}" ] && complete -F _lyx $filenames lyx
+} && complete -F _lyx $filenames lyx
+