【问题标题】:How to configure Emacs to save backup for files under temp directory?如何配置 Emacs 以保存临时目录下文件的备份?
【发布时间】:2014-05-11 14:10:08
【问题描述】:

我经常使用 emacsclient 编辑 /tmp 中的临时文件,并希望像处理其他文件一样自动创建我的文件的备份副本。我敢肯定有办法做到这一点 - 但怎么做? :)

(我搜索了 Emacs 手册、emacswiki 和 SO,但找不到任何有用的东西)

【问题讨论】:

    标签: emacs configuration backup


    【解决方案1】:

    查看normal-backup-enable-predicate 函数,它是backup-enable-predicate 变量的默认值。

    由于默认函数的唯一目的是禁止对各种临时目录中的文件进行备份,您可能只想设置一个无条件返回 t 的替换。

    (setq backup-enable-predicate (lambda (name) t))
    

    files.el 中的用法向我表明,您也可以将此变量设置为nil。这在文档中没有说明,所以它可能不可靠,但是 Emacs 中的任何其他库都没有引用该变量,所以它可能很好(但我仍然建议使用 lambda,因为它在做什么更明显)。

    另见 C-hig (elisp) Making Backups RET

    n.b.我实际上并不熟悉small-temporary-file-directory(请参阅该变量的文档字符串),但temporary-file-directory 的值通常是/tmp/,所以这两种情况通常是相同的。

    如果您确实想为某些临时目录保留默认行为,而不是其他的,您应该定义原始函数的修改副本:(defun my-backup-enable-predicate ...),然后是(setq backup-enable-predicate 'my-backup-enable-predicate)

    【讨论】:

    • 我认为我们有一个赢家。 Emacs 手册实际上提到了“backup-enable-predicate”——我不知何故错过了。 :( 谢谢!
    • 如果我退出emacsclient后临时文件目录中的文件立即被删除了怎么办?如何在终止缓冲区之前复制文件?
    • 回答我自己的问题 - 似乎我需要“C-u C-u C-x C-s”gnu.org/software/emacs/manual/html_node/emacs/Backup.html
    【解决方案2】:

    将此粘贴​​到您的 .emacs 文件中:

    ;; create an invisible backup directory so our directories 
    ;; look a bit cleaner
    ;; thanks to #emacs in irc.freenode.org, Ryan Barrett of snarfed.org
    ;; and freethegnu.wordpress.com
     (defun make-backup-file-name (filename)
     (defvar backups-dir "/tmp/")
     (make-directory backups-dir t)
     (expand-file-name
     (concat backups-dir (file-name-nondirectory filename) "~")
     (file-name-directory filename)))
    

    【讨论】:

    • 如果将备份保存到主目录(如“~/.backup”)即使在 /tmp 中进行编辑(例如 /tmp/tmp.1234)也会很好。
    • Lester Cheung:应该是(setq backup-directory-alist '(("." . "~/.backup"))),但请仔细阅读How do I control how Emacs makes backup files? 的各种答案,因为这不太可能是您想要配置的唯一选项。
    • 谢谢@phils 是的,这就是我目前正在使用的。
    猜你喜欢
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2013-11-25
    • 2011-10-13
    • 2015-08-28
    相关资源
    最近更新 更多