Rewrapping and reordering a few lines.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5493 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
This commit is contained in:
Benno Schulenberg 2015-12-08 19:09:14 +00:00
parent 5834638d53
commit 9a6f62ff67
2 changed files with 22 additions and 29 deletions

View File

@ -3,6 +3,7 @@
'filebot', instead of doing it in four different places each. 'filebot', instead of doing it in four different places each.
* src/search.c (goto_line_posx), src/move (do_down): It should not * src/search.c (goto_line_posx), src/move (do_down): It should not
be necessary to doubly check for being at the end of file. be necessary to doubly check for being at the end of file.
* src/text.c (do_justify): Rewrap and reorder a few lines.
2015-12-07 Benno Schulenberg <bensberg@justemail.net> 2015-12-07 Benno Schulenberg <bensberg@justemail.net>
* src/winio.c (edit_draw): Quit the loop when there is no end match. * src/winio.c (edit_draw): Quit the loop when there is no end match.

View File

@ -137,6 +137,7 @@ void do_deletion(undo_type action)
openfile->current->data = charealloc(openfile->current->data, openfile->current->data = charealloc(openfile->current->data,
strlen(openfile->current->data) + strlen(foo->data) + 1); strlen(openfile->current->data) + strlen(foo->data) + 1);
strcat(openfile->current->data, foo->data); strcat(openfile->current->data, foo->data);
#ifndef NANO_TINY #ifndef NANO_TINY
if (openfile->mark_set && if (openfile->mark_set &&
openfile->mark_begin == openfile->current->next) { openfile->mark_begin == openfile->current->next) {
@ -144,7 +145,6 @@ void do_deletion(undo_type action)
openfile->mark_begin_x += openfile->current_x; openfile->mark_begin_x += openfile->current_x;
} }
#endif #endif
unlink_node(foo); unlink_node(foo);
renumber(openfile->current); renumber(openfile->current);
openfile->totsize--; openfile->totsize--;
@ -2063,12 +2063,10 @@ void do_justify(bool full_justify)
for (i = 0; i < par_len - 1; i++) { for (i = 0; i < par_len - 1; i++) {
filestruct *next_line = openfile->current->next; filestruct *next_line = openfile->current->next;
size_t line_len = strlen(openfile->current->data); size_t line_len = strlen(openfile->current->data);
size_t next_line_len = size_t next_line_len = strlen(openfile->current->next->data);
strlen(openfile->current->next->data);
indent_len = quote_len + indent_len = quote_len +
indent_length(openfile->current->next->data + indent_length(openfile->current->next->data + quote_len);
quote_len);
next_line_len -= indent_len; next_line_len -= indent_len;
openfile->totsize -= indent_len; openfile->totsize -= indent_len;
@ -2076,35 +2074,30 @@ void do_justify(bool full_justify)
/* We're just about to tack the next line onto this one. If /* We're just about to tack the next line onto this one. If
* this line isn't empty, make sure it ends in a space. */ * this line isn't empty, make sure it ends in a space. */
if (line_len > 0 && if (line_len > 0 &&
openfile->current->data[line_len - 1] != ' ') { openfile->current->data[line_len - 1] != ' ') {
line_len++; line_len++;
openfile->current->data = openfile->current->data =
charealloc(openfile->current->data, charealloc(openfile->current->data, line_len + 1);
line_len + 1);
openfile->current->data[line_len - 1] = ' '; openfile->current->data[line_len - 1] = ' ';
openfile->current->data[line_len] = '\0'; openfile->current->data[line_len] = '\0';
openfile->totsize++; openfile->totsize++;
} }
openfile->current->data = openfile->current->data = charealloc(openfile->current->data,
charealloc(openfile->current->data, line_len + line_len + next_line_len + 1);
next_line_len + 1); strcat(openfile->current->data, next_line->data + indent_len);
strcat(openfile->current->data, next_line->data +
indent_len);
/* Don't destroy edittop! */
if (next_line == openfile->edittop)
openfile->edittop = openfile->current;
#ifndef NANO_TINY #ifndef NANO_TINY
/* Adjust the mark coordinates to compensate for the change /* If needed, adjust the coordinates of the mark. */
* in the next line. */ if (openfile->mark_set &&
if (openfile->mark_set && openfile->mark_begin == openfile->mark_begin == next_line) {
next_line) {
openfile->mark_begin = openfile->current; openfile->mark_begin = openfile->current;
openfile->mark_begin_x += line_len - indent_len; openfile->mark_begin_x += line_len - indent_len;
} }
#endif #endif
/* Don't destroy edittop! */
if (next_line == openfile->edittop)
openfile->edittop = openfile->current;
unlink_node(next_line); unlink_node(next_line);
@ -2122,8 +2115,7 @@ void do_justify(bool full_justify)
justify_format(openfile->current, quote_len + justify_format(openfile->current, quote_len +
indent_length(openfile->current->data + quote_len)); indent_length(openfile->current->data + quote_len));
while (par_len > 0 && strlenpt(openfile->current->data) > while (par_len > 0 && strlenpt(openfile->current->data) > fill) {
fill) {
size_t line_len = strlen(openfile->current->data); size_t line_len = strlen(openfile->current->data);
indent_len = strlen(indent_string); indent_len = strlen(indent_string);
@ -2147,9 +2139,6 @@ void do_justify(bool full_justify)
assert(break_pos <= line_len); assert(break_pos <= line_len);
/* Insert a new line after the current one. */
splice_node(openfile->current, make_new_node(openfile->current));
/* If this paragraph is non-quoted, and autoindent isn't /* If this paragraph is non-quoted, and autoindent isn't
* turned on, set the indentation length to zero so that the * turned on, set the indentation length to zero so that the
* indentation is treated as part of the line. */ * indentation is treated as part of the line. */
@ -2160,6 +2149,9 @@ void do_justify(bool full_justify)
) )
indent_len = 0; indent_len = 0;
/* Insert a new line after the current one. */
splice_node(openfile->current, make_new_node(openfile->current));
/* Copy the text after where we're going to break the /* Copy the text after where we're going to break the
* current line to the next line. */ * current line to the next line. */
openfile->current->next->data = charalloc(indent_len + 1 + openfile->current->next->data = charalloc(indent_len + 1 +
@ -2175,9 +2167,9 @@ void do_justify(bool full_justify)
#ifndef NANO_TINY #ifndef NANO_TINY
/* Adjust the mark coordinates to compensate for the change /* Adjust the mark coordinates to compensate for the change
* in the current line. */ * in the current line. */
if (openfile->mark_set && openfile->mark_begin == if (openfile->mark_set &&
openfile->current && openfile->mark_begin_x > openfile->mark_begin == openfile->current &&
break_pos) { openfile->mark_begin_x > break_pos) {
openfile->mark_begin = openfile->current->next; openfile->mark_begin = openfile->current->next;
openfile->mark_begin_x -= break_pos - indent_len; openfile->mark_begin_x -= break_pos - indent_len;
} }