diff options
| author | Jack Jamison <jackqjamison@gmail.com> | 2025-11-05 14:11:42 -0500 |
|---|---|---|
| committer | Jack Jamison <jackqjamison@gmail.com> | 2025-11-06 19:45:19 -0500 |
| commit | 3971f0faeaa5254a5b2145685549e0b78266ba06 (patch) | |
| tree | 76241fa4cd42a214c33aae1f41d0e39cb7c3112f | |
| parent | d2d5f7c9a78b0e8d186953ff81c52b66b684da9f (diff) | |
improve keybinds slightly
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | config.c | 2 | ||||
| -rw-r--r-- | input_field.c | 4 | ||||
| -rw-r--r-- | keybind.c | 8 |
4 files changed, 13 insertions, 2 deletions
@@ -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: @@ -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) { @@ -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); |
