]> git.wh0rd.org Git - nano.git/commitdiff
fix the last of the breakage (I hope) in find_paragraph() and
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Fri, 11 Nov 2005 05:13:28 +0000 (05:13 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Fri, 11 Nov 2005 05:13:28 +0000 (05:13 +0000)
do_justify()

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3161 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/text.c

index 86eb2babae7bbff6da63d3731c66f67aee964e20..3b36463aec71deecdf5fc7f3f2a0803545ce2a21 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -41,8 +41,8 @@ CVS code -
          always ends in a magicline.  Changes to cut_line(),
          do_cut_till_end(), open_buffer(), read_file(), write_file(),
          do_last_line(), do_para_end(), backup_lines(),
-         find_paragraph(), do_justify() (not completely fixed yet),
-         do_alt_speller(), and do_wordlinechar_count(). (DLR)
+         find_paragraph(), do_justify(), do_alt_speller(), and
+         do_wordlinechar_count(). (DLR)
        - Tweak a few functions to rely on fileage and filebot instead
          of NULL for their checks to detect the top or bottom of the
          file.  Changes to cut_line(), cut_to_eol(), do_page_up(),
index 31255c1f2924dc852a4d720a8f3374c9f6679062..d28ddd4708c585e7308a8c18da9ddf61ed630d97 100644 (file)
@@ -1062,35 +1062,42 @@ bool find_paragraph(size_t *const quote, size_t *const par)
        return FALSE;
 
     /* If the current line isn't in a paragraph, move forward to the
-     * line after the last line of the next paragraph, if any.  If the
-     * line before that isn't in a paragraph, it means that there aren't
-     * any paragraphs left, so get out.  Otherwise, move back to the
-     * last line of the paragraph.  If the current line is in a
-     * paragraph and it isn't the first line of that paragraph, move
-     * back to the first line of the paragraph. */
+     * last line of the next paragraph, if any. */
     if (!inpar(openfile->current)) {
-       current_save = openfile->current;
        do_para_end(FALSE);
-       if (!inpar(openfile->current->prev))
-           return FALSE;
-       if (openfile->current != openfile->fileage)
-           openfile->current = openfile->current->prev;
+       /* If we end up past the beginning of the line, it means that
+        * we're at the end of the last line of the file, and the line
+        * isn't blank, in which case the last line of the file is the
+        * last line of the next paragraph.
+        *
+        * Otherwise, if we end up on a line that's in a paragraph, it
+        * means that we're on the line after the last line of the next
+        * paragraph, in which case we should move back to the last line
+        * of the next paragraph. */
+       if (openfile->current_x == 0) {
+           if (!inpar(openfile->current->prev))
+               return FALSE;
+           if (openfile->current != openfile->fileage)
+               openfile->current = openfile->current->prev;
+       }
     }
+    /* If the current line isn't the first line of the paragraph, move
+     * back to the first line of the paragraph. */
     if (!begpar(openfile->current))
        do_para_begin(FALSE);
 
     /* 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.  If, while calculating the latter, we
-     * end up past the beginning of the line, it means that we're at the
-     * end of the last line of the file, and the line isn't blank, in
-     * which case the last line of the file is part of this
-     * paragraph. */
+     * of lines in this paragraph. */
     quote_len = quote_length(openfile->current->data);
     current_save = openfile->current;
     current_y_save = openfile->current_y;
     do_para_end(FALSE);
     par_len = openfile->current->lineno - current_save->lineno;
+    /* If we end up past the beginning of the line, it means that we're
+     * at the end of the last line of the file, and the line isn't
+     * blank, in which case the last line of the file is part of the
+     * paragraph. */
     if (openfile->current_x > 0)
        par_len++;
     openfile->current = current_save;
@@ -1162,11 +1169,11 @@ void do_justify(bool full_justify)
            /* The first indentation that doesn't match the initial
             * indentation of the paragraph we justify.  This is put at
             * the beginning of every line broken off the first
-            * justified line of the paragraph.  (Note that this works
+            * justified line of the paragraph.  Note that this works
             * because a paragraph can only contain two indentations at
             * most: the initial one, and a different one starting on a
             * line after the first.  See the comment at begpar() for
-            * more about when a line is part of a paragraph.) */
+            * more about when a line is part of a paragraph. */
 
        /* Find the first line of the paragraph to be justified.  That
         * is the start of this paragraph if we're in one, or the start