recover properly when the alternate spell checker fails
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2741 35c25a1d-7b9e-4130-9fde-d3aeb78583b8master
parent
739fc8ac3d
commit
bd11c0171b
|
@ -226,9 +226,13 @@ CVS code -
|
||||||
- Replace a set_modified() with SET(MODIFIED) to avoid an
|
- Replace a set_modified() with SET(MODIFIED) to avoid an
|
||||||
unnecessary update, and remove an unneeded clearok(FALSE).
|
unnecessary update, and remove an unneeded clearok(FALSE).
|
||||||
(DLR)
|
(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()
|
do_spell()
|
||||||
- If the spell-checker printed any error messages onscreen, call
|
- 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)
|
by CHAO Wei-Lun)
|
||||||
do_output()
|
do_output()
|
||||||
- Properly allow wrapping when we insert a tab, for consistency.
|
- Properly allow wrapping when we insert a tab, for consistency.
|
||||||
|
|
25
src/nano.c
25
src/nano.c
|
@ -2359,6 +2359,14 @@ const char *do_alt_speller(char *tempfile_name)
|
||||||
/* Wait for alternate speller to complete. */
|
/* Wait for alternate speller to complete. */
|
||||||
wait(&alt_spell_status);
|
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) ||
|
if (!WIFEXITED(alt_spell_status) ||
|
||||||
WEXITSTATUS(alt_spell_status) != 0) {
|
WEXITSTATUS(alt_spell_status) != 0) {
|
||||||
char *altspell_error = NULL;
|
char *altspell_error = NULL;
|
||||||
|
@ -2367,17 +2375,16 @@ const char *do_alt_speller(char *tempfile_name)
|
||||||
|
|
||||||
altspell_error = charalloc(msglen);
|
altspell_error = charalloc(msglen);
|
||||||
snprintf(altspell_error, msglen, invoke_error, alt_speller);
|
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;
|
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
|
#ifndef NANO_SMALL
|
||||||
if (old_mark_set) {
|
if (old_mark_set) {
|
||||||
size_t part_totsize;
|
size_t part_totsize;
|
||||||
|
@ -2509,7 +2516,7 @@ void do_spell(void)
|
||||||
|
|
||||||
/* If the spell-checker printed any error messages onscreen, make
|
/* If the spell-checker printed any error messages onscreen, make
|
||||||
* sure that they're cleared off. */
|
* sure that they're cleared off. */
|
||||||
total_redraw();
|
total_refresh();
|
||||||
|
|
||||||
if (spell_msg != NULL)
|
if (spell_msg != NULL)
|
||||||
statusbar(_("Spell checking failed: %s: %s"), spell_msg,
|
statusbar(_("Spell checking failed: %s: %s"), spell_msg,
|
||||||
|
|
Loading…
Reference in New Issue