1
1

cutting: when deleting whole words, don't join lines unexpectedly

That is, wait with deleting words until they start under cursor,
so the user can see which word is goin to be eaten, and join lines
only when the cursor already sits at the edge of a line.
Этот коммит содержится в:
Benno Schulenberg 2018-09-02 13:26:12 +02:00
родитель e6429e782a
Коммит e21ce0db1f

Просмотреть файл

@ -205,11 +205,27 @@ void do_cutword(bool backward)
cutbuffer = NULL;
cutbottom = NULL;
/* Move the cursor to a word start, to the left or to the right. */
if (backward)
/* Move the cursor to a word start, to the left or to the right.
* If that word is on another line and the cursor was not already
* on the edge of the original line, then put the cursor on that
* edge instead, so that lines will not be joined unexpectedly. */
if (backward) {
do_prev_word(ISSET(WORD_BOUNDS), FALSE);
else
if (openfile->current != is_current) {
if (is_current_x > 0) {
openfile->current = is_current;
openfile->current_x = 0;
} else
openfile->current_x = strlen(openfile->current->data);
}
} else {
do_next_word(FALSE, ISSET(WORD_BOUNDS), FALSE);
if (openfile->current != is_current &&
is_current->data[is_current_x] != '\0') {
openfile->current = is_current;
openfile->current_x = strlen(is_current->data);
}
}
/* Set the mark at the start of that word. */
openfile->mark = openfile->current;