Jak mogę utworzyć bufor diodowy z listą wszystkich otwartych plików?

9

Mam mechanizm do wypalania przedmiotów na dysk z diredbufora. Niestety poprawione przeze mnie pliki są rozrzucone po całym systemie plików. Jak mogę utworzyć diredbufor ze wszystkich otwartych plików?

Sean Allred
źródło
@Drew Nie twierdzę, że to duplikat, a przynajmniej nie ściśle. To pytanie brzmiałoby po prostu: „Jak uzyskać listę wszystkich otwartych buforów powiązanych z plikami?”.
Sean Allred
@Drew W szczególności:(sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)
Sean Allred
Dodane informacje są takie buffer-list(które znałem) i które buffer-file-namezwracają się, nilgdy nie ma pliku (którego nie znałem). Proponowany duplikat nie zawiera tych informacji ani nie ma takiej potrzeby.
Sean Allred,
1
@Drew Z mojego doświadczenia wynika, że ​​staranie się, aby każde pytanie było możliwie modułowe, jest raczej wadą niż zaletą. To zmniejsza użyteczność z osobami, które natknąć się to z Google i nie będzie rejestrował tylko dlatego, że Google'd ich przypadek użycia . Jeśli przejrzę każde pytanie na TeX.SE i powielę pytania o takich samych koncepcyjnych odpowiedziach, moderacja stanie się koszmarem, a strona pogrąży się w ciemności.
Sean Allred

Odpowiedzi:

12

diredPolecenie akceptuje listę nazw plików jako argument. Wystarczy utworzyć jeden i przekazać do niego:

(dired
 (cons
  "Open Files"
  (sort (remove nil (mapcar #'buffer-file-name (buffer-list)))
       #'string<))) 
Malabarba
źródło
Myślę, że pomija się jeden plik: kiedy przekazujesz listę do opróżnienia, pierwszy element na tej liście jest traktowany jako nazwa katalogu, a reszta jako pliki. Co powiesz na:(dired (cons "*Open Files*" (sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)))
glucas,
Tylko uwaga: spowoduje to błąd, jeśli istnieje bufor związany z plikami, który nie został jeszcze zapisany na dysku.
Sean Allred
1

Wystarczy podać listę ciągów znaków do funkcji dired, na przykład:

(dired '("custom dired" ".emacs.d/init.el" "mydotfiles/.bashrc"))

EDYTOWAĆ

Odpowiedź @Malabarba jest najlepszym sposobem.

Nsukami _
źródło