假設我在沒有訪問文件的緩衝區中輸入一堆文本(它可能是一個新的org2blog文章,或者只是一些臨時緩衝區)。是否有可能在發生災難和Emacs死亡的情況下自動保存它?是否可以自動保存未訪問文件的臨時緩衝區?
6
A
回答
12
auto-save-mode
實際適用於非文件緩衝區。它只是默認不啓用 - 通常發生在(after-find-file)
。
所以:的Mxauto-save-mode
RET
默認情況下自動保存的文件將被寫入緩衝區的default-directory
(或/var/tmp
或~/
,這取決於寫權限;看到章vbuffer-auto-save-file-name
RET)這可能是一個有點尷尬弄清楚崩潰後,所以設置爲標準的東西可能是一個好主意。
下將確保這些自動保存的文件被寫入到你的主目錄(或M-Xcustomize-variable
RETmy-non-file-buffer-auto-save-dir
RET),如果auto-save-mode
交互式的調用。這將有希望避免與具有非文件緩衝區的auto-save-mode
的任何其他用途相沖突(例如代碼提及郵件模式)。
(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)
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)))
相關問題
- 1. 用臨時緩衝區使用ofstream寫入臨時緩衝區
- 2. 從以前保存的文件加載時緩衝區溢出
- 3. 什麼是緩衝區緩存中的臨時CLOB?
- 4. 如何不保存文件中的更改(並在臨時緩衝區!)?
- 5. MPI_Isend/Irecv:是否有可能同時訪問未使用的內存位置上的發送緩衝區
- 6. Emacs意外地將緩衝區切換到臨時緩衝區
- 7. fread後訪問內存緩衝區()
- 8. 是否可以在frama-c中指定緩衝區訪問子句?
- 9. 當緩衝區已滿時,DataOutputStream是否會自動刷新?
- 10. 訪問流緩衝區HttpWebRequest
- 11. 訪問緩衝區在OpenGL
- 12. 在Netbeans中打開臨時緩衝區/暫存區?
- 13. 自動關閉暫存緩衝區
- 14. 「緩衝區尚未創建」 ......同時,緩衝區的建立
- 15. HDF5:「文件緩衝區」和「文件緩存」有什麼區別?
- 16. 當獲取varchar2列值時,是否可以動態調整緩衝區大小?
- 17. 臨時文件夾中的文件是否自動刪除?
- 18. Emacs自動保存在切換緩衝區
- 19. 保存臨時文件
- 20. 是否有可能恢復以前的GL幀緩衝區?
- 21. 是否可以使用預分配緩衝區的Boost.Format?
- 22. 我可以在TextPad中自動保存打開未保存的文件嗎
- 23. 當緩衝區縮小時,realloc是否保證就地運行?
- 24. 是否可以緩存動態網頁?
- 25. 是否可以自動保存mailx電子郵件?
- 26. 訪問BinaryReader的內部緩衝區
- 27. 從導致AccessViolationException的線程訪問文件緩衝區
- 28. 是否可以將默認渲染緩衝區附加到FBO?
- 29. 是否可以使用緩衝區溢出覆蓋%eax?
- 30. 是否可以將字符串放入複製緩衝區?
偉大的信息。自動保存模式有點神祕,因爲它非常不顯眼(這是件好事)。我使用make-auto-save-file-name來控制緩衝區的保存位置,而不是defadvice。 – 2012-01-13 22:15:40