git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] send-email: move bash completions to core script

From
Thiago Perrotta <tbperrotta@gmail.com>
Date
Sep 7, 2021, 00:16 UTC
Message-ID
<20210907001609.156105-1-tbperrotta@gmail.com>
In-Reply-To
<CAPUEsphYPqaZueCcZ-SJx9HabuesSyx8MJOhkEjAJjWGGrzxEw@mail.gmail.com>

"git send-email --git-completion-helper" only prints "format-patch" flags. Make it print "send-email" flags as well.

Add a completion test for "send-email --validate", a send-email option.
Signed-off-by: Thiago Perrotta <tbperrotta@gmail.com>
---
Hi Carlos,
Good catch. Initially I had only moved the options from the script.

I am working on another patch (attached) that exhaustively adds all options. At this time, it's still manual, I agree that generating the flags programatically would be even better, but I didn't want to complicate this series too much.

Let me know how you would like me to proceed here, I see 3 options:
1. drop the second part of the patch (v3 2/3) completely, only keep the
  other ones (1/3 and 3/3), which just adds the newline and touches the
  man page - leave automated flags for another series
2. send v4 with the attached - which exhaustively adds all send-email
options to the perl script, while removing the completions from the bash
completion script
3. send v4 with the attached and do not touch the current bash
completion script (keeping caching as is)
 contrib/completion/git-completion.bash | 11 +----
 git-send-email.perl                    | 62 ++++++++++++++++++++++++++
 t/t9902-completion.sh                  |  3 ++
 3 files changed, 66 insertions(+), 10 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 4bdd27ddc8..1b73a4dcc0 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -2359,16 +2359,7 @@ _git_send_email ()
 		return
 		;;
 	--*)
-		__gitcomp_builtin send-email "--annotate --bcc --cc --cc-cmd --chain-reply-to
-			--compose --confirm= --dry-run --envelope-sender
-			--from --identity
-			--in-reply-to --no-chain-reply-to --no-signed-off-by-cc
-			--no-suppress-from --no-thread --quiet --reply-to
-			--signed-off-by-cc --smtp-pass --smtp-server
-			--smtp-server-port --smtp-encryption= --smtp-user
-			--subject --suppress-cc= --suppress-from --thread --to
-			--validate --no-validate
-			$__git_format_patch_extra_options"
+		__gitcomp_builtin send-email "$__git_format_patch_extra_options"
 		return
 		;;
 	esac
diff --git a/git-send-email.perl b/git-send-email.perl
index d1731c1755..7139384f7a 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -114,6 +114,68 @@ sub usage {
 }
 
 sub completion_helper {
+    my @send_email_flags = qw/
+    --8bit-encoding
+    --annotate
+    --batch-size
+    --bcc
+    --cc
+    --cc-cmd
+    --cc-cover
+    --chain-reply-to
+    --compose
+    --compose-encoding
+    --confirm
+    --dry-run
+    --dump-aliases
+    --envelope-sender
+    --force
+    --format-patch
+    --from
+    --identity
+    --in-reply-to
+    --no-annotate
+    --no-bcc
+    --no-cc
+    --no-cc-cover
+    --no-chain-reply-to
+    --no-format-patch
+    --no-signed-off-by-cc
+    --no-smtp-auth
+    --no-suppress-from
+    --no-thread
+    --no-to
+    --no-to-cover
+    --no-validate
+    --no-xmailer
+    --quiet
+    --relogin-delay
+    --reply-to
+    --sendmail-cmd
+    --signed-off-by-cc
+    --smtp-auth
+    --smtp-debug
+    --smtp-domain
+    --smtp-encryption
+    --smtp-pass
+    --smtp-server
+    --smtp-server-option
+    --smtp-server-port
+    --smtp-ssl
+    --smtp-ssl-cert-path
+    --smtp-user
+    --subject
+    --suppress-cc
+    --suppress-from
+    --thread
+    --to
+    --to-cmd
+    --to-cover
+    --transfer-encoding
+    --validate
+    --xmailer
+    /;
+    print "@send_email_flags";
     print Git::command('format-patch', '--git-completion-helper'), "\n";
     exit(0);
 }
diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
index 11573936d5..a4faf64184 100755
--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -2139,6 +2139,9 @@ test_expect_success PERL 'send-email' '
 	--cover-from-description=Z
 	--cover-letter Z
 	EOF
+	test_completion "git send-email --val" <<-\EOF &&
+	--validate Z
+	EOF
 	test_completion "git send-email ma" "main "
 '
 
-- 
2.33.0
Previous: Carlo ArenasNext: Carlo Arenas
Message 8 of 58 in “send-email: shell completion improvements”
  1. 0/3 send-email: shell completion improvementsThiago Perrotta, Aug 20, 2021
  2. 1/3 send-email: print newline for --git-completion-helperThiago Perrotta, Aug 20, 2021
  3. Junio C HamanoAug 20, 2021
  4. 0/3 send-email: shell completion improvementsThiago Perrotta, Aug 28, 2021
  5. 1/3 send-email: terminate --git-completion-helper with LFThiago Perrotta, Aug 28, 2021
  6. 2/3 send-email: move bash completions to core scriptThiago Perrotta, Aug 28, 2021
  7. Carlo ArenasAug 28, 2021
  8. send-email: move bash completions to core scriptThiago Perrotta, Sep 7, 2021
  9. Carlo ArenasSep 7, 2021
  10. 0/3 send-email: shell completion improvementsThiago Perrotta, Sep 21, 2021
  11. 1/3 send-email: terminate --git-completion-helper with LFThiago Perrotta, Sep 21, 2021
  12. 2/3 send-email: move bash completions to core scriptThiago Perrotta, Sep 21, 2021
  13. 3/3 send-email docs: add format-patch optionsThiago Perrotta, Sep 21, 2021
  14. Ævar Arnfjörð BjarmasonSep 23, 2021
  15. 0/3 send-email: shell completion improvementsThiago Perrotta, Sep 24, 2021
  16. Ævar Arnfjörð BjarmasonSep 24, 2021
  17. Thiago PerrottaSep 30, 2021
  18. 1/3 send-email: terminate --git-completion-helper with LFThiago Perrotta, Oct 7, 2021
  19. 0/3 send-email: shell completion improvementsThiago Perrotta, Oct 7, 2021
  20. 3/3 send-email docs: add format-patch optionsThiago Perrotta, Oct 7, 2021
  21. Documentation: better document format-patch options in send-emailCarlo Marcelo Arenas Belón, Oct 9, 2021
  22. Bagas SanjayaOct 9, 2021
  23. Carlo ArenasOct 9, 2021
  24. Bagas SanjayaOct 9, 2021
  25. Junio C HamanoOct 10, 2021
  26. 2/3 send-email: programmatically generate bash completionsThiago Perrotta, Oct 7, 2021
  27. Carlo Marcelo Arenas BelónOct 9, 2021
  28. 0/3 send-email: shell completion improvementsThiago Perrotta, Oct 11, 2021
  29. Ævar Arnfjörð BjarmasonOct 11, 2021
  30. send-email: programmatically generate bash completionsThiago Perrotta, Oct 11, 2021
  31. 0/2 send-email: shell completion improvementsThiago Perrotta, Oct 25, 2021
  32. Ævar Arnfjörð BjarmasonOct 25, 2021
  33. Ævar Arnfjörð BjarmasonOct 26, 2021
  34. Junio C HamanoOct 28, 2021
  35. 1/2 send-email: programmatically generate bash completionsThiago Perrotta, Oct 25, 2021
  36. 2/2 send-email docs: add format-patch optionsThiago Perrotta, Oct 25, 2021
  37. 1/3 send-email: terminate --git-completion-helper with LFThiago Perrotta, Oct 11, 2021
  38. 2/3 send-email: programmatically generate bash completionsThiago Perrotta, Oct 11, 2021
  39. 3/3 send-email docs: add format-patch optionsThiago Perrotta, Oct 11, 2021
  40. 1/3 send-email: terminate --git-completion-helper with LFThiago Perrotta, Sep 24, 2021
  41. 2/3 send-email: programmatically generate bash completionsThiago Perrotta, Sep 24, 2021
  42. 3/3 send-email docs: add format-patch optionsThiago Perrotta, Sep 24, 2021
  43. Bagas SanjayaSep 24, 2021
  44. Carlo ArenasSep 24, 2021
  45. Bagas SanjayaSep 24, 2021
  46. Carlo ArenasSep 24, 2021
  47. Junio C HamanoSep 24, 2021
  48. Carlo ArenasSep 24, 2021
  49. Junio C HamanoSep 24, 2021
  50. Bagas SanjayaSep 25, 2021
  51. Junio C HamanoSep 25, 2021
  52. Carlo Marcelo Arenas BelónSep 25, 2021
  53. Junio C HamanoSep 29, 2021
  54. 3/3 send-email docs: add format-patch optionsThiago Perrotta, Aug 28, 2021
  55. Bagas SanjayaAug 28, 2021
  56. 2/3 send-email: move bash completions to the perl scriptThiago Perrotta, Aug 20, 2021
  57. 3/3 send-email docs: mention format-patch optionsThiago Perrotta, Aug 20, 2021
  58. Junio C HamanoAug 20, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.