Puffer automatisch speichern, die keine Dateien besuchen

7

Ich mache oft so etwas wie:

Cx b foobarbaz RET

Um einen neuen Puffer für Notizen usw. zu erhalten, würde ich es lieben, wenn Emacs nur einen Schnappschuss machen und gelegentlich alle offenen Puffer auf die Festplatte kopieren. Es gibt viele Dokumentationen zur Verbesserung der Funktionen zum automatischen Speichern und Sichern, aber alle beziehen sich auf Puffer, die gerade eine Datei besuchen.

Ich möchte, dass Emacs regelmäßig ALLE Puffer auf der Festplatte speichern. Dies wird sicherlich dazu führen, dass einige rauschige Ausgabepuffer auf die Festplatte geschrieben werden, aber wen interessiert das? Speicherplatz ist billig.

Ist dafür etwas eingebaut? Im Moment, wenn mein Computer (oder Emacs) abstürzt, verliere ich oft viele Notizen, die ich in verschiedenen Puffern aufgenommen habe.

Chris Clark
quelle
save-some-buffershat eine Option für Puffer, die keine Dateien besuchen - vielleicht können Sie diese mit einem Timer und einer benutzerdefinierten Funktion verbinden, die save-some-buffersals Argument akzeptiert wird - siehe Dokumentzeichenfolge. Es gibt wahrscheinlich bereits etwas, das dies tut - z. B. Google "save-some-buffers" auto saveusw.; und finden Sie die Funktion auto-save-modein simple.elfür einige Ideen. Ich
erinnere
Auf welchem ​​Betriebssystem bist du und auf welcher Emacs-Version? Ich bin auf RHEL 5.10 und Emacs 25 (Dev-Version von Git) und ich erinnere mich nicht daran, dass Emacs einmal abgestürzt sind, wahrscheinlich seit 24.4 ..
Kaushal Modi
1
Für schnelle Notizen, die automatisch gespeichert werden, würde ich das deftPaket vorschlagen .
Kaushal Modi
Werde geschickt auschecken - sieht gut aus.
Chris Clark

Antworten:

6

Dies beantwortet Ihre gestellte Frage nicht. Sie können sie also ignorieren oder ablehnen.

  1. Ich bezweifle, dass Emacs wirklich alle Puffer auf der Festplatte speichern soll, einschließlich aller internen, normalerweise unsichtbaren Puffer. Warum willst du das?

  2. Es geht nicht um den Speicherplatz. Es geht um den Lärm. Möchten Sie wirklich Dinge aus einem Verzeichnis herausholen, in dem Ihre wichtigen Dateien möglicherweise mit solchen Dingen gemischt sind? Oder möchten Sie gelegentlich Perlen in einem temporären Verzeichnis fischen (dessen Zweck es ist, Lärm zu verstauen)?

  3. Puffer mit Namen wie *...*(nicht beginnend mit einem Leerzeichen) werden normalerweise nur ausgegeben (z. B. *info*) oder für temporäre Interaktionen (z *scratch*. B. ). Für solche Puffer würde ich empfehlen, die Dinge so zu lassen, wie sie sind. Sie können einen solchen Puffer jederzeit bei Bedarf speichern C-x C-w, wenn Sie dies wirklich benötigen.

  4. Was mich zu dem bringt, was ich vermute, ist Ihr wirklicher Anwendungsfall: " Puffer [s] zum Notieren usw. ". Die Antwort hier ist, C-x C-fstatt zu verwenden C-x b. IOW, ja, besuchen Sie sie als Dateipuffer. Wenn Sie den Puffer nie speichern, wird keine Datei erstellt - außer einer automatisch gespeicherten Datei , die wahrscheinlich genau das ist, was Sie wollen und brauchen.

    Wenn Sie einen Puffer als Dateipuffer aufrufen, steuern Sie automatisch, welcher Hauptmodus standardmäßig verwendet wird (using auto-mode-alist). Dies ist für das Notieren genauso wichtig wie für das Programmieren von Code.

    Insbesondere würde ich vorschlagen, dass Sie *scratch*es sich möglicherweise noch einmal überlegen , wenn Sie es für die temporäre Lisp-Interaktion verwenden. Viele Benutzer (einschließlich mir) haben festgestellt, dass es hilfreich ist, stattdessen C-x C-f foo.el(oder einen anderen *.elDateinamen) zu verwenden. Ein Grund ist, dass Sie automatisch automatisch gespeicherte Dateien erhalten (und Sicherungsdateien, wenn Sie den Puffer speichern). Ein weiterer Grund ist, dass Sie den Emacs-Lisp-Modus anstelle des Lisp-Interaktionsmodus erhalten. Ein dritter Grund ist, dass Sie möglicherweise Ihre "temporäre" Arbeit speichern möchten. Und wie Sie sagen, ist Speicherplatz billig.

Was ist mit # 4 im Widerspruch zu dem, was ich in # 1 gesagt habe? Sie möchten keine Dateien mit temporären Skizzen mit wichtigen Dateien mischen, und Sie möchten nicht gelegentlich Perlen aus einem Verzeichnis mit temporären Dateien fischen. Die Antwort hier ist, dass es an Ihnen liegt, die Dinge so zu organisieren, dass dieser Effekt minimiert wird. Das Arbeiten mit solchen Arbeitsdateien in einem bestimmten Verzeichnis kann hilfreich sein, ebenso wie die Verwendung einer Namenskonvention (insbesondere eines Präfixes), mit der Sie solche Dateien unterscheiden können.

Eine andere Sache, die helfen kann: Dired . Sie können Sicherungsdateien zum Löschen verwenden ~und #markieren und dann automatisch xlöschen (und dann löschen). Wenn Sie eine Namenskonvention für Ihre vermutlich temporären Scratch-Dateien verwenden, können Sie %alle oder ähnliche Dateien zum Löschen markieren. Sie können sogar regelmäßig eine Funktion ausführen, um solche Dateien zu bereinigen. Und Sie können ganz einfach alles umbenennen, was Sie wirklich länger behalten möchten.

Mein Rat ist also, vielleicht zu überdenken, wie Sie mit solchen temporären Puffern für Notizen interagieren. Erwägen Sie die Verwendung von Dateipuffern, die automatisch gespeichert werden. In der Summe verwenden C-x C-f foobarbaz.txt RET(oder .eloder was auch immer) anstelle von C-x b foobarbaz RET.

Drew
quelle
1
Ich denke, Sie meinten im letzten Absatz "In Summe verwenden C-x C-f" anstelle von "In Summe verwenden C-x b". (Ich kann keine direkte Bearbeitung vorschlagen, da diese Änderung weniger als 6 Zeichen umfasst.)
YoungFrog
1
In den letzten Wochen habe ich versucht, mich stattdessen an Cx Cf zu gewöhnen, und es hat ziemlich gut geklappt. In Kombination mit einer besseren Verwendung von Lesezeichen und Helm kann ich sehr schnell in ein Notizenverzeichnis gelangen und eine neue Arbeitsdatei erstellen. Ich habe mich über Yegges effektiven Emacs-Tipp Nr. 5 an die ursprüngliche Gewohnheit von Cx b <gibberish> gewöhnt, aber wenn die Möglichkeit besteht, dass der Puffer hängen bleibt, haben Sie wahrscheinlich die Gewohnheit, eine richtige Datei zu verwenden. Vielen Dank!
Chris Clark
1
Ich bin froh, dass es geholfen hat.
Drew