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 wrote: > > On Dec 13, 2007 2:11 PM, Graham Smith 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 >