softwrap: count softwrapped chunks properly in read_file()

Use less_than_a_screenful() again, just as in do_uncut_text().
master
David Lawrence Ramsey 2017-02-07 22:09:16 -06:00 committed by Benno Schulenberg
parent 4f9c563e6b
commit fd82989e29
1 changed files with 7 additions and 1 deletions

View File

@ -742,6 +742,8 @@ void read_file(FILE *f, int fd, const char *filename, bool undoable,
{ {
ssize_t was_lineno = openfile->current->lineno; ssize_t was_lineno = openfile->current->lineno;
/* The line number where we start the insertion. */ /* The line number where we start the insertion. */
size_t was_leftedge = 0;
/* The leftedge where we start the insertion. */
size_t num_lines = 0; size_t num_lines = 0;
/* The number of lines in the file. */ /* The number of lines in the file. */
size_t len = 0; size_t len = 0;
@ -771,6 +773,9 @@ void read_file(FILE *f, int fd, const char *filename, bool undoable,
#ifndef NANO_TINY #ifndef NANO_TINY
if (undoable) if (undoable)
add_undo(INSERT); add_undo(INSERT);
if (ISSET(SOFTWRAP))
was_leftedge = (xplustabs() / editwincols) * editwincols;
#endif #endif
/* Create an empty buffer. */ /* Create an empty buffer. */
@ -919,7 +924,8 @@ void read_file(FILE *f, int fd, const char *filename, bool undoable,
statusline(HUSH, P_("Read %lu line", "Read %lu lines", statusline(HUSH, P_("Read %lu line", "Read %lu lines",
(unsigned long)num_lines), (unsigned long)num_lines); (unsigned long)num_lines), (unsigned long)num_lines);
if (openfile->current->lineno - was_lineno < editwinrows) /* If we inserted less than a screenful, don't center the cursor. */
if (less_than_a_screenful(was_lineno, was_leftedge))
focusing = FALSE; focusing = FALSE;
#ifndef NANO_TINY #ifndef NANO_TINY