बिना एजेंडा व्यू के ऑर्ग-मोड एजेंडा के लिए रॉ डेटा कैसे मिलेगा?


10

प्रश्न: मैं org-modeवास्तव में एक एजेंडा दृश्य बनाए बिना एक एजेंडा दृश्य के लिए कच्चा डेटा कैसे वापस कर सकता हूं ?

मैं एक अनियंत्रित दिन के लिए अपने एजेंडे का उपयोग करना चाहता हूं। हालाँकि, मैं प्रति सेक्शन दृश्य नहीं बनाना चाहता । इसके बजाय, मैं 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))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.