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