org-colview: Fix CLOCKSUM and CLOCKSUM_T summaries

* lisp/org-colview.el (org-columns--summarize): New function.
(org-columns-new):
(org-columns-compile-format): Use new function.
(org-agenda-colview-summarize): Use new function.  Fix return value for
CLOCKSUM and CLOCKSUM_T.
This commit is contained in:
Nicolas Goaziou 2016-02-21 14:22:23 +01:00
parent fedd6be97a
commit cd5eb50fd1
1 changed files with 12 additions and 15 deletions

View File

@ -291,6 +291,11 @@ WIDTH as an integer greater than 0."
(push ov org-columns-overlays)
ov))
(defun org-columns--summarize (operator)
"Return summary function associated to string OPERATOR."
(cdr (or (assoc operator org-columns-summary-types)
(assoc operator org-columns-summary-types-default))))
(defun org-columns--overlay-text (value fmt width property original)
"Return text "
(format fmt
@ -828,10 +833,7 @@ When COLUMNS-FMT-STRING is non-nil, use it as the column format."
(append org-columns-summary-types
org-columns-summary-types-default)))
nil t))))
(summarize
(or summarize
(cdr (or (assoc operator org-columns-summary-types)
(assoc operator org-columns-summary-types-default)))))
(summarize (or summarize (org-columns--summarize operator)))
(edit
(and prop (assoc-string prop org-columns-current-fmt-compiled t))))
(if edit
@ -1027,16 +1029,10 @@ This function updates `org-columns-current-fmt-compiled'."
(when (string-match ";" operator)
(setq printf (substring operator (match-end 0)))
(setq operator (substring operator 0 (match-beginning 0))))
(let* ((summary-type
(or (assoc operator org-columns-summary-types)
(assoc operator org-columns-summary-types-default)))
(summarize
(cond
((not summary-type)
(user-error "Unknown summary operator: %S" operator))
((cdr summary-type))
(t (user-error "Missing summary function for type: %S"
operator)))))
(let* ((summarize
(or (org-columns--summarize operator)
(user-error "Cannot find %S summary function"
operator))))
(list prop title width operator printf summarize))))
org-columns-current-fmt-compiled)))
(setq org-columns-current-fmt-compiled
@ -1536,7 +1532,8 @@ This will add overlays to the date lines, to show the summary for each day."
(pcase spec
(`(,property ,title ,width . ,_)
(if (member-ignore-case property '("CLOCKSUM" "CLOCKSUM_T"))
(list property title width ":" 'add_times nil '+ nil)
(let ((summarize (org-columns--summarize ":")))
(list property title width ":" nil summarize))
spec))))
org-columns-current-fmt-compiled))
entries)