Ajanda görünümü olmadan bir kuruluş modu gündemi için ham verileri nasıl alabilirim?


10

S:org-mode Gündem görünümü oluşturmadan gündem görünümüne ilişkin ham verileri nasıl iade edebilirim ?

Keyfi bir gün için gündeme erişmek istiyorum. Ancak, gündem görünümü oluşturmak istemiyorum . Bunun yerine, org-modeo gün için gündem görünümüne girecek tüm öğeleri toplamak ve sıralamak ve daha fazla inceleme ve manipülasyon için onları (ideal olarak bir listede) geri döndürmek istiyorum.

Bunun org-agenda-listbaşlangıç ​​yeri olacağını tahmin etmiştim . Bununla birlikte, bu işlev karışık bir canavardır ve toplama, sıralama ve görüntüleme süreçlerini birbirine karıştırıyor gibi görünmektedir. Bu nedenle, peşinde olduğum işlevselliği sağlayan bir yerde ilgili işlevi kaçırdığımı varsayıyorum (umut?).

Yanıtlar:


4

Aşağıda bir gider verileri almak için nasıl bir özet örnek olarak *Org Agenda*, normal olarak fonksiyon kullanıldığında tampon org-agenda-listile, org-agenda-entry-typesörneğin :deadline, :scheduled, :timestamp, sexp, :deadline*, ve :scheduled*. Tarih aralığı - beginve end- Gregoryen liste biçiminde olmalıdır - ör '(6 1 2015). Özelleştirilebilir let-bound seçenekleri org-agenda-prefix-formatve org-agenda-entry-types. İşlev, bir liste biçiminde bir sonuç döndürür.

(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))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.