Commit bd11c017 authored by David Lawrence Ramsey's avatar David Lawrence Ramsey
Browse files

recover properly when the alternate spell checker fails

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2741 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
No related merge requests found
Showing with 21 additions and 10 deletions
+21 -10
......@@ -226,9 +226,13 @@ CVS code -
- Replace a set_modified() with SET(MODIFIED) to avoid an
unnecessary update, and remove an unneeded clearok(FALSE).
(DLR)
- Move the spell checking error handling block down and refactor
it so that we go back into curses mode, reinitialize the
terminal, turn the cursor back on, and turn the mark back on
if necessary before returning the error message. (DLR)
do_spell()
- If the spell-checker printed any error messages onscreen, call
total_redraw() to make sure they're cleared off. (DLR, found
total_refresh() to make sure they're cleared off. (DLR, found
by CHAO Wei-Lun)
do_output()
- Properly allow wrapping when we insert a tab, for consistency.
......
......@@ -2359,6 +2359,14 @@ const char *do_alt_speller(char *tempfile_name)
/* Wait for alternate speller to complete. */
wait(&alt_spell_status);
refresh();
/* Restore the terminal to its previous state. */
terminal_init();
/* Turn the cursor back on for sure. */
curs_set(1);
if (!WIFEXITED(alt_spell_status) ||
WEXITSTATUS(alt_spell_status) != 0) {
char *altspell_error = NULL;
......@@ -2367,16 +2375,15 @@ const char *do_alt_speller(char *tempfile_name)
altspell_error = charalloc(msglen);
snprintf(altspell_error, msglen, invoke_error, alt_speller);
return altspell_error;
}
refresh();
/* Restore the terminal to its previous state. */
terminal_init();
#ifndef NANO_SMALL
/* Turn the mark back on if it was on before. */
if (old_mark_set)
SET(MARK_ISSET);
#endif
/* Turn the cursor back on for sure. */
curs_set(1);
return altspell_error;
}
#ifndef NANO_SMALL
if (old_mark_set) {
......@@ -2509,7 +2516,7 @@ void do_spell(void)
/* If the spell-checker printed any error messages onscreen, make
* sure that they're cleared off. */
total_redraw();
total_refresh();
if (spell_msg != NULL)
statusbar(_("Spell checking failed: %s: %s"), spell_msg,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment