From 2dd3cec8783700f061a0c9b69e329918a4f5cccd Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 23 Mar 2023 21:45:45 +0000 Subject: lei: improve bash completion involving colons This fixes completions of labels (`+L:' for `lei import' and `L:' for `lei q') so they can appear anywhere in the command-line. I mainly wanted this for `lei import $URL +L:label', but this also fixes `lei forget-external' completions for URLs (which involve colons). --- contrib/completion/lei-completion.bash | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'contrib') diff --git a/contrib/completion/lei-completion.bash b/contrib/completion/lei-completion.bash index 5c137e68..b86afa2c 100644 --- a/contrib/completion/lei-completion.bash +++ b/contrib/completion/lei-completion.bash @@ -1,16 +1,19 @@ -# Copyright (C) 2020-2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ # preliminary bash completion support for lei (Local Email Interface) # Needs a lot of work, see `lei__complete' in lib/PublicInbox::LEI.pm _lei() { local wordlist="$(lei _complete ${COMP_WORDS[@]})" - case $wordlist in - *':'* | *'='* | '//'*) compopt -o nospace ;; - *) compopt +o nospace ;; # the default - esac wordlist="${wordlist//;/\\\\;}" # escape ';' for ';UIDVALIDITY' and such - COMPREPLY=($(compgen -W "$wordlist" -- "${COMP_WORDS[COMP_CWORD]}")) + + local word="${COMP_WORDS[COMP_CWORD]}" + if test "$word" = ':' && test $COMP_CWORD -ge 1 + then + COMPREPLY=($(compgen -W "$wordlist" --)) + else + COMPREPLY=($(compgen -W "$wordlist" -- "$word")) + fi return 0 } complete -o default -o bashdefault -F _lei lei -- cgit v1.2.3-24-ge0c7