From 74f8f6bcfb6f275099d0c87c8e189a4a29b9bd53 Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Sat, 8 Aug 2026 11:29:33 +0300 Subject: [PATCH] mu: add mu-completion.bash Was missing. --- mu/completion/mu-completion.bash | 296 +++++++++++++++++++++++++++++++ 1 file changed, 296 insertions(+) create mode 100644 mu/completion/mu-completion.bash diff --git a/mu/completion/mu-completion.bash b/mu/completion/mu-completion.bash new file mode 100644 index 00000000..7e8df135 --- /dev/null +++ b/mu/completion/mu-completion.bash @@ -0,0 +1,296 @@ +# bash completion for mu +# +# Install by sourcing this file from your .bashrc, or by placing it, named 'mu', +# in the bash-completion completions directory. + +_mu_cmd_add() { + case "$prev" in + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + *) COMPREPLY=($(compgen -f -- "$cur"));; + esac +} + +_mu_cmd_cfind() { + case "$prev" in + -o|--format) COMPREPLY=($(compgen -W "bbdb csv json mutt-ab mutt-alias org-contact plain wl" -- "$cur")); return;; + --after) return;; + -n|--maxnum) return;; + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all -o --format -p --personal --after -n --maxnum --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + esac +} + +_mu_cmd_extract() { + case "$prev" in + --parts) return;; + --target-dir) COMPREPLY=($(compgen -d -- "$cur")); return;; + --matches) return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all -r --auto-retrieve --decrypt -a --save-attachments --save-all --overwrite --play --parts --target-dir -u --uncooked --matches -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + *) COMPREPLY=($(compgen -f -- "$cur"));; + esac +} + +_mu_cmd_fields() { + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + esac +} + +_mu_cmd_find() { + case "$prev" in + -o|--format) COMPREPLY=($(compgen -W "json json2 links plain sexp xml" -- "$cur")); return;; + -n|--maxnum) return;; + -f|--fields) return;; + -s|--sortfield) COMPREPLY=($(compgen -W "a bcc c cc changed d date f flags from g h i k l labels language list m maildir message-id p path priority q r references s size subject t tags thread to u utc-offset v w x z" -- "$cur")); return;; + -b|--bookmark) return;; + --linksdir) COMPREPLY=($(compgen -d -- "$cur")); return;; + --after) return;; + --summary-len) return;; + --exec) return;; + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all -t --threads -u --skip-dups -r --include-related -a --analyze -o --format -n --maxnum -f --fields -s --sortfield -z --reverse -b --bookmark --clearlinks --linksdir --after --summary-len --exec --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + esac +} + +_mu_cmd_help() { + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + esac +} + +_mu_cmd_index() { + case "$prev" in + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --lazy-check --nocleanup --reindex --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + esac +} + +_mu_cmd_info() { + case "$prev" in + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + esac +} + +_mu_cmd_init() { + case "$prev" in + -m|--maildir) COMPREPLY=($(compgen -d -- "$cur")); return;; + --personal-address|--my-address) return;; + --ignored-address) return;; + --max-message-size) return;; + --batch-size) return;; + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all -m --maildir --personal-address --my-address --ignored-address --max-message-size --batch-size --support-ngrams --reinit --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + esac +} + +_mu_cmd_labels_update() { + case "$prev" in + --labels) return;; + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --labels -n --dry-run --muhome" -- "$cur"));; + esac +} + +_mu_cmd_labels_clear() { + case "$prev" in + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all -n --dry-run --muhome" -- "$cur"));; + esac +} + +_mu_cmd_labels_list() { + case "$prev" in + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome" -- "$cur"));; + esac +} + +_mu_cmd_labels_restore_list() { + case "$prev" in + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome" -- "$cur"));; + esac +} + +_mu_cmd_labels_export() { + case "$prev" in + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome" -- "$cur"));; + *) COMPREPLY=($(compgen -f -- "$cur"));; + esac +} + +_mu_cmd_labels_import() { + case "$prev" in + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all -n --dry-run --muhome" -- "$cur"));; + *) COMPREPLY=($(compgen -f -- "$cur"));; + esac +} + +_mu_cmd_labels() { + local i=$1 sub= + while (( i < COMP_CWORD )); do + case "${COMP_WORDS[i]}" in + =|-*) ((i++));; + *) sub="${COMP_WORDS[i]}"; ((i++)); break;; + esac + done + case "$sub" in + update) _mu_cmd_labels_update "$i"; return;; + clear) _mu_cmd_labels_clear "$i"; return;; + list) _mu_cmd_labels_list "$i"; return;; + restore-list) _mu_cmd_labels_restore_list "$i"; return;; + export) _mu_cmd_labels_export "$i"; return;; + import) _mu_cmd_labels_import "$i"; return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + *) COMPREPLY=($(compgen -W "update clear list restore-list export import" -- "$cur"));; + esac +} + +_mu_cmd_mkdir() { + case "$prev" in + --mode) return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --mode -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + *) COMPREPLY=($(compgen -d -- "$cur"));; + esac +} + +_mu_cmd_move() { + case "$prev" in + --flags) return;; + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --change-name --update-dups -n --dry-run --flags --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + *) COMPREPLY=($(compgen -f -- "$cur"));; + esac +} + +_mu_cmd_remove() { + case "$prev" in + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + *) COMPREPLY=($(compgen -f -- "$cur"));; + esac +} + +_mu_cmd_scm() { + case "$prev" in + --eval) return;; + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --listen --eval --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + *) COMPREPLY=($(compgen -f -- "$cur"));; + esac +} + +_mu_cmd_server() { + case "$prev" in + --eval) return;; + --muhome) COMPREPLY=($(compgen -d -- "$cur")); return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all --commands --eval --allow-temp-file --listen --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + esac +} + +_mu_cmd_verify() { + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all -r --auto-retrieve --decrypt -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + *) COMPREPLY=($(compgen -f -- "$cur"));; + esac +} + +_mu_cmd_view() { + case "$prev" in + -o|--format) COMPREPLY=($(compgen -W "html plain sexp" -- "$cur")); return;; + --summary-len) return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-h --help --help-all -o --format -r --auto-retrieve --decrypt --summary-len --terminate -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));; + *) COMPREPLY=($(compgen -f -- "$cur"));; + esac +} + +_mu_cmd() { + local i=$1 sub= + while (( i < COMP_CWORD )); do + case "${COMP_WORDS[i]}" in + =|-*) ((i++));; + *) sub="${COMP_WORDS[i]}"; ((i++)); break;; + esac + done + case "$sub" in + add) _mu_cmd_add "$i"; return;; + cfind) _mu_cmd_cfind "$i"; return;; + extract) _mu_cmd_extract "$i"; return;; + fields) _mu_cmd_fields "$i"; return;; + find) _mu_cmd_find "$i"; return;; + help) _mu_cmd_help "$i"; return;; + index) _mu_cmd_index "$i"; return;; + info) _mu_cmd_info "$i"; return;; + init) _mu_cmd_init "$i"; return;; + labels) _mu_cmd_labels "$i"; return;; + mkdir) _mu_cmd_mkdir "$i"; return;; + move) _mu_cmd_move "$i"; return;; + remove) _mu_cmd_remove "$i"; return;; + scm) _mu_cmd_scm "$i"; return;; + server) _mu_cmd_server "$i"; return;; + verify) _mu_cmd_verify "$i"; return;; + view) _mu_cmd_view "$i"; return;; + esac + case "$cur" in + -*) COMPREPLY=($(compgen -W "-V --version -h --help --help-all -q --quiet -v --verbose --nocolor" -- "$cur"));; + *) COMPREPLY=($(compgen -W "add cfind extract fields find help index info init labels mkdir move remove scm server verify view" -- "$cur"));; + esac +} + +_mu() { + local cur prev + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + # handle '--opt=value' (bash splits on '=') + [[ "$cur" == "=" ]] && cur="" + [[ "$prev" == "=" && $COMP_CWORD -ge 2 ]] && prev="${COMP_WORDS[COMP_CWORD-2]}" + + _mu_cmd 1 +} + +complete -F _mu mu