diff options
author | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2016-02-16 00:02:48 +0100 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2016-02-17 22:49:19 +0100 |
commit | c551ee4ddeadac4755f47e6c19e7de33fa6762c6 (patch) | |
tree | 19d503884e2de581aed0db6074d72661a1f182b7 | |
parent | d14d14b4797a44ccb8a7741b1149db6583138490 (diff) | |
download | org-mode-c551ee4ddeadac4755f47e6c19e7de33fa6762c6.tar.gz |
org-colview: Fix {X%} summary type
* lisp/org-colview.el (org-columns-compute-all): Small refactoring.
(org-columns-number-to-string): Handle special case of 0 among 0. Small
refactoring.
(org-nofm-to-completion):
(org-format-time-period): Remove functions.
-rw-r--r-- | lisp/org-colview.el | 52 |
1 files changed, 21 insertions, 31 deletions
diff --git a/lisp/org-colview.el b/lisp/org-colview.el index 0e90925..4c2cc0a 100644 --- a/lisp/org-colview.el +++ b/lisp/org-colview.el @@ -916,13 +916,11 @@ display, or in the #+COLUMNS line of the current buffer." "Compute all columns that have operators defined." (org-with-silent-modifications (remove-text-properties (point-min) (point-max) '(org-summaries t))) - (let ((columns org-columns-current-fmt-compiled) - (org-columns-time (time-to-number-of-days (current-time))) - col) - (while (setq col (pop columns)) - (when (nth 3 col) - (save-excursion - (org-columns-compute (car col))))))) + (let ((org-columns-time (time-to-number-of-days (current-time)))) + (dolist (spec org-columns-current-fmt-compiled) + (pcase spec + (`(,property ,_ ,_ ,operator . ,_) + (when operator (save-excursion (org-columns-compute property)))))))) (defun org-columns-update (property) "Recompute PROPERTY, and update the columns display for it." @@ -1056,9 +1054,11 @@ display, or in the #+COLUMNS line of the current buffer." ;;;###autoload (defun org-columns-number-to-string (n fmt &optional printf) - "Convert a computed column number to a string value, according to FMT." + "Convert a computed column number N to a string value. +FMT is a symbol describing the summary type. Optional argument +PRINTF, when non-nil, is a format string used to print N." (cond - ((memq fmt '(estimate)) (org-estimate-print n printf)) + ((eq fmt 'estimate) (org-estimate-print n printf)) ((not (numberp n)) "") ((memq fmt '(add_times max_times min_times mean_times)) (org-hours-to-clocksum-string n)) @@ -1067,21 +1067,22 @@ display, or in the #+COLUMNS line of the current buffer." ((> n 1.) "[-]") (t "[ ]"))) ((memq fmt '(checkbox-n-of-m checkbox-percent)) - (let* ((n1 (floor n)) (n2 (floor (+ .5 (* 1000000 (- n n1)))))) - (org-nofm-to-completion n1 (+ n2 n1) (eq fmt 'checkbox-percent)))) + (let* ((n1 (floor n)) + (n2 (+ (floor (+ .5 (* 1000000 (- n n1)))) n1))) + (cond ((not (eq fmt 'checkbox-percent)) (format "[%d/%d]" n1 n2)) + ((or (= n1 0) (= n2 0)) "[0%]") + (t (format "[%d%%]" (round (* 100.0 n1) n2)))))) (printf (format printf n)) - ((eq fmt 'currency) - (format "%.2f" n)) + ((eq fmt 'currency) (format "%.2f" n)) ((memq fmt '(min_age max_age mean_age)) - (org-format-time-period n)) + (let* ((days (floor n)) + (frac-hours (* 24 (- n days))) + (hours (floor frac-hours)) + (minutes (floor (* 60 (- frac-hours hours)))) + (seconds (floor (* 60 (- (* 60 (- frac-hours hours)) minutes))))) + (format "%dd %02dh %02dm %02ds" days hours minutes seconds))) (t (number-to-string n)))) -(defun org-nofm-to-completion (n m &optional percent) - (if (not percent) - (format "[%d/%d]" n m) - (format "[%d%%]" (round (* 100.0 n) m)))) - - (defun org-columns-string-to-number (s fmt) "Convert a column value to a number that can be used for column computing." (if s @@ -1527,17 +1528,6 @@ This will add overlays to the date lines, to show the summary for each day." (equal (nth 4 a) (nth 4 fm))) (org-columns-compute (car fm))))))))))) -(defun org-format-time-period (interval) - "Convert time in fractional days to days/hours/minutes/seconds." - (if (numberp interval) - (let* ((days (floor interval)) - (frac-hours (* 24 (- interval days))) - (hours (floor frac-hours)) - (minutes (floor (* 60 (- frac-hours hours)))) - (seconds (floor (* 60 (- (* 60 (- frac-hours hours)) minutes))))) - (format "%dd %02dh %02dm %02ds" days hours minutes seconds)) - "")) - (defun org-estimate-mean-and-var (v) "Return the mean and variance of an estimate." (let* ((v (cond ((consp v) v) |