built-in add -p: implement the 'q' ("quit") command
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>
This commit is contained in:

committed by
Junio C Hamano

parent
d6cf873340
commit
ade246efed
17
add-patch.c
17
add-patch.c
@ -12,9 +12,9 @@ enum prompt_mode_type {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char *prompt_mode[] = {
|
static const char *prompt_mode[] = {
|
||||||
N_("Stage mode change [y,n,a,d%s,?]? "),
|
N_("Stage mode change [y,n,a,q,d%s,?]? "),
|
||||||
N_("Stage deletion [y,n,a,d%s,?]? "),
|
N_("Stage deletion [y,n,a,q,d%s,?]? "),
|
||||||
N_("Stage this hunk [y,n,a,d%s,?]? ")
|
N_("Stage this hunk [y,n,a,q,d%s,?]? ")
|
||||||
};
|
};
|
||||||
|
|
||||||
struct hunk_header {
|
struct hunk_header {
|
||||||
@ -1006,6 +1006,7 @@ static size_t display_hunks(struct add_p_state *s,
|
|||||||
static const char help_patch_text[] =
|
static const char help_patch_text[] =
|
||||||
N_("y - stage this hunk\n"
|
N_("y - stage this hunk\n"
|
||||||
"n - do not 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"
|
"a - stage this and all the remaining hunks\n"
|
||||||
"d - do not stage this hunk nor any of 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"
|
"j - leave this hunk undecided, see next undecided hunk\n"
|
||||||
@ -1026,7 +1027,7 @@ static int patch_update_file(struct add_p_state *s,
|
|||||||
struct hunk *hunk;
|
struct hunk *hunk;
|
||||||
char ch;
|
char ch;
|
||||||
struct child_process cp = CHILD_PROCESS_INIT;
|
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;
|
enum prompt_mode_type prompt_mode_type;
|
||||||
|
|
||||||
if (!file_diff->hunk_nr)
|
if (!file_diff->hunk_nr)
|
||||||
@ -1115,12 +1116,16 @@ soft_increment:
|
|||||||
if (hunk->use == UNDECIDED_HUNK)
|
if (hunk->use == UNDECIDED_HUNK)
|
||||||
hunk->use = USE_HUNK;
|
hunk->use = USE_HUNK;
|
||||||
}
|
}
|
||||||
} else if (ch == 'd') {
|
} else if (ch == 'd' || ch == 'q') {
|
||||||
for (; hunk_index < file_diff->hunk_nr; hunk_index++) {
|
for (; hunk_index < file_diff->hunk_nr; hunk_index++) {
|
||||||
hunk = file_diff->hunk + hunk_index;
|
hunk = file_diff->hunk + hunk_index;
|
||||||
if (hunk->use == UNDECIDED_HUNK)
|
if (hunk->use == UNDECIDED_HUNK)
|
||||||
hunk->use = SKIP_HUNK;
|
hunk->use = SKIP_HUNK;
|
||||||
}
|
}
|
||||||
|
if (ch == 'q') {
|
||||||
|
quit = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else if (s->answer.buf[0] == 'K') {
|
} else if (s->answer.buf[0] == 'K') {
|
||||||
if (hunk_index)
|
if (hunk_index)
|
||||||
hunk_index--;
|
hunk_index--;
|
||||||
@ -1267,7 +1272,7 @@ soft_increment:
|
|||||||
}
|
}
|
||||||
|
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
return 0;
|
return quit;
|
||||||
}
|
}
|
||||||
|
|
||||||
int run_add_p(struct repository *r, const struct pathspec *ps)
|
int run_add_p(struct repository *r, const struct pathspec *ps)
|
||||||
|
Reference in New Issue
Block a user