]> git.wh0rd.org Git - nano.git/commitdiff
some random totsize-related bugfixes. (do_justify & do_wrap)
authorRobert Siemborski <rjs3@andrew.cmu.edu>
Mon, 24 Jul 2000 23:18:48 +0000 (23:18 +0000)
committerRobert Siemborski <rjs3@andrew.cmu.edu>
Mon, 24 Jul 2000 23:18:48 +0000 (23:18 +0000)
shouldn't break anything (famous last words)

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

BUGS
ChangeLog
nano.c

diff --git a/BUGS b/BUGS
index fd14e0ba5981a79210bb532fd2a3da57fc41f893..da44e1b420f729a00823da9a3afb6fd8977af58d 100644 (file)
--- a/BUGS
+++ b/BUGS
   user exit (29, discovered by Joshua Jensen) [FIXED]
 - Using nano -k, marked text is not cut properly. (31) [FIXED]
 - Invoking -t or -k has the effect of invoking both option. (32) [FIXED]
+- totsize becomes incorrect after word-wrapping (25) [FIXED]
+   - similar problem found and corrected in do_justify
+- Wrapping a line with autoindent mode sometimes causes a segfault (19)[FIXED]
+- When inserting files, the display sometimes fails to display properly
+  until a pageup/down occurs (22)[FIXED]
 
 ** Open BUGS **
 
   program.  Nano only uses ispell (for now) (12)
 - Cutting a file with marked text and both marker ends on the same line
   causes a random segfault (16)
-- Wrapping a line with autoindent mode sometimes causes a segfault (19).
-- When inserting files, the display sometimes fails to display properly
-  until a pageup/down occurs (22).
-- totsize becomes incorrect after word-wrapping (25)
 - In search/replace code there is too much refreshing in bottomwin (26)
 - In replace, there is no way to accept the default replace string. (27)
 - Using nano -t, user can not exit until a filename is given via ^O. (30)
index 217691573048e94de9598ce541f67147628a7495..f936e317abe3e2d7e4a882c24895dacc1728082a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,9 @@ Changes in CVS -
   do_writeout()
        - Changed check for filename to filename[0].  Added some code, 
          overall fixes bug #30 =-)
+- nano.c:
+  do_justify() & do_wrap():
+       - totsize-related fixes (Rob)
 
 nano-0.9.13 - 07/23/2000
 - Implemented Pico's -k mode.  New flag CUT_TO_END, option (-k, --cut), 
diff --git a/nano.c b/nano.c
index 42e5b901ac4d56a3811d7a41d76f289891a7f2ae..185e6edc888e289135a977ad7b516608deba61ef 100644 (file)
--- a/nano.c
+++ b/nano.c
@@ -844,7 +844,9 @@ void do_wrap(filestruct * inptr, char input_char)
 
 
     totlines++;
-    totsize++;
+    /* Everything about it makes me want this line here but it causes
+     * totsize to be high by one for some reason.  Sigh. (Rob) */
+    /* totsize++; */
 
     renumber(inptr);
     edit_update_top(edittop);
@@ -1399,56 +1401,61 @@ int do_justify(void)
 
        unlink_node(tmpnode);
        delete_node(tmpnode);
-
     }
 
+    totsize -= strlen(current->data);
+
     justify_format(current->data);
 
     slen = strlen(current->data);
-    while ((strlenpt(current->data) > (fill))
-          && !no_spaces(current->data)) {
-       int i = 0;
-       int len2 = 0;
-       filestruct *tmpline = nmalloc(sizeof(filestruct));
-
-       /* Start at fill , unless line isn't that long (but it appears at least
-        * fill long with tabs.
-        */
-       if (slen > fill)
-           i = fill;
-       else
-           i = slen;
-       for (; i > 0; i--) {
-           if (isspace(current->data[i]) &&
-               ((strlenpt(current->data) - strlen(current->data + i)) <=
-                fill)) break;
-       }
-       if (!i)
-           break;
+    totsize += slen;
+
+    if((strlenpt(current->data) > (fill))
+           && !no_spaces(current->data)) {
+       do {
+           int i = 0;
+           int len2 = 0;
+           filestruct *tmpline = nmalloc(sizeof(filestruct));
+
+           /* Start at fill , unless line isn't that long (but it 
+            * appears at least fill long with tabs.
+            */
+           if (slen > fill)
+               i = fill;
+           else
+               i = slen;
+           for (; i > 0; i--) {
+               if (isspace(current->data[i]) &&
+                   ((strlenpt(current->data) - strlen(current->data +i)) <=
+                    fill)) break;
+           }
+           if (!i)
+               break;
 
-       current->data[i] = '\0';
+           current->data[i] = '\0';
 
-       len2 = strlen(current->data + i + 1);
-       tmpline->data = nmalloc(len2 + 1);
+           len2 = strlen(current->data + i + 1);
+           tmpline->data = nmalloc(len2 + 1);
 
-       /* Skip the white space in current. */
-       memcpy(tmpline->data, current->data + i + 1, len2);
-       tmpline->data[len2] = '\0';
+           /* Skip the white space in current. */
+           memcpy(tmpline->data, current->data + i + 1, len2);
+           tmpline->data[len2] = '\0';
 
-       current->data = nrealloc(current->data, i + 1);
+           current->data = nrealloc(current->data, i + 1);
 
-       tmpline->prev = current;
-       tmpline->next = current->next;
-       if (current->next != NULL)
-           current->next->prev = tmpline;
+           tmpline->prev = current;
+           tmpline->next = current->next;
+           if (current->next != NULL)
+               current->next->prev = tmpline;
 
-       current->next = tmpline;
-       current = tmpline;
-       slen -= i + 1;
-       current_y++;
+           current->next = tmpline;
+           current = tmpline;
+           slen -= i + 1;
+           current_y++;
+        } while ((strlenpt(current->data) > (fill))
+               && !no_spaces(current->data));
     }
 
-
     if (current->next)
        current = current->next;
     else
@@ -1469,7 +1476,6 @@ int do_justify(void)
        fix_editbot();
     }
 
-
     edit_refresh();
     statusbar("Justify Complete");
     return 1;