Comment enregistrer une copie d'un tampon dans un fichier?

9

Je voudrais pouvoir enregistrer une copie (ou un instantané) d'un tampon dans un fichier. Le comportement serait similaire write-file, sauf qu'il ne définirait pas le tampon pour visiter ce fichier.

Pour un cas d'utilisation, imaginez que vous avez une session shell et que vous souhaitez tout enregistrer rapidement dans un fichier journal. Le tampon ne doit pas être renommé (de sorte que les fonctions reposant sur le nom du tampon fonctionnent toujours), et il ne doit pas être en train de visiter un fichier (afin que le fichier ne soit pas accidentellement écrasé et qu'il n'y ait aucun avertissement lors de la fermeture d'emacs).

Je peux imaginer quelques façons sales de le faire, j'en posterai une comme réponse automatique, mais en lisant le manuel, l'ensemble du système de "fichiers visités" est plus compliqué qu'il n'y paraît, et je suppose qu'il est facile de rédiger un mauvaise solution. Existe-t-il un moyen caché et intégré d'y parvenir?

T. Verron
la source

Réponses:

18

Sélectionnez simplement le tampon entier ( C-x h) et utilisez write-region.

Sean
la source
3
Vous n'avez pas besoin de sélectionner le texte du tampon, si vous utilisez write-regiondepuis Lisp (par exemple dans votre propre commande). Passez-le (point-min)et (point-max), avec le nom du fichier.
Drew
2
C-x h M-x write-region
Jakub Narębski
Merci pour le tampon de sélection et la M-x write-regioncommande actuelle .
Grant Bowman
0

Sale elispfaire ce que je veux faire:

(defun tv/copy-buffer-to-file (filename)
  (interactive "sFile to write? ")
  (let ((bufname (buffer-name)))
    (set-visited-file-name filename)
    (save-buffer)
    (set-visited-file-name nil)
    (rename-buffer bufname)))

Cela ressemble à beaucoup plus de tracas que nécessaire, car nous devons prendre soin à la fois du fichier visité et du nom du tampon, et nous ne pouvons pas être sûrs de n'avoir rien oublié d'autre.

D'autres solutions impliquant la copie du texte du tampon dans un nouveau tampon, puis l'enregistrement et la suppression de ce tampon fonctionneraient probablement mieux, mais je serais alors préoccupé par les problèmes de performances avec les grands tampons.

T. Verron
la source