Периодически экспортируйте представления программы в Emacs
Чтобы экспортировать представления повестки дня 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)
Как заставить это работать? Конечная цель - посадить что-то подобное в моем .emacs
init (тоже не работает):
(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."))
1 ответ
Хорошо, во время отладки я сделал простую чертову обертку вокруг функции, и она начала работать. Вероятно, таймер передает функции что-то смешное в аргументах, или закрытие было неправильным. В любом случае. :)
(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)