Function: org-compile-prefix-format
org-compile-prefix-format is a byte-compiled function defined in
org-agenda.el.gz.
Signature
(org-compile-prefix-format KEY)
Documentation
Compile the prefix format into a Lisp form that can be evaluated.
KEY is the agenda type (see org-agenda-prefix-format).
The resulting form and associated variable bindings is returned
and stored in the variable org-prefix-format-compiled.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org-agenda.el.gz
(defun org-compile-prefix-format (key)
"Compile the prefix format into a Lisp form that can be evaluated.
KEY is the agenda type (see `org-agenda-prefix-format').
The resulting form and associated variable bindings is returned
and stored in the variable `org-prefix-format-compiled'."
(setq org-prefix-has-time nil
org-prefix-has-tag nil
org-prefix-category-length nil
org-prefix-has-effort nil
org-prefix-has-breadcrumbs nil)
(let ((s (cond
((stringp org-agenda-prefix-format)
org-agenda-prefix-format)
((assq key org-agenda-prefix-format)
(cdr (assq key org-agenda-prefix-format)))
(t " %-12:c%?-12t% s")))
(start 0)
varform vars var c f opt) ;; e
(while (string-match "%\\(\\?\\)?\\([-+]?[0-9.]*\\)\\([ .;,:!?=|/<>]?\\)\\([cltseib]\\|(.+?)\\)"
s start)
(setq var (or (cdr (assoc (match-string 4 s)
'(("c" . category) ("t" . time) ("l" . level) ("s" . extra)
("i" . category-icon) ("T" . tag) ("e" . effort) ("b" . breadcrumbs))))
'eval)
c (or (match-string 3 s) "")
opt (match-beginning 1)
start (1+ (match-beginning 0)))
(cl-case var
(time (setq org-prefix-has-time t))
(tag (setq org-prefix-has-tag t))
(effort (setq org-prefix-has-effort t))
(breadcrumbs (setq org-prefix-has-breadcrumbs t)))
(setq f (concat "%" (match-string 2 s) "s"))
(when (eq var 'category)
(setq org-prefix-category-length
(floor (abs (string-to-number (match-string 2 s)))))
(setq org-prefix-category-max-length
(let ((x (match-string 2 s)))
(save-match-data
(and (string-match "\\.[0-9]+" x)
(string-to-number (substring (match-string 0 x) 1)))))))
(if (eq var 'eval)
(setq varform `(format ,f (org-eval ,(read (substring s (match-beginning 4))))))
(if opt
(setq varform
`(if (member ,var '("" nil))
""
(format ,f (concat ,var ,c))))
(setq varform
`(format ,f (if (member ,var '("" nil)) ""
(concat ,var ,c (get-text-property 0 'extra-space ,var)))))))
(if (eq var 'eval)
(setf (substring s (match-beginning 0)
(+ (match-beginning 4)
(length (format "%S" (read (substring s (match-beginning 4)))))))
"%s")
(setq s (replace-match "%s" t nil s)))
(push varform vars))
(setq vars (nreverse vars))
(with-current-buffer (or org-agenda-buffer (current-buffer))
(setq org-prefix-format-compiled
(list
`((org-prefix-has-time ,org-prefix-has-time)
(org-prefix-has-tag ,org-prefix-has-tag)
(org-prefix-category-length ,org-prefix-category-length)
(org-prefix-has-effort ,org-prefix-has-effort)
(org-prefix-has-breadcrumbs ,org-prefix-has-breadcrumbs))
`(format ,s ,@vars))))))