[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orgmode] Re: Sunrise / Sunset in Agenda View only for Current Day?
From: |
Raymond Zeitler |
Subject: |
[Orgmode] Re: Sunrise / Sunset in Agenda View only for Current Day? |
Date: |
Wed, 24 Nov 2010 17:12:33 -0500 |
This worked wonderfully! Thanks!
I decided to combine the &%%(diary-day-of-year) into the same category with
&%%(diary-sunrise-sunset).
My setup is shown on Emacs wiki:
http://www.emacswiki.org/emacs/RaymondZeitler
All the best!
--
Raymond Zeitler <address@hidden>
-----Original Message-----
From: Matt Lundin [mailto:address@hidden
Sent: Wednesday, November 03, 2010 8:44 PM
To: Raymond Zeitler
Cc: address@hidden
Subject: Re: Sunrise / Sunset in Agenda View only for Current Day?
"Raymond Zeitler" <address@hidden> 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