在两个不同的场合,我用emacs覆盖了重要文件,直到后来才意识到这一点。发生这种情况是因为各种命令(特别是org-agenda-write
和org-export
)将简单地替换现有文件,而不会警告已存在具有该名称的文件。有没有办法配置emacs以便不会发生这种情况?
答案 0 :(得分:1)
org-agenda-write
使用write-file
来保存您的日程。从程序调用时,此函数将覆盖现有文件而无需确认。 write-file
深埋在org-agenda-write
内,并且直接修改它可能会在Emacs的其他地方引起令人惊讶的错误。但是,您可以将org-agenda-write
包含在around建议中。这是一种巧妙的方法来添加对文件存在的检查,并在覆盖之前提醒用户。
(defadvice org-agenda-write (around my-file-check)
"Check if a file exists before writing the agenda to it."
(if (file-exists-p file)
(if (y-or-n-p (format "Overwrite %s?" file))
ad-do-it)
ad-do-it))
(ad-activate 'org-agenda-write)
这可能有资格成为org-agenda-write
中的错误,如果你在orgmode邮件列表上很好地提问,他们可能会确信这个检查是默认行为。
org-export
的文件编写行为看起来更复杂一些,可能会利用外部程序来完成。不过,如果你愿意,你可以使用类似的包装。