Emacs自动保存:为什么文件没有存储在正确的文件夹中?

时间:2013-03-08 20:44:29

标签: emacs autosave

我查看了各个地方,最后在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,.emacs.d 700]

2 个答案:

答案 0 :(得分:5)

您的错误在:

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

(使用单个参数调用concat毫无意义,顺便提一下。)

  

如果可选元素UNIQUIFY为非零,则自动保存文件名为   通过替换文件名的目录部分构建,   与所有目录分隔符的缓冲区文件名连接在一起   变成了'!'防止冲突。

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)))

答案 1 :(得分:1)

这就是我的.emacs中的内容,这对我很有用:

(add-to-list 'auto-save-file-name-transforms
             (list "\\(.+/\\)*\\(.*?\\)" (expand-file-name "\\2" my-auto-save-folder))
             t)