tweaks: elide a parameter, by calling the relevant function beforehand

This means that in most cases mark_is_before_cursor() is called twice:
once before get_region() is called, and once by get_region() itself.
This small duplication of effort is acceptable: the affected functions
are not time critical, and it makes the code shorter.
This commit is contained in:
Benno Schulenberg 2020-03-29 13:14:17 +02:00
parent 9a6158cd94
commit 0cc2104257
7 changed files with 19 additions and 24 deletions

View File

@ -429,13 +429,13 @@ void cut_to_eol(void)
}
/* Move all marked text from the current buffer into the cutbuffer. */
void cut_marked(bool *right_side_up)
void cut_marked_region(void)
{
linestruct *top, *bot;
size_t top_x, bot_x;
get_region((const linestruct **)&top, &top_x,
(const linestruct **)&bot, &bot_x, right_side_up);
(const linestruct **)&bot, &bot_x);
extract_segment(top, top_x, bot, bot_x);
@ -465,7 +465,7 @@ void do_snip(bool copying, bool marked, bool until_eof, bool append)
* before we add text to it. */
bool using_magicline = !ISSET(NO_NEWLINES);
/* Whether an automatic newline should be added at end-of-buffer. */
bool right_side_up = TRUE;
bool right_side_up = (openfile->mark == NULL || mark_is_before_cursor());
/* There *is* no region, *or* it is marked forward. */
#endif
static bool precedent = FALSE;
@ -497,7 +497,7 @@ void do_snip(bool copying, bool marked, bool until_eof, bool append)
if (until_eof)
cut_to_eof();
else if (openfile->mark) {
cut_marked(&right_side_up);
cut_marked_region();
openfile->mark = NULL;
} else if (ISSET(CUT_FROM_CURSOR))
cut_to_eol();

View File

@ -2023,7 +2023,7 @@ bool write_marked_file(const char *name, FILE *stream, bool tmp,
/* Partition the buffer so that it contains only the marked text. */
get_region((const linestruct **)&top, &top_x,
(const linestruct **)&bot, &bot_x, NULL);
(const linestruct **)&bot, &bot_x);
partition_buffer(top, top_x, bot, bot_x);
/* If we are using a magic line, and the last line of the partition

View File

@ -261,7 +261,7 @@ void extract_segment(linestruct *top, size_t top_x,
void ingraft_buffer(linestruct *somebuffer);
void copy_from_buffer(linestruct *somebuffer);
#ifndef NANO_TINY
void cut_marked(bool *right_side_up);
void cut_marked_region(void);
#endif
void do_snip(bool copying, bool marked, bool until_eof, bool append);
void cut_text(void);
@ -574,7 +574,7 @@ void remove_magicline(void);
#ifndef NANO_TINY
bool mark_is_before_cursor(void);
void get_region(const linestruct **top, size_t *top_x,
const linestruct **bot, size_t *bot_x, bool *right_side_up);
const linestruct **bot, size_t *bot_x);
void get_range(const linestruct **top, const linestruct **bot);
#endif
size_t get_totsize(const linestruct *begin, const linestruct *end);

View File

@ -518,12 +518,12 @@ ssize_t do_replace_loop(const char *needle, bool whole_word_only,
linestruct *was_mark = openfile->mark;
linestruct *top, *bot;
size_t top_x, bot_x;
bool right_side_up = FALSE;
bool right_side_up = (openfile->mark && mark_is_before_cursor());
/* If the mark is on, frame the region, and turn the mark off. */
if (openfile->mark) {
get_region((const linestruct **)&top, &top_x,
(const linestruct **)&bot, &bot_x, &right_side_up);
(const linestruct **)&bot, &bot_x);
openfile->mark = NULL;
modus = INREGION;

View File

@ -602,7 +602,7 @@ void do_undo(void)
goto_line_posx(u->head_lineno, u->head_x);
openfile->mark = line_from_number(u->tail_lineno);
openfile->mark_x = u->tail_x;
cut_marked(NULL);
cut_marked_region();
u->cutbuffer = cutbuffer;
cutbuffer = oldcutbuffer;
if ((u->xflags & INCLUDED_LAST_LINE) && !ISSET(NO_NEWLINES) &&
@ -1721,7 +1721,7 @@ void do_justify(bool full_justify)
linestruct *jusline;
/* The line that we're justifying in the current cutbuffer. */
#ifndef NANO_TINY
bool right_side_up = FALSE;
bool right_side_up = (openfile->mark && mark_is_before_cursor());
/* Whether the mark (if any) is before the cursor. */
bool before_eol = FALSE;
/* Whether the end of a marked region is before the end of its line. */
@ -1744,7 +1744,7 @@ void do_justify(bool full_justify)
linestruct *sampleline;
get_region((const linestruct **)&startline, &start_x,
(const linestruct **)&endline, &end_x, &right_side_up);
(const linestruct **)&endline, &end_x);
/* When the marked region is empty, do nothing. */
if (startline == endline && start_x == end_x) {
@ -2023,7 +2023,7 @@ bool fix_spello(const char *word)
#ifndef NANO_TINY
linestruct *top, *bot;
size_t top_x, bot_x;
bool right_side_up = FALSE;
bool right_side_up = (openfile->mark && mark_is_before_cursor());
#endif
/* Save the current search string, then set it to the misspelled word. */
@ -2034,7 +2034,7 @@ bool fix_spello(const char *word)
/* If the mark is on, start at the beginning of the marked region. */
if (openfile->mark) {
get_region((const linestruct **)&top, &top_x,
(const linestruct **)&bot, &bot_x, &right_side_up);
(const linestruct **)&bot, &bot_x);
/* If the region is marked normally, swap the end points, so that
* (current, current_x) (where searching starts) is at the top. */
if (right_side_up) {
@ -2913,7 +2913,7 @@ void do_wordlinechar_count(void)
* contains only the marked text, and turn the mark off. */
if (openfile->mark) {
get_region((const linestruct **)&top, &top_x,
(const linestruct **)&bot, &bot_x, NULL);
(const linestruct **)&bot, &bot_x);
partition_buffer(top, top_x, bot, bot_x);
}

View File

@ -459,25 +459,20 @@ bool mark_is_before_cursor(void)
}
/* Return in (top, top_x) and (bot, bot_x) the start and end "coordinates"
* of the marked region. If right_side_up isn't NULL, set it to TRUE when
* the mark is at the top of the marked region, and to FALSE otherwise. */
* of the marked region. */
void get_region(const linestruct **top, size_t *top_x,
const linestruct **bot, size_t *bot_x, bool *right_side_up)
const linestruct **bot, size_t *bot_x)
{
if (mark_is_before_cursor()) {
*top = openfile->mark;
*top_x = openfile->mark_x;
*bot = openfile->current;
*bot_x = openfile->current_x;
if (right_side_up != NULL)
*right_side_up = TRUE;
} else {
*bot = openfile->mark;
*bot_x = openfile->mark_x;
*top = openfile->current;
*top_x = openfile->current_x;
if (right_side_up != NULL)
*right_side_up = FALSE;
}
}
@ -492,7 +487,7 @@ void get_range(const linestruct **top, const linestruct **bot)
} else {
size_t top_x, bot_x;
get_region(top, &top_x, bot, &bot_x, NULL);
get_region(top, &top_x, bot, &bot_x);
if (bot_x == 0 && *bot != *top && !also_the_last)
*bot = (*bot)->prev;

View File

@ -2688,7 +2688,7 @@ void draw_row(int row, const char *converted, linestruct *line, size_t from_col)
int paintlen = -1;
/* The number of characters to paint. Negative means "all". */
get_region(&top, &top_x, &bot, &bot_x, NULL);
get_region(&top, &top_x, &bot, &bot_x);
if (top->lineno < line->lineno || top_x < from_x)
top_x = from_x;