Hi. I have this scenario: I track several projects in a single file, each in its own level-1 section, but each week I'm working only on one project. In my agenda (C-a a) I'm currently seeing scheduled tasks from all projects, and I would like to exclude all projects but one. I recently added a CATEGORY property to each section. My questions are: 1. How can I exclude a category from the agenda view? Probably with key \ TAB CATEGORY="something", but I can't make it work and I'm confused by the many types of searches that are referred to in the manual. 2. How can I create an agenda view that looks like the normal agenda, but ignores some categories? (at least on that file). 3. Do you implement this scenario in other ways? For instance, one can add the COMMENT keyword the unwanted projects, use different files, close all old tasks after each context switch, use other tags, … Thanks, Daniel
I've been wondering about something similar. Suppose you have a bunch of important tasks and a bunch of fluff tasks. It might be useful to be able to have the "agenda" item in org-agenda-custom-commands accept a tags search so that you can use :fluff: on the fluff tasks and assign a key for everything except :fluff: tasks. I was going to wait until after the Lisp syntax for searches was implemented and for me to get more experience before suggesting it. In any case, it looks like the same kind of thing with categories? On Mon, Mar 2, 2009 at 11:03, Daniel Clemente <n142857@gmail.com> wrote: > > Hi. I have this scenario: I track several projects in a single file, each in its own level-1 section, but each week I'm working only on one project. > In my agenda (C-a a) I'm currently seeing scheduled tasks from all projects, and I would like to exclude all projects but one. > I recently added a CATEGORY property to each section. > > > My questions are: > > 1. How can I exclude a category from the agenda view? > Probably with key \ TAB CATEGORY="something", but I can't make it work and I'm confused by the many types of searches that are referred to in the manual. > > 2. How can I create an agenda view that looks like the normal agenda, but ignores some categories? (at least on that file). > > 3. Do you implement this scenario in other ways? For instance, one can add the COMMENT keyword the unwanted projects, use different files, close all old tasks after each context switch, use other tags, … > > > Thanks, > Daniel > > > > _______________________________________________ > 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 > -- Myalgic encephalomyelitis denialism is causing death (decades early; Jason et al. 2006) and severe suffering, pain, and disability (worse than nearly all other serious diseases studied; Schweitzer et al. 1995) and grossly corrupting science. The denialism is worse than it ever was with even AIDS or MS. http://www.meactionuk.org.uk/What_Is_ME_What_Is_CFS.htm
Hi Daniel, <Quoted text wrapped> Daniel Clemente <n142857@gmail.com> writes: > Hi. I have this scenario: I track several projects in a single file, > each in its own level-1 section, but each week I'm working only on > one project. In my agenda (C-a a) I'm currently seeing scheduled > tasks from all projects, and I would like to exclude all projects > but one. I recently added a CATEGORY property to each section. > > > My questions are: > > 1. How can I exclude a category from the agenda view? Probably with > key \ TAB CATEGORY="something", but I can't make it work and I'm > confused by the many types of searches that are referred to in the > manual. I use tags instead of categories for filtering. Categories for me are only displayed in the agenda as extra information for what the task belongs to. Since tags are inherited you can just add a tag to the level 1 task and then filter using that tag. > > > 2. How can I create an agenda view that looks like the normal agenda, > but ignores some categories? (at least on that file). Using tags instead of categories: Do a normal agenda view and then limit with / TAB tag-names-goes-here or use one of your fast key selections for tags. (/ key) You can use a filter to remove tasks with a specific tag C-c a t / - TAB PROJ1 RET will display all TODO tasks and then remove any tasks with the PROJ1 tag. You can repeat the /- TAB tagname sequence to remove multiple projects. For my standard tags I have quick keys defined in my org-tag-alist so I can just use those to filter tasks. That works great! > > > 3. Do you implement this scenario in other ways? For instance, one can > add the COMMENT keyword the unwanted projects, use different files, > close all old tasks after each context switch, use other tags, … I split projects into separate files and add a #+FILETAGS: at the top. For instance my org.org file has #+FILETAGS: ORG and all tasks in that file get the ORG tag. For clients I create one or more files and use a FILETAGS setting to create a tag for that client - then I can limit the agenda to just that client quickly. Some clients have multiple project files (one of my clients has client systems which I work on so each system has its own org file but I can view everything for that client by limiting to the client tag) I find limiting the agenda with tag filters very quick and effective. HTH, Bernt
Assign a FLUFF tag to your tasks then run the agenda normally and remove
the fluff with
/ - TAB FLUFF RET
or if you do that often set up org-tags-alist with F for FLUFF and just
/ - F
-Bernt
Samuel Wales <samologist@gmail.com> writes:
> I've been wondering about something similar. Suppose you have a bunch
> of important tasks and a bunch of fluff tasks. It might be useful to
> be able to have the "agenda" item in org-agenda-custom-commands accept
> a tags search so that you can use :fluff: on the fluff tasks and
> assign a key for everything except :fluff: tasks. I was going to wait
> until after the Lisp syntax for searches was implemented and for me to
> get more experience before suggesting it. In any case, it looks like
> the same kind of thing with categories?
>
> On Mon, Mar 2, 2009 at 11:03, Daniel Clemente <n142857@gmail.com> wrote:
>>
>> Hi. I have this scenario: I track several projects in a single file, each in its own level-1 section, but each week I'm working only on one project.
>> In my agenda (C-a a) I'm currently seeing scheduled tasks from all projects, and I would like to exclude all projects but one.
>> I recently added a CATEGORY property to each section.
>>
>>
>> My questions are:
>>
>> 1. How can I exclude a category from the agenda view?
>> Probably with key \ TAB CATEGORY="something", but I can't make it work and I'm confused by the many types of searches that are referred to in the manual.
>>
>> 2. How can I create an agenda view that looks like the normal agenda, but ignores some categories? (at least on that file).
>>
>> 3. Do you implement this scenario in other ways? For instance, one can add the COMMENT keyword the unwanted projects, use different files, close all old tasks after each context switch, use other tags, …
>>
>>
>> Thanks,
>> Daniel
>>
>>
>>
>> _______________________________________________
>> 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
>>
>
>
>
> --
> Myalgic encephalomyelitis denialism is causing death (decades early;
> Jason et al. 2006) and severe suffering, pain, and disability (worse
> than nearly all other serious diseases studied; Schweitzer et al.
> 1995) and grossly corrupting science. The denialism is worse than it
> ever was with even AIDS or MS.
> http://www.meactionuk.org.uk/What_Is_ME_What_Is_CFS.htm
>
>
> _______________________________________________
> 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
Hi Daniel, Daniel Clemente <n142857@gmail.com> writes: > Hi. I have this scenario: I track several projects in a single file, each in its own level-1 section, but each week I'm working only on one project. > In my agenda (C-a a) I'm currently seeing scheduled tasks from all projects, and I would like to exclude all projects but one. > I recently added a CATEGORY property to each section. There are a couple of FAQs on this subject: http://orgmode.org/worg/org-faq.php#limit-agenda-with-tag-filtering http://orgmode.org/worg/org-faq.php#limit-agenda-with-category-match I would use tags in such a scenario. Simply give each project a unique tag and then use secondary filtering to limit the agenda to that tag (as Bernt explains in the other posts on this thread). Best, Matt
> 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 what I use as filter, which covers the issue of inheritance
and a small optimization (at least for my org files):
(defun my-skip-by-tags (tag)
"Skip tasks except those that contain tag (with
inheritance!). "
(let ((line-end (save-excursion (progn (end-of-line) (point))))) ;; return pos
(if (or
(member tag (org-get-local-tags)) ;; check first if only local (speed)
(member tag (org-get-tags-at (point)))) ;; also inherited
nil ; do not skip
line-end))) ; skip, continue after that
Cheers,
Manuel
--
-------------------------------------------------------------------------------
Manuel Hermenegildo | Prof., C.S.Dept., T.U. Madrid (UPM)
Director, IMDEA-Software and CLIP Group | +34-91-336-7435 (W) -352-4819 (Fax)
-------------------------------------------------------------------------------
> Assign a FLUFF tag to your tasks then run the agenda normally and remove > the fluff with > > / - TAB FLUFF RET Thanks, this works. I will use tags instead of categories. > > or if you do that often set up org-tags-alist with F for FLUFF and just > > / - F > 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). -- Daniel
Daniel Clemente <n142857@gmail.com> 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---
Best,
Matt
On Mar 3, 2009, at 2:05 PM, Matthew Lundin wrote: > > Daniel Clemente <n142857@gmail.com> 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. - Carsten > > > Best, > Matt > > > _______________________________________________ > 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
On Mar 3, 2009, at 2:31 PM, Carsten Dominik wrote:
>
> On Mar 3, 2009, at 2:05 PM, Matthew Lundin wrote:
>
>>
>> Daniel Clemente <n142857@gmail.com> 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
El dc, mar 04 2009, Carsten Dominik va escriure:
> (org-agenda-filter-preset '("-FLUFF" "-BLUFF"))
Thank you very much for this addition; not only it allows you to filter out a tag, but also many tags; that is what I needed in the first place.
Hey all, One thing I noticed about org mode I'm hoping to resolve. Basically with using git, and having something pull into the specific org file, the contents of the file change often. The problem I'm having is that what I'd like to do is to refresh the buffer, and reload this file on specific intervals. When changes are made to the file - say a state changes or something like that, I want to automatically save back to the file near immediately. I'm trying to reduce the amount of race conditions I have in if I run from the following type of workflow: - Load agenda - clock in, out, add notes - refresh file from ticket tracker - Try to save file - fail because file potentially changed. I'd like to try and get it to work as the following: - Load agenda - auto save file every 20 seconds or so: clock in, out, add notes - Refresh file from ticket tracker (this is done, already merges with current org file) - reloads buffers automatically (no prompt on "this file has changed", automatically reload first then allow the edit to go through again. - auto save file and repeat the above 2 steps. I'm not totally sure if this would work, but right now what I do is: - Load agenda - Edit agenda as necessary - Save Manually - run python script to pull redmine stuff which will save it to the same file, merged. - hit refresh, confirm a few times that I want to reload the file and continue from step 2 on. The main thing I'd like to fix if the overal solution doesn't work is a way to reload the file without confirming. So if I try to refresh the agenda buffer that it would automatically reload the file too, without confirmation. I have an emacs lisp command I created that does this for me. Any ideas on how to handle this, or how to streamline this process at all? Thanks, David
David Thole <dthole@gmail.com> writes:
> The main thing I'd like to fix if the overal solution doesn't work is
> a way to reload the file without confirming. So if I try to refresh
> the agenda buffer that it would automatically reload the file too,
> without confirmation. I have an emacs lisp command I created that
> does this for me.
auto-revert-mode; see also global-auto-revert-mode. You may have lost
work if you check stuff out over uncommitted changes, but I gather
you're aware of that and have a workflow that avoids it.
--8<---------------cut here---------------start------------->8---
auto-revert-mode is an interactive compiled Lisp function in
`autorevert.el'.
(auto-revert-mode &optional arg)
Toggle reverting buffer when file on disk changes.
With arg, turn Auto Revert mode on if and only if arg is positive.
This is a minor mode that affects only the current buffer.
Use `global-auto-revert-mode' to automatically revert all buffers.
Use `auto-revert-tail-mode' if you know that the file will only grow
without being changed in the part that is already in the buffer.
--8<---------------cut here---------------end--------------->8---
--
+-----------------------------------------------------------+
| Jason F. McBrayer jmcbray@carcosa.net |
| If someone conquers a thousand times a thousand others in |
| battle, and someone else conquers himself, the latter one |
| is the greatest of all conquerors. --- The Dhammapada |