delete-or-exit: Only exit if the commandline is empty

This exitted if the cursor was at the end of the line as well (i.e. if
delete-char failed). That's a bit too eager.

Also documentation, which should have already been included.
This commit is contained in:
Fabian Homborg 2019-07-03 11:44:08 +02:00
parent 4ae18951ee
commit 8013686d17
2 changed files with 3 additions and 1 deletions

View File

@ -102,6 +102,8 @@ The following special input functions are available:
- ``delete-char``, delete one character to the right of the cursor - ``delete-char``, delete one character to the right of the cursor
- ``delete-or-exit``, deletes one character to the right of the cursor or exits the shell if the commandline is empty.
- ``downcase-word``, make the current word lowercase - ``downcase-word``, make the current word lowercase
- ``end-of-buffer``, moves to the end of the buffer, i.e. the end of the first line - ``end-of-buffer``, moves to the end of the buffer, i.e. the end of the first line

View File

@ -2682,7 +2682,7 @@ void reader_data_t::handle_readline_command(readline_cmd_t c, readline_loop_stat
if (el->position < el->size()) { if (el->position < el->size()) {
update_buff_pos(el, el->position + 1); update_buff_pos(el, el->position + 1);
remove_backward(); remove_backward();
} else if (c == rl::delete_or_exit) { } else if (c == rl::delete_or_exit && el->empty()) {
reader_set_end_loop(true); reader_set_end_loop(true);
} }
break; break;