From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Highlighting Sparse Tree Leaves Date: Fri, 22 Feb 2008 08:07:26 +0100 Message-ID: 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> <47BE00F2.9050703@gmail.com> Mime-Version: 1.0 (Apple Message framework v919.2) Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JSS0b-0005bN-Vm for emacs-orgmode@gnu.org; Fri, 22 Feb 2008 02:07:50 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JSS0b-0005ap-50 for emacs-orgmode@gnu.org; Fri, 22 Feb 2008 02:07:49 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JSS0a-0005ai-Mk for emacs-orgmode@gnu.org; Fri, 22 Feb 2008 02:07:48 -0500 Received: from fg-out-1718.google.com ([72.14.220.159]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JSS0a-0003m4-2O for emacs-orgmode@gnu.org; Fri, 22 Feb 2008 02:07:48 -0500 Received: by fg-out-1718.google.com with SMTP id d23so1540161fga.30 for ; Thu, 21 Feb 2008 23:07:47 -0800 (PST) In-Reply-To: <47BE00F2.9050703@gmail.com> 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: Wanrong Lin Cc: emacs-orgmode@gnu.org Hi Wanrong, thanks for the code. It looks good, I will put it into my trickler to reconsider a some time in the future. - Carsten On Feb 21, 2008, at 11:53 PM, Wanrong Lin wrote: > > 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 >> > > > > _______________________________________________ > 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