diff -uNrbbwp mc-4.8.30/src/editor/edit.c mc-4.8.30-new/src/editor/edit.c --- mc-4.8.30/src/editor/edit.c 2023-08-13 18:52:25.000000000 +0000 +++ mc-4.8.30-new/src/editor/edit.c 2023-09-08 19:10:24.686942062 +0000 @@ -835,6 +835,26 @@ edit_end_page (WEdit * edit) edit_move_down (edit, WIDGET (edit)->rect.lines - edit->curs_row - 1, FALSE); } +/* returns index of first char on line or the first nonspace char */ +long edit_bol_var (WEdit * edit, long current) +{ + long tmp; + int b; + + if (current < 0) + return 0; + + if (edit_get_byte (edit, current - 1) != '\n') /* not at BOL */ + return edit_bol (edit, current); + + if (edit_get_byte (edit, current) == '\n') /* on an empty line */ + return current; + + for (tmp = current; (b = edit_get_byte (edit, tmp)) != '\n'; tmp++) + if (b != ' ' && b != '\t') + return tmp; + return current; +} /* --------------------------------------------------------------------------------------------- */ /** goto beginning of text */ @@ -874,7 +894,8 @@ edit_move_to_bottom (WEdit * edit) static void edit_cursor_to_bol (WEdit * edit) { - edit_cursor_move (edit, edit_buffer_get_current_bol (&edit->buffer) - edit->buffer.curs1); + edit_cursor_move (edit, edit_bol_var (edit, edit->curs1) - edit->curs1); +// edit_cursor_move (edit, edit_buffer_get_current_bol (&edit->buffer) - edit->buffer.curs1); edit->search_start = edit->buffer.curs1; edit->prev_col = edit_get_col (edit); edit->over_col = 0;