tweaks: factor out a three-line condition into a separate function

For clarity.
This commit is contained in:
Benno Schulenberg 2020-03-05 16:09:56 +01:00
parent e39e2ddf52
commit 2bc5c1987c
4 changed files with 13 additions and 12 deletions

View File

@ -330,10 +330,8 @@ void ingraft_buffer(linestruct *topline)
bool edittop_inside = (openfile->edittop == openfile->current);
#ifndef NANO_TINY
/* Remember whether mark and cursor are on the same line, and their order. */
bool right_side_up = (openfile->mark && mark_is_before_cursor());
bool same_line = (openfile->mark == openfile->current);
bool right_side_up = (openfile->mark &&
(openfile->mark->lineno < openfile->current->lineno ||
(same_line && openfile->mark_x <= openfile->current_x)));
#endif
/* Partition the buffer so that it contains no text, then delete it.*/

View File

@ -578,6 +578,7 @@ void new_magicline(void);
void remove_magicline(void);
#endif
#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);
void get_range(const linestruct **top, const linestruct **bot);

View File

@ -1181,9 +1181,7 @@ void add_undo(undo_type action, const char *message)
case CUT:
if (openfile->mark) {
u->xflags |= MARK_WAS_SET;
if (openfile->mark->lineno < openfile->current->lineno ||
(openfile->mark == openfile->current &&
openfile->mark_x < openfile->current_x)) {
if (mark_is_before_cursor()){
u->head_lineno = openfile->mark->lineno;
u->head_x = openfile->mark_x;
} else {
@ -2552,10 +2550,8 @@ const char *treat(char *tempfile_name, char *theprogram, bool spelling)
#ifndef NANO_TINY
/* Replace the marked text (or entire text) with the corrected text. */
if (spelling && openfile->mark) {
bool upright = (openfile->mark->lineno < openfile->current->lineno ||
(openfile->mark == openfile->current &&
openfile->mark_x < openfile->current_x));
ssize_t was_mark_lineno = openfile->mark->lineno;
bool upright = mark_is_before_cursor();
replaced = replace_buffer(tempfile_name, CUT, TRUE, "spelling correction");

View File

@ -450,15 +450,21 @@ void remove_magicline(void)
#endif
#ifndef NANO_TINY
/* Return TRUE when the mark is before or at the cursor, and FALSE otherwise. */
bool mark_is_before_cursor(void)
{
return (openfile->mark->lineno < openfile->current->lineno ||
(openfile->mark == openfile->current &&
openfile->mark_x <= openfile->current_x));
}
/* 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. */
void get_region(const linestruct **top, size_t *top_x,
const linestruct **bot, size_t *bot_x, bool *right_side_up)
{
if (openfile->mark->lineno < openfile->current->lineno ||
(openfile->mark == openfile->current &&
openfile->mark_x < openfile->current_x)) {
if (mark_is_before_cursor()) {
*top = openfile->mark;
*top_x = openfile->mark_x;
*bot = openfile->current;