2012-01-13 6 views

答えて

12

auto-save-modeは、実際には非ファイルバッファで動作します。デフォルトで有効になることはありません。通常は(after-find-file)で発生します。

ので:デフォルトではのMxauto-save-modeRET

ファイルを自動保存は、書き込み権限に応じて、バッファのdefault-directory(または/var/tmpまたは~/に書き込まれます。Chのを参照してください。vbuffer-auto-save-file-nameRET)これはクラッシュ後に把握するのが少し難しいかもしれないので、それを何か標準に設定することはおそらく良い考えです。

これらの自動保存ファイルがホームディレクトリに書き込まれることを保証するであろう、次の(またはM-Xcustomize-variableRETmy-non-file-buffer-auto-save-dirRET)、auto-save-modeが対話的に呼び出された場合。これはうまくいけば、ファイルバッファではなくauto-save-modeの他の用途とのこの矛盾を避けるでしょう(例えば、コードはMailモードを言います)。

(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

グレート情報のようなものを使用して特定のモード一時バッファに自動保存をオンにすることができます。自動保存モードはとても邪魔にならないので、少し不思議です(これは良いことです)。 defadviceの代わりに、make-auto-save-file-nameを使用して、バッファの保存場所を制御しました。 –

5

phils' answerは私のために物事をクリアしたが、私は多少異なるアプローチを使用して終了しました。私は文書化のための別個の答えとしてそれを掲示しています。ここに私のオートセーブ・スタンザがあります:

;; 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)) "#")))) 

ここでは、非訪問ファイルバッファ用に別のディレクトリを作成することはオプションです。中央の場所(この場合はautosave-dir)に入ることもできます。また、一時的なバッファ名が "* foo/bar *"(星やスラッシュ)のようなものである場合には、基本的なファイル名のクリーンアップを行う必要があることにも注意してください。

最後に、一つは自動的に

(add-hook 'org2blog/wp-mode-hook '(lambda() (auto-save-mode t))) 
関連する問題