【问题标题】:Auto-Saving in Emacs not working properly when directory specified指定目录时,Emacs 中的自动保存无法正常工作
【发布时间】:2012-07-03 10:44:25
【问题描述】:

我正在尝试将自动保存设置为使用 ./emacs.d/autosaves 中的目录。我之前使用了下面的两条注释掉的行,目前尝试了我在网上找到的另一个功能。我真正想要的只是不将自动保存存储在同一目录中。它在

(defvar autosave-dir
 (concat "/home/" (user-login-name) "/.emacs.d/autosaves/"))
(make-directory autosave-dir t)
(defun auto-save-file-name-p (filename)
  (string-match "^#.*#$" (file-name-nondirectory filename)))
(defun make-auto-save-file-name ()
  (concat autosave-dir
   (if buffer-file-name
      (concat "#" (file-name-nondirectory buffer-file-name) "#")
    (expand-file-name
     (concat "#%" (buffer-name) "#")))))
;; (setq auto-save-file-name-transforms
;;       `(("#.*#" ,"~/.emacs.d/backups/" t)))

或者我可以设置自动保存以在文件的开头和结尾放置一个#notes.org#,因为目前的格式为 .#notes.org。

【问题讨论】:

    标签: emacs elisp autosave emacs24


    【解决方案1】:

    这是关于锁定文件。欲了解更多信息,请阅读:

    (info "(emacs) Interlocking")
    

    基本上没有办法解决它,除非执行一个小的重写并根据我读过的内容编译你自己的 emacs 源代码。

    【讨论】:

      【解决方案2】:

      你需要的只是(假设autosave-dir所指的目录存在即是):

      (setq auto-save-file-name-transforms
            `((".*" ,autosave-dir t)))
      

      我个人倾向于使用标准的 tmp 目录进行自动保存:

      (setq auto-save-file-name-transforms
            `((".*" ,temporary-file-directory t)))
      

      【讨论】:

      • 这就是我曾经拥有的,但已将其注释掉或类似的东西。它仍然保存在当前目录中。然后,如果我不保存就退出,它会将其复制到该目录,但最初是在当前目录中创建的,文件名前带有 .#。
      • 这很奇怪 - 我已经使用了很长一段时间了,它确实适用于 Emacs 24.1。
      • 是的,它以前可以正常工作,不知道发生了什么。以为它可能是 org-mode,但它在每种模式下都会这样做。即使我在运行时将其重置在暂存缓冲区中,它仍然无法正常工作。我不确定发生了什么。我在一台机器上有 emacs 24.1,在另一台机器上有 emacs 23.3。它也不能正常工作。关于检查什么或为什么它可能保存在当前目录中的任何想法。
      • 您确定正在评估配置吗?也许你有一个.emacs 文件和一个.emacs.d\init.el
      • 发现答案与锁定文件有关。它应该这样做,与自动保存或备份无关。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-17
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 2020-08-15
      相关资源
      最近更新 更多