From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wanrong Lin Subject: Re: Highlighting Sparse Tree Leaves Date: Thu, 21 Feb 2008 17:53:38 -0500 Message-ID: <47BE00F2.9050703@gmail.com> References: <47B4D08D.3040102@gmail.com> <06350370-AE6F-4680-B2DA-A3F2754AB101@science.uva.nl> <47B9A1EB.80502@gmail.com> <0D9FB1D7-E426-4F3D-8466-024D602863C8@science.uva.nl> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JSKIk-0004cE-TP for emacs-orgmode@gnu.org; Thu, 21 Feb 2008 17:54:02 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JSKIj-0004bT-Uo for emacs-orgmode@gnu.org; Thu, 21 Feb 2008 17:54:02 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JSKIj-0004bQ-RF for emacs-orgmode@gnu.org; Thu, 21 Feb 2008 17:54:01 -0500 Received: from an-out-0708.google.com ([209.85.132.242]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JSKIj-0003j9-IU for emacs-orgmode@gnu.org; Thu, 21 Feb 2008 17:54:01 -0500 Received: by an-out-0708.google.com with SMTP id c25so40318ana.84 for ; Thu, 21 Feb 2008 14:53:56 -0800 (PST) In-Reply-To: <0D9FB1D7-E426-4F3D-8466-024D602863C8@science.uva.nl> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hi, Carsten, I hacked a patch that does what I need. Just in case you change your mind in the future, or anyone else has the same need as I, here is the patch (against org.el in 5.22a. I did not get time to learn git yet). Thanks. Wanrong -------------------------------- 15082c15082,15085 < (org-highlight-new-match (match-beginning 0) (match-end 0))) --- > ;; > (if (and org-highlight-sparse-tree-leaf (not (org-has-match-in-subtree-p regexp))) > (org-highlight-new-match (match-beginning 0) (match-end 0) 'org-sparse-tree-leaf) > (org-highlight-new-match (match-beginning 0) (match-end 0)))) 15141,15145c15144,15149 < (defun org-highlight-new-match (beg end) < "Highlight from BEG to END and mark the highlight is an occur headline." < (let ((ov (org-make-overlay beg end))) < (org-overlay-put ov 'face 'secondary-selection) < (push ov org-occur-highlights))) --- > ;;;; replaced with my own version to support highlighting sparse tree leaves > ;; (defun org-highlight-new-match (beg end) > ;; "Highlight from BEG to END and mark the highlight is an occur headline." > ;; (let ((ov (org-make-overlay beg end))) > ;; (org-overlay-put ov 'face 'secondary-selection) > ;; (push ov org-occur-highlights))) 28233a28238,28265 > ;;;;;; my own extension to org to show sparse tree leaves in different face ;;;;; > > ;; highlighting sparse tree leaves > > ;; > (defvar org-highlight-sparse-tree-leaf t > "Whether to highlight sparse tree leaves") > (defface org-sparse-tree-leaf '((t (:background "#cdb38b"))) > "Face for highlighting sparse tree leaves.") > > ;; > (defun org-highlight-new-match (beg end &optional highlight-face) > "Highlight from BEG to END and mark the highlight is an occur headline." > (let ((ov (org-make-overlay beg end))) > (if highlight-face > (org-overlay-put ov 'face highlight-face) > (org-overlay-put ov 'face 'secondary-selection)) > (push ov org-occur-highlights))) > > ;; > (defun org-has-match-in-subtree-p(regexp) > "Returns non-nil if there is a match for regexp in current subtree." > (save-match-data > (save-excursion > (let ((beg (point)) (end-of-tree (org-end-of-subtree t))) > (goto-char beg) > (re-search-forward regexp end-of-tree t))))) > 28240d28271 < ------------------------------------------- Carsten Dominik wrote: > > On Feb 18, 2008, at 4:19 PM, Wanrong Lin wrote: > >> >> Using "PROJECT" as a TODO keyword certainly can work, however, my >> work flow usually is first quickly mark anything that needs action >> with "TODO" and later I may add more sub-items to it. Following this >> approach I will need to remember to change "TODO" to "PROJECT" once a >> TODO item starts to have sub-items. Also, if all sub-actions of a >> "PROJECT" are marked as "DONE", I need to remember to turn the >> "PROJECT" back to "TODO", as I need the sparse tree to remind me to >> double check this TODO/PROJECT item to see whether it is really all >> done, or I need to add more sub-actions to it (and turn it back to >> "PROJECT" again). >> >> As you can see, that is a lot of manually actions and mistakes can be >> easily made. Maybe my workflow has some problem here, but I can not >> think of anything else that works better. The difficulty to me is, an >> item can be either PROJECT or TODO depending on how detailed your >> plan is, which keeps changing. >> >> I think if we can have the *option* of selecting a different face for >> highlighting sparse tree leaves, the above can be solved elegantly. >> You can still see the whole sparse tree, but the leaves will stand out. >> >> Just trying to push my case a little bit. :-) Thanks a lot. > > That is fine, but it does not work in this case... :-( > > - Carsten > >> >> >> Wanrong >> >> Carsten Dominik wrote: >>> Hi Wanrong, >>> >>> No, I think you need to find a different way around this. >>> For example by using a different keyword for the headings that >>> contain the true TODO items. I use PROJECT or something similar. >>> When you then search for TODO, the true tasks will be highlighted. >>> >>> - Carsten >>> >>> On Feb 15, 2008, at 12:36 AM, Wanrong Lin wrote: >>> >>>> Hi, >>>> >>>> Is it possible to highlighting only the sparse tree leaves, or even >>>> better, highlighting the whole sparse tree but with leaves in a >>>> special face? >>>> >>>> The motivation for such a feature is this: >>>> >>>> Suppose I have a task tree like this: >>>> >>>> * TODO Task A >>>> *** TODO Task A.1 >>>> ***** TODO Task A.1.1 >>>> * TODO Task B >>>> *** TODO Task B.1 >>>> ***** TODO Task B.1.1 >>>> ***** TODO Task B.1.2 >>>> >>>> If I do a "org-sparse-tree", all those lines are highlighted, >>>> giving an impression that I have a lot of open tasks, but in >>>> reality I only have three tasks: A.1.1, B.1.1 and B.1.2, as the >>>> higher level tasks are automatically done if those are done. So it >>>> would be nice to highlight those leaves in a special face. Also, >>>> suppose both B.1.1 and B.1.2 are done, then Task B.1 should be >>>> highlighted as a leaf. >>>> >>>> Hope the above makes some sense. Thank you very much for giving it >>>> a thought. >>>> >>>> Wanrong >>>> >>>> >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> Emacs-orgmode mailing list >>>> Remember: use `Reply All' to send replies to the list. >>>> Emacs-orgmode@gnu.org >>>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode >>> >> >> >> >> _______________________________________________ >> Emacs-orgmode mailing list >> Remember: use `Reply All' to send replies to the list. >> Emacs-orgmode@gnu.org >> http://lists.gnu.org/mailman/listinfo/emacs-orgmode >