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 comment with Disqus or you can e-mail me at sacha@sachachua.com.