From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Lundin Subject: Re: Sunrise / Sunset in Agenda View only for Current Day? Date: Wed, 03 Nov 2010 20:43:39 -0400 Message-ID: <87wrotzzno.fsf@fastmail.fm> References: <47A80977A48444D6A6110E7CB9D85BAD@PHONON.COM> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from [140.186.70.92] (port=53511 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PDolS-0002GS-NV for emacs-orgmode@gnu.org; Wed, 03 Nov 2010 21:37:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PDnvc-0007h6-Rw for emacs-orgmode@gnu.org; Wed, 03 Nov 2010 20:43:46 -0400 Received: from out3.smtp.messagingengine.com ([66.111.4.27]:56042) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PDnvc-0007gm-Om for emacs-orgmode@gnu.org; Wed, 03 Nov 2010 20:43:44 -0400 In-Reply-To: <47A80977A48444D6A6110E7CB9D85BAD@PHONON.COM> (Raymond Zeitler's message of "Wed, 27 Oct 2010 12:49:38 -0400") 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: Raymond Zeitler Cc: emacs-orgmode@gnu.org "Raymond Zeitler" writes: > I added sunrise & day of the week to the org file that I base my agenda view > on. But this adds the information for every day that's displayed in the > agenda. Is it possible to get the information to show up only for the > current day? > > TIA > > Here's the relevant content in the org file: > #+CATEGORY: Day/Year > &%%(diary-day-of-year) > #+CATEGORY: Sunrise > &%%(diary-sunrise-sunset) One way to accomplish this is with a custom skip function and a custom agenda command. In order for this particular setup to work, you'll need to put the sunrise sexp in it's own subtree, as in: --8<---------------cut here---------------start------------->8--- * Sunrise :PROPERTIES: :CATEGORY: Sunrise :END: &%%(diary-sunrise-sunset) --8<---------------cut here---------------end--------------->8--- Note: it's important that you use the CATEGORY property to ensure that the category "Sunrise" is limited to a single subtree. Then, you could add the following function to your emacs: --8<---------------cut here---------------start------------->8--- (defun my-org-skip-sunrise () (if (and (not (equal date (calendar-current-date))) (string= (org-get-category) "Sunrise")) (org-end-of-subtree t) nil)) --8<---------------cut here---------------end--------------->8--- Finally, you could define a custom command that instructs org to use the skip function to bypass all "Sunrise" entries for days other than today: --8<---------------cut here---------------start------------->8--- (add-to-list 'org-agenda-custom-commands '("x" "My agenda" agenda "" ((org-agenda-ndays 7) (org-agenda-skip-function 'my-org-skip-sunrise)))) --8<---------------cut here---------------end--------------->8--- If you're feeling brave, you could disregard the docstring for org-agenda-skip-function and bind the variable globally (i.e., invoke my-org-skip-sunrise on all agenda commands), but I wouldn't recommend this. Hope this helps, Matt