Really funky Planner sorting
| emacs, plannerThe following code sorts completed tasks in reverse-chronological
order and incomplete tasks in chronological order. This makes it
easier to see the next action (top of list) and the last action (first
completed task).
(defun sacha/planner-sort-tasks-by-date ()
"Sort tasks by date, status and priority."
(skip-chars-forward "#ABC")
(let ((ch (char-before))
status)
(skip-chars-forward "0123456789 ")
(setq status (char-after))
(goto-char (line-end-position))
(skip-chars-backward "]) ")
(format "%1c%1c%10s"
(cond
((= status ?o) ?1)
((= status ?X) ?3)
((= status ?C) ?4)
(t ?2))
ch
(let ((date (or (planner-task-date (planner-current-task-info))
planner-sort-undated-tasks-equivalent)))
(if (or (= status ?X)
(= status ?C))
(sacha/planner-invert-date date)
date)))))
(defun sacha/planner-invert-date (date)
"Reverse the date in the sorting order."
(mapconcat (lambda (ch)
(if (string= ch ".")
ch
(number-to-string
(- 9 (string-to-number ch)))))
(split-string date "" t) ""))
You can e-mail me at sacha@sachachua.com.