运行emacs批处理时如何避免提示保存缓冲区

时间:2015-04-19 12:20:11

标签: emacs org-mode

我正在跑步

/usr/bin/emacs -l ~/.emacs -eval '(org-icalendar-export-agenda-files)' --batch

在cron工作中。

Orgmode将uuid添加到议程文件中新待办事项的属性,但随后提示保存议程文件(仅当以批处理模式从命令行运行时)。

Save file /home/user/gtd/work.org? (y or n)

我的琐事是echo y | /usr/bin/emacs...。但由于实际上有3个议程文件可能被修改,因此这不是一个好的解决方案。必须设置一些变量或导致org-icalendar-export-agenda-files只保存它修改的文件的内容。

2 个答案:

答案 0 :(得分:1)

使用defadvice在一般 1 中不是一个好习惯,但是,如果你想解决这个问题并且无法等待你的修补程序包含在下一个emacs版本中,请试试这个:

(defadvice org-icalendar-create-uid (after org-icalendar-create-uid-after activate)
  (save-buffer))

这个建议org-icalendar-create-uid,以便在创建新的UID时,保存当前缓冲区 2 。你需要非常小心地建议功能。我建议创建一个与此类似的export-icalendar.el脚本:

;; initialize org-mode
(require 'org)

;; pick your agenda files
(setq org-agenda-files '("~/org"))

;; store UIDs in properties drawer
(setq org-icalendar-store-UID t)

;; optional configuration
(setq org-icalendar-use-scheduled '(event-if-todo event-if-not-todo))
(setq org-agenda-default-appointment-duration 50)

;; avoid interactive prompts if UIDs are created
(defadvice org-icalendar-create-uid (after org-icalendar-create-uid-after activate)
  (save-buffer))

(org-icalendar-combine-agenda-files)

要运行它,请执行此操作 3

emacs --batch -l export-icalendar.el

1:http://emacswiki.org/emacs/AdvisingFunctions

2:在org-icalendar-create-uid内调用with-current-buffer,有关详细信息,请参阅ox-icalendar.el

3:永远不要使用org-icalendar-combine-agenda-files通过eval运行emacsclient,如果您已经访问过议程文件,则会导致问题。

答案 1 :(得分:0)

你会得到帮助吗? 函数save-some-buffers 在emacs? 喜欢

/usr/bin/emacs -l ~/.emacs -eval '(progn (org-icalendar-export-agenda-files) (save-some-buffers t))' --batch

是的,它可以被视为一种kludge。