วิธีรับข้อมูลดิบสำหรับวาระการประชุมโหมดโดยไม่มีมุมมองวาระ?


10

ถาม:ฉันจะorg-modeส่งคืนข้อมูลดิบสำหรับมุมมองกำหนดการโดยไม่สร้างมุมมองกำหนดการได้อย่างไร

ฉันต้องการเข้าถึงวาระการประชุมของฉันในวันใดวันหนึ่ง อย่างไรก็ตามฉันไม่ต้องการที่จะสร้างมุมมองวาระต่อ se แต่ฉันต้องการorg-modeรวบรวมและจัดเรียงองค์ประกอบทั้งหมดที่จะเข้าสู่มุมมองวาระการประชุมสำหรับวันนั้นและส่งคืน (ตามความเหมาะสมในรายการ) เพื่อตรวจสอบและจัดการต่อไป

ฉันสันนิษฐานว่าorg-agenda-listน่าจะเป็นที่สำหรับเริ่มต้น อย่างไรก็ตามฟังก์ชั่นนั้นเป็นสัตว์ร้ายและดูเหมือนว่าจะรวมการรวบรวมการเรียงลำดับและการแสดงกระบวนการเข้าด้วยกัน ด้วยเหตุนี้ฉันจึงสันนิษฐาน (หวัง) ว่าฉันเพิ่งพลาดฟังก์ชั่นที่เกี่ยวข้องที่ให้ฟังก์ชั่นหลังจากนั้น

คำตอบ:


4

ต่อไปนี้เป็นตัวอย่างที่ย่อของวิธีการดึงข้อมูลที่จะเข้าสู่นั้น*Org Agenda*บัฟเฟอร์เมื่อตามปกติโดยใช้ฟังก์ชั่นorg-agenda-listด้วยorg-agenda-entry-typesเช่น:deadline, :scheduled, :timestamp, sexp, และ:deadline* :scheduled*ช่วงของวันที่ - beginและend- ควรจะอยู่ในรูปแบบรายการเกรกอเรียน - '(6 1 2015)เช่น ตัวเลือกปรับแต่งขอผูกพันอยู่และorg-agenda-prefix-format org-agenda-entry-typesฟังก์ชันส่งคืนผลลัพธ์ในรูปแบบของรายการ

(require 'calendar)
(require 'org)
(require 'org-agenda)
(require 'cl)

;; Portions of following code were extracted from:
;;   https://github.com/kiwanami/emacs-calfw written by Masashi Sakurai
;; Said code has been modified by @lawlist hereinbelow.
;;
(defun org-get-entries-fn (begin end)
"Return org schedule items between BEGIN and END.
USAGE:  (org-get-entries-fn '(6 1 2015) '(12 31 2020))"
  (unless
      (and
        (calendar-date-is-valid-p begin)
        (calendar-date-is-valid-p end))
    (let ((debug-on-quit nil))
      (signal 'quit '("One or both of your Gregorian dates are invalid."))))
  (let* (
      result
      (org-agenda-buffer nil) ;; prevent error from `org-compile-prefix-format'
      ;; The variable `org-agenda-only-exact-dates' is apparently not operational.
      (org-scheduled-past-days 0) ;; avoid duplicate entries for overdue items
      (org-agenda-prefix-format "• ")
      (org-agenda-entry-types '(:scheduled))
      (date-after
        (lambda (date num)
          "Return the date after NUM days from DATE."
          (calendar-gregorian-from-absolute
           (+ (calendar-absolute-from-gregorian date) num))))
      (enumerate-days
        (lambda (begin end)
          "Enumerate date objects between BEGIN and END."
          (when (> (calendar-absolute-from-gregorian begin)
                   (calendar-absolute-from-gregorian end))
            (error "Invalid period : %S - %S" begin end))
          (let ((d begin) ret (cont t))
            (while cont
              (push (copy-sequence d) ret)
              (setq cont (not (equal d end)))
              (setq d (funcall date-after d 1)))
            (nreverse ret)))) )
    (org-compile-prefix-format nil)
    (setq result
      (loop for date in (funcall enumerate-days begin end) append
        (loop for file in (org-agenda-files nil 'ifmode) append
          (progn
            (org-check-agenda-file file)
            (apply 'org-agenda-get-day-entries file date org-agenda-entry-types)))))
    result))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.