emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Wanrong Lin <wanrong.lin@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Re: Highlighting Sparse Tree Leaves
Date: Thu, 21 Feb 2008 17:53:38 -0500	[thread overview]
Message-ID: <47BE00F2.9050703@gmail.com> (raw)
In-Reply-To: <0D9FB1D7-E426-4F3D-8466-024D602863C8@science.uva.nl>


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)))
---
 >         ;; <WL: changed to highlight sparse tree leaves>
 >         (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)))
---
 > ;;;; <WL> 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
 > ;;;;;; <WL> my own extension to org to show sparse tree leaves in 
different face ;;;;;
 >
 > ;; highlighting sparse tree leaves
 >
 > ;; <WL>
 > (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.")
 >
 > ;; <WL: changed 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)))
 >
 > ;; <WL: for highlighting sparse tree leaves>
 > (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 <mailto: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 <mailto:Emacs-orgmode@gnu.org>
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>

  reply	other threads:[~2008-02-21 22:54 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-14 23:36 Highlighting Sparse Tree Leaves Wanrong Lin
2008-02-18 11:18 ` Carsten Dominik
2008-02-18 15:19   ` Wanrong Lin
2008-02-21 16:42     ` Carsten Dominik
2008-02-21 22:53       ` Wanrong Lin [this message]
2008-02-22  7:07         ` Carsten Dominik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47BE00F2.9050703@gmail.com \
    --to=wanrong.lin@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).