From 1ebb1da382170db9b2f3d620d05cfb794212cc3a Mon Sep 17 00:00:00 2001 From: Benno Schulenberg <bensberg@telfort.nl> Date: Sat, 10 Mar 2018 12:24:42 +0100 Subject: [PATCH] tweaks: elide a parameter that is always 1 And adjust the comments accordingly. --- src/move.c | 4 ++-- src/proto.h | 2 +- src/winio.c | 45 +++++++++++++++------------------------------ 3 files changed, 18 insertions(+), 33 deletions(-) diff --git a/src/move.c b/src/move.c index 4d3df4d4..f559fb41 100644 --- a/src/move.c +++ b/src/move.c @@ -502,7 +502,7 @@ void do_up(bool scroll_only) set_proper_index_and_pww(&leftedge, target_column, FALSE); if (scroll_only) - edit_scroll(BACKWARD, 1); + edit_scroll(BACKWARD); edit_redraw(was_current, FLOWING); @@ -526,7 +526,7 @@ void do_down(bool scroll_only) set_proper_index_and_pww(&leftedge, target_column, TRUE); if (scroll_only) - edit_scroll(FORWARD, 1); + edit_scroll(FORWARD); edit_redraw(was_current, FLOWING); diff --git a/src/proto.h b/src/proto.h index 86f53d7e..551aa650 100644 --- a/src/proto.h +++ b/src/proto.h @@ -661,7 +661,7 @@ bool line_needs_update(const size_t old_column, const size_t new_column); int go_back_chunks(int nrows, filestruct **line, size_t *leftedge); int go_forward_chunks(int nrows, filestruct **line, size_t *leftedge); bool less_than_a_screenful(size_t was_lineno, size_t was_leftedge); -void edit_scroll(bool direction, int nrows); +void edit_scroll(bool direction); #ifndef NANO_TINY size_t get_softwrap_breakpoint(const char *text, size_t leftedge, bool *end_of_line); diff --git a/src/winio.c b/src/winio.c index a4803ce0..9257fe79 100644 --- a/src/winio.c +++ b/src/winio.c @@ -2912,57 +2912,42 @@ bool less_than_a_screenful(size_t was_lineno, size_t was_leftedge) return (openfile->current->lineno - was_lineno < editwinrows); } -/* Scroll the edit window in the given direction and the given number of rows, - * and draw new lines on the blank lines left after the scrolling. */ -void edit_scroll(bool direction, int nrows) +/* Scroll the edit window one row in the given direction, and + * draw the relevant content on the resultant blank row. */ +void edit_scroll(bool direction) { filestruct *line; size_t leftedge; + int remainder = 0, nrows = 1; - /* Part 1: nrows is the number of rows we're going to scroll the text of - * the edit window. */ - - /* Move the top line of the edit window the requested number of rows up or - * down, and reduce the number of rows with the amount we couldn't move. */ + /* Move the top line of the edit window one row up or down. */ if (direction == BACKWARD) - nrows -= go_back_chunks(nrows, &openfile->edittop, &openfile->firstcolumn); + remainder = go_back_chunks(1, &openfile->edittop, &openfile->firstcolumn); else - nrows -= go_forward_chunks(nrows, &openfile->edittop, &openfile->firstcolumn); + remainder = go_forward_chunks(1, &openfile->edittop, &openfile->firstcolumn); - /* Don't bother scrolling zero rows, nor more than the window can hold. */ - if (nrows == 0) { + if (remainder > 0) { #ifndef NANO_TINY - statusline(ALERT, "Underscrolling -- please report a bug"); + statusline(ALERT, "Could not scroll -- please report a bug"); #endif return; } - if (nrows >= editwinrows) { -#ifndef NANO_TINY - if (editwinrows > 1) - statusline(ALERT, "Overscrolling -- please report a bug"); -#endif - refresh_needed = TRUE; - return; - } - /* Scroll the text of the edit window a number of rows up or down. */ + /* Actually scroll the text of the edit window one row up or down. */ scrollok(edit, TRUE); - wscrl(edit, (direction == BACKWARD) ? -nrows : nrows); + wscrl(edit, (direction == BACKWARD) ? -1 : 1); scrollok(edit, FALSE); - /* Part 2: nrows is now the number of rows in the scrolled region of the - * edit window that we need to draw. */ - /* If we're not on the first "page" (when not softwrapping), or the mark * is on, the row next to the scrolled region needs to be redrawn too. */ if (line_needs_update(openfile->placewewant, 0) && nrows < editwinrows) nrows++; - /* If we scrolled backward, start on the first line of the blank region. */ + /* If we scrolled backward, the top row needs to be redrawn. */ line = openfile->edittop; leftedge = openfile->firstcolumn; - /* If we scrolled forward, move down to the start of the blank region. */ + /* If we scrolled forward, the bottom row needs to be redrawn. */ if (direction == FORWARD) go_forward_chunks(editwinrows - nrows, &line, &leftedge); @@ -2977,8 +2962,8 @@ void edit_scroll(bool direction, int nrows) } #endif - /* Draw new content on the blank rows inside the scrolled region - * (and on the bordering row too when it was deemed necessary). */ + /* Draw new content on the blank row (and on the bordering row too + * when it was deemed necessary). */ while (nrows > 0 && line != NULL) { nrows -= update_line(line, (line == openfile->current) ? openfile->current_x : 0); -- GitLab