From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Pohlack Subject: Re: skip entry with inherited tags Date: Thu, 03 Jun 2010 23:44:05 +0200 Message-ID: <4C082225.6020007@os.inf.tu-dresden.de> References: <20100518074232.GA10524@mteege.de> <4BF2778D.9070702@os.inf.tu-dresden.de> <87mxvxdsv7.fsf@fastmail.fm> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------000309090502040406070905" Return-path: Received: from [140.186.70.92] (port=47118 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OKID5-0004H7-A0 for emacs-orgmode@gnu.org; Thu, 03 Jun 2010 17:44:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OKID3-0006TC-OV for emacs-orgmode@gnu.org; Thu, 03 Jun 2010 17:44:19 -0400 Received: from os.inf.tu-dresden.de ([141.76.48.99]:38657) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OKID3-0006Se-Ei for emacs-orgmode@gnu.org; Thu, 03 Jun 2010 17:44:17 -0400 In-Reply-To: <87mxvxdsv7.fsf@fastmail.fm> 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: Matt Lundin Cc: emacs-orgmode@gnu.org This is a multi-part message in MIME format. --------------000309090502040406070905 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi All, I finally found some hours to walk through the code. On 18.05.2010 19:25, Matt Lundin wrote: > Martin Pohlack writes: > >> Hi, >> >> On 18.05.2010 09:42, Matthias Teege wrote: >>> Moin, >>> >>> I'm using a simple skip-function to exclude todos from a list. >>> >>> (defun my-skip-someday-and-scheduled () >>> "" >>> (org-agenda-skip-entry-if 'scheduled 'regexp ":SOMEDAY:")) >>> >>> That works when the tag was assigned to an entry but not when it was >>> inherited from a parent. How do I get all tags for an entry? >> >> I have been using the same approach with the same limitations. I >> stumbled upon the "tags filter preset", which supposedly should filter >> out headlines with a specific tag set. >> >> I tried to set it to "-maybe" but it did not seem to have an effect >> with the default "Agenda" type. Is this supposed to work? > > Did you set the variable as a list? > > --8<---------------cut here---------------start------------->8--- > (setq org-agenda-custom-commands > '(("x" "No maybe" todo "" > ((org-agenda-filter-preset '("-maybe")))))) > --8<---------------cut here---------------end--------------->8--- > > BTW, I believe one solution to the original question is: > > --8<---------------cut here---------------start------------->8--- > (setq org-agenda-custom-commands > '(("x" "No scheduled or someday" todo "" > ((org-agenda-todo-ignore-scheduled t) > (org-agenda-filter-preset '("-SOMEDAY")))))) > --8<---------------cut here---------------end--------------->8--- Thanks for your suggestion Matt. I now think the problem is that I have a multi-agenda. org-finalize-agenda is called for each subagenda here but the branch where org-agenda-filter-apply would be called is never taken as it is scoped with "unless org-agenda-multi". I have also found no other non-interactive trigger for org-agenda-filter-apply. I see two possible solutions here: * Run org-agenda-filter-apply on a narrowed agenda buffer (only for the sub-agenda). In fact, the agenda buffer seems to be narrowed down at this point already. This would be the perfect solution as each sub-agenda could install its own org-agenda-filter-preset. Find attached a patch which achieves this. It seems to work well for my short tests. * Run org-agenda-filter-apply once for the whole buffer with a global org-agenda-filter-preset. This would be mostly ok for some use cases (I only want to globally remove all "maybe" entries, including the inherited ones). Cheers, Martin --------------000309090502040406070905 Content-Type: text/plain; name="org-agenda-filter-apply_multi.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="org-agenda-filter-apply_multi.diff" diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 19ea87c..033c981 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -2760,7 +2760,9 @@ bind it in the options section.") (defun org-finalize-agenda () "Finishing touch for the agenda buffer, called just before displaying it." - (unless org-agenda-multi + (if org-agenda-multi + (when (get 'org-agenda-filter :preset-filter) + (org-agenda-filter-apply org-agenda-filter)) (save-excursion (let ((inhibit-read-only t)) (goto-char (point-min)) --------------000309090502040406070905 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --------------000309090502040406070905--