From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24467 invoked by alias); 17 May 2015 17:46:08 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 35164 Received: (qmail 20903 invoked from network); 17 May 2015 17:46:05 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thequod.de; h= x-mailer:message-id:date:date:subject:subject:from:from:received :received:received; s=postfix2; t=1431884281; bh=sGwbBolyL3VRdKt +PBQL6nr9rqUN37Xlc7Pv7SC+bfE=; b=suJj2+iRi4XRze/Nkt1UBsnLAr9Ugkn hNNMcwYOs5ew/Av1tHDALfl9sWfg9wNyxnRfjKckikLxzc+ti7AT0I2qKAHj7w7O 1FjsRbK47+Mbr87mxtuU3/8arqIdPLQMK13c4PvIo1gfbWPxPwXmIMMeXOEouItv 1TyCXOFTcPvE= From: Daniel Hahler To: zsh-workers@zsh.org Subject: [PATCH] completion: git: fix __git_commit_objects/__git_recent_commits Date: Sun, 17 May 2015 19:37:53 +0200 Message-Id: <1431884273-17095-1-git-send-email-genml+zsh-workers@thequod.de> X-Mailer: git-send-email 2.4.0.dirty From: Daniel Hahler $pipestatus for `: foo` appears to be 0 always. Explicitly declare `$commits` as associative array, and assign it normally. Without this, "git checkout" in a non-git directory would complete " ", but not result in a note/error about not being in a git dir. --- Completion/Unix/Command/_git | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git index ed23b39..da852ef 100644 --- a/Completion/Unix/Command/_git +++ b/Completion/Unix/Command/_git @@ -5649,11 +5649,11 @@ __git_heads_remote () { (( $+functions[__git_commit_objects] )) || __git_commit_objects () { local gitdir expl start - declare -a commits + declare -A commits # Note: the after-the-colon part must be unique across the entire array; # see workers/34768 - : ${(A)commits::=${(f)"$(_call_program commits git --no-pager log -20 --format='%h:\\\[%h\\\]\ %s')"}} + commits=(${(f)"$(_call_program commits git --no-pager log -20 --format='%h:\\\[%h\\\]\ %s')"}) __git_command_successful $pipestatus || return 1 _describe -V -t commits 'commit object name' commits || _guard '[[:xdigit:]](#c,40)' 'commit object name' @@ -5662,11 +5662,12 @@ __git_commit_objects () { (( $+functions[__git_recent_commits] )) || __git_recent_commits () { local gitdir expl start - declare -a descr tags heads commits + declare -a descr tags heads + declare -A commits local i j k # Careful: most %d will expand to the empty string. Quote properly! - : "${(A)commits::=${(@f)"$(_call_program commits git --no-pager log -20 --format='%h%n%d%n%s')"}}" + commits=(${(@f)"$(_call_program commits git --no-pager log -20 --format='%h%n%d%n%s')"}) __git_command_successful $pipestatus || return 1 for i j k in "$commits[@]" ; do -- 2.4.0.dirty