git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
From: "Sardorbek Imomaliev via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Sardorbek Imomaliev <sardorbek.imomaliev@gmail.com>,
	Sardorbek Imomaliev <sardorbek.imomaliev@gmail.com>
Subject: [PATCH v2] work around zsh comment in __git_complete_worktree_paths
Date: Mon, 03 May 2021 16:29:07 +0000	[thread overview]
Message-ID: <pull.943.v2.git.1620059347674.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.943.git.1619685833872.gitgitgadget@gmail.com>

From: Sardorbek Imomaliev <sardorbek.imomaliev@gmail.com>

[PATCH]: contrib/completion/git-completion.bash, there is a construct
where comment lines are placed between the command that is on
the upstream of a pipe and the command that is on the downstream
of a pipe in __git_complete_worktree_paths function.

Unfortunately, this script is also used by Zsh completion, but
Zsh mishandles this construct when "interactive_comments" option is not
set (by default it is off on macOS), resulting in a breakage:

$ git worktree remove [TAB]
$ git worktree remove __git_complete_worktree_paths:7: command not found: #

Move the comment, even though it explains what happens on the
downstream of the pipe and logically belongs where it is right
now, before the entire pipeline, to work around this problem.

Signed-off-by: Sardorbek Imomaliev <sardorbek.imomaliev@gmail.com>
---
    Fix: wrongly put comment for __git_complete_worktree_paths completion
    helper function
    
    git completion script fails for zsh
    
    $ git worktree remove [TAB]
    $ git worktree remove __git_complete_worktree_paths:7: command not found: #
    

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-943%2Fimomaliev%2Ffix%2Fgit-completion-worktree-subcommands-comment-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-943/imomaliev/fix/git-completion-worktree-subcommands-comment-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/943

Range-diff vs v1:

 1:  89a2a4d66b73 ! 1:  60ba6801e0f5 Fix: fix comment for __git_complete_worktree_paths
     @@ Metadata
      Author: Sardorbek Imomaliev <sardorbek.imomaliev@gmail.com>
      
       ## Commit message ##
     -    Fix: fix comment for __git_complete_worktree_paths
     +    work around zsh comment in __git_complete_worktree_paths
      
     -    Completion helper function fails for zsh because of wrongly put comment
     +    [PATCH]: contrib/completion/git-completion.bash, there is a construct
     +    where comment lines are placed between the command that is on
     +    the upstream of a pipe and the command that is on the downstream
     +    of a pipe in __git_complete_worktree_paths function.
     +
     +    Unfortunately, this script is also used by Zsh completion, but
     +    Zsh mishandles this construct when "interactive_comments" option is not
     +    set (by default it is off on macOS), resulting in a breakage:
     +
     +    $ git worktree remove [TAB]
     +    $ git worktree remove __git_complete_worktree_paths:7: command not found: #
     +
     +    Move the comment, even though it explains what happens on the
     +    downstream of the pipe and logically belongs where it is right
     +    now, before the entire pipeline, to work around this problem.
      
          Signed-off-by: Sardorbek Imomaliev <sardorbek.imomaliev@gmail.com>
      
     @@ contrib/completion/git-completion.bash: _git_whatchanged ()
       __git_complete_worktree_paths ()
       {
       	local IFS=$'\n'
     -+	# Skip the first entry: it's the path of the main worktree,
     -+	# which can't be moved, removed, locked, etc.
     ++	# Generate completion reply from worktree list skipping the first
     ++	# entry: it's the path of the main worktree, which can't be moved,
     ++	# removed, locked, etc.
       	__gitcomp_nl "$(git worktree list --porcelain |
      -		# Skip the first entry: it's the path of the main worktree,
      -		# which can't be moved, removed, locked, etc.


 contrib/completion/git-completion.bash | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 49e76e9d08cd..73f9fcf493c4 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -3268,9 +3268,10 @@ _git_whatchanged ()
 __git_complete_worktree_paths ()
 {
 	local IFS=$'\n'
+	# Generate completion reply from worktree list skipping the first
+	# entry: it's the path of the main worktree, which can't be moved,
+	# removed, locked, etc.
 	__gitcomp_nl "$(git worktree list --porcelain |
-		# Skip the first entry: it's the path of the main worktree,
-		# which can't be moved, removed, locked, etc.
 		sed -n -e '2,$ s/^worktree //p')"
 }
 

base-commit: 7e391989789db82983665667013a46eabc6fc570
-- 
gitgitgadget

  parent reply	other threads:[~2021-05-03 16:29 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-29  8:43 [PATCH] Fix: fix comment for __git_complete_worktree_paths Sardorbek Imomaliev via GitGitGadget
2021-04-30  0:42 ` Junio C Hamano
2021-05-03 16:29 ` Sardorbek Imomaliev via GitGitGadget [this message]
2021-05-04  3:18   ` [PATCH v2] work around zsh comment in __git_complete_worktree_paths Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.943.v2.git.1620059347674.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=sardorbek.imomaliev@gmail.com \
    --subject='Re: [PATCH v2] work around zsh comment in __git_complete_worktree_paths' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Code repositories for project(s) associated with this inbox:

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).