diff --git a/src/editor/edit.c b/src/editor/edit.c index a610e01..70739d9 100644 --- a/src/editor/edit.c +++ b/src/editor/edit.c @@ -1531,6 +1531,26 @@ long edit_bol (WEdit * edit, long current) return current; } +/* 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; +} long edit_count_lines (WEdit * edit, long current, long upto) { @@ -1923,7 +1943,7 @@ static void edit_move_to_bottom (WEdit * edit) /* goto beginning of line */ static void edit_cursor_to_bol (WEdit * edit) { - edit_cursor_move (edit, edit_bol (edit, edit->curs1) - edit->curs1); + edit_cursor_move (edit, edit_bol_var (edit, edit->curs1) - edit->curs1); edit->search_start = edit->curs1; edit->prev_col = edit_get_col (edit); edit->over_col = 0;