Wie kann ich einen dired Puffer erstellen, der alle geöffneten Dateien auflistet?

9

Ich habe einen Mechanismus zum Brennen von Elementen auf Disc aus einem diredPuffer. Leider sind die Dateien, die ich gepatcht habe, über das Dateisystem verteilt. Wie kann ich diredaus allen geöffneten Dateien einen Puffer erstellen?

Sean Allred
quelle
@Drew Ich würde kein Duplikat argumentieren, zumindest nicht streng. Diese Frage würde einfach lauten: "Wie erhalte ich eine Liste aller offenen Puffer, die an Dateien gebunden sind?".
Sean Allred
@ Draw Speziell:(sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)
Sean Allred
Die Information hinzugefügt ist , dass buffer-listexistiert (was ich weiß) und buffer-file-namekehrt , nilwenn es keine Datei (was ich nicht wusste). Ihr vorgeschlagenes Duplikat enthält diese Informationen nicht oder muss nicht.
Sean Allred
1
@Drew Nach meiner Erfahrung ist der Versuch, jede Frage so modular wie möglich zu gestalten, eher ein Nachteil als ein Vorteil. Dies verringert den Nutzen für Personen, die von Google darauf stoßen und sich niemals registrieren, nur weil sie ihren Anwendungsfall bei Google haben . Wenn ich jede Frage zu TeX.SE durchgehen und Fragen mit denselben konzeptionellen Antworten täuschen möchte, wird Moderation zu einem Albtraum und die Site wird in Dunkelheit getaucht.
Sean Allred

Antworten:

12

Der diredBefehl akzeptiert eine Liste von Dateinamen als Argument. Erstellen Sie einfach eine und übergeben Sie sie:

(dired
 (cons
  "Open Files"
  (sort (remove nil (mapcar #'buffer-file-name (buffer-list)))
       #'string<))) 
Malabarba
quelle
Ich denke, dies fehlt eine Datei: Wenn Sie eine Liste an dired übergeben, wird das erste Element in dieser Liste als Verzeichnisname verwendet, der Rest als Dateien. Wie wäre es damit:(dired (cons "*Open Files*" (sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)))
Glucas
Nur ein Hinweis: Dies wird fehlschlagen, wenn ein dateibezogener Puffer vorhanden ist, der noch nicht auf der Festplatte gespeichert wurde.
Sean Allred
1

Geben Sie einfach eine Liste von Zeichenfolgen für die Funktion dired an. Beispiel:

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

BEARBEITEN

@ Malabarba Antwort ist der beste Weg zu gehen.

Nsukami _
quelle