aboutsummaryrefslogtreecommitdiff
path: root/bash/bash_completion.d/_abook_addresses.bash
blob: 6f7e226f6eb82708c2ed57c5e126ee0e6ed56a4c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Load _completion_ignore_case helper function
if ! declare -F _completion_ignore_case >/dev/null ; then
    source "$HOME"/.bash_completion.d/_completion_ignore_case.bash
fi

# Email addresses from abook(1)
_abook_addresses() {

    # Needs abook(1)
    hash abook 2>/dev/null || return

    # Iterate through completions produced by subshell
    local ci comp
    while read -r comp ; do
        COMPREPLY[ci++]=$comp
    done < <(

        # Make matches behave appropriately
        if _completion_ignore_case ; then
            shopt -s nocasematch 2>/dev/null
        fi

        # Generate list of email addresses from abook(1)
        while IFS=$'\t' read -r address _ ; do
            case $address in
                ("$2"*) printf '%s\n' "$address" ;;
            esac
        done < <(abook --mutt-query \@)
    )
}