From 70a1756f0996bf96809e7eb941ff78f107a1dd87 Mon Sep 17 00:00:00 2001 From: Raymaekers Luca Date: Fri, 25 Oct 2024 00:52:25 +0200 Subject: Bind Ctrl+W to erase word behind cursor Added keybinds descriptions in the readme. --- v2/README.md | 5 +++++ v2/chatty.c | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/v2/README.md b/v2/README.md index 17f3be5..f853630 100644 --- a/v2/README.md +++ b/v2/README.md @@ -50,3 +50,8 @@ M.text = ArenaPush(msgTextArena, M.text_len); ``` Notice, that this depends on knowing the text's length before allocating the memory. + +## Keybinds +- `Ctrl+C` | `Ctrl+D`: quits +- `Ctrl+U`: Erase input line +- `Ctrl+W`: Erase word behind cursor diff --git a/v2/chatty.c b/v2/chatty.c index 256cc22..4074b77 100644 --- a/v2/chatty.c +++ b/v2/chatty.c @@ -195,6 +195,25 @@ int main(int argc, char **argv) u8 exit = 0; switch (ev.key) { + case TB_KEY_CTRL_W: + // delete consecutive whitespace + while (input_len) { + if (input[input_len - 1] == L' ') { + input[input_len - 1] = 0; + input_len--; + continue; + } + break; + } + // delete until whitespace + while (input_len) { + if (input[input_len - 1] == L' ') + break; + // erase + input[input_len - 1] = 0; + input_len--; + } + break; case TB_KEY_CTRL_D: case TB_KEY_CTRL_C: exit = 1; -- cgit v1.2.3