Skip to content

Commit

Permalink
built-in add -p: implement the 'q' ("quit") command
Browse files Browse the repository at this point in the history
This command is actually very similar to the 'd' ("do not stage this
hunk or any of the later hunks in the file") command: it just does
something on top, namely leave the loop and return a value indicating
that we're quittin'.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
dscho authored and gitster committed Dec 13, 2019
1 parent d6cf873 commit ade246e
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions add-patch.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ enum prompt_mode_type {
};

static const char *prompt_mode[] = {
N_("Stage mode change [y,n,a,d%s,?]? "),
N_("Stage deletion [y,n,a,d%s,?]? "),
N_("Stage this hunk [y,n,a,d%s,?]? ")
N_("Stage mode change [y,n,a,q,d%s,?]? "),
N_("Stage deletion [y,n,a,q,d%s,?]? "),
N_("Stage this hunk [y,n,a,q,d%s,?]? ")
};

struct hunk_header {
Expand Down Expand Up @@ -1006,6 +1006,7 @@ static size_t display_hunks(struct add_p_state *s,
static const char help_patch_text[] =
N_("y - stage this hunk\n"
"n - do not stage this hunk\n"
"q - quit; do not stage this hunk or any of the remaining ones\n"
"a - stage this and all the remaining hunks\n"
"d - do not stage this hunk nor any of the remaining hunks\n"
"j - leave this hunk undecided, see next undecided hunk\n"
Expand All @@ -1026,7 +1027,7 @@ static int patch_update_file(struct add_p_state *s,
struct hunk *hunk;
char ch;
struct child_process cp = CHILD_PROCESS_INIT;
int colored = !!s->colored.len;
int colored = !!s->colored.len, quit = 0;
enum prompt_mode_type prompt_mode_type;

if (!file_diff->hunk_nr)
Expand Down Expand Up @@ -1115,12 +1116,16 @@ static int patch_update_file(struct add_p_state *s,
if (hunk->use == UNDECIDED_HUNK)
hunk->use = USE_HUNK;
}
} else if (ch == 'd') {
} else if (ch == 'd' || ch == 'q') {
for (; hunk_index < file_diff->hunk_nr; hunk_index++) {
hunk = file_diff->hunk + hunk_index;
if (hunk->use == UNDECIDED_HUNK)
hunk->use = SKIP_HUNK;
}
if (ch == 'q') {
quit = 1;
break;
}
} else if (s->answer.buf[0] == 'K') {
if (hunk_index)
hunk_index--;
Expand Down Expand Up @@ -1267,7 +1272,7 @@ static int patch_update_file(struct add_p_state *s,
}

putchar('\n');
return 0;
return quit;
}

int run_add_p(struct repository *r, const struct pathspec *ps)
Expand Down

0 comments on commit ade246e

Please sign in to comment.