diff --git a/CHANGES b/CHANGES index 882c258e..c7552229 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,7 @@ bash-completion (2.x) * Install full path /etc/rc.d/init.d/* completions. * Try both full path and basename completions for sudo etc (Alioth: #313065). * Don't install completions for init.d backup files. + * Support tildes when recursively sourcing muttrc files (Debian: #615134). [ Guillaume Rousse ] * added puppet completion, using work from Mathieu Parent (sathieudebian.org) diff --git a/completions/mutt b/completions/mutt index 46863dbd..92e90adb 100644 --- a/completions/mutt +++ b/completions/mutt @@ -61,6 +61,7 @@ _muttconffiles() while [[ "$1" ]]; do newconffiles=( $(sed -n 's|^source[[:space:]]\{1,\}\([^[:space:]]\{1,\}\).*$|\1|p' $(eval echo $1) ) ) for file in "${newconffiles[@]}"; do + __expand_tilde_by_ref file [[ ! -f "$file" || "${sofar/ ${file} / }" != "$sofar" ]] && continue sofar+=" $file" diff --git a/test/fixtures/mutt/bar/muttrc_b b/test/fixtures/mutt/bar/muttrc_b new file mode 100644 index 00000000..f4a0493e --- /dev/null +++ b/test/fixtures/mutt/bar/muttrc_b @@ -0,0 +1 @@ +source ~/foo/muttrc_f diff --git a/test/fixtures/mutt/foo/muttrc_f b/test/fixtures/mutt/foo/muttrc_f new file mode 100644 index 00000000..e69de29b diff --git a/test/fixtures/mutt/muttrc b/test/fixtures/mutt/muttrc index 58ad7f55..d26c8bc6 100644 --- a/test/fixtures/mutt/muttrc +++ b/test/fixtures/mutt/muttrc @@ -1,3 +1,4 @@ set folder=. alias a1 a1@example.com alias a2 a2@example.com +source ~/bar/muttrc_b diff --git a/test/lib/completions/mutt.exp b/test/lib/completions/mutt.exp index 8cb8b0c6..8ee40691 100644 --- a/test/lib/completions/mutt.exp +++ b/test/lib/completions/mutt.exp @@ -1,10 +1,15 @@ proc setup {} { save_env + assert_bash_exec {OLDHOME=$HOME ; HOME=$SRCDIRABS/fixtures/mutt} } proc teardown {} { - assert_env_unmodified {/OLDPWD=/d} + assert_bash_exec {HOME=$OLDHOME} + assert_env_unmodified { + /OLDPWD=/d + /OLDHOME=/d + } } @@ -30,4 +35,9 @@ assert_complete_dir $expected "mutt -F muttrc -A " $::srcdir/fixtures/mutt sync_after_int +set expected "$::srcdirabs/fixtures/mutt/muttrc $::srcdirabs/fixtures/mutt/bar/muttrc_b $::srcdirabs/fixtures/mutt/foo/muttrc_f" +assert_bash_list $expected { _muttconffiles "$HOME/muttrc" "$HOME/muttrc" } "find muttrcs recursively" +sync_after_int + + teardown