保存组织议程

时间:2009-08-09 14:39:33

标签: emacs org-mode

每次计算组织议程时,我都想将org-agenda的输出保存到文本文件中。这样,我可以使用外部程序(如Windows上的ATNotes或Linux上的conky)来获取此文本文件并将其显示在我的桌面上。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

我觉得我在你的游行中正在下雨你写了这段代码被剪断了(并且也使用了一些建议!),但实际上这个功能已经被烘焙到org-mode中了,记录在手册中。您想要的命令是org-write-agenda(议程缓冲区中的C-x C-w)。请参阅标题为“导出议程视图”的组织模式信息部分。

答案 1 :(得分:2)

如果您想在打开emacs时执行此操作,可以通过save-buffer*Agenda*缓冲区上调用M-x save-buffer(因为orgmode会将C-x C-s绑定到{{ 1}}如果您愿意,可以将org-save-all-org-buffer.绑定到save-buffer中的其他内容。

如果您想通过cron执行此操作,则应该能够使用org-mode邮件列表中的this thread中的代码段将输出通过管道传输到文件中。我以前用过这个:

org-mode-map

答案 2 :(得分:1)

所以我最终决定打开emacs lisp手册并自己解决这个问题。我写了这段代码,似乎工作得很好! :)

;; Save the org-agenda for display with conky
(defadvice org-todo-list (after saveorgagenda activate)
  "save this output to my todo file"
  (get-buffer-create "todo")
  (with-current-buffer "todo"
    (set-buffer-modified-p nil))
  (kill-buffer "todo")
  (write-file "~/todo"))

编辑理由:

1)如果没有kill-buffer,defadvice会在每次执行org-todo-list时创建一个新的todo缓冲区。这非常令人恼火。

2)没有get-buffer-create函数,kill-buffers第一次失败,因为那时没有名为todo的缓冲区。

3)如果没有set-buffer-modified-p,该函数会一直告诉你“todo缓冲区被修改。真的杀了它?(y或n)”这真的会破坏整个目的。

呼!我很高兴我真的花时间和精力来解决这个问题! :d