[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orgmode] Re: Can this function be written better?
From: |
Bernt Hansen |
Subject: |
[Orgmode] Re: Can this function be written better? |
Date: |
Mon, 06 Dec 2010 16:53:36 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) |
Nathan Neff <address@hidden> writes:
> I'd like to be able to easily toggle the showing/hiding of CLOSED clock
> items in the agenda.
>
> I have a function that does exactly that. My Lisp is terrible (I bet that's
> never been said before :-) and I want to try to improve it.
>
> Any suggestions how to improve/refactor the following function?
>
> (defun njn/agenda-toggle-show-closed()
> "Toggle whether closed clock thingies are shown in the agenda"
> (interactive)
> (if (eq njn/org-agenda-show-closed 't)
> (progn (setq org-agenda-log-mode-items (quote (clock)))
> (setq njn/org-agenda-show-closed nil)
> (message "NOT Showing closed clock entries in agenda"))
> (progn (setq org-agenda-log-mode-items (quote (closed clock)))
> (setq njn/org-agenda-show-closed 't)
> (message "Showing closed clock entries in agenda"))
> ))
>
Hi Nate,
I would probably write it like this: (but I'm no emacs-lisp expert
either)
(defun njn/agenda-toggle-show-closed()
"Toggle whether closed clock thingies are shown in the agenda"
(interactive)
(setq njn/org-agenda-show-closed (not njn/org-agenda-show-closed))
(setq org-agenda-log-mode-items (if njn/org-agenda-show-closed
(quote (closed clock))
(quote (clock))))
(message "%sShowing closed clock entries in agenda" (if
njn/org-agenda-show-closed "" "NOT ")))
You have a bug in your version - the test and report is backwards.
When njn/org-agenda-show-closed is t you don't show closed items and
when it's nil you do.
- You don't need to check for equality with 't (and you don't need to
quote t)
- everything non-nil is true
- you can just check that directly in the (if ... )
My version basically does this:
1. toggle the boolean njn/org-agenda-shot-closed
2. set org-agenda-log-mode-items based on the boolean
3. report the value
HTH,
Bernt