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

[PATCH 05/11] i18n: add--interactive: mark message for translation

From
Vasco Almeida <vascomalmeida@sapo.pt>
Date
Jun 21, 2016, 11:44 UTC
Message-ID
<20160621114413.9467-5-vascomalmeida@sapo.pt>
In-Reply-To
<20160621114413.9467-1-vascomalmeida@sapo.pt>

Mark 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 | 112 ++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 104 insertions(+), 8 deletions(-)
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index ef50ba0..909f396 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -91,6 +91,7 @@ sub colored {
 }
 
 # command line options
+my $cmd;
 my $patch_mode;
 my $patch_mode_revision;
 
@@ -171,7 +172,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') {
@@ -1372,12 +1374,105 @@ 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,?]? ";
+		if ($patch_mode eq 'stage') {
+			if ($hunk[$ix]{TYPE} eq 'mode') {
+			  print colored $prompt_color,
+			    sprintf __("Stage mode change [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} elsif ($hunk[$ix]{TYPE} eq 'deletion') {
+			  print colored $prompt_color,
+			    sprintf __("Stage deletion [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} else {
+			  print colored $prompt_color,
+			    sprintf __("Stage this hunk [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			}
+		} elsif ($patch_mode eq 'stash') {
+			if ($hunk[$ix]{TYPE} eq 'mode') {
+			  print colored $prompt_color,
+			    sprintf __("Stash mode change [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} elsif ($hunk[$ix]{TYPE} eq 'deletion') {
+			  print colored $prompt_color,
+			    sprintf __("Stash deletion [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} else {
+			  print colored $prompt_color,
+			    sprintf __("Stash this hunk [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			}
+		} elsif ($patch_mode eq 'reset_head') {
+			if ($hunk[$ix]{TYPE} eq 'mode') {
+			  print colored $prompt_color,
+			    sprintf __("Unstage mode change [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} elsif ($hunk[$ix]{TYPE} eq 'deletion') {
+			  print colored $prompt_color,
+			    sprintf __("Unstage deletion [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} else {
+			  print colored $prompt_color,
+			    sprintf __("Unstage this hunk [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			}
+		} elsif ($patch_mode eq 'reset_nothead') {
+			if ($hunk[$ix]{TYPE} eq 'mode') {
+			  print colored $prompt_color,
+			    sprintf __("Apply mode change to index [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} elsif ($hunk[$ix]{TYPE} eq 'deletion') {
+			  print colored $prompt_color,
+			    sprintf __("Apply deletion to index [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} else {
+			  print colored $prompt_color,
+			    sprintf __("Apply this hunk to index [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			}
+		} elsif ($patch_mode eq 'checkout_index') {
+			if ($hunk[$ix]{TYPE} eq 'mode') {
+			  print colored $prompt_color,
+			    sprintf __("Discard mode change from worktree [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} elsif ($hunk[$ix]{TYPE} eq 'deletion') {
+			  print colored $prompt_color,
+			    sprintf __("Discard deletion from worktree [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} else {
+			  print colored $prompt_color,
+			    sprintf __("Discard this hunk from worktree [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			}
+		} elsif ($patch_mode eq 'checkout_head') {
+			if ($hunk[$ix]{TYPE} eq 'mode') {
+			  print colored $prompt_color,
+			    sprintf __("Discard mode change from index and worktree [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} elsif ($hunk[$ix]{TYPE} eq 'deletion') {
+			  print colored $prompt_color,
+			    sprintf __("Discard deletion from index and worktree [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} else {
+			  print colored $prompt_color,
+			    sprintf __("Discard this hunk from index and worktree [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			}
+		} elsif ($patch_mode eq 'checkout_nothead') {
+			if ($hunk[$ix]{TYPE} eq 'mode') {
+			  print colored $prompt_color,
+			    sprintf __("Apply mode change to index and worktree [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} elsif ($hunk[$ix]{TYPE} eq 'deletion') {
+			  print colored $prompt_color,
+			    sprintf __("Apply deletion to index and worktree [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			} else {
+			  print colored $prompt_color,
+			    sprintf __("Apply this hunk to index and worktree [y,n,q,a,d,/%s,?]? "),
+				       $other;
+			}
+		}
 		my $line = prompt_single_character;
 		last unless defined $line;
 		if ($line) {
@@ -1631,6 +1726,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;
@@ -1667,7 +1763,7 @@ sub main_loop {
 
 process_args();
 refresh();
-if ($patch_mode) {
+if ($cmd) {
 	patch_update_cmd();
 }
 else {
-- 
2.6.6
Previous: Vasco AlmeidaNext: Vasco Almeida
Message 5 of 13 in “i18n: add--interactive: mark strings for translation”
  1. 01/11 i18n: add--interactive: mark strings for translationVasco Almeida, Jun 21, 2016
  2. 02/11 i18n: add--interactive: mark simple here documents for translationVasco Almeida, Jun 21, 2016
  3. 04/11 i18n: add--interactive: mark plural stringsVasco Almeida, Jun 21, 2016
  4. 03/11 i18n: add--interactive: mark strings with interpolation for translationVasco Almeida, Jun 21, 2016
  5. 05/11 i18n: add--interactive: mark message for translationVasco Almeida, Jun 21, 2016
  6. 09/11 i18n: send-email: mark warnings and errors for translationVasco Almeida, Jun 21, 2016
  7. 06/11 i18n: add--interactive: i18n of help_patch_cmdVasco Almeida, Jun 21, 2016
  8. 11/11 i18n: difftool: mark warnings for translationVasco Almeida, Jun 21, 2016
  9. David AguilarJun 22, 2016
  10. Vasco AlmeidaJun 22, 2016
  11. 10/11 i18n: send-email: mark string with interpolation for translationVasco Almeida, Jun 21, 2016
  12. 08/11 i18n: send-email: mark strings for translationVasco Almeida, Jun 21, 2016
  13. 07/11 i18n: add--interactive: mark edit_hunk message for translationVasco Almeida, Jun 21, 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.