- Consistently make the flags global and any variables used to
hold it longs. (DLR)
- Make edit_scroll() sophisticated enough to keep track of
- current and current_x, update the lines before and after the
- scrolled region, and properly scroll more than editwinrows
- lines; and change the movement functions that use
- edit_scroll() to (a) set current and current_x before calling
- it, and (b) no longer call edit_redraw() afterward, as it's
- now unnecessary. These changes eliminate redundant screen
- updates when the mark is on, since the mark display depends on
- current and current_x. Changes to edit_scroll(),
- do_page_up(), do_page_down(), do_up(), and do_down(). (DLR)
+ current and current_x and update the lines before and after
+ the scrolled region, and change the movement functions that
+ use edit_scroll() to (a) set current and current_x before
+ calling it, and (b) no longer call edit_redraw() afterward,
+ since it's now unnecessary. These changes eliminate
+ redundant screen updates when the mark is on, since the mark
+ display depends on current and current_x. Changes to
+ edit_scroll(), do_page_up(), do_page_down(), do_up(), and
+ do_down(). (DLR)
- Consistently make the fg and bg colortype struct entries and
any variables used to hold them shorts. Changes to
do_colorinit() (renamed color_init()), color_to_int() (renamed
const filestruct *foo;
int i;
- /* Don't bother scrolling less than one line. */
- if (nlines < 1)
+ /* Scrolling less than one line or more than editwinrows lines is
+ * redundant, so don't allow it. */
+ if (nlines < 1 || nlines > editwinrows)
return;
/* Move the top line of the edit window up or down (depending on the
}
}
+ /* Scroll the text on the screen up or down nlines lines, depending
+ * on the value of direction. */
+ scrollok(edit, TRUE);
+ wscrl(edit, (direction == UP) ? -nlines : nlines);
+ scrollok(edit, FALSE);
+
/* If we scrolled up, we couldn't scroll up all nlines lines, and
* we're now at the top of the file, we need to treat the entire
* screen as the scrolled region, instead of just the top nlines
* lines. */
if (direction == UP && i > 0 && openfile->edittop ==
openfile->fileage)
- nlines = editwinrows - 2;
+ nlines = editwinrows;
/* Make nlines account for the lines before and after the scrolled
- * region, if they're onscreen, and then put nlines in range of
- * editwinrows. */
+ * region, if they're onsccreen. */
nlines += 2;
if (nlines > editwinrows)
nlines = editwinrows;
- /* Scroll the text on the screen up or down nlines lines, depending
- * on the value of direction. */
- scrollok(edit, TRUE);
- wscrl(edit, (direction == UP) ? -nlines : nlines);
- scrollok(edit, FALSE);
-
/* If we scrolled up, we're on the line before the scrolled
* region. */
foo = openfile->edittop;