+#! /bin/bash
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# bash_completion for latexmk
+#
+#
+# Author: Christoph Junghans
+# ottxor@gentoo.org
+#
+# Revision history:
+# 0.1 26-05-10 --- initial version
+# 0.2 15-02-11 --- clean up
+#
+# HOWTO:
+# source this file to enable it
+
+_latexmk()
+{
+ local cur output aopts opts prev
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ output=$( $1 -help 2> /dev/null)
+ #options with args ,pattern: ^ (-XXX) <YYYY>.*$
+ aopts=" $( echo " $output" | sed -n 's/^[[:space:]]\+\(-[^[:space:]]\+\)[[:space:]]\+<[^>]\+>.*$/\1/p' | sort -u | tr '\n' ' ')"
+ #if previous option in in $aopts
+ if [[ -n "$prev" ]] && [[ -z "${aopts//* $prev *}" ]]; then
+ #argument of $prev ,pattern: ^ -XXX (<YYYY>).*$
+ opts=$(echo "$output" | sed -n "s/^[[:space:]]\+$prev[[:space:]]\+\(<[^>]\+>\).*\$/\1/p")
+ COMPREPLY=( $( compgen -W '$opts' -- $cur ) )
+ elif [[ "$cur" == -* ]]; then
+ #all options, pattern: ^ (-XXX).*$
+ opts=$( echo "$output" | sed -n 's/^[[:space:]]\+\(-[^[:space:]]\+\).*$/\1/p'| sort -u )
+ COMPREPLY=( $( compgen -W '$opts' -- $cur ) )
+ else
+ #filenames *.tex and dirs, rest is done by '-o filenames' below
+ COMPREPLY=( $( eval compgen -f -X "!*.tex" -- ${cur} ) $( compgen -d -- $cur ) )
+ fi
+}
+
+complete -F _latexmk -o filenames latexmk