mirror of
git://git.sv.gnu.org/nano.git
synced 2024-11-23 21:29:39 +03:00
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:
parent
9a6158cd94
commit
0cc2104257
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
12
src/text.c
12
src/text.c
@ -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);
|
||||
}
|
||||
|
||||
|
11
src/utils.c
11
src/utils.c
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user