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

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

bug#34765: 26.1; with-temp-buffer should not run buffer-list-update-hook


From: martin rudalics
Subject: bug#34765: 26.1; with-temp-buffer should not run buffer-list-update-hook
Date: Thu, 25 Apr 2019 12:31:20 +0200

>>   > I meant to suggest that get-buffer-create sets this flag when the name
>>   > of the buffer fits the template of temporary buffers.  Exactly like it
>>   > does for code-conversion buffers now.
>>
>> We don't have a "template of temporary buffers".
>
> Of course we do: with-temp-buffer produces buffer names that follow
> such a template.

IIUC we'd need an expression similar to Vcode_conversion_workbuf_name
to use in 'get-buffer-create'

  b->inhibit_buffer_hooks
    = (STRINGP (Vcode_conversion_workbuf_name)
       && strncmp (SSDATA (name), SSDATA (Vcode_conversion_workbuf_name),
                   SBYTES (Vcode_conversion_workbuf_name)) == 0);

So we could specify, for example,

  staticpro (&Vtemp_buffer_name);
  Vtemp_buffer_name = build_pure_c_string (" *temp*");

and rewrite the above assignment as

  b->inhibit_buffer_hooks
    = ((STRINGP (Vcode_conversion_workbuf_name)
        && strncmp (SSDATA (name), SSDATA (Vcode_conversion_workbuf_name),
                   SBYTES (Vcode_conversion_workbuf_name)) == 0)

       || (STRINGP (Vtemp_buffer_name)
           && strncmp (SSDATA (name), SSDATA (Vtemp_buffer_name),
                       SBYTES (Vtemp_buffer_name)) == 0));

>> For example, a buffer specified by the BUFNAME arg of
>> 'with-output-to-temp-buffer' should not match such a template.
>
> Such buffers should not necessarily be exempt from running the hooks,
> AFAIU.  In any case, one can always bind the hook locally to nil in
> the body of the macro, right?

Unless the body changes the buffer list in some signifcant way, for
example, by creating or deleting another buffer.

>> But I'd favor a solution that skips all buffers whose name starts
>> with a space as we do for 'other-buffer' or 'unbury-buffer'.
>
> I think this is too drastic a measure.  We should only disable the
> hooks in buffers where no one in their right minds will ever want to
> run them.

Then what about the buffers created by 'with-temp-file' or
'with-output-to-string'?

martin





reply via email to

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