Lưu bộ đệm ở mỗi sửa đổi


7

Tôi muốn biết nếu có thể bộ đệm được lưu vào thời điểm sửa đổi chính xác; tại thời điểm của sự kiện quan trọng lên.


1
Bạn sẽ nhận được các câu trả lời khác, nhưng bạn có thể quan tâm đến tính năng tự động lưu-bộ đệm được tăng cường: github.com/kentaro/auto-save-buffers-enhified/blob/master/iêu
luật

1
Bạn có một lý do cụ thể cho việc này muốn không? Điều này sẽ khá điên rồ. Tôi không gõ nhanh, nhưng tôi biết ngay cả một ổ SSD nhanh cũng không thể theo kịp cách gõ của tôi. (Ít nhất là không phải trong emacs)
PythonNut 17/05/2015

Câu trả lời:


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)

Điều này sẽ đi kèm với một cảnh báo: chỉ vì bạn có thể làm điều đó không có nghĩa là bạn nên làm . Tôi chưa thử nghiệm nhưng tôi nghĩ rằng điều này có khả năng ảnh hưởng đáng kể đến hiệu suất.
NickD

@NickD Đồng ý. Tuy nhiên, chỉ trả lời câu hỏi, không đưa ra gợi ý về thực hành tốt.
Andreas Röhler

7

Tôi có cùng yêu cầu và tính năng tự động lưu của emacs không hoạt động tốt với tôi vì nó không thể bổ sung cho các chức năng c. Vì vậy, tôi đã viết một gói real-auto-save cho điều đó. Nó có sẵn trên melpa.

Bạn có thể cài đặt nó bằng cách

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

và trong cấu hình của bạn, bạn có thể thêm

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

Sau mỗi giây, nếu bộ đệm của bạn được sửa đổi, nó sẽ được lưu tự động.

Nếu bạn đặc biệt muốn lưu sau sự kiện key up, bạn có thể viết một hàm lisp cho điều đó.


3

Bạn có thể bật auto-save-mode, vì vậy Emacs tự động lưu bộ đệm hiện tại của bạn vào một tệp khác. Sau đó, thêm chức năng này để auto-save-hookviết nó trực tiếp vào tập tin thực tế bạn đang chỉnh sửa:

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

Theo hướng dẫn sử dụng Emacs về điều khiển tự động lưu :

Biến tự động lưu-khoảng thời gian xác định có bao nhiêu ký tự giữa các lần lưu tự động. Theo mặc định, nó là 300. Emacs không chấp nhận các giá trị quá nhỏ: nếu bạn tùy chỉnh khoảng thời gian tự động lưu thành giá trị nhỏ hơn 20, Emacs sẽ hành xử như thể giá trị là 20.

Vì vậy, nếu bạn muốn Emacs lưu cho mỗi lần nhấn phím, hãy đổi auto-save-intervalthành 1:

(setq auto-save-interval 1)

2
Hướng dẫn mà bạn trích dẫn nói rằng bất cứ điều gì dưới 20 sẽ khiến Emacs hoạt động như thể giá trị là 20. Làm thế nào để nó hoạt động với 1 sau đó?
Hakan Serce
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.