emacs-orgmode
[Top][All Lists]
Advanced

[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




reply via email to

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