From 9dee8e00b9a0807f27d08861df95f965264e2e26 Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Fri, 18 Aug 2017 13:02:18 +0200 Subject: 41563: fix completion description alignment with _regex_words --- ChangeLog | 3 +++ Completion/Base/Utility/_regex_words | 21 ++++++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index a5e67caaf..ba057ce33 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2017-08-18 Oliver Kiddle + * 41563: Completion/Base/Utility/_regex_words: fix completion + description alignment with _regex_words + * 41562: Completion/BSD/Command/_rcctl: correct completed word * 41561: Completion/Unix/Command/_dhclient: handle Free/OpenBSD diff --git a/Completion/Base/Utility/_regex_words b/Completion/Base/Utility/_regex_words index 62c2491bb..90b4a9735 100644 --- a/Completion/Base/Utility/_regex_words +++ b/Completion/Base/Utility/_regex_words @@ -1,6 +1,6 @@ #autoload -local opt OPTARG +local opt OPTARG matches end local term=$'\0' while getopts "t:" opt; do @@ -31,19 +31,22 @@ fi integer i local -a wds +if [[ $term = $'\0' ]]; then + matches=":${tag}:${desc}:(( " + end="))" +else + matches=":${tag}:${desc}:_values -s ${(q)term} ${(q)desc}" +fi + for (( i = 1; i <= $#; i++ )); do wds=(${(s.:.)argv[i]}) reply+=(/${wds[1]//\**/"[^$term]#"}"$term"/) if [[ $term = $'\0' ]]; then - reply+=(":${tag}:${desc}:(( ${wds[1]//\*}:${wds[2]//(#m)[: \(\)]/\\$MATCH} ))") + matches+="${wds[1]//\*}${wds[2]:+\\:${wds[2]//(#m)[: \(\)]/\\$MATCH}} " else - reply+=(":${tag}:${desc}:_values -s ${(q)term} ${(q)desc} \ -${(q)${${wds[1]//\*}//(#m)[:\[\]]/\\$MATCH}}\\[${(q)${wds[2]//(#m)[:\[\]]/\\$MATCH}}\\]") + matches+=" ${(q)${${wds[1]//\*}//(#m)[:\[\]]/\\$MATCH}}\\[${(q)${wds[2]//(#m)[:\[\]]/\\$MATCH}}\\]" fi eval "reply+=($wds[3])" - if (( $i == $# )); then - reply+=(\)) - else - reply+=(\|) - fi + reply+=(\|) done +reply+=( /'[]'/ "${matches}${end}" \) ) -- cgit 1.4.1