Ich möchte eine Kopie (oder einen Schnappschuss) eines Puffers in einer Datei speichern können. Das Verhalten wäre ähnlich write-file
, außer dass der Puffer für den Besuch dieser Datei nicht festgelegt wird.
Stellen Sie sich für einen Anwendungsfall vor, Sie haben eine Shell-Sitzung und möchten alles schnell in einer Protokolldatei speichern. Der Puffer sollte nicht umbenannt werden (damit Funktionen, die auf dem Puffernamen basieren, weiterhin funktionieren) und keine Datei besuchen (damit die Datei nicht versehentlich überschrieben wird und beim Beenden von Emacs keine Warnung angezeigt wird).
Ich kann mir ein paar schmutzige Wege vorstellen, dies zu tun. Ich werde einen als Selbstantwort posten, aber wenn ich aus dem Handbuch lese, ist das gesamte "besuchte Datei" -System komplizierter als es aussieht, und ich denke, es ist einfach, einen zu entwerfen falsche Lösung. Gibt es einen versteckten, eingebauten Weg, um dies zu erreichen?
write-region
Lisp verwenden (z. B. in Ihrem eigenen Befehl). Übergeben Sie es einfach(point-min)
und(point-max)
zusammen mit dem Dateinamen.C-x h
M-x write-region
M-x write-region
Befehl.Schmutzig
elisp
machen was ich machen will:Dies scheint viel mühsamer zu sein, als es nötig wäre, da wir uns sowohl um die besuchte Datei als auch um den Puffernamen kümmern müssen und nicht sicher sein können, dass wir nichts anderes vergessen haben.
Andere Lösungen, bei denen der Puffertext in einen neuen Puffer kopiert und dann gespeichert und beendet wird, funktionieren wahrscheinlich besser, aber ich würde mir dann Sorgen über Leistungsprobleme mit großen Puffern machen.
quelle