假設我在沒有訪問文件的緩衝區中輸入一堆文本(它可能是一個新的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. 自動保存緩衝區:make in vim?
- 3. 從以前保存的文件加載時緩衝區溢出
- 4. 是否可以訪問WebView緩存?
- 5. 什麼是緩衝區緩存中的臨時CLOB?
- 6. OpenGL臨時緩衝區
- 7. 如何不保存文件中的更改(並在臨時緩衝區!)?
- 8. Ruby的CSV.open緩衝區是否可以一次寫入內存?
- 9. MPI_Isend/Irecv:是否有可能同時訪問未使用的內存位置上的發送緩衝區
- 10. 將文件保存在用戶臨時文件夾中是否可以接受?
- 11. Emacs意外地將緩衝區切換到臨時緩衝區
- 12. fread後訪問內存緩衝區()
- 13. glUniform * fv是否保留了緩衝區?
- 14. 是否可以在frama-c中指定緩衝區訪問子句?
- 15. 使用cout時輸出緩衝區是否自動刷新?
- 16. 當緩衝區已滿時,DataOutputStream是否會自動刷新?
- 17. 訪問緩衝區在OpenGL
- 18. 訪問流緩衝區HttpWebRequest
- 19. 在Netbeans中打開臨時緩衝區/暫存區?
- 20. kmalloc中的緩衝區是否也是DMA安全緩衝區?
- 21. 自動關閉暫存緩衝區
- 22. 如何在emacs中禁用tramp緩衝區的自動保存?
- 23. Getstore緩衝區,不使用臨時文件
- 24. Vim:打開顯示可執行文件輸出的臨時緩衝區
- 25. HDF5:「文件緩衝區」和「文件緩存」有什麼區別?
- 26. 當獲取varchar2列值時,是否可以動態調整緩衝區大小?
- 27. 「緩衝區尚未創建」 ......同時,緩衝區的建立
- 28. 是否可以緩存客戶端動態創建的文件?
- 29. 是否可以訪問Windows中的主機保護區?
- 30. 緩衝區加載/文件上的vim自動命令是否打開?
偉大的信息。自動保存模式有點神祕,因爲它非常不顯眼(這是件好事)。我使用make-auto-save-file-name來控制緩衝區的保存位置,而不是defadvice。 – 2012-01-13 22:15:40