Browse Source

Merge branch 'maint'

Nicolas Goaziou 7 years ago
parent
commit
1c7cf61bd7
3 changed files with 17 additions and 11 deletions
  1. 1 1
      lisp/org-colview.el
  2. 11 5
      lisp/org.el
  3. 5 5
      testing/lisp/test-org-colview.el

+ 1 - 1
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))))

+ 11 - 5
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)

+ 5 - 5
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