変更ごとにバッファを保存する


7

変更の正確な瞬間にバッファが保存される可能性があるかどうか知りたいのですが。キーアップイベントの瞬間。


1
あなたは他の回答を受け取ることになりますが、あなたは自動保存・バッファ・強化に興味がある可能性があり: github.com/kentaro/auto-save-buffers-enhanced/blob/master/...
lawlist

1
これが欲しい具体的な理由はありますか?これはかなり正気ではないでしょう。私は速くタイプしませんが、速いSSDでも私のタイピングに追いつけないことがわかっています。(少なくともemacsではありません)
PythonNut

回答:


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)

これは警告で来る必要があります:あなただけのためにすることができません、それはあなたがいることを意味するものではありませんはず。私はテストしていませんが、これはパフォーマンスに大きな影響を与える可能性が高いと思います。
NickD

@NickD同意した。しかし、質問に答えただけで、良い習慣のヒントとしては与えていません。
AndreasRöhler19年

7

同じ要件があり、emacsの自動保存機能はC関数に追加できないため、うまく機能しませんでした。それで、私はそのためにreal-auto-saveパッケージを書きました。melpaで利用できます。

あなたはそれをインストールすることができます

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

そしてあなたの設定であなたは追加することができます

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

毎秒、バッファが変更されると、自動的に保存されます。

キーアップイベント後に保存したい場合は、そのためのlisp関数を記述できます。


3

を有効にするauto-save-modeと、Emacsは現在のバッファを別のファイルに自動的に保存します。次に、この関数をauto-save-hookに追加して、編集中の実際のファイルにも直接書き込みます。

(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)

自動保存制御に関するEmacsマニュアルによると:

変数auto-save-intervalは、自動保存の間にある文字数を指定します。デフォルトでは300です。Emacsは小さすぎる値を受け入れません。auto-save-intervalを20未満の値にカスタマイズすると、Emacsは値が20であるかのように動作します。

したがって、キーを押すたびにEmacsに保存させたい場合は、次のように変更auto-save-interval1ます。

(setq auto-save-interval 1)

2
あなたが引用したマニュアルでは、20未満の値を指定すると、Emacsは値が20であるかのように動作します。それでは、1でどのように機能するのですか
Hakan Serce 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.