_exaile() {
    local cur="${COMP_WORDS[COMP_CWORD]}"
    local prev="${COMP_WORDS[COMP_CWORD-1]}"
    case "${prev}" in
        --add|--export-playlist)
            COMPREPLY=( $(compgen -f ${cur}) )
            return 0
            ;;
        --datadir|--all-data-dir)
            COMPREPLY=( $(compgen -d ${cur}) )
            return 0
            ;;
        --format-query|--format-query-tags|--set-rating|-i|--increase-vol|-l|--decrease-vol|--modulefilter|--levelfilter|--eventfilter)
            COMPREPLY=()
            return 0
            ;;
    esac
    case "${cur}" in
        -*)
            COMPREPLY=( $(compgen -W "-n --next -p --prev -s --stop -a --play -u --pause -t --play-pause --stop-after-current --add --export-playlist -q --query --format-query --format-query-tags --gui-query --get-title --get-album --get-artist --get-length --set-rating --get-rating --current-position --current-progress -i --increase-vol -l --decrease-vol -m --toggle-mute --get-volume --new -h --help --version --start-minimized --toggle-visible --safemode --force-import --no-import --start-anyway --use-lang --datadir --all-data-dir --modulefilter --levelfilter --debug --eventdebug --eventdebug-full --threaddebug --eventfilter --quiet --startgui --no-dbus --no-hal" -- ${cur}) )
            return 0
            ;;
        *)
            COMPREPLY=( $(compgen -f ${cur}) )
            return 0
            ;;
    esac
}
complete -F _exaile exaile
