Chris,

Thanks, this looks pretty well what I ended up with after some help off-list (I've only realised it was off list, and thought I had already replied to the list.

The code I ended up with is:

(setq org-agenda-custom-commands
      '(
        ("d" todo #("DELEGATED") nil)
        ("c" todo #("DONE|DEFERRED|CANCELLED") nil)
        ("w" todo #("WAITING") nil)
        ("W" agenda "" ((org-agenda-ndays 21)))
        ("A" agenda "" ((org-agenda-skip-function
                           (lambda nil (org-agenda-skip-entry-if (quote notregexp) "\\=.*\\[#A\\]")))
                        (org-agenda-ndays 1)
                        (org-agenda-overriding-header "Today's Priority #A tasks: ")))
        ("u" alltodo "" ((org-agenda-skip-function
                          (lambda nil (org-agenda-skip-entry-if (quote scheduled) (quote deadline)
                                                                (quote regexp) "<[^>\n]+>")))
                         (org-agenda-overriding-header "Unscheduled TODO entries: ")))))

Which I think is the same as you suggest. And thanks for the explanations, these were useful.

Graham



On 14/12/2007, Chris Leyon <cleyon@gmail.com> wrote:
On Dec 13, 2007 2:11 PM, Graham Smith <myotisone@gmail.com> wrote:
> I have been trying to rewrite the code to avoid the custom-set-variables in
> .emacs but have finally come unstuck with this bit:
> [...]
> "Invalid read syntax: Invalid string property list" error when launching
> Emacs and narrowed it down to this bit of code. Can anyone point out where
> this is wrong. The rest of it loads OK, its just this bit which is failing.

The #(...) is attempting to set a text property on the string
"DELEGATED".  Apparently nil is not valid in this location.  See
section 2.3.8.4 in the Elisp info document.  Since nil probably means
no property, you can just eliminate the #() syntax.

Also, your parentheses don't match up; you need extra closing parens
after some entries to make a well-formed list.  You probably want to
end up with something like this (not tested but at least it evaluates
without error):

(setq org-agenda-custom-commands
      '(("d" todo ("DELEGATED"))
        ("c" todo ("DONE|DEFERRED|CANCELLED"))
        ("w" todo ("WAITING"))
        ("W" agenda "" ((org-agenda-ndays 21)))
        ("A" agenda "" ((org-agenda-skip-function
                         (lambda nil
                           (org-agenda-skip-entry-if (quote notregexp)
"\\=.*\\[#A\\]")))
                        (org-agenda-ndays 1)
                        (org-agenda-overriding-header "Today's
Priority #A tasks: ")))
        ("u" alltodo "" ((org-agenda-skip-function
                          (lambda nil
                            (org-agenda-skip-entry-if (quote
scheduled) (quote deadline)
                                                      (quote regexp)
"<[^>\n]+>")))
                         (org-agenda-overriding-header "Unscheduled
TODO entries: ")))))

> Many thanks,
> Graham

Chris