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?
@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:
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:
(sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)
buffer-list
(które znałem) i którebuffer-file-name
zwracają się,nil
gdy nie ma pliku (którego nie znałem). Proponowany duplikat nie zawiera tych informacji ani nie ma takiej potrzeby.Odpowiedzi:
dired
Polecenie akceptuje listę nazw plików jako argument. Wystarczy utworzyć jeden i przekazać do niego:źródło
(dired (cons "*Open Files*" (sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)))
Wystarczy podać listę ciągów znaków do funkcji dired, na przykład:
EDYTOWAĆ
Odpowiedź @Malabarba jest najlepszym sposobem.
źródło