diff --git a/ChangeLog b/ChangeLog index 02bf897c..6f0c9b37 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-03-21 Mark Majeres + * src/text.c (do_alt_speller): Restore the positions of the mark + and the cursor in a better way: to the columns where they were. + This fixes Savannah bug #44542, reported by Benno Schulenberg. + 2015-03-20 Benno Schulenberg * src/nano.c (finish_stdin_pager, cancel_stdin_pager, stdin_pager): Normalize the whitespace, remove an old comment, and place another diff --git a/src/text.c b/src/text.c index 9b2153e3..f9cf5e98 100644 --- a/src/text.c +++ b/src/text.c @@ -2661,7 +2661,6 @@ const char *do_alt_speller(char *tempfile_name) { int alt_spell_status; size_t current_x_save = openfile->current_x; - size_t pww_save = openfile->placewewant; ssize_t current_y_save = openfile->current_y; ssize_t lineno_save = openfile->current->lineno; struct stat spellfileinfo; @@ -2810,13 +2809,6 @@ const char *do_alt_speller(char *tempfile_name) * and the end of the spell-checked text. */ if (openfile->fileage == openfile->filebot) bot_x += top_x; - if (right_side_up) { - openfile->mark_begin_x = top_x; - current_x_save = bot_x; - } else { - current_x_save = top_x; - openfile->mark_begin_x = bot_x; - } /* Unpartition the filestruct so that it contains all the text * again. Note that we've replaced the marked text originally @@ -2833,8 +2825,7 @@ const char *do_alt_speller(char *tempfile_name) openfile->totsize = totsize_save; /* Assign mark_begin to the line where the mark began before. */ - do_gotopos(mb_lineno_save, openfile->mark_begin_x, - current_y_save, 0); + goto_line_posx(mb_lineno_save, openfile->mark_begin_x); openfile->mark_begin = openfile->current; /* Assign mark_begin_x to the location in mark_begin where the @@ -2848,7 +2839,9 @@ const char *do_alt_speller(char *tempfile_name) #endif /* Go back to the old position. */ - do_gotopos(lineno_save, current_x_save, current_y_save, pww_save); + goto_line_posx(lineno_save, current_x_save); + openfile->current_y = current_y_save; + edit_update(NONE); /* Stat the temporary file again, and mark the buffer as modified only * if this file was changed since it was written. */