From f0b9e1537832e22b17741fb2fc5bfa28fafd6dc9 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:25 +0000 Subject: [PATCH 01/24] completion: add comments describing __git_diff_* globals Add descriptive comments for '__git_diff_common_options' and '__git_diff_difftool_options', so that it is clearer when looking at these variables to know in which command's completion they are used. Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index dc95c34cc8..90fe292459 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1733,6 +1733,7 @@ __git_color_moved_opts="no default plain blocks zebra dimmed-zebra" __git_color_moved_ws_opts="no ignore-space-at-eol ignore-space-change ignore-all-space allow-indentation-change" +# Options for the diff machinery (diff, log, show, stash, range-diff, ...) __git_diff_common_options="--stat --numstat --shortstat --summary --patch-with-stat --name-only --name-status --color --no-color --color-words --no-renames --check @@ -1757,6 +1758,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --anchored= " +# Options for diff/difftool __git_diff_difftool_options="--cached --staged --pickaxe-all --pickaxe-regex --base --ours --theirs --no-index --relative --merge-base $__git_diff_common_options" From 6a38b0a0dc4e874bb3b1fb2bfe5aa04b140f9a96 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:26 +0000 Subject: [PATCH 02/24] completion: complete --break-rewrites Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 90fe292459..f07b00b9c6 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1753,7 +1753,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --diff-algorithm= --submodule --submodule= --ignore-submodules --indent-heuristic --no-indent-heuristic - --textconv --no-textconv + --textconv --no-textconv --break-rewrites --patch --no-patch --anchored= " From 93ec6111a6460dd5acf52dbdd7bbfe8ec0c49598 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:27 +0000 Subject: [PATCH 03/24] completion: complete --cc Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index f07b00b9c6..b61c54e37f 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1754,7 +1754,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --submodule --submodule= --ignore-submodules --indent-heuristic --no-indent-heuristic --textconv --no-textconv --break-rewrites - --patch --no-patch + --patch --no-patch --cc --anchored= " From de4898d7d8b9674d14a5f12ac567d033e378326c Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:28 +0000 Subject: [PATCH 04/24] completion: complete --combined-all-paths Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index b61c54e37f..58ce64de9e 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1754,7 +1754,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --submodule --submodule= --ignore-submodules --indent-heuristic --no-indent-heuristic --textconv --no-textconv --break-rewrites - --patch --no-patch --cc + --patch --no-patch --cc --combined-all-paths --anchored= " From fd9058649a9c3e80ce726d419fe9ae49ee18b538 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:29 +0000 Subject: [PATCH 05/24] completion: complete --compact-summary Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 58ce64de9e..4c43d13eef 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1755,7 +1755,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --indent-heuristic --no-indent-heuristic --textconv --no-textconv --break-rewrites --patch --no-patch --cc --combined-all-paths - --anchored= + --anchored= --compact-summary " # Options for diff/difftool From a4d13aaf220a22dc4bd1192ace4694a26ea0c064 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:30 +0000 Subject: [PATCH 06/24] completion: complete --default-prefix Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 4c43d13eef..6af04932a0 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1750,7 +1750,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --raw --word-diff --word-diff-regex= --dirstat --dirstat= --dirstat-by-file --dirstat-by-file= --cumulative - --diff-algorithm= + --diff-algorithm= --default-prefix --submodule --submodule= --ignore-submodules --indent-heuristic --no-indent-heuristic --textconv --no-textconv --break-rewrites From 2f677ad3482e2d99e143292a724483737343b343 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:31 +0000 Subject: [PATCH 07/24] completion: complete --find-copies Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 6af04932a0..dd6e12ad8f 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1740,6 +1740,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --color-moved --color-moved= --no-color-moved --color-moved-ws= --no-color-moved-ws --full-index --binary --abbrev --diff-filter= + --find-copies --find-copies-harder --ignore-cr-at-eol --text --ignore-space-at-eol --ignore-space-change --ignore-all-space --ignore-blank-lines --exit-code From 04d430ff8d23f69f046513e62b6ae27ea95e9e5f Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:32 +0000 Subject: [PATCH 08/24] completion: complete --find-object Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index dd6e12ad8f..392fdbedd9 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1740,7 +1740,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --color-moved --color-moved= --no-color-moved --color-moved-ws= --no-color-moved-ws --full-index --binary --abbrev --diff-filter= - --find-copies + --find-copies --find-object --find-copies-harder --ignore-cr-at-eol --text --ignore-space-at-eol --ignore-space-change --ignore-all-space --ignore-blank-lines --exit-code From 1eb638a5db8e65620f3b316482c526708fc0797a Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:33 +0000 Subject: [PATCH 09/24] completion: complete --find-renames Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 392fdbedd9..0fa86dcde6 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1740,7 +1740,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --color-moved --color-moved= --no-color-moved --color-moved-ws= --no-color-moved-ws --full-index --binary --abbrev --diff-filter= - --find-copies --find-object + --find-copies --find-object --find-renames --find-copies-harder --ignore-cr-at-eol --text --ignore-space-at-eol --ignore-space-change --ignore-all-space --ignore-blank-lines --exit-code From 57159d5daae7c1e9e6aef01de03bfeb4cff08db0 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:34 +0000 Subject: [PATCH 10/24] completion: complete --function-context Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 0fa86dcde6..2610a55487 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1746,7 +1746,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --ignore-all-space --ignore-blank-lines --exit-code --quiet --ext-diff --no-ext-diff --no-prefix --src-prefix= --dst-prefix= - --inter-hunk-context= + --inter-hunk-context= --function-context --patience --histogram --minimal --raw --word-diff --word-diff-regex= --dirstat --dirstat= --dirstat-by-file From b454ed2c5df3f7ed0648fcb33f8104b7f4eea6af Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:35 +0000 Subject: [PATCH 11/24] completion: complete --ignore-matching-lines Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 2610a55487..b4d0643b04 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1756,7 +1756,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --indent-heuristic --no-indent-heuristic --textconv --no-textconv --break-rewrites --patch --no-patch --cc --combined-all-paths - --anchored= --compact-summary + --anchored= --compact-summary --ignore-matching-lines= " # Options for diff/difftool From 8885532abb0d34e5e7d77b255df53914361b64d9 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:36 +0000 Subject: [PATCH 12/24] completion: complete --irreversible-delete Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index b4d0643b04..e74636ebe8 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1757,6 +1757,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --textconv --no-textconv --break-rewrites --patch --no-patch --cc --combined-all-paths --anchored= --compact-summary --ignore-matching-lines= + --irreversible-delete " # Options for diff/difftool From 08a9a6d615ac74324e7f0e9a97a17e38f799c5ec Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:37 +0000 Subject: [PATCH 13/24] completion: complete --ita-invisible-in-index and --ita-visible-in-index The options --ita-invisible-in-index and --ita-visible-in-index are listed in diff-options.txt and so are included in the documentation of commands which include this file (diff, diff-*, log, show, format-patch) but they only make sense for diffs relating to the index. As such, add them to '__git_diff_difftool_options' instead of '__git_diff_common_options' since it makes more sense to add them there. Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index e74636ebe8..7246ced14a 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1763,6 +1763,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary # Options for diff/difftool __git_diff_difftool_options="--cached --staged --pickaxe-all --pickaxe-regex --base --ours --theirs --no-index --relative --merge-base + --ita-invisible-in-index --ita-visible-in-index $__git_diff_common_options" _git_diff () From 3a4d45324614ab96754636e545fa054dac09d9f5 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:38 +0000 Subject: [PATCH 14/24] completion: complete --line-prefix Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 7246ced14a..13d6730f33 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1757,7 +1757,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --textconv --no-textconv --break-rewrites --patch --no-patch --cc --combined-all-paths --anchored= --compact-summary --ignore-matching-lines= - --irreversible-delete + --irreversible-delete --line-prefix " # Options for diff/difftool From ffcccc62b02ff41d5b436ea7cbd852bb2bd83bf8 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:39 +0000 Subject: [PATCH 15/24] completion: complete --no-relative Add --no-relative to __git_diff_common_options in the completion script, and move --relative from __git_diff_difftool_options to __git_diff_common_options since it applies to more than just diff and difftool. Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 13d6730f33..f4e773cb99 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1741,6 +1741,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --color-moved-ws= --no-color-moved-ws --full-index --binary --abbrev --diff-filter= --find-copies --find-object --find-renames + --no-relative --relative --find-copies-harder --ignore-cr-at-eol --text --ignore-space-at-eol --ignore-space-change --ignore-all-space --ignore-blank-lines --exit-code @@ -1762,7 +1763,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary # Options for diff/difftool __git_diff_difftool_options="--cached --staged --pickaxe-all --pickaxe-regex - --base --ours --theirs --no-index --relative --merge-base + --base --ours --theirs --no-index --merge-base --ita-invisible-in-index --ita-visible-in-index $__git_diff_common_options" From 5727be06c6df7aca70dd02636c7e3d619febbd1f Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:40 +0000 Subject: [PATCH 16/24] completion: complete --no-stat Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index f4e773cb99..ec2e4c9e71 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1758,7 +1758,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --textconv --no-textconv --break-rewrites --patch --no-patch --cc --combined-all-paths --anchored= --compact-summary --ignore-matching-lines= - --irreversible-delete --line-prefix + --irreversible-delete --line-prefix --no-stat " # Options for diff/difftool From 8fe2bd79055d9dbff3f798abfde61408d55f9ab8 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:41 +0000 Subject: [PATCH 17/24] completion: complete --output Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index ec2e4c9e71..a34432796b 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1759,6 +1759,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --patch --no-patch --cc --combined-all-paths --anchored= --compact-summary --ignore-matching-lines= --irreversible-delete --line-prefix --no-stat + --output= " # Options for diff/difftool From b5c3edc17ea10f0946ca0876028b077ef51509c3 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:42 +0000 Subject: [PATCH 18/24] completion: complete --output-indicator-{context,new,old} Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index a34432796b..a69421cd74 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1759,7 +1759,8 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --patch --no-patch --cc --combined-all-paths --anchored= --compact-summary --ignore-matching-lines= --irreversible-delete --line-prefix --no-stat - --output= + --output= --output-indicator-context= + --output-indicator-new= --output-indicator-old= " # Options for diff/difftool From 3b698111d5324236c7af330b0c02698f30d15d19 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:43 +0000 Subject: [PATCH 19/24] completion: complete --unified Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index a69421cd74..7babd95d84 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1745,7 +1745,7 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --find-copies-harder --ignore-cr-at-eol --text --ignore-space-at-eol --ignore-space-change --ignore-all-space --ignore-blank-lines --exit-code - --quiet --ext-diff --no-ext-diff + --quiet --ext-diff --no-ext-diff --unified= --no-prefix --src-prefix= --dst-prefix= --inter-hunk-context= --function-context --patience --histogram --minimal From da260f61889f0cda3267ca09db3fe48794f52a26 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:44 +0000 Subject: [PATCH 20/24] completion: complete --ws-error-highlight Add --ws-error-highlight= to the list in __git_diff_common_options, and add the accepted values in a new list __git_ws_error_highlight_opts. Use __git_ws_error_highlight_opts in _git_diff, _git_log and _git_show to offer the accepted values. As noted in fd0bc17557 (completion: add diff --color-moved[-ws], 2020-02-21), there is no easy way to offer completion for several comma-separated values, so this is limited to completing a single value. Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 7babd95d84..9de33ed05d 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1733,6 +1733,8 @@ __git_color_moved_opts="no default plain blocks zebra dimmed-zebra" __git_color_moved_ws_opts="no ignore-space-at-eol ignore-space-change ignore-all-space allow-indentation-change" +__git_ws_error_highlight_opts="context old new all default" + # Options for the diff machinery (diff, log, show, stash, range-diff, ...) __git_diff_common_options="--stat --numstat --shortstat --summary --patch-with-stat --name-only --name-status --color @@ -1790,6 +1792,10 @@ _git_diff () __gitcomp "$__git_color_moved_ws_opts" "" "${cur##--color-moved-ws=}" return ;; + --ws-error-highlight=*) + __gitcomp "$__git_ws_error_highlight_opts" "" "${cur##--ws-error-highlight=}" + return + ;; --*) __gitcomp "$__git_diff_difftool_options" return @@ -2080,6 +2086,10 @@ _git_log () __gitcomp "$__git_diff_submodule_formats" "" "${cur##--submodule=}" return ;; + --ws-error-highlight=*) + __gitcomp "$__git_ws_error_highlight_opts" "" "${cur##--ws-error-highlight=}" + return + ;; --no-walk=*) __gitcomp "sorted unsorted" "" "${cur##--no-walk=}" return @@ -3000,6 +3010,10 @@ _git_show () __gitcomp "$__git_color_moved_ws_opts" "" "${cur##--color-moved-ws=}" return ;; + --ws-error-highlight=*) + __gitcomp "$__git_ws_error_highlight_opts" "" "${cur##--ws-error-highlight=}" + return + ;; --*) __gitcomp "--pretty= --format= --abbrev-commit --no-abbrev-commit --oneline --show-signature From d520d98382d3ad7071bc33e2ea2204a4c64ba7bb Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:45 +0000 Subject: [PATCH 21/24] completion: move --pickaxe-{all,regex} to __git_diff_common_options The options --pickaxe-all and --pickaxe-regex are listed in __git_diff_difftool_options and repeated in _git_log. Move them to __git_diff_common_options instead, which makes them available automatically in the completion of other commands referencing this variable. Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- 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 9de33ed05d..5b8e7b810c 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1763,10 +1763,12 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --irreversible-delete --line-prefix --no-stat --output= --output-indicator-context= --output-indicator-new= --output-indicator-old= + --ws-error-highlight= + --pickaxe-all --pickaxe-regex " # Options for diff/difftool -__git_diff_difftool_options="--cached --staged --pickaxe-all --pickaxe-regex +__git_diff_difftool_options="--cached --staged --base --ours --theirs --no-index --merge-base --ita-invisible-in-index --ita-visible-in-index $__git_diff_common_options" @@ -2115,7 +2117,6 @@ _git_log () --expand-tabs --expand-tabs= --no-expand-tabs $merge $__git_diff_common_options - --pickaxe-all --pickaxe-regex " return ;; From 98aaeb2f775949faac4840ba90b10d8cc328a71b Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:46 +0000 Subject: [PATCH 22/24] completion: complete --diff-merges, its options and --no-diff-merges The flags --[no-]diff-merges only make sense for 'git log' and 'git show', so add a new variable __git_log_show_options for options only relevant to these two commands, and add them there. Also add __git_diff_merges_opts and list the accepted values for --diff-merges, and use it in _git_log and _git_show. Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 5b8e7b810c..8688f7c433 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -2040,6 +2040,12 @@ __git_log_shortlog_options=" --author= --committer= --grep= --all-match --invert-grep " +# Options accepted by log and show +__git_log_show_options=" + --diff-merges --diff-merges= --no-diff-merges +" + +__git_diff_merges_opts="off none on first-parent 1 separate m combined c dense-combined cc remerge r" __git_log_pretty_formats="oneline short medium full fuller reference email raw format: tformat: mboxrd" __git_log_date_formats="relative iso8601 iso8601-strict rfc2822 short local default human raw unix auto: format:" @@ -2096,11 +2102,16 @@ _git_log () __gitcomp "sorted unsorted" "" "${cur##--no-walk=}" return ;; + --diff-merges=*) + __gitcomp "$__git_diff_merges_opts" "" "${cur##--diff-merges=}" + return + ;; --*) __gitcomp " $__git_log_common_options $__git_log_shortlog_options $__git_log_gitk_options + $__git_log_show_options --root --topo-order --date-order --reverse --follow --full-diff --abbrev-commit --no-abbrev-commit --abbrev= @@ -3015,10 +3026,15 @@ _git_show () __gitcomp "$__git_ws_error_highlight_opts" "" "${cur##--ws-error-highlight=}" return ;; + --diff-merges=*) + __gitcomp "$__git_diff_merges_opts" "" "${cur##--diff-merges=}" + return + ;; --*) __gitcomp "--pretty= --format= --abbrev-commit --no-abbrev-commit --oneline --show-signature --expand-tabs --expand-tabs= --no-expand-tabs + $__git_log_show_options $__git_diff_common_options " return From 55245d669a6c427efd9f7c1782105bea4e97a431 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:47 +0000 Subject: [PATCH 23/24] completion: complete --remerge-diff --remerge-diff only makes sense for 'git log' and 'git show', so add it to __git_log_show_options which is referenced in the completion for these two commands. Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- contrib/completion/git-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 8688f7c433..11f2edf47b 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -2042,7 +2042,7 @@ __git_log_shortlog_options=" " # Options accepted by log and show __git_log_show_options=" - --diff-merges --diff-merges= --no-diff-merges + --diff-merges --diff-merges= --no-diff-merges --remerge-diff " __git_diff_merges_opts="off none on first-parent 1 separate m combined c dense-combined cc remerge r" From 0a868031edee0f7a38b42e13c8017d6cbbb4af1b Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 26 Jun 2023 16:24:48 +0000 Subject: [PATCH 24/24] diff.c: mention completion above add_diff_options Add a comment on top of add_diff_options, where common diff options are listed, mentioning __git_diff_common_options in the completion script, in the hope that contributors update it when they add new diff flags. Signed-off-by: Philippe Blain Signed-off-by: Junio C Hamano --- diff.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/diff.c b/diff.c index 3c88c37908..64c93c0f0e 100644 --- a/diff.c +++ b/diff.c @@ -5491,6 +5491,10 @@ static int diff_opt_rotate_to(const struct option *opt, const char *arg, int uns return 0; } +/* + * Consider adding new flags to __git_diff_common_options + * in contrib/completion/git-completion.bash + */ struct option *add_diff_options(const struct option *opts, struct diff_options *options) {