9 votes

emacs - enregistrer la liste des tampons actuels dans un fichier texte

Très souvent, j'ai besoin d'obtenir une simple copie textuelle de mes fichiers actuellement ouverts. Les raisons sont généralement les suivantes :

  • Je veux envoyer la liste à un collègue
  • Je veux documenter ce sur quoi je travaille (généralement dans un document d'organisation).
  • Je veux agir sur un de mes fichiers actuellement ouverts, sur le shell. J'ai besoin de copier-coller le chemin d'accès pour cela.

Le fait est que l'habituel buffer-menu o list-buffers fournissent un menu pratique pour naviguer dans les tampons ouverts, mais sont très peu pratiques pour copier-coller dans le terminal les noms des fichiers ouverts, ou pour effectuer l'une des actions mentionnées ci-dessus. Par exemple : Je ne peux pas double-cliquer dans une ligne pour sélectionner le nom complet du chemin, et je ne peux pas utiliser la fonction kill / yank séquence emacs à copier autour du nom du chemin.

Résumé : Je voudrais un moyen d'exporter vers un fichier texte (ou vers un nouveau tampon) la liste des fichiers ouverts, sans autres données ; pas de taille de fichier, de mode, ou toute autre métadonnée emacs.

Y a-t-il une commande pour cela ? Un paquet supplémentaire que je peux installer ?

EDIT

Ajout d'une solution par Trey Jackson, modifiée pour fournir un retour sur ce qui a été fait :

(defun copy-open-files ()
  "Add paths to all open files to kill ring"
  (interactive)
  (kill-new (mapconcat 'identity 
                       (delq nil (mapcar 'buffer-file-name (buffer-list))) 
                       "\n"))
  (message "List of files copied to kill ring"))

9voto

Trey Jackson Points 49816

Cette commande fera le travail pour vous :

(defun copy-open-files ()
  "Add paths to all open files to kill ring"
  (interactive)
  (kill-new (mapconcat 'identity 
                       (delq nil (mapcar 'buffer-file-name (buffer-list))) 
                       "\n")))

6voto

ataylor Points 31154

Vous pouvez changer le mode de votre *Buffer List* tampon. Par défaut, il sera en mode Buffer Menu mais en le changeant en text-mode o fundamental-mode supprimera tous les comportements spéciaux, ce qui vous permettra de couper et de coller à partir de ce tampon comme un tampon normal. Les métadonnées peuvent être facilement supprimées à l'aide de la commande delete-rectangle .

Alternativement, vous pouvez accéder à la liste des tampons de manière programmatique avec elisp :

(dolist (buffer (buffer-list))
  (when (buffer-file-name buffer)
    (insert (buffer-file-name buffer) "\n")))

1voto

phils Points 30543

Vous devriez certainement être en mesure de copier et d'arracher de la liste tampon.

Par exemple, copier tout avec C-xhM-w et ensuite le transférer dans un nouveau tampon pour l'édition.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X