some random totsize-related bugfixes. (do_justify & do_wrap)

shouldn't break anything (famous last words)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@125 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
This commit is contained in:
Robert Siemborski 2000-07-24 23:18:48 +00:00
parent 461b2a9dfe
commit a417ddca91
3 changed files with 52 additions and 42 deletions

9
BUGS
View File

@ -34,6 +34,11 @@
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 **
@ -45,10 +50,6 @@
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)

View File

@ -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),

82
nano.c
View File

@ -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));
totsize += slen;
/* 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;
if((strlenpt(current->data) > (fill))
&& !no_spaces(current->data)) {
do {
int i = 0;
int len2 = 0;
filestruct *tmpline = nmalloc(sizeof(filestruct));
current->data[i] = '\0';
/* 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;
len2 = strlen(current->data + i + 1);
tmpline->data = nmalloc(len2 + 1);
current->data[i] = '\0';
/* Skip the white space in current. */
memcpy(tmpline->data, current->data + i + 1, len2);
tmpline->data[len2] = '\0';
len2 = strlen(current->data + i + 1);
tmpline->data = nmalloc(len2 + 1);
current->data = nrealloc(current->data, i + 1);
/* Skip the white space in current. */
memcpy(tmpline->data, current->data + i + 1, len2);
tmpline->data[len2] = '\0';
tmpline->prev = current;
tmpline->next = current->next;
if (current->next != NULL)
current->next->prev = tmpline;
current->data = nrealloc(current->data, i + 1);
current->next = tmpline;
current = tmpline;
slen -= i + 1;
current_y++;
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++;
} 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;