]> git.wh0rd.org Git - nano.git/commitdiff
Fix do_wrap() and fix_wrap() to handle empty lines, lines without spaces, and recursi...
authorAdam Rogoyski <rogoyski@cs.utexas.edu>
Fri, 16 Jun 2000 01:19:31 +0000 (01:19 +0000)
committerAdam Rogoyski <rogoyski@cs.utexas.edu>
Fri, 16 Jun 2000 01:19:31 +0000 (01:19 +0000)
check_wrap() for when a wrapped line needs to be wrapped when SAMELINEWRAP is set.

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

nano.c

diff --git a/nano.c b/nano.c
index befe496e0ff496461a3b1cd40ed801a129b9a085..79a1dabd6e391c54c1eb194bb5983967eb826038 100644 (file)
--- a/nano.c
+++ b/nano.c
@@ -1143,6 +1143,7 @@ assert (strlenpt(inptr->data) >= fill);
     if (ISSET(SAMELINEWRAP)) {
            /* Plus one for the space which concatenates the two lines together plus 1 for \0. */
        char *p = nmalloc(strlen(temp->data) + strlen(inptr->next->data) + 2);
+       int old_x = current_x, old_y = current_y;
 
        strcpy (p, temp->data);
        strcat (p, " ");
@@ -1153,6 +1154,21 @@ assert (strlenpt(inptr->data) >= fill);
 
        free (temp->data);
        free (temp);
+
+
+       /* The next line line may need to be wrapped as well. */
+       current_y = old_y + 1;
+       current_x = strlen(inptr->next->data);
+       while (current_x >= 0) {
+           if (isspace(inptr->next->data[current_x]) && (current_x < fill))
+               break;
+           current_x--;
+       }
+       if (current_x >= 0)
+           check_wrap(inptr->next, ' ');
+
+       current_x = old_x;
+       current_y = old_y;
     }
        /* Else we start a new line. */
     else {
@@ -1217,6 +1233,9 @@ void check_wrap(filestruct * inptr, char ch)
            if (!inptr->data[i])
                return;
 
+           if (no_spaces(inptr->data))
+               return;
+       
            do_wrap(inptr, ch);
        }
     }