Периодически экспортируйте представления программы в Emacs

844
progo

Чтобы экспортировать представления повестки дня org в текстовый файл для дальнейшей обработки, я (org-batch-store-agenda-views)периодически запускаю пакетное задание Emacs, запускаемое cron. Поскольку при запуске экземпляра emacs для выполнения одного вызова функции за 500 мс возникают некоторые издержки, я хочу, чтобы один из моих постоянно работающих экземпляров сделал это за меня.

В Emacs есть библиотека Timers, но предоставляемые функции не вызывают функцию должным образом:

(run-with-idle-timer 2 1 'org-batch-store-agenda-views)  (run-at-time 5 5 'org-batch-store-agenda-views) 

Как заставить это работать? Конечная цель состоит в том, чтобы привить что-то подобное в моем .emacsinit (тоже не работает):

 (let ((time-interval (* 60 10))) (defvar my-org-agenda-updater-handle (run-with-timer (random time-interval) time-interval 'org-batch-store-agenda-views) "A timer object that denotes our running batch job.")) 
0
Можете ли вы объяснить, почему вы считаете, что это не работает? Я создал простую функцию `(defun foo () (message" GO "))` и затем выполнил `(run-time-5 5 'foo)` и видел сообщения, появляющиеся в буфере `* Messages *`, пока я отменил таймер. verdammelt 10 лет назад 0
@verdammelt: Просто, правда. `'org-batch-store -nda-views` записывает повестку дня ASCII в файл (то же самое, что` Cc ae`) и не записывает файл, когда я запускаю таймер. progo 10 лет назад 0

1 ответ на вопрос

0
progo

Хорошо, во время отладки я сделал простую чертову обертку вокруг функции, и она начала работать. Вероятно, таймер передает функции что-то смешное в аргументах, или закрытие было неправильным. В любом случае. :)

(defun progo-run-agenda-store () "" (message "Agenda to be exported... ") (org-batch-store-agenda-views) (message "Agenda exported!"))  (run-at-time 5 5 'progo-run-agenda-store) 

Похожие вопросы