summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2017-06-14 11:03:40 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2017-06-14 11:03:40 +0200
commit1c7cf61bd78a51c2804ca3f7caf65cd874c271c7 (patch)
treee17808d8073ee648c84ccb59a88615e8c8907c07
parentd8eaa8396dfc580bd0663248b3ae411904c17a8c (diff)
parentb47920ed208119a0a9de307b1839a4aed54572ef (diff)
downloadorg-mode-1c7cf61bd78a51c2804ca3f7caf65cd874c271c7.tar.gz
Merge branch 'maint'
-rw-r--r--lisp/org-colview.el2
-rw-r--r--lisp/org.el16
-rw-r--r--testing/lisp/test-org-colview.el10
3 files changed, 17 insertions, 11 deletions
diff --git a/lisp/org-colview.el b/lisp/org-colview.el
index 0ff87b1..6f1baad 100644
--- a/lisp/org-colview.el
+++ b/lisp/org-colview.el
@@ -1068,7 +1068,7 @@ as a canonical duration, i.e., using units defined in
(cond
((string-match-p org-ts-regexp s)
(/ (- org-columns--time
- (float-time (apply #'encode-time (org-parse-time-string s))))
+ (float-time (apply #'encode-time (org-parse-time-string s nil t))))
60))
((org-duration-p s) (org-duration-to-minutes s t)) ;skip user units
(t (user-error "Invalid age: %S" s))))
diff --git a/lisp/org.el b/lisp/org.el
index 191990d..e2e56f2 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -17799,11 +17799,17 @@ day number."
(list (nth 4 d) (nth 3 d) (nth 5 d))))
((listp d) (list (nth 4 d) (nth 3 d) (nth 5 d)))))
-(defun org-parse-time-string (s &optional nodefault)
+(defun org-parse-time-string (s &optional nodefault zone)
"Parse the standard Org time string.
+
This should be a lot faster than the normal `parse-time-string'.
-If time is not given, defaults to 0:00. However, with optional NODEFAULT,
-hour and minute fields will be nil if not given."
+
+If time is not given, defaults to 0:00. However, with optional
+NODEFAULT, hour and minute fields will be nil if not given.
+
+The optional ZONE is omitted or nil for Emacs local time, t for
+Universal Time, ‘wall’ for system wall clock time, or a string as
+in the TZ environment variable."
(cond ((string-match org-ts-regexp0 s)
(list 0
(when (or (match-beginning 8) (not nodefault))
@@ -17813,9 +17819,9 @@ hour and minute fields will be nil if not given."
(string-to-number (match-string 4 s))
(string-to-number (match-string 3 s))
(string-to-number (match-string 2 s))
- nil nil nil))
+ nil nil zone))
((string-match "^<[^>]+>$" s)
- (decode-time (seconds-to-time (org-matcher-time s))))
+ (decode-time (seconds-to-time (org-matcher-time s)) zone))
(t (error "Not a standard Org time string: %s" s))))
(defun org-timestamp-up (&optional arg)
diff --git a/testing/lisp/test-org-colview.el b/testing/lisp/test-org-colview.el
index f816e7b..85c1bcf 100644
--- a/testing/lisp/test-org-colview.el
+++ b/testing/lisp/test-org-colview.el
@@ -513,7 +513,7 @@
(cl-letf (((symbol-function 'current-time)
(lambda ()
(apply #'encode-time
- (org-parse-time-string "<2014-03-04 Tue>")))))
+ (org-parse-time-string "<2014-03-04 Tue>" nil t)))))
(org-test-with-temp-text
"* H
** S1
@@ -528,11 +528,11 @@
(get-char-property (point) 'org-columns-value-modified)))))
(should
(equal
- "705d 1h"
+ "705d"
(cl-letf (((symbol-function 'current-time)
(lambda ()
(apply #'encode-time
- (org-parse-time-string "<2014-03-04 Tue>")))))
+ (org-parse-time-string "<2014-03-04 Tue>" nil t)))))
(org-test-with-temp-text
"* H
** S1
@@ -547,11 +547,11 @@
(get-char-property (point) 'org-columns-value-modified)))))
(should
(equal
- "352d 12h 30min"
+ "352d 12h"
(cl-letf (((symbol-function 'current-time)
(lambda ()
(apply #'encode-time
- (org-parse-time-string "<2014-03-04 Tue>")))))
+ (org-parse-time-string "<2014-03-04 Tue>" nil t)))))
(org-test-with-temp-text
"* H
** S1