aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2017-08-21 20:21:28 +0300
committerEli Zaretskii2017-08-21 20:21:28 +0300
commit80fccd4290ae134bd1b3d377f134bb9143b68b43 (patch)
treef68161a9f52c1dca91533c623396922df4308fa7
parent694e2d8f2354b68f60513915cb8a9c9d1a11ce81 (diff)
downloademacs-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.c3
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);