aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--config.c2
-rw-r--r--input_field.c4
-rw-r--r--keybind.c8
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);