Subject: Re: bug#52168: 29.0.50; Gnus buffers unexpectedly killed by project-kill-buffers

From: Philip Kaludercic <[email-masked]>
Date: Tue, 30 Nov 2021 18:52:38 +0000

(I'm not sure if my last message got sent out, so I'm sending this again)

Lars Ingebrigtsen <[email-masked]> writes:

>> Lars Ingebrigtsen <[email-masked]> writes:
>>
>>> Matthias Meulien <[email-masked]> writes:
>>>
>>>> 1. Open a "project" file, say emacs in ~/Sources/emacs/lisp/outline.el
>>>> where ~/Sources/emacs contains GNU Emacs sources
>>>>
>>>> 2. From the buffer visiting outline.el, start reading mail with gnus
>>>>
>>>> 3. Switch back to outline.el buffer and call project-kill-buffers
>>>>
>>>> 4. Gnus buffers like *Group*, .newsrc-dribble, etc. are killed. This is
>>>> unexpected.
>>>
>>> I've added Philip and Dmitry to the CCs; perhaps they some comments.
>>
>> The address I used for Philip bounced; trying again with a different
>> address.

To fix issues like this was the intention behind adding
project-kill-buffer-conditions (that is yet to be generalised).  What I
believe is happening here is that the *Group* buffer is being matched by
this condition

     (and (derived-mode . special-mode)
          (not (major-mode . help-mode)))

because `gnus-group-mode' derives `special-mode' via
`gnus-mode'. .newsrc-dribble matches both

      buffer-file-name

and

     (major-mode . fundamental-mode)

at least on my system.  Fixing this specific issue should be possible by
just adjusting project-kill-buffer-conditions, but it is probably
desirable to think about how this can be avoided in general, without
loosing the actual intended functionality of project-kill-buffers.

-- 
	Philip Kaludercic