more miscellaneous do_wrap() fixes

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3214 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
This commit is contained in:
David Lawrence Ramsey 2005-11-25 13:48:09 +00:00
parent 4db1b099dd
commit b4e5c02474
2 changed files with 22 additions and 14 deletions

View File

@ -179,8 +179,11 @@ CVS code -
isn't defined, as it's only used then. (DLR) isn't defined, as it's only used then. (DLR)
- text.c: - text.c:
do_wrap() do_wrap()
- Rename variable wrapping to prepending, to avoid confusion. - Rename variable wrapping to prepending, to avoid confusion,
(DLR) and rename the static bool same_line_wrap to prepend_wrap to
match. (DLR)
- Properly add a new magicline when needed if, in the process of
wrapping, we prepend text to the last line of the file. (DLR)
break_line() break_line()
- Only include the newline parameter if DISABLE_HELP isn't - Only include the newline parameter if DISABLE_HELP isn't
defined, as it's only used then. (DLR) defined, as it's only used then. (DLR)

View File

@ -39,7 +39,7 @@ static pid_t pid = -1;
* use with the cancel_command() signal handler. */ * use with the cancel_command() signal handler. */
#endif #endif
#ifndef DISABLE_WRAPPING #ifndef DISABLE_WRAPPING
static bool same_line_wrap = FALSE; static bool prepend_wrap = FALSE;
/* Should we prepend wrapped text to the next line? */ /* Should we prepend wrapped text to the next line? */
#endif #endif
#ifndef DISABLE_JUSTIFY #ifndef DISABLE_JUSTIFY
@ -337,7 +337,7 @@ bool execute_command(const char *command)
#ifndef DISABLE_WRAPPING #ifndef DISABLE_WRAPPING
void wrap_reset(void) void wrap_reset(void)
{ {
same_line_wrap = FALSE; prepend_wrap = FALSE;
} }
/* We wrap the given line. Precondition: we assume the cursor has been /* We wrap the given line. Precondition: we assume the cursor has been
@ -424,7 +424,7 @@ bool do_wrap(filestruct *line)
* followed by the text after the wrap point, optionally followed by * followed by the text after the wrap point, optionally followed by
* a space (if the text after the wrap point doesn't end in a blank) * a space (if the text after the wrap point doesn't end in a blank)
* and the text of the next line, if they can fit without * and the text of the next line, if they can fit without
* wrapping, the next line exists, and the same_line_wrap flag is * wrapping, the next line exists, and the prepend_wrap flag is
* set. */ * set. */
/* after_break is the text that will be wrapped to the next line. */ /* after_break is the text that will be wrapped to the next line. */
@ -433,10 +433,10 @@ bool do_wrap(filestruct *line)
assert(strlen(after_break) == after_break_len); assert(strlen(after_break) == after_break_len);
/* We prepend the wrapped text to the next line, if the /* We prepend the wrapped text to the next line, if the prepend_wrap
* same_line_wrap flag is set, there is a next line, and prepending * flag is set, there is a next line, and prepending would not make
* would not make the line too long. */ * the line too long. */
if (same_line_wrap && line != openfile->filebot) { if (prepend_wrap && line != openfile->filebot) {
const char *end = after_break + move_mbleft(after_break, const char *end = after_break + move_mbleft(after_break,
after_break_len); after_break_len);
@ -509,6 +509,11 @@ bool do_wrap(filestruct *line)
free(line->next->data); free(line->next->data);
line->next->data = new_line; line->next->data = new_line;
/* If the NO_NEWLINES flag isn't set, and text has been added to
* the magicline, make a new magicline. */
if (!ISSET(NO_NEWLINES) && openfile->filebot->data[0] != '\0')
new_magicline();
} else { } else {
/* Otherwise, make a new line and copy the text after where we /* Otherwise, make a new line and copy the text after where we
* broke this line to the beginning of the new line. */ * broke this line to the beginning of the new line. */
@ -528,9 +533,9 @@ bool do_wrap(filestruct *line)
/* Step 3, clean up. Reposition the cursor and mark, and do some /* Step 3, clean up. Reposition the cursor and mark, and do some
* other sundry things. */ * other sundry things. */
/* Set the same_line_wrap flag, so that later wraps of this line /* Set the prepend_wrap flag, so that later wraps of this line will
* will be prepended to the next line. */ * be prepended to the next line. */
same_line_wrap = TRUE; prepend_wrap = TRUE;
/* Each line knows its line number. We recalculate these if we /* Each line knows its line number. We recalculate these if we
* inserted a new line. */ * inserted a new line. */
@ -538,9 +543,9 @@ bool do_wrap(filestruct *line)
renumber(line); renumber(line);
/* If the cursor was after the break point, we must move it. We /* If the cursor was after the break point, we must move it. We
* also clear the same_line_wrap flag in this case. */ * also clear the prepend_wrap flag in this case. */
if (openfile->current_x > wrap_loc) { if (openfile->current_x > wrap_loc) {
same_line_wrap = FALSE; prepend_wrap = FALSE;
openfile->current = openfile->current->next; openfile->current = openfile->current->next;
openfile->current_x -= wrap_loc openfile->current_x -= wrap_loc