1

在两个不同的场合,我用 emacs 覆盖了重要文件,直到后来才意识到。发生这种情况是因为各种命令(特别是org-agenda-writeand org-export)将简单地替换现有文件,而不会警告该名称的文件已经存在。有没有办法配置emacs,这样就不会发生?

4

1 回答 1

1

org-agenda-write用于write-file保存您的议程。当从程序调用此函数时,将覆盖现有文件而无需确认。write-file深埋在里面org-agenda-write,直接修改它可能会在 Emacs 的其他地方引起令人惊讶的错误。但是,您可以包含org-agenda-write一个环绕建议。这是添加检查文件是否存在并在覆盖之前提醒用户的一种巧妙方法。

(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看起来比较复杂,可能需要借助外部程序来完成。不过,如果您愿意,您可能可以使用类似的包装器。

于 2013-01-03T02:53:16.730 回答