commit bd11c0171b7ca9dddac67f852d13f5e4ac49178f
parent 739fc8ac3d2f60ce142821f0653df488efc1b254
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Tue, 21 Jun 2005 01:33:31 +0000
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
Diffstat:
2 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -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.
diff --git a/src/nano.c b/src/nano.c
@@ -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,