Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Emacs 是否可以自动保存不访问文件的临时缓冲区?_Emacs_Elisp - Fatal编程技术网

Emacs 是否可以自动保存不访问文件的临时缓冲区?

Emacs 是否可以自动保存不访问文件的临时缓冲区?,emacs,elisp,Emacs,Elisp,假设我在一个缓冲区中输入了一堆文本,而该缓冲区没有访问文件(它可能是一个新的org2blog post,或者只是一些临时缓冲区)。是否可以在灾难发生和Emacs死亡时将其自动保存在某个位置?自动保存模式实际上适用于非文件缓冲区。默认情况下,它不会被启用——这通常发生在(查找文件之后)中 So:M-x自动保存模式RET 默认情况下,自动保存文件将写入缓冲区的默认目录(或/var/tmp或~/,具体取决于写入权限;请参阅C-hv缓冲区自动保存文件名RET),这在崩溃后可能有点难以理解,因此,将其设置

假设我在一个缓冲区中输入了一堆文本,而该缓冲区没有访问文件(它可能是一个新的org2blog post,或者只是一些临时缓冲区)。是否可以在灾难发生和Emacs死亡时将其自动保存在某个位置?

自动保存模式实际上适用于非文件缓冲区。默认情况下,它不会被启用——这通常发生在
(查找文件之后)

So:M-x
自动保存模式
RET

默认情况下,自动保存文件将写入缓冲区的
默认目录
(或
/var/tmp
~/
,具体取决于写入权限;请参阅C-hv
缓冲区自动保存文件名
RET),这在崩溃后可能有点难以理解,因此,将其设置为标准可能是一个好主意

如果以交互方式调用
自动保存模式
,则以下操作将确保这些自动保存文件写入主目录(或M-x
自定义变量
RET
我的非文件缓冲区自动保存目录
RET)。这将有望避免与非文件缓冲区的
自动保存模式
的任何其他使用相冲突(例如,代码提到了邮件模式)

为我澄清了一些事情,但我最终使用了一种不同的方法。为了文档的缘故,我将其作为一个单独的答案发布。这是我的自动保存节:

;; 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)) "#"))))
在此上下文中,为未访问的文件缓冲区创建单独的目录是可选的;它们也可以放在集中的位置(在本例中是,
autosavedir
)。还请注意,如果临时缓冲区名称类似“*foo/bar*”(带星号和/或斜线),我必须进行一些基本的文件名清理

最后,您可以在某些模式的临时缓冲区中使用以下功能自动启用autosave

(add-hook 'org2blog/wp-mode-hook '(lambda () (auto-save-mode t)))

好消息。自动保存模式有点神秘,因为它非常不引人注目(这是一件好事)。我使用makeautosavefilename来控制缓冲区的保存位置,而不是defadvice。
(add-hook 'org2blog/wp-mode-hook '(lambda () (auto-save-mode t)))