Come posso creare un buffer diretto che elenca tutti i file aperti?


9

Ho un meccanismo per masterizzare oggetti su disco da un diredbuffer. Sfortunatamente, i file che ho patchato sono sparpagliati nel file system. Come posso creare un diredbuffer da tutti i file aperti?



@Drew Non direi un duplicato, almeno non rigorosamente. Questa domanda diventerebbe semplicemente "Come posso ottenere un elenco di tutti i buffer aperti associati ai file?".
Sean Allred,

@Drew In particolare:(sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)
Sean Allred il

Le informazioni aggiunte sono quelle buffer-listesistenti (cosa che sapevo) e che buffer-file-nameritornano nilquando non ci sono file (che non conoscevo). Il duplicato proposto non contiene queste informazioni o non è necessario.
Sean Allred,

1
@Drew Nella mia esperienza, cercare di rendere ogni domanda il più modulare possibile è uno svantaggio piuttosto che un vantaggio. Diminuisce l'utilità con le persone che si imbattono in questo da Google e non si registreranno mai semplicemente perché hanno Google il loro caso d'uso . Se avessi voluto esaminare tutte le domande su TeX.SE e le domande ingannevoli che avevano le stesse risposte concettuali, la moderazione sarebbe diventata un incubo e il sito sarebbe precipitato nell'oscurità.
Sean Allred,

Risposte:


12

Il diredcomando accetta un elenco di nomi file come argomento. Basta crearne uno e passarlo:

(dired
 (cons
  "Open Files"
  (sort (remove nil (mapcar #'buffer-file-name (buffer-list)))
       #'string<))) 

Penso che manchi un file: quando passi un elenco per indirizzare il primo elemento in quell'elenco viene preso come nome della directory, il resto come file. Che ne dici di questo:(dired (cons "*Open Files*" (sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)))
glucas,

Solo una nota: questo errerà se esiste un buffer associato al file che non è stato ancora salvato sul disco.
Sean Allred,

1

Basta fornire un elenco di stringhe, alla funzione dired, ad esempio:

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

MODIFICARE

La risposta di @Malabarba è il modo migliore di procedere.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.