mirror of
git://git.sv.gnu.org/nano.git
synced 2024-11-22 12:51:23 +03:00
tweaks: elide a parameter -- do the NULL checks in the caller
Determine more directly: the length of the last paragraph line, and the exit condition for a full justify.
This commit is contained in:
parent
0d96df7a91
commit
ac8bd2a227
46
src/text.c
46
src/text.c
@ -2028,13 +2028,11 @@ bool inpar(const filestruct *const line)
|
|||||||
return (line->data[quote_len + indent_len] != '\0');
|
return (line->data[quote_len + indent_len] != '\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Determine the beginning, length, and quoting of either the current
|
/* Determine the beginning, length, and quoting of the first found paragraph.
|
||||||
* paragraph (when we're in one) or the next paragraph (when we're not).
|
|
||||||
* Return TRUE if we found a paragraph, and FALSE otherwise. Furthermore,
|
* Return TRUE if we found a paragraph, and FALSE otherwise. Furthermore,
|
||||||
* return in firstline the first line of the paragraph, in touched_eof whether
|
* return in firstline the first line of the paragraph, in *quotelen the
|
||||||
* the last line of the buffer is part of the paragraph, and in *quotelen
|
* length of the quoting, and in *parlen the length of the paragraph. */
|
||||||
* the length of the quoting and in *parlen the length of the paragraph. */
|
bool find_paragraph(filestruct **firstline,
|
||||||
bool find_paragraph(filestruct **firstline, bool *touched_eof,
|
|
||||||
size_t *const quotelen, size_t *const parlen)
|
size_t *const quotelen, size_t *const parlen)
|
||||||
{
|
{
|
||||||
filestruct *line = *firstline;
|
filestruct *line = *firstline;
|
||||||
@ -2061,7 +2059,6 @@ bool find_paragraph(filestruct **firstline, bool *touched_eof,
|
|||||||
/* We found a paragraph; determine length of quoting and number of lines. */
|
/* We found a paragraph; determine length of quoting and number of lines. */
|
||||||
*quotelen = quote_length((*firstline)->data);
|
*quotelen = quote_length((*firstline)->data);
|
||||||
*parlen = line->lineno - (*firstline)->lineno + 1;
|
*parlen = line->lineno - (*firstline)->lineno + 1;
|
||||||
*touched_eof = (line->next == NULL);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -2198,10 +2195,8 @@ void do_justify(bool full_justify)
|
|||||||
filestruct *last_par_line = NULL;
|
filestruct *last_par_line = NULL;
|
||||||
/* Will be the line after the last line of the justified
|
/* Will be the line after the last line of the justified
|
||||||
* paragraph(s), if any. */
|
* paragraph(s), if any. */
|
||||||
bool filebot_inpar;
|
size_t x_for_last;
|
||||||
/* Whether the text at filebot is part of the current paragraph. */
|
/* The x position until where to extract the last paragraph line. */
|
||||||
bool text_on_last_line = FALSE;
|
|
||||||
/* Whether the last line of the buffer contains text. */
|
|
||||||
|
|
||||||
filestruct *was_cutbuffer = cutbuffer;
|
filestruct *was_cutbuffer = cutbuffer;
|
||||||
/* The old cutbuffer, so we can justify in the current cutbuffer. */
|
/* The old cutbuffer, so we can justify in the current cutbuffer. */
|
||||||
@ -2228,8 +2223,7 @@ void do_justify(bool full_justify)
|
|||||||
/* Find the first line of the paragraph(s) to be justified. If the
|
/* Find the first line of the paragraph(s) to be justified. If the
|
||||||
* search fails, there is nothing to justify, and we will be on the
|
* search fails, there is nothing to justify, and we will be on the
|
||||||
* last line of the file, so put the cursor at the end of it. */
|
* last line of the file, so put the cursor at the end of it. */
|
||||||
if (!find_paragraph(&openfile->current, &filebot_inpar, "e_len,
|
if (!find_paragraph(&openfile->current, "e_len, &par_len)) {
|
||||||
&par_len)) {
|
|
||||||
openfile->current_x = strlen(openfile->filebot->data);
|
openfile->current_x = strlen(openfile->filebot->data);
|
||||||
refresh_needed = TRUE;
|
refresh_needed = TRUE;
|
||||||
return;
|
return;
|
||||||
@ -2248,17 +2242,20 @@ void do_justify(bool full_justify)
|
|||||||
|
|
||||||
/* Set the number of lines to be pulled into the cutbuffer. */
|
/* Set the number of lines to be pulled into the cutbuffer. */
|
||||||
if (full_justify) {
|
if (full_justify) {
|
||||||
text_on_last_line = (openfile->filebot->data[0] != '\0');
|
jus_len = openfile->filebot->lineno;
|
||||||
jus_len = openfile->filebot->lineno - first_par_line->lineno +
|
|
||||||
(text_on_last_line ? 1 : 0);
|
|
||||||
} else
|
} else
|
||||||
jus_len = par_len;
|
jus_len = par_len;
|
||||||
|
|
||||||
/* Move down to just beyond the last line to be extracted. */
|
/* Move down to the last line to be extracted. */
|
||||||
while (jus_len > 0 && last_par_line->next != NULL) {
|
for (; jus_len > 1; jus_len--)
|
||||||
last_par_line = last_par_line->next;
|
last_par_line = last_par_line->next;
|
||||||
jus_len--;
|
|
||||||
}
|
/* When possible, step one line further; otherwise, to line's end. */
|
||||||
|
if (last_par_line->next != NULL) {
|
||||||
|
last_par_line = last_par_line->next;
|
||||||
|
x_for_last = 0;
|
||||||
|
} else
|
||||||
|
x_for_last = strlen(last_par_line->data);
|
||||||
|
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
add_undo(COUPLE_BEGIN);
|
add_undo(COUPLE_BEGIN);
|
||||||
@ -2272,7 +2269,7 @@ void do_justify(bool full_justify)
|
|||||||
#endif
|
#endif
|
||||||
/* Do the equivalent of a marked cut. */
|
/* Do the equivalent of a marked cut. */
|
||||||
extract_buffer(&cutbuffer, &cutbottom, first_par_line, 0, last_par_line,
|
extract_buffer(&cutbuffer, &cutbottom, first_par_line, 0, last_par_line,
|
||||||
filebot_inpar || text_on_last_line ? strlen(last_par_line->data) : 0);
|
x_for_last);
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
update_undo(CUT);
|
update_undo(CUT);
|
||||||
#endif
|
#endif
|
||||||
@ -2285,9 +2282,12 @@ void do_justify(bool full_justify)
|
|||||||
|
|
||||||
/* When justifying the entire buffer, find and justify all paragraphs. */
|
/* When justifying the entire buffer, find and justify all paragraphs. */
|
||||||
if (full_justify) {
|
if (full_justify) {
|
||||||
while (!filebot_inpar &&
|
while (find_paragraph(&jusline, "e_len, &par_len)) {
|
||||||
find_paragraph(&jusline, &filebot_inpar, "e_len, &par_len))
|
|
||||||
justify_paragraph(&jusline, quote_len, par_len);
|
justify_paragraph(&jusline, quote_len, par_len);
|
||||||
|
|
||||||
|
if (jusline->next == NULL)
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
|
Loading…
Reference in New Issue
Block a user