Speichern Sie den Puffer bei jeder Änderung


7

Ich würde gerne wissen, ob es möglich ist, dass der Puffer genau zum Zeitpunkt der Änderung gespeichert wird. zum Zeitpunkt des Key-Up-Ereignisses.


1
Sie erhalten andere Antworten, aber Sie könnten an den erweiterten automatischen Speicherpuffern interessiert sein: github.com/kentaro/auto-save-buffers-enhanced/blob/master/…
lawlist

1
Haben Sie einen bestimmten Grund, dies zu wollen? Das wäre ziemlich verrückt. Ich tippe nicht schnell, aber ich weiß, dass selbst eine schnelle SSD nicht mit meiner Eingabe mithalten kann. (Zumindest nicht in Emacs)
PythonNut

Antworten:


9
(defun my-instant-save-buffer (eins zwei drei)
  "To be hooked into list `after-change-functions' 

`after-change-functions' expects functions receiving three arguments. 
Arguments are ignored here, but slots needed by add-hook"
  (save-buffer))

(add-hook 'after-change-functions 'my-instant-save-buffer)

Dies sollte mit einer Warnung einhergehen: Nur weil Sie es können , heißt das nicht, dass Sie es sollten . Ich habe nicht getestet, aber ich denke, dass dies die Leistung erheblich beeinträchtigen wird.
NickD

@ NickD Einverstanden. Beantwortete jedoch nur die Frage und gab keinen Hinweis auf eine gute Praxis.
Andreas Röhler

7

Ich hatte die gleichen Anforderungen und die Funktion zum automatischen Speichern von Emacs hat bei mir nicht gut funktioniert, da sie keine Funktionen zu c-Funktionen hinzufügen kann. Also habe ich ein Paket geschrieben, das echt automatisch gespeichert wird . Es ist auf Melpa erhältlich.

Sie können es installieren durch

M-x package-install RET real-auto-save 

und in Ihrer Konfiguration können Sie hinzufügen

(require 'real-auto-save)
(add-hook 'prog-mode-hook 'real-auto-save-mode)
(setq real-auto-save-interval 1) ;; in seconds

Wenn Ihr Puffer nach jeder Sekunde geändert wird, wird er automatisch gespeichert.

Wenn Sie speziell nach dem Key-Up-Ereignis speichern möchten, können Sie dafür eine Lisp-Funktion schreiben.


3

Sie können aktivieren auto-save-mode, sodass Emacs Ihren aktuellen Puffer automatisch in einer anderen Datei speichert. Fügen Sie dann diese Funktion hinzu, auto-save-hookum sie auch direkt in die eigentliche Datei zu schreiben, die Sie bearbeiten:

(defun save-buffer-if-visiting-file (&optional args)
   "Save the current buffer only if it is visiting a file"
   (interactive)
   (if (and (buffer-file-name) (buffer-modified-p))
       (save-buffer args)))

(add-hook 'auto-save-hook 'save-buffer-if-visiting-file)

Laut dem Emacs-Handbuch zur automatischen Speichersteuerung :

Die Variable Auto-Save-Intervall gibt an, wie viele Zeichen zwischen den automatischen Speichern liegen. Standardmäßig ist es 300. Emacs akzeptiert keine zu kleinen Werte: Wenn Sie das automatische Speicherintervall auf einen Wert unter 20 anpassen, verhält sich Emacs so, als wäre der Wert 20.

Wenn Sie also möchten, dass Emacs bei jedem Tastendruck speichert, wechseln Sie auto-save-intervalzu 1:

(setq auto-save-interval 1)

2
Das von Ihnen zitierte Handbuch besagt, dass sich Emacs bei weniger als 20 so verhält, als wäre der Wert 20. Wie funktioniert es dann mit 1?
Hakan Serce
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.