emacs-orgmode
[Top][All Lists]
Advanced

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

[Orgmode] [PATCH] agenda-view and custom sort


From: Jambunathan K
Subject: [Orgmode] [PATCH] agenda-view and custom sort
Date: Mon, 19 Jul 2010 02:10:57 +0530
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.4) Gecko/20100608 Lightning/1.0b2 Thunderbird/3.1

BUG: Agenda view invokes custom sort routine even if not configured to
do so.

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
old mode 100644
new mode 100755
index 1314eb2..f34f45d
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -5312,8 +5312,9 @@ HH:MM."
         (alpha-up        (and (org-em 'alpha-up 'alpha-down ss)
                               (org-cmp-alpha a b)))
         (alpha-down      (if alpha-up (- alpha-up) nil))
+   (need-user-cmp   (org-em 'user-defined-up 'user-defined-down ss))
         user-defined-up user-defined-down)
-    (if (and org-agenda-cmp-user-defined
+    (if (and need-user-cmp org-agenda-cmp-user-defined
             (functionp org-agenda-cmp-user-defined))
        (setq user-defined-up
              (funcall org-agenda-cmp-user-defined a b)


;; Sample agenda file

* Tasks
** Task1
   <2010-07-19 Mon>

** Task2
   <2010-07-19 Mon>

;; turn on custom comparison
(org-agenda-cmp-user-defined (quote my-org-cmp-category))

;; only todo-view requests custom comparison of categories.

;; agenda-view does *NOT* request custom compare function. Despite
;; this custom sort function is triggered on C-c a a.

(org-agenda-sorting-strategy
 (quote
  ((agenda habit-down time-up priority-down category-keep)
   (todo priority-down user-defined-up)
   (tags priority-down category-keep)
   (search category-keep))))


;; user-defined routine for sorting of categories.  prints a message
;; to the console on being invoked. Rest of the details not relevant.

(defun my-org-cmp-category (a b)
  "Compare the string values of categories of strings A and B."
  (let (
        (uncategorized 0)
        (ca (or (get-text-property 1 'org-category a) ""))
        (cb (or (get-text-property 1 'org-category b) ""))
        )
    
    (message "my-org-cmp-category")
    
    (setq ca  (cdr (assoc ca org-CATEGORY-sort-order)))
    (setq cb  (cdr (assoc cb org-CATEGORY-sort-order)))
    
    (unless ca
      (setq ca uncategorized)
      )
    
    (unless cb
      (setq cb uncategorized)
      )
    
    (cond ((< ca cb) -1)
          ((< cb ca) +1)
          (t nil))
    )
  )

;; information down below is only for the sake of completion.
;; not relevant to the bug per se.

;; category to priority mappings
(defcustom org-CATEGORY-sort-order nil
  "Map CATEGORY to Sort Order"
  :group 'org-jambu
  :type '(repeat
          (cons
           (string :tag "CATEGORY")
           (integer :tag "VALUE")
           )))

;; example categories
(org-CATEGORY-sort-order
 (quote (
         ("PHONE" . 50)
         ("EMAIL" . 60)
         ("MISC" . 80)
         )
        )
 )

Attachment: org-agenda.diff
Description: Text document


reply via email to

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