Чтобы экспортировать представления повестки дня 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 ответ1

0

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

(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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .