1
1

Saving and restoring the global flags the short and quick way.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5211 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Этот коммит содержится в:
Benno Schulenberg 2015-04-21 17:37:59 +00:00
родитель 6bdcc8faa9
Коммит 583a30e971
2 изменённых файлов: 9 добавлений и 21 удалений

Просмотреть файл

@ -3,6 +3,8 @@
case-sens, direction, and regexp flags, and restore them on exit.
And do this not in do_filesearch() but in findnextfile(), so that
it will also work for do_fileresearch().
* src/text.c (do_int_spell_fix): Save and restore the global flags
in the same short and quick way as above.
2015-04-20 Benno Schulenberg <bensberg@justemail.net>
* src/winio.c (need_horizontal_update, need_vertical_update): Fuse

Просмотреть файл

@ -2327,13 +2327,8 @@ bool do_int_spell_fix(const char *word)
/* Save where we are. */
bool canceled = FALSE;
/* The return value. */
bool case_sens_set = ISSET(CASE_SENSITIVE);
#ifndef NANO_TINY
bool backwards_search_set = ISSET(BACKWARDS_SEARCH);
#endif
#ifdef HAVE_REGEX_H
bool regexp_set = ISSET(USE_REGEXP);
#endif
unsigned stash[sizeof(flags) / sizeof(flags[0])];
/* A storage place for the current flag settings. */
#ifndef NANO_TINY
bool old_mark_set = openfile->mark_set;
bool added_magicline = FALSE;
@ -2345,6 +2340,9 @@ bool do_int_spell_fix(const char *word)
size_t top_x, bot_x;
#endif
/* Save the settings of the global flags. */
memcpy(stash, flags, sizeof(flags));
/* Make sure spell-check is case sensitive. */
SET(CASE_SENSITIVE);
@ -2466,20 +2464,8 @@ bool do_int_spell_fix(const char *word)
openfile->current_x = current_x_save;
openfile->placewewant = pww_save;
/* Restore case sensitivity setting. */
if (!case_sens_set)
UNSET(CASE_SENSITIVE);
#ifndef NANO_TINY
/* Restore search/replace direction. */
if (backwards_search_set)
SET(BACKWARDS_SEARCH);
#endif
#ifdef HAVE_REGEX_H
/* Restore regular expression usage setting. */
if (regexp_set)
SET(USE_REGEXP);
#endif
/* Restore the settings of the global flags. */
memcpy(flags, stash, sizeof(flags));
return !canceled;
}