From cbac1b10d38d086bd78a43a719e08645829ae33d Mon Sep 17 00:00:00 2001 From: Laurent MAZET Date: Wed, 15 May 2024 14:11:23 +0200 Subject: [PATCH] vim command mode in getstring function --- tui.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/tui.c b/tui.c index 9a3a2d0..98e4f35 100644 --- a/tui.c +++ b/tui.c @@ -326,7 +326,6 @@ void mainmenu(menu *mp) break; case KEY_ESC: - case ':': mainhelp(); break; @@ -663,17 +662,44 @@ int weditstr(WINDOW *win, char *buf, int field) keypad(wedit, TRUE); curs_set(1); + int mode = 0; while (!stop) { idle(); repainteditbox(wedit, bp - buf, buf); - switch (c = wgetch(wedit)) - { + c = wgetch(wedit); + if (mode) { + switch (c) { + case 'i': + c = KEY_UP; + break; + case 'j': + c = KEY_LEFT; + break; + case 'k': + c = KEY_DOWN; + break; + case 'l': + c = KEY_RIGHT; + break; + case '\n': + case KEY_ESC: + mode = 0; + /* fallthrough */ + default: + c = ERR; + } + } + switch (c) { case ERR: break; case KEY_ESC: + if (!mode) { + mode = 1; + break; + } strcpy(buf, org); /* restore original */ stop = TRUE; break; -- 2.30.2