]> git.wh0rd.org Git - nano.git/commitdiff
fix breakage in find_paragraph() and do_justify()
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Wed, 9 Nov 2005 19:51:48 +0000 (19:51 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Wed, 9 Nov 2005 19:51:48 +0000 (19:51 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3131 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

src/text.c

index 5df8fecac5fc9894fabe7f67ee17abf35ab16cd2..212d8c899066c8c32b448a46999e90fb8c533122 100644 (file)
@@ -1081,20 +1081,21 @@ bool find_paragraph(size_t *const quote, size_t *const par)
 
     /* Now current is the first line of the paragraph.  Set quote_len to
      * the quotation length of that line, and set par_len to the number
-     * of lines in this paragraph by temporarily moving to the last line
-     * of it and saving the difference in line numbers.  If, after
-     * moving, we end up on the same line and x-coordinate as before, it
-     * means that there aren't any paragraphs left, so get out.  If we
-     * end up on the same line with a different x-coordinate from
-     * before, it means that the line is part of the paragraph. */
+     * of lines in this paragraph.  If, while calculating the latter, we
+     * end up at the end of the last line of the file, and we were there
+     * before moving, it means that there aren't any paragraphs left, so
+     * get out.  If we weren't there before moving, it means that the
+     * line is part of the paragraph. */
     quote_len = quote_length(openfile->current->data);
     current_save = openfile->current;
     current_x_save = openfile->current_x;
     current_y_save = openfile->current_y;
     do_para_end(FALSE);
     par_len = openfile->current->lineno - current_save->lineno;
-    if (openfile->current == current_save) {
-       if (openfile->current_x == current_x_save)
+    if (openfile->current == openfile->filebot && openfile->current_x ==
+       strlen(openfile->current->data)) {
+           if (openfile->current == current_save &&
+               openfile->current_x == current_x_save)
            return FALSE;
        else
            par_len++;
@@ -1271,9 +1272,11 @@ void do_justify(bool full_justify)
            strcat(openfile->current->data, next_line->data +
                indent_len);
 
-           /* Don't destroy edittop! */
+           /* Don't destroy edittop or filebot! */
            if (next_line == openfile->edittop)
                openfile->edittop = openfile->current;
+           if (next_line == openfile->filebot)
+               openfile->filebot = openfile->current;
 
 #ifndef NANO_SMALL
            /* Adjust the mark coordinates to compensate for the change