emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] [ feature request ] colourful timestamps


From: Bastien
Subject: Re: [Orgmode] [ feature request ] colourful timestamps
Date: Sun, 09 Dec 2007 22:39:48 +0000
User-agent: Gnus/5.110007 (No Gnus v0.7) Emacs/23.0.0 (gnu/linux)

Hi Phil,

Phil Jackson <address@hidden> writes:

> Something I thought might be nice is highlighting of timestamps
> according to there relativity to time().
>
> For example, at time of writing, <2006-12-11> would be red, <2007-12-03
> Mon 19:00> pink. Perhaps for customisation:
>
> (setq org-timestamp-colour-map
>  '(("<2h" . 'face)
>    ("<10m" . 'face)))

I like the general idea of having feedback about the proximity of a
deadline or time-stamp.  But I think doing this interactively is better,
since the values like "<2h" "<10m" (in your example) are very likely to
change quite often, no?

In the same spirit, I've written this, which let you check for deadlines
or scheduled items before a date (strings like "+2d" are okay):

--8<---------------cut here---------------start------------->8---
(defun org-check-before-date (date)
  "Check if there are deadlines or scheduled entries before DATE."
  (interactive (list (org-read-date)))
  (let ((case-fold-search nil)
        (regexp (concat "\\<\\(" org-deadline-string 
                        "\\|" org-scheduled-string 
                        "\\) *<\\([^>]+\\)>"))
        (callback
         (lambda () (time-less-p
                     (org-time-string-to-time (match-string 2))
                     (org-time-string-to-time date)))))
    (message "%d entries before %s"
             (org-occur regexp nil callback) date)))
--8<---------------cut here---------------end--------------->8---

If you want to permanently add this to `org-sparse-trees', here is a
patch against 5.16b.

diff -u /home/guerry/elisp/testing/org-5.16b/ 
/home/guerry/elisp/testing/tmp/org.el
--- /home/guerry/elisp/testing/org-5.16b/org.el 2007-12-04 08:40:13.000000000 
+0000
+++ /home/guerry/elisp/testing/tmp/org.el       2007-12-09 22:32:07.000000000 
+0000
@@ -14433,11 +14433,13 @@
 r      Show entries matching a regular expression"
   (interactive "P")
   (let (ans kwd value)
-    (message "Sparse tree: [/]regexp   [t]odo-kwd   [T]ag   [p]roperty  
[d]eadlines")
+    (message "Sparse tree: [/]regexp  [t]odo-kwd  [T]ag  [p]roperty  
[d]eadlines  [b]efore-date")
     (setq ans (read-char-exclusive))
     (cond
      ((equal ans ?d)
       (call-interactively 'org-check-deadlines))
+     ((equal ans ?b)
+      (call-interactively 'org-check-before-date))
      ((equal ans ?t)
       (org-show-todo-tree '(4)))
      ((equal ans ?T)
@@ -17372,6 +17374,20 @@
             (org-occur regexp nil callback)
             org-warn-days)))
 
+(defun org-check-before-date (date)
+  "Check if there are deadlines or scheduled entries before DATE."
+  (interactive (list (org-read-date)))
+  (let ((case-fold-search nil)
+       (regexp (concat "\\<\\(" org-deadline-string 
+                       "\\|" org-scheduled-string 
+                       "\\) *<\\([^>]+\\)>"))
+       (callback
+        (lambda () (time-less-p
+                    (org-time-string-to-time (match-string 2))
+                    (org-time-string-to-time date)))))
+    (message "%d entries before %s"
+            (org-occur regexp nil callback) date)))
+
 (defun org-evaluate-time-range (&optional to-buffer)
   "Evaluate a time range by computing the difference between start and end.
 Normally the result is just printed in the echo area, but with prefix arg

Diff finished.  Sun Dec  9 22:32:19 2007
-- 
Bastien

reply via email to

[Prev in Thread] Current Thread [Next in Thread]