代码之家  ›  专栏  ›  技术社区  ›  vedang

保存组织议程

  •  4
  • vedang  · 技术社区  · 15 年前

    每次计算组织议程时,我都希望将组织议程的输出保存到文本文件中。这样,我就可以使用一个外部程序(如windows上的ATNotes或linux上的conky)来提取这个文本文件并将其显示在我的桌面上。

    我该怎么做?

    3 回复  |  直到 15 年前
        1
  •  4
  •   Robert P. Goldman chepner    14 年前

    在你不辞辛劳地编写了这段代码之后,我感觉自己像是在为你的阅兵式上下大雨(而且还使用了一条环绕的建议!),但事实上,这项功能已经进入了组织模式,并记录在手册中。您需要的命令是 org-write-agenda (议程缓冲区中的C-x C-w)。请参阅组织模式信息中标题为“导出议程视图”的部分

        2
  •  2
  •   seth    15 年前

    如果您想在打开emacs时执行此操作,您可以拨打 save-buffer *Agenda* 缓冲过孔 M-x save-buffer (由于orgmode绑定 C-x C-s org-save-all-org-buffer. 你可以绑定 保存缓冲区 org-mode-map 如果你愿意的话。

    如果您想通过cron来实现这一点,您应该能够在中使用该代码段 this thread 在组织模式邮件列表上,将输出通过管道传输到文件。我过去用过这个:

        emacs -batch -eval '(org-batch-agenda "a" org-agenda-ndays 7 org-agenda-include-diary nil org-agenda-files (quote ("~/org/todo.org")))' > agenda.txt
    
        3
  •  1
  •   vedang    15 年前

    ;; 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缓冲区,defadvice会在每次执行org todo list时创建一个新的todo缓冲区。这让人很恼火。

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

    3) 如果没有set-buffer-modified-p,函数将不断告诉您“todo buffer已修改。真的要杀死它吗?(y或n)”,这将真正破坏整个目的。

    唷!我真高兴我花了时间和精力来解决这个问题!:D