নিম্নলিখিত ডেটা যে মধ্যে যায় বের করে আনতে কিভাবে একটি সংক্ষিপ্ত উদাহরণ *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))