[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Orgmode] Re: Trouble setting variables in custom agenda command
From: |
Nick Dokos |
Subject: |
Re: [Orgmode] Re: Trouble setting variables in custom agenda command |
Date: |
Wed, 03 Jun 2009 18:59:30 -0400 |
Nick Dokos <address@hidden> wrote:
> [Bernt, thanks very much for taking the time to do the set-up: it makes
> things so much easier!]
>
> I've made a little progress debugging this in the case of the
> org-agenda-start-with-log-mode variable: the doc for it says
>
> ,----
> | org-agenda-start-with-log-mode is a variable defined in `org-agenda.el'.
> | Its value is nil
> |
> | Documentation:
> | The initial value of log-mode in a newly created agenda window.
> |
> | You can customize this variable.
> `----
>
> Note that *initial*: it is only used once, in org-agenda-mode, to
> initialize org-agenda-show-log. So setting it in the definition of an
> agenda custom command (effectively in a (let ...) form) will not work:
> org-agenda-mode has been called already by the time the custom command
> is executed, and the global value of org-agenda-start-with-log-mode has
> been used to set org-agenda-show-log. Any local binding later on has no
> effect at all.
>
> So the workaround for this variable is to set org-agenda-show-log in the
> definition of the custom command. The following works as far as the log
> goes:
>
> (setq org-agenda-custom-commands
> '(("c" "The Cycle"
> ((agenda ""
> (
> (org-agenda-overriding-columns-format "%75ITEM %7Effort{:}
> %7CLOCKSUM{Total} %15TAGS %SCHEDULED") ;; no
> (org-agenda-view-columns-initially t) ;; no
> (org-agenda-show-log t) ;;yes
> (org-agenda-ndays 1) ;; yes
> (org-agenda-skip-function ;; yes
> '(org-agenda-skip-entry-if 'notregexp "\\* TODO")))))
> nil nil)))
>
> I presume that a similar problem afflicts the column view variables,
> but I have not gone there yet.
>
The problem with the column variables is similar but not quite the same:
column view is set in org-finalize, and org-finalize is called *twice*:
The custom commands are executed by org-run-agenda-series, which first
calls org-agenda-list with the (let ...) settings from the definition of
the custom command and which eventually calls org-finalize with the
proper values of the column view variables. But once org-agenda-list
returns to org-run-agenda-series, the latter continues on and calls
org-finalize again with no (let ...) bindings. The last call wins and
column view loses.
Thanks,
Nick