[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Should (buffer-list) ever return killed buffers?
From: |
Sergey Organov |
Subject: |
Re: Should (buffer-list) ever return killed buffers? |
Date: |
Mon, 24 May 2021 02:55:01 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Clément Pit-Claudel <cpitclaudel@gmail.com> writes:
> On 5/23/21 7:14 PM, Sergey Organov wrote:
>> Hello!
>>
>> I'm trying to fix a problem where `desktop-clear` errors-out because
>> (buffer-list) contains killed buffer.
>
> Could it be that the actions you take on one buffer while iterating on
> (buffer-list) cause another buffer later in the list to be killed?
This is relevant code snippet from "desktop.el":
(dolist (buffer (buffer-list))
(let ((bufname (buffer-name buffer)))
(unless (or (eq (aref bufname 0) ?\s) ;; Don't kill internal buffers
(string-match-p preserve-regexp bufname))
(kill-buffer buffer)))))
I fail to see how I can take any actions between its calls to (buffer-list)
and (aref bufname 0), that errors-out of bufname being nil.
Ah, apparently killing one buffer kills another... but why it happens
only when called from timer? Mystery.
Thanks,
-- Sergey Organov