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
master
David Lawrence Ramsey 2005-06-21 01:33:31 +00:00
parent 739fc8ac3d
commit bd11c0171b
2 changed files with 21 additions and 10 deletions

View File

@ -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.

View File

@ -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,17 +2375,16 @@ const char *do_alt_speller(char *tempfile_name)
altspell_error = charalloc(msglen);
snprintf(altspell_error, msglen, invoke_error, alt_speller);
#ifndef NANO_SMALL
/* Turn the mark back on if it was on before. */
if (old_mark_set)
SET(MARK_ISSET);
#endif
return altspell_error;
}
refresh();
/* Restore the terminal to its previous state. */
terminal_init();
/* Turn the cursor back on for sure. */
curs_set(1);
#ifndef NANO_SMALL
if (old_mark_set) {
size_t part_totsize;
@ -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,