lyx_mirror/lib/scripts/bash_completion
2022-04-01 22:56:57 +02:00

104 lines
2.7 KiB
Bash

# lyx(1) completion
# Copyleft 2010 Cengiz Gunay <cengique@users.sf.net>
_have lyx &&
_lyx()
{
local cur g last
# turn on extglob
shopt -q extglob && g=1
test $g -eq 0 && shopt -s extglob
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
local dbg_cmds=( "none info init key gui \
parser lyxrc kbmap latex mathed font tclass \
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'"
if [[ $COMP_CWORD > 1 ]]; then
last=${COMP_WORDS[$(($COMP_CWORD - 1))]}
else
last=''
fi
case "$last" in
# 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 #
COMPREPLY=( $( compgen -W '$dbg_cmds' \
-P ${cur%,*}, -- ${cur##*,} ) )
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 -E --export-to \
-f --force-overwrite -n --no-remote \
-r --remote ' -- $cur ) ) ;;
*)
# LyX files
_filedir '@(lyx)'
esac
esac
# turn it off if necessary
test $g -eq 0 && shopt -u extglob
} && complete -F _lyx $filenames lyx