#!/bin/bash _mutt_aliases() { local cur local config_files config_files_tmp local prev declare -a config_files declare -a config_files_tmp cur=${COMP_WORDS[COMP_CWORD]} if [ $COMP_CWORD -gt 1 ]; then prev=${COMP_WORDS[COMP_CWORD-1]}; case "$prev" in -a | -F) COMPREPLY=( $( compgen -f $cur )) return 0 ;; -f) echo "FIXME" return -1 // COMPREPLY=( $( compgen -f $HOME/Mail/$cur )) // return 0 ;; esac fi config_files_tmp=() if [ -z $MUTT_COMPLETION_CONFIG ]; then config_files_tmp[0]=$HOME/.muttrc else config_files_tmp[0]=$MUTT_COMPLETION_CONFIG fi # echo "config_files: $config_files" # echo "config_files_tmp: " "$config_files_tmp" while [ ${#config_files_tmp[@]} -gt 0 -a ${#config_files[@]} -lt 10 ]; do # echo "config_files: ${config_files[@]}" # echo "config_files_tmp: " "${config_files_tmp[@]}" # echo "config_files_tmp[0]: " "${config_files_tmp[0]}" if [ -r ${config_files_tmp[0]} ]; then config_files=( ${config_files[@]} ${config_files_tmp[@]} ) config_files_tmp=(${config_files_tmp[@]} $( grep -E '^(source|alias_file)' \ ${config_files_tmp[0]} | cut -d\ -f2 ) ) unset config_files_tmp[0] config_files_tmp=(${config_files_tmp[@]}) else echo "Unable to find _""$config_files_tmp""_" config_files_tmp=() fi done # echo "Done - config_files: ${config_files[@]}" COMPREPLY=() cur="^$cur" COMPREPLY=( $( grep alias ${config_files[@]} | cut -d\ -f2 | grep -E $cur )) return 0 } complete -u -F _mutt_aliases mutt