Subject: Re: locked narrowing (was: bug#56682: Fix the long lines font locking related slowdowns)

From: Eli Zaretskii <[email-masked]>
Date: Wed, 17 Aug 2022 14:28:39 +0300

> From: Stefan Monnier <[email-masked]>
> Cc: [email-masked], [email-masked], [email-masked]
> Date: Tue, 16 Aug 2022 15:18:23 -0400
> 
> diff --git a/nlinum.el b/nlinum.el
> index 4f0e02fef1..3feaaca5c3 100644
> --- a/nlinum.el
> +++ b/nlinum.el
> @@ -312,7 +312,7 @@ Only works right if point is at BOL."
>    (if nlinum-widen
>        (save-excursion
>          (save-restriction
> -          (widen)
> +          (REALLY-widen)
>            (forward-line 0)              ;In case (point-min) was not at BOL.
>            (let ((nlinum-widen nil))
>              (nlinum--line-number-at-pos))))

If a package wants to count lines in a function registered with
jit-lock, I think it makes no sense for it to do that in Lisp.  It
would be much better to let such packages use the built-in
capabilities that we use all the time, both on the mode line and under
display-line-numbers mode.  There are at least two advantages to that:
(1) it will be at least slightly faster, sometimes more than slightly
(due to caching); and (2) the problem of narrowing would be seamlessly
resolved.