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

[PATCH v3 06/14] i18n: add--interactive: mark patch prompt for translation

From
Vasco Almeida <vascomalmeida@sapo.pt>
Date
Oct 5, 2016, 17:21 UTC
Message-ID
<20161005172110.30801-7-vascomalmeida@sapo.pt>
In-Reply-To
<20161005172110.30801-1-vascomalmeida@sapo.pt>

Mark prompt message assembled in place for translation, unfolding each use case for each entry in the %patch_modes hash table.

Previously, this script relied on whether $patch_mode was set to run the command patch_update_cmd() or show status and loop the main loop. Now, it uses $cmd to indicate we must run patch_update_cmd() and $patch_mode is used to tell which flavor of the %patch_modes are we on. This is introduced in order to be able to mark and unfold the message prompt knowing in which context we are.

The tracking of context was done previously by point %patch_mode_flavour hash table to the correct entry of %patch_modes, focusing only on value of %patch_modes. Now, we are also interested in the key ('staged', 'stash', 'checkout_head', ...).

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 git-add--interactive.perl | 54 ++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 46 insertions(+), 8 deletions(-)
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 6bbde2d..c8d5093 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -93,6 +93,7 @@ sub colored {
 }
 
 # command line options
+my $cmd;
 my $patch_mode;
 my $patch_mode_revision;
 
@@ -173,7 +174,8 @@ my %patch_modes = (
 	},
 );
 
-my %patch_mode_flavour = %{$patch_modes{stage}};
+$patch_mode = 'stage';
+my %patch_mode_flavour = %{$patch_modes{$patch_mode}};
 
 sub run_cmd_pipe {
 	if ($^O eq 'MSWin32') {
@@ -1311,6 +1313,44 @@ sub display_hunks {
 	return $i;
 }
 
+my %patch_update_prompt_modes = (
+	stage => {
+		mode => __("Stage mode change [y,n,q,a,d,/%s,?]? "),
+		deletion => __("Stage deletion [y,n,q,a,d,/%s,?]? "),
+		hunk => __("Stage this hunk [y,n,q,a,d,/%s,?]? "),
+	},
+	stash => {
+		mode => __("Stash mode change [y,n,q,a,d,/%s,?]? "),
+		deletion => __("Stash deletion [y,n,q,a,d,/%s,?]? "),
+		hunk => __("Stash this hunk [y,n,q,a,d,/%s,?]? "),
+	},
+	reset_head => {
+		mode => __("Unstage mode change [y,n,q,a,d,/%s,?]? "),
+		deletion => __("Unstage deletion [y,n,q,a,d,/%s,?]? "),
+		hunk => __("Unstage this hunk [y,n,q,a,d,/%s,?]? "),
+	},
+	reset_nothead => {
+		mode => __("Apply mode change to index [y,n,q,a,d,/%s,?]? "),
+		deletion => __("Apply deletion to index [y,n,q,a,d,/%s,?]? "),
+		hunk => __("Apply this hunk to index [y,n,q,a,d,/%s,?]? "),
+	},
+	checkout_index => {
+		mode => __("Discard mode change from worktree [y,n,q,a,d,/%s,?]? "),
+		deletion => __("Discard deletion from worktree [y,n,q,a,d,/%s,?]? "),
+		hunk => __("Discard this hunk from worktree [y,n,q,a,d,/%s,?]? "),
+	},
+	checkout_head => {
+		mode => __("Discard mode change from index and worktree [y,n,q,a,d,/%s,?]? "),
+		deletion => __("Discard deletion from index and worktree [y,n,q,a,d,/%s,?]? "),
+		hunk => __("Discard this hunk from index and worktree [y,n,q,a,d,/%s,?]? "),
+	},
+	checkout_nothead => {
+		mode => __("Apply mode change to index and worktree [y,n,q,a,d,/%s,?]? "),
+		deletion => __("Apply deletion to index and worktree [y,n,q,a,d,/%s,?]? "),
+		hunk => __("Apply this hunk to index and worktree [y,n,q,a,d,/%s,?]? "),
+	},
+);
+
 sub patch_update_file {
 	my $quit = 0;
 	my ($ix, $num);
@@ -1383,12 +1423,9 @@ sub patch_update_file {
 		for (@{$hunk[$ix]{DISPLAY}}) {
 			print;
 		}
-		print colored $prompt_color, $patch_mode_flavour{VERB},
-		  ($hunk[$ix]{TYPE} eq 'mode' ? ' mode change' :
-		   $hunk[$ix]{TYPE} eq 'deletion' ? ' deletion' :
-		   ' this hunk'),
-		  $patch_mode_flavour{TARGET},
-		  " [y,n,q,a,d,/$other,?]? ";
+		print colored $prompt_color,
+			sprintf($patch_update_prompt_modes{$patch_mode}{$hunk[$ix]{TYPE}}, $other);
+
 		my $line = prompt_single_character;
 		last unless defined $line;
 		if ($line) {
@@ -1644,6 +1681,7 @@ sub process_args {
 		die sprintf(__("invalid argument %s, expecting --"),
 			       $arg) unless $arg eq "--";
 		%patch_mode_flavour = %{$patch_modes{$patch_mode}};
+		$cmd = 1;
 	}
 	elsif ($arg ne "--") {
 		die sprintf(__("invalid argument %s, expecting --"), $arg);
@@ -1680,7 +1718,7 @@ sub main_loop {
 
 process_args();
 refresh();
-if ($patch_mode) {
+if ($cmd) {
 	patch_update_cmd();
 }
 else {
-- 
2.7.4
Previous: Vasco AlmeidaNext: Vasco Almeida
Message 9 of 63 in “Mark strings in Perl scripts for translation”
  1. 00/14 Mark strings in Perl scripts for translationVasco Almeida, Oct 5, 2016
  2. 02/14 i18n: add--interactive: mark simple here-documents for translationVasco Almeida, Oct 5, 2016
  3. 04/14 i18n: clean.c: match string with git-add--interactive.perlVasco Almeida, Oct 5, 2016
  4. 05/14 i18n: add--interactive: mark plural stringsVasco Almeida, Oct 5, 2016
  5. Junio C HamanoOct 5, 2016
  6. 03/14 i18n: add--interactive: mark strings with interpolation for translationVasco Almeida, Oct 5, 2016
  7. Junio C HamanoOct 5, 2016
  8. 01/14 i18n: add--interactive: mark strings for translationVasco Almeida, Oct 5, 2016
  9. 06/14 i18n: add--interactive: mark patch prompt for translationVasco Almeida, Oct 5, 2016
  10. 07/14 i18n: add--interactive: i18n of help_patch_cmdVasco Almeida, Oct 5, 2016
  11. 08/14 i18n: add--interactive: mark edit_hunk_manually message for translationVasco Almeida, Oct 5, 2016
  12. 09/14 i18n: add--interactive: remove %patch_modes entriesVasco Almeida, Oct 5, 2016
  13. 10/14 i18n: add--interactive: mark status words for translationVasco Almeida, Oct 5, 2016
  14. 11/14 i18n: send-email: mark strings for translationVasco Almeida, Oct 5, 2016
  15. 12/14 i18n: send-email: mark warnings and errors for translationVasco Almeida, Oct 5, 2016
  16. 13/14 i18n: send-email: mark string with interpolation for translationVasco Almeida, Oct 5, 2016
  17. 14/14 i18n: difftool: mark warnings for translationVasco Almeida, Oct 5, 2016
  18. Jakub NarębskiOct 5, 2016
  19. 00/14 Mark strings in Perl scripts for translationVasco Almeida, Oct 10, 2016
  20. 01/14 i18n: add--interactive: mark strings for translationVasco Almeida, Oct 10, 2016
  21. Junio C HamanoOct 19, 2016
  22. Vasco AlmeidaOct 20, 2016
  23. Junio C HamanoOct 20, 2016
  24. 02/14 i18n: add--interactive: mark simple here-documents for translationVasco Almeida, Oct 10, 2016
  25. 03/14 i18n: add--interactive: mark strings with interpolation for translationVasco Almeida, Oct 10, 2016
  26. 04/14 i18n: clean.c: match string with git-add--interactive.perlVasco Almeida, Oct 10, 2016
  27. 05/14 i18n: add--interactive: mark plural stringsVasco Almeida, Oct 10, 2016
  28. Junio C HamanoOct 19, 2016
  29. Vasco AlmeidaOct 20, 2016
  30. Vasco AlmeidaOct 20, 2016
  31. Junio C HamanoOct 20, 2016
  32. 06/14 i18n: add--interactive: mark patch prompt for translationVasco Almeida, Oct 10, 2016
  33. 07/14 i18n: add--interactive: i18n of help_patch_cmdVasco Almeida, Oct 10, 2016
  34. 08/14 i18n: add--interactive: mark edit_hunk_manually message for translationVasco Almeida, Oct 10, 2016
  35. Vasco AlmeidaNov 7, 2016
  36. 09/14 i18n: add--interactive: remove %patch_modes entriesVasco Almeida, Oct 10, 2016
  37. 10/14 i18n: add--interactive: mark status words for translationVasco Almeida, Oct 10, 2016
  38. 11/14 i18n: send-email: mark strings for translationVasco Almeida, Oct 10, 2016
  39. 12/14 i18n: send-email: mark warnings and errors for translationVasco Almeida, Oct 10, 2016
  40. 13/14 i18n: send-email: mark string with interpolation for translationVasco Almeida, Oct 10, 2016
  41. 14/14 i18n: difftool: mark warnings for translationVasco Almeida, Oct 10, 2016
  42. Junio C HamanoOct 27, 2016
  43. 00/16 Mark strings in Perl scripts for translationVasco Almeida, Nov 8, 2016
  44. 02/16 i18n: add--interactive: mark strings for translationVasco Almeida, Nov 8, 2016
  45. 09/16 i18n: add--interactive: mark edit_hunk_manually message for translationVasco Almeida, Nov 8, 2016
  46. 10/16 i18n: add--interactive: remove %patch_modes entriesVasco Almeida, Nov 8, 2016
  47. 01/16 Git.pm: add subroutines for commenting linesVasco Almeida, Nov 8, 2016
  48. Junio C HamanoNov 9, 2016
  49. Vasco AlmeidaNov 9, 2016
  50. Jakub NarębskiNov 9, 2016
  51. Junio C HamanoNov 9, 2016
  52. 08/16 i18n: add--interactive: i18n of help_patch_cmdVasco Almeida, Nov 8, 2016
  53. 16/16 i18n: difftool: mark warnings for translationVasco Almeida, Nov 8, 2016
  54. 15/16 i18n: send-email: mark composing message for translationVasco Almeida, Nov 8, 2016
  55. 14/16 i18n: send-email: mark string with interpolation for translationVasco Almeida, Nov 8, 2016
  56. 13/16 i18n: send-email: mark warnings and errors for translationVasco Almeida, Nov 8, 2016
  57. 12/16 i18n: send-email: mark strings for translationVasco Almeida, Nov 8, 2016
  58. 07/16 i18n: add--interactive: mark patch prompt for translationVasco Almeida, Nov 8, 2016
  59. 11/16 i18n: add--interactive: mark status words for translationVasco Almeida, Nov 8, 2016
  60. 06/16 i18n: add--interactive: mark plural stringsVasco Almeida, Nov 8, 2016
  61. 05/16 i18n: clean.c: match string with git-add--interactive.perlVasco Almeida, Nov 8, 2016
  62. 04/16 i18n: add--interactive: mark strings with interpolation for translationVasco Almeida, Nov 8, 2016
  63. 03/16 i18n: add--interactive: mark simple here-documents for translationVasco Almeida, Nov 8, 2016

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.