emacs-orgmode
[Top][All Lists]
Advanced

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

[Emacs-orgmode] todo and deadline highlighting


From: Piotr Zielinski
Subject: [Emacs-orgmode] todo and deadline highlighting
Date: Thu, 8 Jun 2006 00:34:10 +0100

Hi,

Here are three functions related to todo and deadline highlighting is
the todo buffer.  The first lets you highlight upoming deadlines and
todo items at the same time.

(defun org-check-deadlines-and-todos (ndays)
 (org-check-deadlines ndays)
 (flet ((org-remove-occur-highlights (&optional beg end noremove))
         (org-overview ()))
   (org-show-todo-tree nil)))

It would be nice to be able to tell the org-occur function not to
remove existing highlights in a less hacky way.  Another suggestion:
explicit specification of the face used for highlighting so that
deadlines and todos could use a different face.  Yet another
suggestion: the org-occur callback could return the face to use, so
that different faces could be used for deadline highlighting,
depending on the urgency of the deadline (ie. in 3 days vs. in 30
days).

The following two functions redefine org-show-todo-tree, so that TODO
items SCHEDULED for the future are not highlighted.  Only
non-scheduled TODO items or TODO items scheduled for the past or
present are highlighted.  The SCHEDULED directive must be on the same
line as the TODO keyword.

(defun org-todo-is-current ()
 "Checks whether a TODO items is current."
 (if (re-search-forward org-scheduled-time-regexp (point-at-eol) t)
     (let ((today (calendar-absolute-from-gregorian
                    (calendar-current-date)))
            (timestamp (time-to-days
                        (org-time-string-to-time (match-string 1)))))
        (<= timestamp today))
   t))

(defun org-show-todo-tree (arg)
 "Make a compact tree which shows all headlines marked with TODO.
The tree will show the lines where the regexp matches, and all higher
headlines above the match.
With \\[universal-argument] prefix, also show the DONE entries.
With a numeric prefix N, construct a sparse tree for the Nth element
of `org-todo-keywords'."
 (interactive "P")
 (let ((case-fold-search nil)
        (kwd-re
         (cond ((null arg) org-not-done-regexp)
               ((equal arg '(4)) org-todo-regexp)
               ((<= (prefix-numeric-value arg) (length org-todo-keywords))
                (regexp-quote (nth (1- (prefix-numeric-value arg))
                                   org-todo-keywords)))
               (t (error "Invalid prefix argument: %s" arg)))))
   (message "%d TODO entries found"
             (org-occur (concat "^" outline-regexp " +" kwd-re )
                        'org-todo-is-current))))


Piotr




reply via email to

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