speller: avoid messing up the screen when an unknown locale is used
When invoking the "internal" speller, leave curses mode while the three
programs in the pipe array are executing, to prevent 'hunspell' from
writing a long error message to the end of the status bar, making the
screen scroll, and thus messing it up. Now the error message gets
printed to the screen that nano was started up from, and will thus be
visible when the user exits from nano. (At least: it will be so on a
terminal emulator -- on a VT, nothing will be seen.)
This fixes https://savannah.gnu.org/bugs/?57728.
Bug existed since version 4.6, commit 4d77e0ad
.
master
parent
06c80b6ccd
commit
6119756347
|
@ -2446,6 +2446,9 @@ const char *do_int_speller(const char *tempfile_name)
|
||||||
return _("Could not get size of pipe buffer");
|
return _("Could not get size of pipe buffer");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Leave curses mode so that error messages go to the original screen. */
|
||||||
|
endwin();
|
||||||
|
|
||||||
/* Block SIGWINCHes while reading misspelled words from the third pipe. */
|
/* Block SIGWINCHes while reading misspelled words from the third pipe. */
|
||||||
block_sigwinch(TRUE);
|
block_sigwinch(TRUE);
|
||||||
|
|
||||||
|
@ -2466,6 +2469,10 @@ const char *do_int_speller(const char *tempfile_name)
|
||||||
|
|
||||||
block_sigwinch(FALSE);
|
block_sigwinch(FALSE);
|
||||||
|
|
||||||
|
/* Re-enter curses mode. */
|
||||||
|
terminal_init();
|
||||||
|
doupdate();
|
||||||
|
|
||||||
/* Do any replacements case-sensitively, forward, and without regexes. */
|
/* Do any replacements case-sensitively, forward, and without regexes. */
|
||||||
SET(CASE_SENSITIVE);
|
SET(CASE_SENSITIVE);
|
||||||
UNSET(BACKWARDS_SEARCH);
|
UNSET(BACKWARDS_SEARCH);
|
||||||
|
|
Loading…
Reference in New Issue