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

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

Re: buffer-list and desktop


From: David Kastrup
Subject: Re: buffer-list and desktop
Date: Wed, 10 Nov 2004 23:48:06 +0100
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/21.3.50 (gnu/linux)

Jesper Harder <harder@myrealbox.com> writes:

> Kevin Rodgers <ihs_4664@yahoo.com> writes:
>
>> Gotta get used to using with-current-buffer:
>>
>> (defun desktop-list-buffers ()
>>   "Return the list of buffers that `desktop-save' would save."
>>   (nreverse
>>    (apply 'nconc
>>           (mapcar (lambda (buffer)
>>                     (with-current-buffer buffer
>>                       (if (desktop-save-buffer-p (buffer-file-name)
>>                                                  (buffer-name)
>>                                                  major-mode)
>>                           (list buffer))))
>>                   (buffer-list)))))
>
> Or if you don't mind requiring cl:
>
> (delete-if-not
>    (lambda (buf)
>      (desktop-save-buffer-p (buffer-file-name buf) (buffer-name buf) 
>                           (buffer-local-value 'major-mode buf)))
>    (buffer-list))

Still slow because of one bind/unbind per iteration.  If you want to
do it that way, anyway, you could avoid cl by using

(delq nil
  (mapcar
    (lambda (buf)
      (and (desktop-save-buffer-p ...)
           buf))
    (buffer-list)))

with hardly more effort.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum


reply via email to

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