2012-01-13 22 views

Trả lời

12

auto-save-mode thực sự hoạt động với bộ đệm không phải tệp. Nó chỉ không được kích hoạt theo mặc định - thường xảy ra trong (after-find-file).

Vì vậy: Mxauto-save-modeRET

Theo mặc định các tập tin tự động lưu lại sẽ được ghi vào default-directory của bộ đệm (hoặc /var/tmp hoặc ~/, tùy thuộc vào quyền ghi, xem Chvbuffer-auto-save-file-nameRET) có thể hơi khó xử khi tìm ra sau khi xảy ra sự cố, vì vậy việc đặt tiêu chuẩn đó thành tiêu chuẩn có lẽ là một ý tưởng hay.

Sau đây sẽ đảm bảo rằng những tập tin tự động lưu lại được ghi vào thư mục home của bạn (hoặc M-xcustomize-variableRETmy-non-file-buffer-auto-save-dirRET), nếu auto-save-mode được gọi một cách tương tác. Điều đó hy vọng sẽ tránh xung đột này với bất kỳ cách sử dụng nào khác của auto-save-mode với bộ đệm không phải tệp (ví dụ: mã đề cập đến chế độ Thư).

(defcustom my-non-file-buffer-auto-save-dir (expand-file-name "~/") 
    "Directory in which to store auto-save files for non-file buffers, 
when `auto-save-mode' is invoked manually.") 

(defadvice auto-save-mode (around use-my-non-file-buffer-auto-save-dir) 
    "Use a standard location for auto-save files for non-file buffers" 
    (if (and (not buffer-file-name) 
      (called-interactively-p 'any)) 
     (let ((default-directory my-non-file-buffer-auto-save-dir)) 
     ad-do-it) 
    ad-do-it)) 
(ad-activate 'auto-save-mode) 
+0

vĩ đại thông tin. Chế độ tiết kiệm tự động có một chút bí ẩn, vì nó không phô trương (đó là một điều tốt). Thay vì defadvice, tôi đã sử dụng make-auto-save-file-name để kiểm soát nơi lưu các bộ đệm. –

5

phils' answer xóa mọi thứ đối với tôi, nhưng tôi đã kết thúc bằng một cách tiếp cận hơi khác nhau. Tôi đăng nó như là một câu trả lời riêng biệt vì lợi ích của tài liệu. Đây là đoạn trích tự động của tôi:

;; Put autosave files (ie #foo#) in one place 
(defvar autosave-dir (concat "~/.emacs.d/autosave.1")) 
(defvar autosave-dir-nonfile (concat "~/.emacs.d/autosave.nonfile")) 
(make-directory autosave-dir t) 
(make-directory autosave-dir-nonfile t) 
(defun auto-save-file-name-p (filename) (string-match "^#.*#$" (file-name-nondirectory filename))) 
(defun make-auto-save-file-name() 
    (if buffer-file-name (concat autosave-dir "/" "#" (file-name-nondirectory buffer-file-name) "#") 
    (expand-file-name (concat autosave-dir-nonfile "/" "#%" 
           (replace-regexp-in-string "[*]\\|/" "" (buffer-name)) "#")))) 

Tạo thư mục riêng cho bộ đệm tệp không truy cập là tùy chọn trong ngữ cảnh này; họ cũng có thể đi ở vị trí trung tâm (trong trường hợp này là autosave-dir). Cũng lưu ý rằng tôi phải làm một số tên tập tin cơ bản dọn dẹp trong trường hợp tên đệm tạm thời là một cái gì đó như "* foo/bar *" (với các ngôi sao và/hoặc slashes).

Cuối cùng, người ta có thể tự động bật tự động lưu trong bộ đệm tạm thời một số chế độ sử dụng một cái gì đó giống như

(add-hook 'org2blog/wp-mode-hook '(lambda() (auto-save-mode t))) 
Các vấn đề liên quan