From 3971f0faeaa5254a5b2145685549e0b78266ba06 Mon Sep 17 00:00:00 2001 From: Jack Jamison Date: Wed, 5 Nov 2025 14:11:42 -0500 Subject: improve keybinds slightly --- README.md | 1 + config.c | 2 +- input_field.c | 4 ++++ keybind.c | 8 +++++++- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fca0b25..8581c10 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ cursor_color = (0.9, 0.9, 0.9, 0.5) - [x] "prompt" - [x] fuzzy filter - [x] config file +- [x] border - [ ] unicode + text shaping Stretch: diff --git a/config.c b/config.c index af75475..ea7a962 100644 --- a/config.c +++ b/config.c @@ -41,7 +41,7 @@ char* get_conf_path() { // bool parser bool parse_bool(const char* value) { - if (strcasecmp(value, "true") == 0 || strcasecmp(value, "t") == 0 || strcasecmp(value, "yes") == 0) { + if (strcasecmp(value, "true") == 0 || strcasecmp(value, "t") == 0 || strcasecmp(value, "yes") == 0 || strcasecmp(value, "on") == 0) { return true; } else { return false; diff --git a/input_field.c b/input_field.c index ab0492f..78e0a05 100644 --- a/input_field.c +++ b/input_field.c @@ -53,6 +53,7 @@ void filter_items(client_state* state) { if (array_size(state->input_buffer)) { qsort(state->filtered_items, array_size(state->filtered_items), sizeof(item_display_t), orderless_compare); } + array_free(parts); } else { array_for_all(item_t, i, state->items) { @@ -92,6 +93,9 @@ key_repeat_t type_key(client_state* state, xkb_keysym_t keysym) { switch (keysym) { case XKB_KEY_i: return insert_selected(state); case XKB_KEY_d: return delete_word(state); + case XKB_KEY_BackSpace: return delete_word_backward(state); + case XKB_KEY_f: return forward_word(state); + case XKB_KEY_b: return backward_word(state); } } else if (ctrl) { diff --git a/keybind.c b/keybind.c index 1d8cfba..ec10c58 100644 --- a/keybind.c +++ b/keybind.c @@ -131,9 +131,15 @@ key_repeat_t kill_to_end(client_state* state) { key_repeat_t delete_word(client_state* state) { if (state->cursor_index != array_size(state->input_buffer)) { size_t endidx = state->cursor_index; + bool hit_non_white = false; for (; endidx < array_size(state->input_buffer) - 1; endidx++) { if (state->input_buffer[endidx] == ' ') { - break; + if (hit_non_white) { + endidx--; + break; + } + } else { + hit_non_white = true; } } array_erase_range(state->input_buffer, state->cursor_index, endidx); -- cgit v1.2.3