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

From: Gerd Möllmann <[email-masked]>
Date: Tue, 02 Jan 2024 12:48:52 +0100

Ihor Radchenko <[email-masked]> writes:

> Gerd Möllmann <[email-masked]> writes:
>
>>> (defvar-local yant/test 'default-value)
>>> (with-temp-buffer
>>>   (setq yant/test 'local-value)
>>>   (default-value 'yant/test)) ; => 'default-value
>>
>> Maybe the documentation could be changed to be clearer, but I'm afraid I
>> don't know how, because I think it describes 100% what is happening: the
>> setq creates a buffer-local binding in the temp buffer, and
>> default-value returns the value that is used in the case that a buffer
>> does _not_ have its own value, which is the value set in the
>> defvar-local...
>
> We clearly have some misunderstanding.

I tend to agree :-).

> Doesn't your statement contradict the earlier one:
>
>    >>>> doc string that reads "that do not have their own values...", which
>    >>>> means that what default-value returns depends whether or not SYMBOL got
>    >>>> its own value in the buffer
>
> In my example, SYMBOL does get its own value in the buffer, but
> `default-value' still returns 'default-value.

I assume you mean the example from above? This one:

>>> (defvar-local yant/test 'default-value)
>>> (with-temp-buffer
>>>   (setq yant/test 'local-value)
>>>   (default-value 'yant/test)) ; => 'default-value

If so, the "gets its own ... _but_ default-value still returns..." hints
at the misunderstanding, maybe. It should be something like "because it
gets its own..., default-value returns...".

Maybe one could reformulate the doc string of default-value like this?

  Return SYMBOL’s default value.
  This is the value that is seen in buffers that do not have their own values
  for this variable.

=>

  Return SYMBOL’s default value.
  This is the value that would be seen in the buffer if it didn't have
  its own value.

Although I find the original clearer...