diff options
| author | Eli Zaretskii | 2017-08-21 20:21:28 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2017-08-21 20:21:28 +0300 |
| commit | 80fccd4290ae134bd1b3d377f134bb9143b68b43 (patch) | |
| tree | f68161a9f52c1dca91533c623396922df4308fa7 | |
| parent | 694e2d8f2354b68f60513915cb8a9c9d1a11ce81 (diff) | |
| download | emacs-80fccd4290ae134bd1b3d377f134bb9143b68b43.tar.gz emacs-80fccd4290ae134bd1b3d377f134bb9143b68b43.zip | |
Avoid losing the buffer restriction in flyspell-mode
* src/intervals.c (get_local_map): Don't allow C-g to quit as long
as we have the buffer widened, to make sure the restriction is
preserved. (Bug#28161)
| -rw-r--r-- | src/intervals.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/intervals.c b/src/intervals.c index 0089ecb8dde..e65c22977ed 100644 --- a/src/intervals.c +++ b/src/intervals.c | |||
| @@ -2153,6 +2153,7 @@ get_local_map (ptrdiff_t position, struct buffer *buffer, Lisp_Object type) | |||
| 2153 | { | 2153 | { |
| 2154 | Lisp_Object prop, lispy_position, lispy_buffer; | 2154 | Lisp_Object prop, lispy_position, lispy_buffer; |
| 2155 | ptrdiff_t old_begv, old_zv, old_begv_byte, old_zv_byte; | 2155 | ptrdiff_t old_begv, old_zv, old_begv_byte, old_zv_byte; |
| 2156 | ptrdiff_t count = SPECPDL_INDEX (); | ||
| 2156 | 2157 | ||
| 2157 | position = clip_to_bounds (BUF_BEGV (buffer), position, BUF_ZV (buffer)); | 2158 | position = clip_to_bounds (BUF_BEGV (buffer), position, BUF_ZV (buffer)); |
| 2158 | 2159 | ||
| @@ -2163,6 +2164,7 @@ get_local_map (ptrdiff_t position, struct buffer *buffer, Lisp_Object type) | |||
| 2163 | old_begv_byte = BUF_BEGV_BYTE (buffer); | 2164 | old_begv_byte = BUF_BEGV_BYTE (buffer); |
| 2164 | old_zv_byte = BUF_ZV_BYTE (buffer); | 2165 | old_zv_byte = BUF_ZV_BYTE (buffer); |
| 2165 | 2166 | ||
| 2167 | specbind (Qinhibit_quit, Qt); | ||
| 2166 | SET_BUF_BEGV_BOTH (buffer, BUF_BEG (buffer), BUF_BEG_BYTE (buffer)); | 2168 | SET_BUF_BEGV_BOTH (buffer, BUF_BEG (buffer), BUF_BEG_BYTE (buffer)); |
| 2167 | SET_BUF_ZV_BOTH (buffer, BUF_Z (buffer), BUF_Z_BYTE (buffer)); | 2169 | SET_BUF_ZV_BOTH (buffer, BUF_Z (buffer), BUF_Z_BYTE (buffer)); |
| 2168 | 2170 | ||
| @@ -2180,6 +2182,7 @@ get_local_map (ptrdiff_t position, struct buffer *buffer, Lisp_Object type) | |||
| 2180 | 2182 | ||
| 2181 | SET_BUF_BEGV_BOTH (buffer, old_begv, old_begv_byte); | 2183 | SET_BUF_BEGV_BOTH (buffer, old_begv, old_begv_byte); |
| 2182 | SET_BUF_ZV_BOTH (buffer, old_zv, old_zv_byte); | 2184 | SET_BUF_ZV_BOTH (buffer, old_zv, old_zv_byte); |
| 2185 | unbind_to (count, Qnil); | ||
| 2183 | 2186 | ||
| 2184 | /* Use the local map only if it is valid. */ | 2187 | /* Use the local map only if it is valid. */ |
| 2185 | prop = get_keymap (prop, 0, 0); | 2188 | prop = get_keymap (prop, 0, 0); |