From: "Slavica Djukic via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
Slavica Djukic <slawica92@hotmail.com>
Subject: [PATCH 10/11] built-in add -i: use color in the main loop
Date: Wed, 10 Apr 2019 10:37:58 -0700 (PDT) [thread overview]
Message-ID: <3e1a88d9c038818fb0d53483e6d9c569d687b38e.1554917868.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.170.git.gitgitgadget@gmail.com>
From: Slavica Djukic <slawica92@hotmail.com>
The error messages as well as the unique prefixes are colored in `git
add -i` by default; We need to do the same in the built-in version.
Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
add-interactive.c | 40 +++++++++++++++++++++++++++++++++++-----
1 file changed, 35 insertions(+), 5 deletions(-)
diff --git a/add-interactive.c b/add-interactive.c
index 03d0770013..a1550d9b9f 100644
--- a/add-interactive.c
+++ b/add-interactive.c
@@ -13,11 +13,17 @@ static int use_color = -1;
enum color_add_i {
COLOR_HEADER = 0,
COLOR_HELP,
+ COLOR_PROMPT,
+ COLOR_ERROR,
+ COLOR_RESET,
};
static char list_colors[][COLOR_MAXLEN] = {
GIT_COLOR_BOLD, /* Header */
GIT_COLOR_BOLD_RED, /* Help */
+ GIT_COLOR_BOLD_BLUE, /* Prompt */
+ GIT_COLOR_BOLD_RED, /* Error */
+ GIT_COLOR_RESET, /* Reset */
};
static const char *get_add_i_color(enum color_add_i ix)
@@ -33,6 +39,12 @@ static int parse_color_slot(const char *slot)
return COLOR_HEADER;
if (!strcasecmp(slot, "help"))
return COLOR_HELP;
+ if (!strcasecmp(slot, "prompt"))
+ return COLOR_PROMPT;
+ if (!strcasecmp(slot, "error"))
+ return COLOR_ERROR;
+ if (!strcasecmp(slot, "reset"))
+ return COLOR_RESET;
return -1;
}
@@ -125,6 +137,8 @@ struct list_and_choose_options {
static ssize_t list_and_choose(struct prefix_item **items, size_t nr,
struct list_and_choose_options *opts)
{
+ const char *prompt_color = get_add_i_color(COLOR_PROMPT);
+ const char *error_color = get_add_i_color(COLOR_ERROR);
struct strbuf input = STRBUF_INIT;
ssize_t res = -1;
@@ -137,7 +151,8 @@ static ssize_t list_and_choose(struct prefix_item **items, size_t nr,
list(items, nr, &opts->list_opts);
- printf("%s%s", opts->prompt, "> ");
+ color_fprintf(stdout, prompt_color, "%s", opts->prompt);
+ fputs("> ", stdout);
fflush(stdout);
if (strbuf_getline(&input, stdin) == EOF) {
@@ -178,7 +193,8 @@ static ssize_t list_and_choose(struct prefix_item **items, size_t nr,
index = find_unique(p, items, nr);
if (index < 0 || index >= nr)
- printf(_("Huh (%s)?\n"), p);
+ color_fprintf_ln(stdout, error_color,
+ _("Huh (%s)?"), p);
else {
res = index;
break;
@@ -423,15 +439,21 @@ static int run_status(struct repository *r, const struct pathspec *ps,
return 0;
}
+struct print_command_item_data {
+ const char *color, *reset;
+};
+
static void print_command_item(int i, struct prefix_item *item,
void *print_command_item_data)
{
+ struct print_command_item_data *d = print_command_item_data;
+
if (!item->prefix_length ||
!is_valid_prefix(item->name, item->prefix_length))
printf(" %2d: %s", i + 1, item->name);
else
- printf(" %3d: [%.*s]%s", i + 1,
- (int)item->prefix_length, item->name,
+ printf(" %2d: %s%.*s%s%s", i + 1,
+ d->color, (int)item->prefix_length, item->name, d->reset,
item->name + item->prefix_length);
}
@@ -455,8 +477,16 @@ static void command_prompt_help(void)
int run_add_i(struct repository *r, const struct pathspec *ps)
{
+ struct print_command_item_data data = {
+ /*
+ * When color was asked for, use the prompt color for
+ * highlighting, otherwise use square brackets.
+ */
+ want_color(use_color) ? get_add_i_color(COLOR_PROMPT) : "[",
+ want_color(use_color) ? get_add_i_color(COLOR_RESET) : "]"
+ };
struct list_and_choose_options main_loop_opts = {
- { 4, N_("*** Commands ***"), print_command_item, NULL },
+ { 4, N_("*** Commands ***"), print_command_item, &data },
N_("What now"), command_prompt_help
};
struct command_item
--
gitgitgadget
next prev parent reply other threads:[~2019-04-10 17:38 UTC|newest]
Thread overview: 124+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-10 17:37 [PATCH 00/11] git add -i: add a rudimentary version in C (supporting only status and help so far) Johannes Schindelin via GitGitGadget
2019-04-10 17:37 ` [PATCH 01/11] Start to implement a built-in version of `git add --interactive` Johannes Schindelin via GitGitGadget
2019-04-18 14:31 ` Jeff Hostetler
2019-04-18 16:06 ` Jeff King
2019-04-30 23:40 ` Johannes Schindelin
2019-05-01 2:21 ` Jeff King
2019-05-13 11:14 ` Johannes Schindelin
2019-04-10 17:37 ` [PATCH 02/11] diff: export diffstat interface Daniel Ferreira via GitGitGadget
2019-04-10 17:37 ` [PATCH 03/11] built-in add -i: implement the `status` command Daniel Ferreira via GitGitGadget
2019-04-10 17:37 ` [PATCH 04/11] built-in add -i: refresh the index before running `status` Johannes Schindelin via GitGitGadget
2019-04-10 17:37 ` [PATCH 05/11] built-in add -i: color the header in the `status` command Johannes Schindelin via GitGitGadget
2019-04-10 17:37 ` [PATCH 07/11] Add a function to determine unique prefixes for a list of strings Slavica Djukic via GitGitGadget
2019-04-18 17:57 ` Jeff Hostetler
2019-05-13 12:48 ` Johannes Schindelin
2019-04-10 17:37 ` [PATCH 06/11] built-in add -i: implement the main loop Johannes Schindelin via GitGitGadget
2019-04-18 16:49 ` Jeff Hostetler
2019-05-13 12:04 ` Johannes Schindelin
2019-04-10 17:37 ` [PATCH 08/11] built-in add -i: show unique prefixes of the commands Slavica Djukic via GitGitGadget
2019-04-10 17:37 ` [PATCH 09/11] built-in add -i: support `?` (prompt help) Johannes Schindelin via GitGitGadget
2019-04-10 17:37 ` Slavica Djukic via GitGitGadget [this message]
2019-04-10 17:37 ` [PATCH 11/11] built-in add -i: implement the `help` command Johannes Schindelin via GitGitGadget
2019-05-13 17:27 ` [PATCH v2 00/11] git add -i: add a rudimentary version in C (supporting only status and help so far) Johannes Schindelin via GitGitGadget
2019-05-13 17:27 ` [PATCH v2 01/11] Start to implement a built-in version of `git add --interactive` Johannes Schindelin via GitGitGadget
2019-05-13 17:27 ` [PATCH v2 02/11] diff: export diffstat interface Daniel Ferreira via GitGitGadget
2019-05-13 17:27 ` [PATCH v2 03/11] built-in add -i: implement the `status` command Daniel Ferreira via GitGitGadget
2019-05-13 17:27 ` [PATCH v2 04/11] built-in add -i: refresh the index before running `status` Johannes Schindelin via GitGitGadget
2019-05-13 17:27 ` [PATCH v2 06/11] built-in add -i: implement the main loop Johannes Schindelin via GitGitGadget
2019-05-13 17:27 ` [PATCH v2 05/11] built-in add -i: color the header in the `status` command Johannes Schindelin via GitGitGadget
2019-05-13 17:27 ` [PATCH v2 07/11] Add a function to determine unique prefixes for a list of strings Slavica Djukic via GitGitGadget
2019-05-13 17:27 ` [PATCH v2 08/11] built-in add -i: show unique prefixes of the commands Slavica Djukic via GitGitGadget
2019-05-13 17:28 ` [PATCH v2 09/11] built-in add -i: support `?` (prompt help) Johannes Schindelin via GitGitGadget
2019-05-13 17:28 ` [PATCH v2 10/11] built-in add -i: use color in the main loop Slavica Djukic via GitGitGadget
2019-05-13 17:28 ` [PATCH v2 11/11] built-in add -i: implement the `help` command Johannes Schindelin via GitGitGadget
2019-07-16 14:58 ` [PATCH v3 00/11] git add -i: add a rudimentary version in C (supporting only status and help so far) Johannes Schindelin via GitGitGadget
2019-07-16 14:58 ` [PATCH v3 01/11] Start to implement a built-in version of `git add --interactive` Johannes Schindelin via GitGitGadget
2019-07-31 17:52 ` Junio C Hamano
2019-08-26 21:26 ` Johannes Schindelin
2019-08-27 22:25 ` Junio C Hamano
2019-08-28 15:06 ` Johannes Schindelin
2019-08-28 15:37 ` Junio C Hamano
2019-07-16 14:58 ` [PATCH v3 03/11] built-in add -i: implement the `status` command Daniel Ferreira via GitGitGadget
2019-07-31 18:12 ` Junio C Hamano
2019-08-27 10:04 ` Johannes Schindelin
2019-07-16 14:58 ` [PATCH v3 02/11] diff: export diffstat interface Daniel Ferreira via GitGitGadget
2019-07-31 17:59 ` Junio C Hamano
2019-08-27 9:22 ` Johannes Schindelin
2019-07-16 14:58 ` [PATCH v3 04/11] built-in add -i: refresh the index before running `status` Johannes Schindelin via GitGitGadget
2019-07-16 14:58 ` [PATCH v3 05/11] built-in add -i: color the header in the `status` command Johannes Schindelin via GitGitGadget
2019-07-16 14:58 ` [PATCH v3 06/11] built-in add -i: implement the main loop Johannes Schindelin via GitGitGadget
2019-07-31 18:14 ` Junio C Hamano
2019-07-16 14:58 ` [PATCH v3 07/11] Add a function to determine unique prefixes for a list of strings Slavica Djukic via GitGitGadget
2019-07-31 18:39 ` Junio C Hamano
2019-08-24 12:38 ` SZEDER Gábor
2019-08-27 12:14 ` Johannes Schindelin
2019-08-28 16:30 ` SZEDER Gábor
2019-08-28 16:34 ` [PATCH] [PoC] A simpler find_unique_prefixes() implementation SZEDER Gábor
2019-08-30 20:12 ` Johannes Schindelin
2019-07-16 14:58 ` [PATCH v3 08/11] built-in add -i: show unique prefixes of the commands Slavica Djukic via GitGitGadget
2019-07-16 14:58 ` [PATCH v3 09/11] built-in add -i: support `?` (prompt help) Johannes Schindelin via GitGitGadget
2019-07-16 14:58 ` [PATCH v3 10/11] built-in add -i: use color in the main loop Slavica Djukic via GitGitGadget
2019-07-16 14:58 ` [PATCH v3 11/11] built-in add -i: implement the `help` command Johannes Schindelin via GitGitGadget
2019-08-02 21:04 ` Junio C Hamano
2019-08-02 22:26 ` Jeff King
2019-07-16 18:38 ` [PATCH v3 00/11] git add -i: add a rudimentary version in C (supporting only status and help so far) Johannes Schindelin
2019-08-02 21:06 ` Junio C Hamano
2019-08-27 12:57 ` [PATCH v4 " Johannes Schindelin via GitGitGadget
2019-08-27 12:57 ` [PATCH v4 01/11] Start to implement a built-in version of `git add --interactive` Johannes Schindelin via GitGitGadget
2019-08-27 12:57 ` [PATCH v4 02/11] diff: export diffstat interface Daniel Ferreira via GitGitGadget
2019-08-27 12:57 ` [PATCH v4 03/11] built-in add -i: implement the `status` command Daniel Ferreira via GitGitGadget
2019-08-27 12:57 ` [PATCH v4 04/11] built-in add -i: refresh the index before running `status` Johannes Schindelin via GitGitGadget
2019-08-27 12:57 ` [PATCH v4 05/11] built-in add -i: color the header in the `status` command Johannes Schindelin via GitGitGadget
2019-08-27 12:57 ` [PATCH v4 06/11] built-in add -i: implement the main loop Johannes Schindelin via GitGitGadget
2019-08-27 12:57 ` [PATCH v4 07/11] Add a function to determine unique prefixes for a list of strings Slavica Djukic via GitGitGadget
2019-08-27 12:57 ` [PATCH v4 08/11] built-in add -i: show unique prefixes of the commands Slavica Djukic via GitGitGadget
2019-08-27 12:58 ` [PATCH v4 09/11] built-in add -i: support `?` (prompt help) Johannes Schindelin via GitGitGadget
2019-08-27 12:58 ` [PATCH v4 10/11] built-in add -i: use color in the main loop Slavica Djukic via GitGitGadget
2019-08-27 12:58 ` [PATCH v4 11/11] built-in add -i: implement the `help` command Johannes Schindelin via GitGitGadget
2019-11-04 12:15 ` [PATCH v5 0/9] git add -i: add a rudimentary version in C (supporting only status and help so far) Johannes Schindelin via GitGitGadget
2019-11-04 12:15 ` [PATCH v5 1/9] Start to implement a built-in version of `git add --interactive` Johannes Schindelin via GitGitGadget
2019-11-08 4:49 ` Junio C Hamano
2019-11-09 11:06 ` Johannes Schindelin
2019-11-10 7:18 ` Junio C Hamano
2019-11-11 9:15 ` Johannes Schindelin
2019-11-11 12:09 ` Junio C Hamano
2019-11-12 15:03 ` Johannes Schindelin
2019-11-13 3:54 ` Junio C Hamano
2019-11-13 12:30 ` Johannes Schindelin
2019-11-13 14:01 ` Junio C Hamano
2019-11-04 12:15 ` [PATCH v5 2/9] diff: export diffstat interface Daniel Ferreira via GitGitGadget
2019-11-08 4:56 ` Junio C Hamano
2019-11-04 12:15 ` [PATCH v5 3/9] built-in add -i: implement the `status` command Daniel Ferreira via GitGitGadget
2019-11-08 5:01 ` Junio C Hamano
2019-11-04 12:15 ` [PATCH v5 4/9] built-in add -i: color the header in " Slavica Đukić via GitGitGadget
2019-11-04 12:15 ` [PATCH v5 5/9] built-in add -i: implement the main loop Johannes Schindelin via GitGitGadget
2019-11-08 5:17 ` Junio C Hamano
2019-11-09 11:21 ` Johannes Schindelin
2019-11-04 12:15 ` [PATCH v5 6/9] built-in add -i: show unique prefixes of the commands Johannes Schindelin via GitGitGadget
2019-11-04 12:15 ` [PATCH v5 7/9] built-in add -i: support `?` (prompt help) Johannes Schindelin via GitGitGadget
2019-11-04 12:15 ` [PATCH v5 8/9] built-in add -i: use color in the main loop Slavica Đukić via GitGitGadget
2019-11-04 12:15 ` [PATCH v5 9/9] built-in add -i: implement the `help` command Slavica Đukić via GitGitGadget
2019-11-13 12:40 ` [PATCH v6 0/9] git add -i: add a rudimentary version in C (supporting only status and help so far) Johannes Schindelin via GitGitGadget
2019-11-13 12:40 ` [PATCH v6 1/9] Start to implement a built-in version of `git add --interactive` Johannes Schindelin via GitGitGadget
2019-11-14 2:15 ` Junio C Hamano
2019-11-14 15:07 ` Johannes Schindelin
2019-11-15 4:35 ` Junio C Hamano
2019-11-13 12:40 ` [PATCH v6 2/9] diff: export diffstat interface Daniel Ferreira via GitGitGadget
2019-11-13 12:40 ` [PATCH v6 3/9] built-in add -i: implement the `status` command Daniel Ferreira via GitGitGadget
2019-11-13 12:41 ` [PATCH v6 4/9] built-in add -i: color the header in " Slavica Đukić via GitGitGadget
2019-11-13 12:41 ` [PATCH v6 5/9] built-in add -i: implement the main loop Johannes Schindelin via GitGitGadget
2019-11-13 12:41 ` [PATCH v6 6/9] built-in add -i: show unique prefixes of the commands Johannes Schindelin via GitGitGadget
2019-11-13 12:41 ` [PATCH v6 7/9] built-in add -i: support `?` (prompt help) Johannes Schindelin via GitGitGadget
2019-11-13 12:41 ` [PATCH v6 8/9] built-in add -i: use color in the main loop Slavica Đukić via GitGitGadget
2019-11-13 12:41 ` [PATCH v6 9/9] built-in add -i: implement the `help` command Slavica Đukić via GitGitGadget
2019-11-13 12:46 ` [PATCH v6 0/9] git add -i: add a rudimentary version in C (supporting only status and help so far) Johannes Schindelin
2019-11-15 11:11 ` [PATCH v7 " Johannes Schindelin via GitGitGadget
2019-11-15 11:11 ` [PATCH v7 1/9] Start to implement a built-in version of `git add --interactive` Johannes Schindelin via GitGitGadget
2019-11-15 11:11 ` [PATCH v7 2/9] diff: export diffstat interface Daniel Ferreira via GitGitGadget
2019-11-15 11:11 ` [PATCH v7 3/9] built-in add -i: implement the `status` command Daniel Ferreira via GitGitGadget
2019-11-15 11:11 ` [PATCH v7 4/9] built-in add -i: color the header in " Slavica Đukić via GitGitGadget
2019-11-15 11:11 ` [PATCH v7 5/9] built-in add -i: implement the main loop Johannes Schindelin via GitGitGadget
2019-11-15 11:11 ` [PATCH v7 6/9] built-in add -i: show unique prefixes of the commands Johannes Schindelin via GitGitGadget
2019-11-15 11:11 ` [PATCH v7 7/9] built-in add -i: support `?` (prompt help) Johannes Schindelin via GitGitGadget
2019-11-15 11:11 ` [PATCH v7 8/9] built-in add -i: use color in the main loop Slavica Đukić via GitGitGadget
2019-11-15 11:11 ` [PATCH v7 9/9] built-in add -i: implement the `help` command Slavica Đukić via GitGitGadget
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3e1a88d9c038818fb0d53483e6d9c569d687b38e.1554917868.git.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=slawica92@hotmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).