ส่งออกมุมมองวาระการประชุมองค์กรเป็นระยะใน Emacs


0

ในการส่งออกมุมมองวาระการประชุมองค์กรในไฟล์ข้อความสำหรับการประมวลผลเพิ่มเติมฉันทำงาน(org-batch-store-agenda-views)เป็นระยะเป็นงานแบตช์ Emacs ที่ดำเนินการโดย cron เนื่องจากมีค่าใช้จ่ายในการเริ่มต้นอินสแตนซ์ emacs เพื่อทำการเรียกใช้ฟังก์ชัน 500 ms หนึ่งครั้งฉันจึงต้องการให้อินสแตนซ์ที่ทำงานอยู่ตลอดเวลาของฉันทำเพื่อฉัน

มีไลบรารี Timersใน Emacs แต่ฟังก์ชั่นที่มีให้ไม่เรียกใช้ฟังก์ชันตามที่ต้องการ:

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

คุณช่วยอธิบายได้ไหมว่าทำไมคุณถึงเชื่อว่ามันไม่ทำงาน ฉันสร้างฟังก์ชั่นง่าย ๆ(defun foo () (message "GO"))จากนั้นดำเนินการ(run-at-time 5 5 'foo)และเห็นข้อความที่ปรากฏใน*Messages*บัฟเฟอร์จนกว่าฉันจะยกเลิกตัวจับเวลา
verdammelt

@verdammelt: เรียบง่ายจริงๆ 'org-batch-store-agenda-viewsเขียนวาระ ASCII ลงในไฟล์ (สิ่งเดียวกับC-c a e) และมันจะไม่เขียนไฟล์เมื่อฉันทำให้ตัวจับเวลาทำงาน
souser12345

คำตอบ:


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)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.