Merge branch 'maint'

This commit is contained in:
Nicolas Goaziou 2017-05-20 22:13:12 +02:00
commit d71e708fe3
2 changed files with 44 additions and 12 deletions

View File

@ -223,21 +223,32 @@ See `org-columns-summary-types' for details.")
(defun org-columns--displayed-value (spec value)
"Return displayed value for specification SPEC in current entry.
SPEC is a column format specification as stored in
`org-columns-current-fmt-compiled'. VALUE is the real value to
display, as a string."
(cond
((and (functionp org-columns-modify-value-for-display-function)
(funcall org-columns-modify-value-for-display-function
(nth 1 spec)
value)))
((equal (car spec) "ITEM")
(concat (make-string (1- (org-current-level))
(if org-hide-leading-stars ?\s ?*))
"* "
(org-columns-compact-links value)))
(value)))
(or (and (functionp org-columns-modify-value-for-display-function)
(funcall org-columns-modify-value-for-display-function
(nth 1 spec) ;column name
value))
(pcase spec
(`("ITEM" . ,_)
(concat (make-string (1- (org-current-level))
(if org-hide-leading-stars ?\s ?*))
"* "
(org-columns-compact-links value)))
(`(,_ ,_ ,_ ,_ nil) value)
;; If PRINTF is set, and we are displaying a number, obey to
;; it. Otherwise, raise an error.
(`(,_ ,name ,_ ,_ ,printf)
(when (or (not (string-match-p "[0-9]" value))
(and (string-match-p "[1-9]" value)
(= 0 (string-to-number value))))
(user-error "Invalid value: %S. \
Format string in operator implies column %S only contains numbers"
value
name))
(format printf (string-to-number value)))
(_ (error "Invalid column specification format: %S" spec)))))
(defun org-columns--collect-values (&optional compiled-fmt)
"Collect values for columns on the current line.

View File

@ -212,6 +212,27 @@
:END:"
(let ((org-columns-default-format "%A{$}")) (org-columns))
(get-char-property (point) 'org-columns-value-modified))))
;; Obey to format string even in leaf values.
(should
(equal
"1.0"
(org-test-with-temp-text
"* H
:PROPERTIES:
:A: 1
:END:"
(let ((org-columns-default-format "%A{+;%.1f}")) (org-columns))
(get-char-property (point) 'org-columns-value-modified))))
;; Raise an error when format strings are applied to non-numbers.
(should-error
(org-test-with-temp-text
"* H
** S1
:PROPERTIES:
:A: foo
:END:"
(let ((org-columns-default-format "%A{+;%.2f}")) (org-columns))
(get-char-property (point) 'org-columns-value-modified)))
;; {:} sums times. Plain numbers are hours.
(should
(equal