Сохранение орг-повестки дня - PullRequest
4 голосов
/ 09 августа 2009

Я хочу сохранить выходные данные org-повестки дня в текстовый файл каждый раз, когда рассчитывается org-повестки дня. Таким образом, я могу использовать внешнюю программу (например, ATNotes в Windows или Conky в Linux), чтобы взять этот текстовый файл и отобразить его на моем рабочем столе.

Как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 21 апреля 2010

Я чувствую, что на вашем параде идет дождь после того, как вы попытались написать этот отрывочный код (и тоже использовали небольшой совет!), Но на самом деле эта функция уже встроена в режим org, и задокументировано в руководстве. Вам нужна команда org-write-agenda (C-x C-w в буфере повестки дня). См. Раздел сведений о режиме org, озаглавленный «Экспорт представлений повестки дня».

2 голосов
/ 09 августа 2009

Если вы хотите сделать это, пока у вас открыт emacs, вы можете просто вызвать save-buffer в буфере *Agenda* через M-x save-buffer (поскольку orgmode связывает C-x C-s с org-save-all-org-buffer. Вы можете связать save-buffer с что-то еще в org-mode-map, если хотите.

Если вы хотите сделать это через cron, вы сможете использовать фрагмент из этой цепочки в списке рассылки org-mode, чтобы направить вывод в файл. Я использовал это в прошлом:

    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
1 голос
/ 10 августа 2009

Итак, я наконец решил открыть руководство по 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 создает новый буфер todo при каждом выполнении org-todo-list. Это становится довольно раздражающим.

2) Без функции get-buffer-create, kill-buffers сбоит в первый раз, так как в это время нет буфера с именем todo.

3) Без set-buffer-Modified-P, функция будет постоянно сообщать вам «todo buffer модифицирован. Действительно убить его? (Y или n)», что на самом деле победило бы всю цель.

Уф! Я так счастлив, что я действительно потратил время и усилия, чтобы понять это! : D

...