emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [Orgmode] Re: Switching between many contexts


From: Carsten Dominik
Subject: Re: [Orgmode] Re: Switching between many contexts
Date: Wed, 4 Mar 2009 07:17:36 +0100


On Mar 3, 2009, at 2:31 PM, Carsten Dominik wrote:


On Mar 3, 2009, at 2:05 PM, Matthew Lundin wrote:


Daniel Clemente <address@hidden> writes:

In fact I would like to use often the agenda view with several tags excluded, so the ideal setup would be an agenda custom search. But I don't know which command to use in org-agenda-custom- commands: I don't want tags-todo (that's a heading list), but the real agenda (with its colors, dates, deadlines, etc.). However, the search type called „agenda“ seems not to accept tags to search.
Maybe „agenda“ could accept tags to search?
Or else I can try to do a custom command which emulates the agenda
but adds this filter; maybe with a local variable or with „skip
conditions“ (org-agenda-skip-function).

For this you would indeed you a skip function.

E.g.,

--8<---------------cut here---------------start------------->8---
(setq org-agenda-custom-commands
    '(("A" agenda ""
((org-agenda-skip-function '(org-agenda-skip-entry-if 'regexp ":TAG:"))))))
--8<---------------cut here---------------end--------------->8---

This is very good, and it will work if you are talking about
entries that all do have that tag explicitly.  But will fail
if you have subtrees that inherit the tag:  If the agenda
scanner stops at a time stamp that is in an entry that inherits
the tag, then the skipper will not see the tag.

The reason why the agenda view does not have an option to
exclude some tags is also because of inheritance.  The tags
scanner that is used by `C-c a m' is designed to treat tag
inheritance fast, but the agenda directly jumps to relevant
time stamps and then must work its way up the hierarchy, for
each matching time stamp, to get all relevant tags.

A work-around with some speed penalty will therefore be

((org-agenda-skip-function '(member "TAG" (org-get-tags-at)))

Another possibility that might be useful would be to
use permanent restrictions.

For example, you can go to a subtree that you want to work with
and press `C-c C-x <'  on the headline.  All future agenda
commands then will only look at that subtree, until you
select a new restriction or until you remove the restriction with
`C-c C-x >'.  You may also restrict to a file by calling `C-c C-x <'
before the first headline of a file.

Maybe the best solutions would be if I allowed for a default
secondary filter to be applied to an agenda view....  I will look
into this possibility.

You can now, in a custom agenda command, bind the variable
org-agenda-filter-preset to a list of filter specifications.
This filter will then be applied when the agenda view is first shown,
and also after each refresh.  Secondary filtering with "/" will
always add to this preset.  In order to get rid of the preset, you
need to run a new agenda command.

For example

   ("A" "" agenda ""
    ((org-agenda-filter-preset '("-FLUFF" "-BLUFF"))))

will hide tags FLUFF and BLUFF.

An interesting possibility opens by realizing that the setting
of options for agenda commands is evaluated.  This is something
I had forgotten, but Matt reminded me with his tutorial that this
is a possibility.  So you could have a command

   ("A" "" agenda ""
    ((org-agenda-filter-preset my-filter-preset))))

and then only change that variable with your home-made code
to switch the scope of this single agenda command.

- Carsten



reply via email to

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