bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#56682: feature/improved-locked-narrowing 9dee6df39c: Reworked locked


From: Gregory Heytings
Subject: bug#56682: feature/improved-locked-narrowing 9dee6df39c: Reworked locked narrowing.
Date: Tue, 14 Feb 2023 14:59:22 +0000


1. There are three places (indent.c:line_number_display_width, xdisp.c:display_count_lines_logically, fileio.c:write_region) where we currently use

record_unwind_protect (save_restriction_restore, save_restriction_save ());
Fwiden ();

I'm not sure these should be subject to locked narrowing. They don't present performance problems with very long lines, AFAIK.

2. In another place (process.c:Finternal_default_process_filter) we currently have:

/* If the output marker is outside of the visible region, save
    the restriction and widen.  */
if (! (BEGV <= PT && PT <= ZV))
   Fwiden ();

(without the "save the restriction" mentioned in the comment).

This should be fixed to use unwind-protect of some kind, I think, and that's orthogonal to locked narrowing.

3. Also, in Ferase_buffer, we do Fwiden to "delete the entire contents of the current buffer".

These five places probably need to be adapted to handle labeled narrowings correctly. If you agree with that, I'll write a patch to that effect.

I'm not sure what you mean by "adapt to".  Please tell more.


Fwiden in the functions above (which are AFAICS the only places in Emacs where Fwiden is called) is not prepared to the possibility of them being called inside a labeled narrowing, either one installed by the long lines code, or another one. Basically we need to use a variant of reset_outermost_narrowings (for the current buffer only) where we use

record_unwind_protect (save_restriction_restore, save_restriction_save ());






reply via email to

[Prev in Thread] Current Thread [Next in Thread]