tweak do_wrap() to remove the assumption that the file always ends in a

magicline


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3210 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
David Lawrence Ramsey 2005-11-22 21:48:24 +00:00
parent b9b2fd52ff
commit 615f4c71c0
2 changed files with 20 additions and 10 deletions

View File

@ -40,7 +40,7 @@ CVS code -
- Tweak a few functions to remove the assumption that the file - Tweak a few functions to remove the assumption that the file
always ends in a magicline. Changes to cut_line(), always ends in a magicline. Changes to cut_line(),
do_cut_till_end(), open_buffer(), read_file(), write_file(), do_cut_till_end(), open_buffer(), read_file(), write_file(),
do_last_line(), do_para_end(), backup_lines(), do_last_line(), do_para_end(), do_wrap(), backup_lines(),
find_paragraph(), do_justify(), do_alt_speller(), and find_paragraph(), do_justify(), do_alt_speller(), and
do_wordlinechar_count(). (DLR) do_wordlinechar_count(). (DLR)
- Tweak a few functions to rely on fileage and filebot instead - Tweak a few functions to rely on fileage and filebot instead
@ -178,6 +178,9 @@ CVS code -
- Only include the whole_word parameter when DISABLE_SPELLER - Only include the whole_word parameter when DISABLE_SPELLER
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()
- Rename variable wrapping to prepending, to avoid confusion.
(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

@ -359,7 +359,7 @@ bool do_wrap(filestruct *line)
/* The text after the wrap point. */ /* The text after the wrap point. */
size_t after_break_len; size_t after_break_len;
/* The length of after_break. */ /* The length of after_break. */
bool wrapping = FALSE; bool prepending = FALSE;
/* Do we prepend to the next line? */ /* Do we prepend to the next line? */
const char *next_line = NULL; const char *next_line = NULL;
/* The next line, minus indentation. */ /* The next line, minus indentation. */
@ -456,7 +456,7 @@ bool do_wrap(filestruct *line)
next_line_len = strlen(next_line); next_line_len = strlen(next_line);
if (after_break_len + next_line_len <= fill) { if (after_break_len + next_line_len <= fill) {
wrapping = TRUE; prepending = TRUE;
new_line_len += next_line_len; new_line_len += next_line_len;
} }
} }
@ -468,8 +468,8 @@ bool do_wrap(filestruct *line)
#ifndef NANO_TINY #ifndef NANO_TINY
if (ISSET(AUTOINDENT)) { if (ISSET(AUTOINDENT)) {
if (wrapping) { if (prepending) {
/* If we're wrapping, the indentation will come from the /* If we're prepending, the indentation will come from the
* next line. */ * next line. */
indent_string = next_line; indent_string = next_line;
indent_len = indent_length(indent_string); indent_len = indent_length(indent_string);
@ -502,8 +502,8 @@ bool do_wrap(filestruct *line)
/* Break the current line at the wrap point. */ /* Break the current line at the wrap point. */
null_at(&line->data, wrap_loc); null_at(&line->data, wrap_loc);
if (wrapping) { if (prepending) {
/* If we're wrapping, copy the text from the next line, minus /* If we're prepending, copy the text from the next line, minus
* the indentation that we already copied above. */ * the indentation that we already copied above. */
strcat(new_line, next_line); strcat(new_line, next_line);
@ -515,6 +515,9 @@ bool do_wrap(filestruct *line)
splice_node(openfile->current, make_new_node(openfile->current), splice_node(openfile->current, make_new_node(openfile->current),
openfile->current->next); openfile->current->next);
if (openfile->filebot == openfile->current)
openfile->filebot = openfile->current->next;
openfile->current->next->data = new_line; openfile->current->next->data = new_line;
openfile->totsize++; openfile->totsize++;
@ -529,13 +532,17 @@ bool do_wrap(filestruct *line)
/* 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. */
if (!wrapping) if (!prepending)
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 same_line_wrap flag in this case. */
if (openfile->current_x > wrap_loc) { if (openfile->current_x > wrap_loc) {
same_line_wrap = FALSE; same_line_wrap = FALSE;
if (openfile->filebot == openfile->current)
openfile->filebot = openfile->current->next;
openfile->current = openfile->current->next; openfile->current = openfile->current->next;
openfile->current_x -= wrap_loc openfile->current_x -= wrap_loc
#ifndef NANO_TINY #ifndef NANO_TINY
@ -547,14 +554,14 @@ bool do_wrap(filestruct *line)
#ifndef NANO_TINY #ifndef NANO_TINY
/* If the mark was on this line after the wrap point, we move it /* If the mark was on this line after the wrap point, we move it
* down. If it was on the next line and we wrapped onto that line, * down. If it was on the next line and we prepended to that line,
* we move it right. */ * we move it right. */
if (openfile->mark_set) { if (openfile->mark_set) {
if (openfile->mark_begin == line && openfile->mark_begin_x > if (openfile->mark_begin == line && openfile->mark_begin_x >
wrap_loc) { wrap_loc) {
openfile->mark_begin = line->next; openfile->mark_begin = line->next;
openfile->mark_begin_x -= wrap_loc - indent_len + 1; openfile->mark_begin_x -= wrap_loc - indent_len + 1;
} else if (wrapping && openfile->mark_begin == line->next) } else if (prepending && openfile->mark_begin == line->next)
openfile->mark_begin_x += after_break_len; openfile->mark_begin_x += after_break_len;
} }
#endif #endif