فهرست منبع

New ways to specify time comparison values in property searches.

In addition to "<now>", "<today>", "<yesterday>", and
"<tomorrow>", there are more special values accepted now in
time comparisons in property searches:  You may use strings
like =<+3d>= or =<-2w>=, with units d, w, m, and y for day,
week, month, and year, respectively

Thanks to Linday Todd for this proposal.
Carsten Dominik 16 سال پیش
والد
کامیت
269c5a85bc
5فایلهای تغییر یافته به همراه38 افزوده شده و 11 حذف شده
  1. 10 0
      ORGWEBPAGE/Changes.org
  2. 5 0
      doc/ChangeLog
  3. 7 5
      doc/org.texi
  4. 2 0
      lisp/ChangeLog
  5. 14 6
      lisp/org.el

+ 10 - 0
ORGWEBPAGE/Changes.org

@@ -89,6 +89,16 @@
     A new option, `org-tags-exclude-from-inheritance', allows to
     specify an exclusion list for inherited tags.
 
+*** More special values for time comparisons in property searches
+
+    In addition to =<now>=, =<today>=, =<yesterday>=, and
+    =<tomorrow>=, there are more special values accepted now in
+    time comparisons in property searches:  You may use strings
+    like =<+3d>= or =<-2w>=, with units d, w, m, and y for day,
+    week, month, and year, respectively
+
+    Thanks to Linday Todd for this proposal.
+
 * Version 6.13
 
 ** Overview

+ 5 - 0
doc/ChangeLog

@@ -1,3 +1,8 @@
+2008-11-29  Carsten Dominik  <carsten.dominik@gmail.com>
+
+	* org.texi (Property searches): Document new special values for
+	time comparisons.
+
 2008-11-27  Carsten Dominik  <carsten.dominik@gmail.com>
 
 	* org.texi (Tag inheritance): Refine the description of tag

+ 7 - 5
doc/org.texi

@@ -3903,11 +3903,13 @@ quotes, a string comparison is done, and the same operators are allowed.
 @item
 If the comparison value is enclosed in double quotes @emph{and} angular
 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
-assumed to be date/time specifications in the standard Org way@footnote{The
-only special values that will be recognized are @samp{"<now>"} for now
-(including time), and @samp{"<today>"}, @samp{<tomorrow>}, and
-@samp{<yesterday>} for these days at 0:00 hours, i.e. without a time
-specification.}, and the comparison will be done accordingly.
+assumed to be date/time specifications in the standard Org way, and the
+comparison will be done accordingly.  Special values that will be recognized
+are @code{"<now>"} for now (including time), and @code{"<today>"}, and
+@code{"<tomorrow>"} for these days at 0:00 hours, i.e. without a time
+specification.  Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
+@code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
+respectively, can be used.
 @item
 If the comparison value is enclosed
 in curly braces, a regexp match is performed, with @samp{=} meaning that the

+ 2 - 0
lisp/ChangeLog

@@ -1,5 +1,7 @@
 2008-11-29  Carsten Dominik  <carsten.dominik@gmail.com>
 
+	* org.el (org-matcher-time): Recognize more special values.
+
 	* org-gnus.el (fboundp): Fix defvaralias for XEmacs.
 
 2008-11-27  Carsten Dominik  <carsten.dominik@gmail.com>

+ 14 - 6
lisp/org.el

@@ -9342,12 +9342,20 @@ epoch to the beginning of today (00:00)."
 		     (append '(0 0 0) (nthcdr 3 (decode-time))))))
 
 (defun org-matcher-time (s)
-  (cond
-   ((string= s "<now>") (float-time))
-   ((string= s "<today>") (org-time-today))
-   ((string= s "<tomorrow>") (+ 86400.0 (org-time-today)))
-   ((string= s "<yesterday>") (- (org-time-today) 86400.0))
-   (t (org-2ft s))))
+  "Interprete a time comparison value."
+  (save-match-data
+    (cond
+     ((string= s "<now>") (float-time))
+     ((string= s "<today>") (org-time-today))
+     ((string= s "<tomorrow>")   (+ 86400.0 (org-time-today)))
+     ((string= s "<yesterday>")  (- (org-time-today) 86400.0))
+     ((string-match "^<\\([-+][0-9]+\\)\\([dwmy]\\)>$" s)
+      (+ (org-time-today)
+	 (* (string-to-number (match-string 1 s))
+	    (cdr (assoc (match-string 2 s)
+			'(("d" . 86400.0)   ("w" . 604800.0)
+			  ("m" . 2678400.0) ("y" . 31557600.0)))))))
+     (t (org-2ft s)))))
 
 (defun org-match-any-p (re list)
   "Does re match any element of list?"