Comment puis-je créer un tampon dired répertoriant tous les fichiers ouverts?


9

J'ai un mécanisme pour graver des articles sur un disque à partir d'un diredtampon. Malheureusement, les fichiers que j'ai corrigés sont éparpillés sur le système de fichiers. Comment puis-je créer un diredtampon à partir de tous les fichiers ouverts?



@Drew, je dirais que ce n'est pas un doublon, du moins pas strictement. Cette question deviendrait simplement «Comment obtenir une liste de tous les tampons ouverts liés aux fichiers?».
Sean Allred

@Drew Plus précisément:(sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)
Sean Allred

L'information ajoutée est celle qui buffer-listexiste (que je connaissais) et qui buffer-file-namerevient nilquand il n'y a pas de fichier (que je ne connaissais pas). Le doublon que vous proposez ne contient pas ces informations ou n'en a pas besoin.
Sean Allred

1
@Drew D'après mon expérience, essayer de rendre chaque question aussi modulaire que possible est un inconvénient plutôt qu'un avantage. Cela diminue l'utilité pour les personnes qui tombent sur cela de Google et ne s'enregistreront jamais simplement parce qu'elles ont Google leur cas d'utilisation . Si je veux passer à travers toutes les questions sur TeX.SE et les questions dupées qui avaient les mêmes réponses conceptuelles, la modération deviendrait un cauchemar et le site plongerait dans l'obscurité.
Sean Allred

Réponses:


12

La diredcommande accepte une liste de noms de fichiers comme argument. Créez-en un et passez-y:

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

Je pense que cela manque un fichier: lorsque vous passez une liste dans le répertoire, le premier élément de cette liste est pris comme nom de répertoire, le reste comme fichiers. Que diriez-vous de ceci:(dired (cons "*Open Files*" (sort (remove nil (mapcar #'buffer-file-name (buffer-list))) #'string<)))
glucas

Juste une note: cela se trompera s'il y a un tampon associé à un fichier qui n'a pas encore été enregistré sur le disque.
Sean Allred

1

Fournissez simplement une liste de chaînes, à la fonction dired, par exemple:

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

ÉDITER

La réponse de @Malabarba est la meilleure façon de procéder.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.