Subject: Re: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers

From: Ihor Radchenko <[email-masked]>
Date: Sun, 17 Dec 2023 11:19:57 +0000

Eli Zaretskii <[email-masked]> writes:

>> AFAIU, not different. Previously, we had
>> 
>> > @@ -4785,7 +4779,6 @@ init_buffer_once (void)
>> >    bset_tab_line_format (&buffer_defaults, Qnil);
>> >    bset_abbrev_mode (&buffer_defaults, Qnil);
>> >    bset_overwrite_mode (&buffer_defaults, Qnil);
>> > -  bset_case_fold_search (&buffer_defaults, Qt);
>> 
>> So, the default value was Qt previously as well.
>
> buffer_defaults is not the default value, AFAIU.

Unless I misunderstand, the comment says that buffer_defaults does hold
the default values.

/* This structure holds the default values of the buffer-local variables
   that have special slots in each buffer.
   The default value occupies the same slot in this structure
   as an individual buffer's value occupies in that buffer.
   Setting the default value also goes through the alist of buffers
   and stores into each buffer that does not say it has a local value.  */

extern struct buffer buffer_defaults;

>> The DEFVAR_LISP + V... + DEFSYM + Fmake_variable_buffer_local is taken
>> from other buffer-local variables. For example,
>
> I'm talking specifically about any changes from previous behavior
> visible from Lisp.  I think we should test all of the following:
>
>   default-value
>   default-boundp
>   setq-default
>   default-toplevel-value
>   set-default-toplevel-value
>
> and make sure they all behave exactly the same, both in and out of a
> let-binding.

The patch did not introduce test failures for make check on my side. Are
there existing tests for buffer-locals? Or do we need to add them?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>