[PATCH] Highlight keyboard shortcuts in git-add--interactive
From: Wincent Colaiuta <hidden>
Date: 2016-06-15 22:43:53
The user interface provided by the command loop in git-add--interactive gives the impression that subcommands can only be launched by entering an integer identifier from 1 through 8. A "hidden" feature is that any string can be entered, and an anchored regex search is used to find the first matching option. This patch makes this feature a little more obvious by highlighting the first character of each subcommand (for example "patch" is displayed as "[p]atch"). The mechanism for doing this is to add an optional third element to the array defining each subcommand; if present, it will be used for display purposes, while the actual name of the subcommand (the first element) is still used for matching purposes. Signed-off-by: Wincent Colaiuta <redacted> --- And another thought: if the colorization for git-add--interactive goes ahead, we could drop the square brackets used here in favor of underline or boldface, if people find that more attractive. git-add--interactive.perl | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 0317ad9..2b1c55a 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl@@ -179,7 +179,7 @@ sub list_and_choose { my $print = $stuff[$i]; if (ref $print) { if ((ref $print) eq 'ARRAY') { - $print = $print->[0]; + $print = $print->[2] || $print->[0]; } else { $print = $print->{PRINT};
@@ -774,14 +774,14 @@ EOF } sub main_loop { - my @cmd = ([ 'status', \&status_cmd, ], - [ 'update', \&update_cmd, ], - [ 'revert', \&revert_cmd, ], - [ 'add untracked', \&add_untracked_cmd, ], - [ 'patch', \&patch_update_cmd, ], - [ 'diff', \&diff_cmd, ], - [ 'quit', \&quit_cmd, ], - [ 'help', \&help_cmd, ], + my @cmd = ([ 'status', \&status_cmd, '[s]tatus', ], + [ 'update', \&update_cmd, '[u]date', ], + [ 'revert', \&revert_cmd, '[r]evert', ], + [ 'add untracked', \&add_untracked_cmd, '[a]dd untracked', ], + [ 'patch', \&patch_update_cmd, '[p]atch', ], + [ 'diff', \&diff_cmd, '[d]iff', ], + [ 'quit', \&quit_cmd, '[q]uit', ], + [ 'help', \&help_cmd, '[h]elp', ], ); while (1) { my ($it) = list_and_choose({ PROMPT => 'What now',
--
1.5.3.6.866.g67e44