]> git.eshelyaron.com Git - emacs.git/commitdiff
Remove labeled restrictions before calling Fwiden
authorGregory Heytings <gregory@heytings.org>
Tue, 28 Mar 2023 23:06:55 +0000 (23:06 +0000)
committerGregory Heytings <gregory@heytings.org>
Tue, 28 Mar 2023 23:12:36 +0000 (01:12 +0200)
* src/editfns.c (labeled_restrictions_remove_in_current_buffer):
New function.

* src/lisp.h: Make it externally visible.

* src/xdisp.c (display_count_lines_logically):
* src/lread.c (readevalloop):
* src/indent.c (line_number_display_width):
* src/fileio.c (write_region):
* src/callproc.c (Fcall_process_region):
* src/buffer.c (Ferase_buffer): Use it.

src/buffer.c
src/callproc.c
src/editfns.c
src/fileio.c
src/indent.c
src/lisp.h
src/lread.c
src/xdisp.c

index 0c740775e5b3a43daac73a293084e540b93bdcf1..252231357bcf8bac4828172ff09fdde449c4c193 100644 (file)
@@ -2386,6 +2386,7 @@ Any narrowing restriction in effect (see `narrow-to-region') is removed,
 so the buffer is truly empty after this.  */)
   (void)
 {
+  labeled_restrictions_remove_in_current_buffer ();
   Fwiden ();
 
   del_range (BEG, Z);
index 5e1e1a8cc0a0527d769bb42e6bb93d4f275f0371..6f3d4fad9be4634dc2ae43b2b525109a2449ebac 100644 (file)
@@ -1113,6 +1113,7 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
         {
           /* No need to save restrictions since we delete everything
              anyway.  */
+          labeled_restrictions_remove_in_current_buffer ();
           Fwiden ();
           del_range (BEG, Z);
         }
index ff711ee2a095d2f9f38116f07e1fe2b44463bb66..4c5b691eb50e8238524397e213945be161647e7c 100644 (file)
@@ -2756,6 +2756,13 @@ labeled_restrictions_pop (Lisp_Object buf)
     XSETCDR (restrictions, list1 (XCDR (XCAR (XCDR (restrictions)))));
 }
 
+/* Unconditionally remove all labeled restrictions in current_buffer.  */
+void
+labeled_restrictions_remove_in_current_buffer (void)
+{
+  labeled_restrictions_remove (Fcurrent_buffer ());
+}
+
 static void
 unwind_reset_outermost_restriction (Lisp_Object buf)
 {
index f00c389a520c382d7ada3b77f0c8f247ecefd537..b50b3c6b935e7e9411307fb3df7f1ba63d28776b 100644 (file)
@@ -5269,6 +5269,7 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename,
     }
 
   record_unwind_protect (save_restriction_restore, save_restriction_save ());
+  labeled_restrictions_remove_in_current_buffer ();
 
   /* Special kludge to simplify auto-saving.  */
   if (NILP (start))
index 08d2bf5ea285bbabb02ebdced165a84b2ea833a6..aef394dab88f4864ab96c437e684547d57a962f3 100644 (file)
@@ -2065,6 +2065,7 @@ line_number_display_width (struct window *w, int *width, int *pixel_width)
        {
          record_unwind_protect (save_restriction_restore,
                                 save_restriction_save ());
+         labeled_restrictions_remove_in_current_buffer ();
          Fwiden ();
          saved_restriction = true;
        }
index a3d06c3b45d4ca4ff1b6e49c6bd8853a5e26b36f..9c02d975a7438f65984e90fb04e286896832896f 100644 (file)
@@ -4689,6 +4689,7 @@ extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t,
                                            ptrdiff_t, bool);
 extern void labeled_narrow_to_region (Lisp_Object, Lisp_Object, Lisp_Object);
 extern void reset_outermost_restrictions (void);
+extern void labeled_restrictions_remove_in_current_buffer (void);
 extern void init_editfns (void);
 extern void syms_of_editfns (void);
 
index d0dc85f51c83046afa4cc3148581dfee0d6b3efd..342d367d9855f968faa67758f1184c3eb75c9db3 100644 (file)
@@ -2255,6 +2255,7 @@ readevalloop (Lisp_Object readcharfun,
          record_unwind_protect_excursion ();
          /* Save ZV in it.  */
          record_unwind_protect (save_restriction_restore, save_restriction_save ());
+         labeled_restrictions_remove_in_current_buffer ();
          /* Those get unbound after we read one expression.  */
 
          /* Set point and ZV around stuff to be read.  */
index fa411e6e8dc75abc4d8802d0d6fdcee4154708bb..c752f6712ab0c793b24f30ed0da339992d8f3121 100644 (file)
@@ -24199,6 +24199,7 @@ display_count_lines_logically (ptrdiff_t start_byte, ptrdiff_t limit_byte,
   ptrdiff_t val;
   specpdl_ref pdl_count = SPECPDL_INDEX ();
   record_unwind_protect (save_restriction_restore, save_restriction_save ());
+  labeled_restrictions_remove_in_current_buffer ();
   Fwiden ();
   val = display_count_lines (start_byte, limit_byte, count, byte_pos_ptr);
   unbind_to (pdl_count, Qnil);