Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: complete only modified files with git add -u
- X-seq: zsh-workers 51456
- From: Oliver Kiddle <opk@xxxxxxx>
- To: Zsh workers <zsh-workers@xxxxxxx>
- Subject: PATCH: complete only modified files with git add -u
- Date: Sat, 18 Feb 2023 01:23:30 +0100
- Archived-at: <https://zsh.org/workers/51456>
- List-id: <zsh-workers.zsh.org>
This makes git completion skip new files after git add -u. In general,
the option makes it easy to bulk update files without adding any new
files but it is the sort of option that can be useful with completion
specifically to limit the matches.
I've also included a number of very minor _git updates that have been
sitting in my tree for some while, there's a typo fix, a missing =, a
prompt for function name after git blame -L and git blame --force has
gained a short -f form.
Oliver
diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index a2555cbf0..49f9fa504 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -76,17 +76,21 @@ _git-add () {
case $state in
(file)
- declare -a ignored_files_alternatives
+ declare -a file_alternatives
+ if [[ -z ${opt_args[(I)-u|--update]} ]]; then
+ file_alternatives=(
+ 'other-files::__git_ignore_line_inside_arguments __git_other_files'
+ )
+ fi
if [[ -n ${opt_args[(I)-f|--force]} ]]; then
- ignored_files_alternatives=(
+ file_alternatives+=(
'ignored-modified-files:ignored modified file:__git_ignore_line_inside_arguments __git_modified_files --ignored'
'ignored-other-files:ignored other file:__git_ignore_line_inside_arguments __git_other_files --ignored')
fi
_alternative \
'modified-files::__git_ignore_line_inside_arguments __git_modified_files' \
- 'other-files::__git_ignore_line_inside_arguments __git_other_files' \
- $ignored_files_alternatives && ret=0
+ $file_alternatives && ret=0
;;
esac
@@ -2365,7 +2369,7 @@ _git-worktree() {
_arguments -S $endopt \
'(-n --dry-run)'{-n,--dry-run}"[don't remove, show only]" \
'(-v --verbose)'{-v,--verbose}'[report pruned objects]' \
- '--expire[expire objects older than specified time]:time' && ret=0
+ '--expire=[expire objects older than specified time]:time' && ret=0
;;
(list)
_arguments -S $endopt '--porcelain[machine-readable output]' && ret=0
@@ -2379,7 +2383,8 @@ _git-worktree() {
':location:_directories' && ret=0
;;
(remove)
- _arguments -C -S $endopt '--force[remove working trees that are not clean or that have submodules]' \
+ _arguments -C -S $endopt \
+ '(-f --force)'{-f,--force}'[remove working trees that are not clean or that have submodules]' \
': :->worktrees' && ret=0
;;
(unlock)
@@ -3901,7 +3906,7 @@ _git-reflog () {
;;
(delete)
_arguments -C -S \
- '(-n --dry-run)'{-n,--dry-run}"[dpn't update entries; show what would be done]" \
+ '(-n --dry-run)'{-n,--dry-run}"[don't update entries; show what would be done]" \
'--updateref[update ref with SHA-1 of top reflog entry after expiring or deleting]' \
'--rewrite[adjust reflog entries to ensure old SHA-1 points to new SHA-1 of previous entry after expiring or deleting]' \
'--verbose[output additional information]' \
@@ -4134,7 +4139,8 @@ _git-blame () {
else
_alternative \
'line-numbers: :__git_guard_number "line number"' \
- 'regexes::_guard "(/[^/]#(\\?[^/]#)#(/|)|)" regex' && ret=0
+ 'regexes::_guard "(/[^/]#(\\?[^/]#)#(/|)|)" regex' \
+ 'functions::_guard "(|:*)" "function name"' && ret=0
fi
;;
esac
Messages sorted by:
Reverse Date,
Date,
Thread,
Author