parent
9f6a36d73f
commit
bbfbf8f36c
1 changed files with 17 additions and 6 deletions
21
menu.c
21
menu.c
|
@ -337,12 +337,23 @@ static size_t nextrune(struct menu *menu, int incr) {
|
|||
|
||||
// Move the cursor to the beginning or end of the word, skipping over any preceding whitespace.
|
||||
static void movewordedge(struct menu *menu, int dir) {
|
||||
size_t len = strlen(menu->input);
|
||||
while (menu->cursor > 0 && menu->cursor < len && menu->input[nextrune(menu, dir)] == ' ') {
|
||||
menu->cursor = nextrune(menu, dir);
|
||||
if (dir < 0) {
|
||||
// Move to beginning of word
|
||||
while (menu->cursor > 0 && menu->input[nextrune(menu, -1)] == ' ') {
|
||||
menu->cursor = nextrune(menu, -1);
|
||||
}
|
||||
while (menu->cursor > 0 && menu->input[nextrune(menu, -1)] != ' ') {
|
||||
menu->cursor = nextrune(menu, -1);
|
||||
}
|
||||
} else {
|
||||
// Move to end of word
|
||||
size_t len = strlen(menu->input);
|
||||
while (menu->cursor < len && menu->input[menu->cursor] == ' ') {
|
||||
menu->cursor = nextrune(menu, +1);
|
||||
}
|
||||
while (menu->cursor < len && menu->input[menu->cursor] != ' ') {
|
||||
menu->cursor = nextrune(menu, +1);
|
||||
}
|
||||
while (menu->cursor > 0 && menu->cursor < len && menu->input[nextrune(menu, dir)] != ' ') {
|
||||
menu->cursor = nextrune(menu, dir);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue