]> git.wh0rd.org Git - nano.git/commitdiff
Add DLR's fixes to the wrapping behavior
authorChris Allegretta <chrisa@asty.org>
Sat, 21 Sep 2002 02:19:45 +0000 (02:19 +0000)
committerChris Allegretta <chrisa@asty.org>
Sat, 21 Sep 2002 02:19:45 +0000 (02:19 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1282 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
nano.c

index 22014093542819cb7c9f25c3f85d804bc458ccb9..8cdbb70839da87b49d5d569ade1207296ef377db 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -95,7 +95,7 @@ CVS code -
          characters on the line is exactly one over the limit. (David
          Benbennick)
        - Restore the previous wrapping point behavior (pre 1.1.10)
-         (David Benbennick).
+         (David Benbennick, fixes by DLR).
   do_alt_speller()
        - Readd DLR's fix to preserve marking when using the alternate
          spell checker; it was accidentally dropped. (David
diff --git a/nano.c b/nano.c
index e73cadbaead67361d31c42a60730aa7d67430bb8..0cfdb709f16f00ecec5a44da13db5df4b88effc1 100644 (file)
--- a/nano.c
+++ b/nano.c
@@ -1479,13 +1479,13 @@ int do_wrap(filestruct *inptr)
 
 #ifndef NANO_SMALL
     if (ISSET(AUTOINDENT)) {
-       /* indentation comes from the next line if wrapping, else from
-        * this line */
+       /* Indentation comes from the next line if wrapping, else from
+        * this line. */
        indentation = (wrapping ? wrap_line : inptr->data);
        indent_len = indent_length(indentation);
        if (wrapping)
-           /* The wrap_line text should not duplicate indentation.  Note
-            * in this case we need not increase new_line_len. */
+           /* The wrap_line text should not duplicate indentation.
+            * Note in this case we need not increase new_line_len. */
            wrap_line += indent_len;
        else
            new_line_len += indent_len;
@@ -1504,13 +1504,18 @@ int do_wrap(filestruct *inptr)
 #endif
     strcat(newline, after_break);
     /* We end the old line after wrap_loc.  Note this does not eat the
-       space. */
+     * space. */
     null_at(&inptr->data, wrap_loc + 1);
     totsize++;
     if (wrapping) {
        /* In this case, totsize increases by 1 since we add a space
-          between after_break and wrap_line. */
-       strcat(newline, " ");
+        * between after_break and wrap_line.  If the line already ends
+        * in a space, we don't add a space and decrement totsize to
+        * account for that. */
+       if (newline[strlen(newline) - 1] != ' ')
+           strcat(newline, " ");
+       else
+           totsize--;
        strcat(newline, wrap_line);
        free(inptr->next->data);
        inptr->next->data = newline;
@@ -1518,7 +1523,7 @@ int do_wrap(filestruct *inptr)
        filestruct *temp = (filestruct *)nmalloc(sizeof(filestruct));
 
        /* In this case, the file size changes by +1 for the new line, and
-          +indent_len for the new indentation. */
+        * +indent_len for the new indentation. */
 #ifndef NANO_SMALL
        totsize += indent_len;
 #endif
@@ -1528,7 +1533,7 @@ int do_wrap(filestruct *inptr)
        temp->next = inptr->next;
        temp->prev->next = temp;
        /* If !temp->next, then temp is the last line of the file, so we
-        * must set filebot */
+        * must set filebot. */
        if (temp->next)
            temp->next->prev = temp;
        else