2

我查看了各个地方,最后在 Emacs 中为“自动保存”模式提出了以下设置:

(defvar my-auto-save-folder (concat "~/.emacs.d/auto-save")); folder for auto-saves
(setq auto-save-list-file-prefix "~/.emacs.d/auto-save/.saves-"); set prefix for auto-saves 
(setq auto-save-file-name-transforms `((".*", my-auto-save-folder t))); location for all auto-save files
(setq tramp-auto-save-directory my-auto-save-folder); auto-save tramp files in local directory

在设置了几个星期后,我访问了 ~/.emacs.d 并发现文件夹 ~/.emacs.d/auto-save 是空的,而 ~/.emacs.d 包含两个表单的自动保存文件#!home!<myusername>!<myfolder>!<myfile>. 为什么自动保存文件没有存储在 ~/.emacs.d/auto-save 中?[该文件夹auto-save的权限为 775、700 .emacs.d]

4

2 回答 2

6

您的错误在于:

(defvar my-auto-save-folder (concat "~/.emacs.d/auto-save")); folder for auto-saves

concat(顺便说一句,使用单个参数调用 to是毫无意义的)。

如果可选元素 UNIQUIFY 为非 nil,则自动保存文件名通过将替换的文件名的目录部分与缓冲区文件名连接起来,所有目录分隔符都更改为“!” 以防止冲突。

Emacs 通过尾随标识目录名称/,这意味着您使用的路径的“目录部分”是“~/.emacs.d/”。

你要:

(defvar my-auto-save-folder "~/.emacs.d/auto-save/"); folder for auto-saves

以下逗号的位置也很奇怪(尽管显然它仍然有效):

`((".*", my-auto-save-folder t)))

那真的应该是:

`((".*" ,my-auto-save-folder t)))
于 2013-03-09T07:57:39.120 回答
1

这就是我的 .emacs 中的内容,对我来说效果很好:

(add-to-list 'auto-save-file-name-transforms
             (list "\\(.+/\\)*\\(.*?\\)" (expand-file-name "\\2" my-auto-save-folder))
             t)
于 2013-03-08T21:26:28.470 回答