mirror of
git://git.sv.gnu.org/nano.git
synced 2024-11-26 06:39:43 +03:00
tweaks: create an undo item earlier, and discard it when needed
This avoids having to temporariyly store and then later fill in the original cursor position.
This commit is contained in:
parent
2428c5cbe6
commit
db7a49edc6
19
src/text.c
19
src/text.c
@ -1737,10 +1737,6 @@ void do_justify(bool full_justify)
|
||||
bool ends_at_eol = FALSE;
|
||||
/* Whether the end of the marked region is at the end of a line. */
|
||||
|
||||
/* Stash the cursor position, to be stored in the undo item. */
|
||||
ssize_t was_lineno = openfile->current->lineno;
|
||||
size_t was_current_x = openfile->current_x;
|
||||
|
||||
/* We need these to hold the leading part (quoting + indentation) of the
|
||||
* line where the marked text begins, whether or not that part is covered
|
||||
* by the mark. */
|
||||
@ -1751,9 +1747,9 @@ void do_justify(bool full_justify)
|
||||
* the marked text begins (if any). */
|
||||
char *the_second_lead = NULL;
|
||||
size_t second_lead_len = 0;
|
||||
#endif
|
||||
|
||||
#ifndef NANO_TINY
|
||||
add_undo(COUPLE_BEGIN, N_("justification"));
|
||||
|
||||
/* If the mark is on, do as Pico: treat all marked text as one paragraph. */
|
||||
if (openfile->mark) {
|
||||
size_t quote_len;
|
||||
@ -1764,6 +1760,7 @@ void do_justify(bool full_justify)
|
||||
/* When the marked region is empty, do nothing. */
|
||||
if (first_par_line == last_par_line && top_x == bot_x) {
|
||||
statusline(NOTICE, _("Nothing changed"));
|
||||
discard_until(openfile->undotop->next);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1794,7 +1791,7 @@ void do_justify(bool full_justify)
|
||||
the_second_lead[second_lead_len] = '\0';
|
||||
}
|
||||
} else
|
||||
#endif
|
||||
#endif /* NANO_TINY */
|
||||
{
|
||||
size_t jus_len;
|
||||
/* The number of lines we're storing in the current cutbuffer. */
|
||||
@ -1812,6 +1809,7 @@ void do_justify(bool full_justify)
|
||||
if (!find_paragraph(&openfile->current, &par_len)) {
|
||||
openfile->current_x = strlen(openfile->filebot->data);
|
||||
refresh_needed = TRUE;
|
||||
discard_until(openfile->undotop->next);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1837,15 +1835,8 @@ void do_justify(bool full_justify)
|
||||
}
|
||||
|
||||
#ifndef NANO_TINY
|
||||
add_undo(COUPLE_BEGIN, N_("justification"));
|
||||
|
||||
/* Store the original cursor position, in case we unjustify. */
|
||||
openfile->undotop->head_lineno = was_lineno;
|
||||
openfile->undotop->head_x = was_current_x;
|
||||
|
||||
add_undo(CUT, NULL);
|
||||
#endif
|
||||
|
||||
/* Do the equivalent of a marked cut into an empty cutbuffer. */
|
||||
cutbuffer = NULL;
|
||||
extract_segment(first_par_line, top_x, last_par_line, bot_x);
|
||||
|
Loading…
Reference in New Issue
Block a user