stop using key argument in kill command handler

adds  kill --command  as alternative way to call kill command and
binds  C-a k  and  C-a C-k  to call it
This commit is contained in:
Amadeusz Sławiński
2018-04-04 11:07:22 +02:00
parent 6461828e34
commit 506477bf85
2 changed files with 19 additions and 7 deletions

View File

@@ -131,7 +131,7 @@ struct comm comms[RC_LAST + 1] =
{ "ignorecase", ARGS_01, {NULL} },
{ "info", CAN_QUERY|NEED_LAYER|ARGS_0, {NULL} },
{ "kanji", NEED_FORE|ARGS_12, {NULL} },
{ "kill", NEED_FORE|ARGS_0, {NULL} },
{ "kill", NEED_FORE|ARGS_01, {NULL} },
{ "lastmsg", CAN_QUERY|NEED_DISPLAY|ARGS_0, {NULL} },
{ "layout", ARGS_1|ARGS_ORMORE, {NULL} },
{ "license", NEED_LAYER|ARGS_0, {NULL} },

View File

@@ -439,7 +439,13 @@ void InitKeytab()
ktab[' '].nr = ktab[Ctrl(' ')].nr = ktab['n'].nr = ktab[Ctrl('n')].nr = RC_NEXT;
ktab['N'].nr = RC_NUMBER;
ktab[Ctrl('h')].nr = ktab[0177].nr = ktab['p'].nr = ktab[Ctrl('p')].nr = RC_PREV;
ktab['k'].nr = ktab[Ctrl('k')].nr = RC_KILL;
{
char *args[2];
args[0] = "--confirm";
args[1] = NULL;
SaveAction(ktab + 'k', RC_KILL, args, 0);
SaveAction(ktab + Ctrl('k'), RC_KILL, args, 0);
}
ktab['l'].nr = ktab[Ctrl('l')].nr = RC_REDISPLAY;
ktab['w'].nr = ktab[Ctrl('w')].nr = RC_WINDOWS;
ktab['v'].nr = RC_VERSION;
@@ -1086,15 +1092,21 @@ static void DoCommandPrev(struct action *act, int key)
static void DoCommandKill(struct action *act, int key)
{
char **args = act->args;
char *name;
int n;
(void)act; /* unused */
(void)key; /* unused */
if (key >= 0) {
Input(fore->w_pwin ? "Really kill this filter [y/n]" : "Really kill this window [y/n]",
1, INP_RAW, confirm_fn, NULL, RC_KILL);
return;
if (*args) {
if (!strcmp(*args, "--confirm")) {
Input(fore->w_pwin ? "Really kill this filter [y/n]" : "Really kill this window [y/n]",
1, INP_RAW, confirm_fn, NULL, RC_KILL);
return;
} else {
OutputMsg(0, "usage: kill [--confirm]");
return;
}
}
n = fore->w_number;
if (fore->w_pwin) {