Function: org-agenda-get-day-entries

org-agenda-get-day-entries is a byte-compiled function defined in org-agenda.el.gz.

Signature

(org-agenda-get-day-entries FILE DATE &rest ARGS)

Documentation

Does the work for org-diary and org-agenda.

FILE is the path to a file to be checked for entries. DATE is date like the one returned by calendar-current-date. ARGS are symbols indicating which kind of entries should be extracted. For details about these, see the documentation of org-diary.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-agenda.el.gz
(defun org-agenda-get-day-entries (file date &rest args)
  "Does the work for `org-diary' and `org-agenda'.
FILE is the path to a file to be checked for entries.  DATE is date like
the one returned by `calendar-current-date'.  ARGS are symbols indicating
which kind of entries should be extracted.  For details about these, see
the documentation of `org-diary'."
  (let* ((org-startup-folded nil)
	 (org-startup-align-all-tables nil)
	 (buffer (if (file-exists-p file) (org-get-agenda-file-buffer file)
		   (error "No such file %s" file))))
    (if (not buffer)
	;; If file does not exist, signal it in diary nonetheless.
	(list (format "ORG-AGENDA-ERROR: No such org-file %s" file))
      (with-current-buffer buffer
	(unless (derived-mode-p 'org-mode)
	  (error "Agenda file %s is not in Org mode" file))
	(setq org-agenda-buffer (or org-agenda-buffer buffer))
	(setf org-agenda-current-date date)
	(save-excursion
	  (save-restriction
	    (if (eq buffer org-agenda-restrict)
		(narrow-to-region org-agenda-restrict-begin
				  org-agenda-restrict-end)
	      (widen))
	    ;; Rationalize ARGS.  Also make sure `:deadline' comes
	    ;; first in order to populate DEADLINES before passing it.
	    ;;
	    ;; We use `delq' since `org-uniquify' duplicates ARGS,
	    ;; guarding us from modifying `org-agenda-entry-types'.
	    (setf args (org-uniquify (or args org-agenda-entry-types)))
	    (when (and (memq :scheduled args) (memq :scheduled* args))
	      (setf args (delq :scheduled* args)))
	    (cond
	     ((memq :deadline args)
	      (setf args (cons :deadline
			       (delq :deadline (delq :deadline* args)))))
	     ((memq :deadline* args)
	      (setf args (cons :deadline* (delq :deadline* args)))))
	    ;; Collect list of headlines.  Return them flattened.
	    (let ((case-fold-search nil) results deadlines)
              (org-dlet
                  ((date date))
                (dolist (arg args (apply #'nconc (nreverse results)))
		  (pcase arg
		    ((and :todo (guard (org-agenda-today-p date)))
		     (push (org-agenda-get-todos) results))
		    (:timestamp
		     (push (org-agenda-get-blocks) results)
		     (push (org-agenda-get-timestamps deadlines) results))
		    (:sexp
		     (push (org-agenda-get-sexps) results))
		    (:scheduled
		     (push (org-agenda-get-scheduled deadlines) results))
		    (:scheduled*
		     (push (org-agenda-get-scheduled deadlines t) results))
		    (:closed
		     (push (org-agenda-get-progress) results))
		    (:deadline
		     (setf deadlines (org-agenda-get-deadlines))
		     (push deadlines results))
		    (:deadline*
		     (setf deadlines (org-agenda-get-deadlines t))
		     (push deadlines results))))))))))))