emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* todo and deadline highlighting
@ 2006-06-07 23:34 Piotr Zielinski
  2006-06-12 21:16 ` Carsten Dominik
  0 siblings, 1 reply; 4+ messages in thread
From: Piotr Zielinski @ 2006-06-07 23:34 UTC (permalink / raw)
  To: emacs-orgmode

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-06-20  7:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-06-07 23:34 todo and deadline highlighting Piotr Zielinski
2006-06-12 21:16 ` Carsten Dominik
2006-06-19 20:09   ` Piotr Zielinski
2006-06-20  7:09     ` Carsten Dominik

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).