From 506477bf85bc9750650792653711701fb3d391c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amadeusz=20S=C5=82awi=C5=84ski?= Date: Wed, 4 Apr 2018 11:07:22 +0200 Subject: [PATCH] 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 --- src/comm.c | 2 +- src/process.c | 24 ++++++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/comm.c b/src/comm.c index 1ebe0de..c466d85 100644 --- a/src/comm.c +++ b/src/comm.c @@ -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} }, diff --git a/src/process.c b/src/process.c index 64c56d6..d2e6c90 100644 --- a/src/process.c +++ b/src/process.c @@ -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) {