Function: org-diary-sexp-entry
org-diary-sexp-entry is a byte-compiled function defined in org.el.gz.
Signature
(org-diary-sexp-entry SEXP ENTRY D)
Documentation
Process a SEXP diary ENTRY for date D.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org.el.gz
(defun org-diary-sexp-entry (sexp entry d)
"Process a SEXP diary ENTRY for date D."
(require 'diary-lib)
;; `org-anniversary' and alike expect ENTRY and DATE to be bound
;; dynamically.
(let ((cached (gethash (list sexp entry d) org--diary-sexp-entry-cache 'none)))
(if (not (eq 'none cached)) cached
(puthash (list sexp entry d)
(let* ((sexp `(let ((entry ,entry)
(date ',d))
,(car (read-from-string sexp))))
;; FIXME: Do not use (eval ... t) in the following sexp as
;; diary vars are still using dynamic scope.
(result (if calendar-debug-sexp (eval sexp)
(condition-case nil
(eval sexp)
(error
(beep)
(message "Bad sexp at line %d in %s: %s"
(org-current-line)
(buffer-file-name) sexp)
(sleep-for 2))))))
(cond ((stringp result) (split-string result "; "))
((and (consp result)
(not (consp (cdr result)))
(stringp (cdr result)))
(cdr result))
((and (consp result)
(stringp (car result)))
result)
(result entry)))
org--diary-sexp-entry-cache))))