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.
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.
Câu trả lời:
(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)
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 đó.
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-hook
viế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-interval
thành 1
:
(setq auto-save-interval 1)