Ok, I don't know specifically why the code in the last message was necessary, but I realized the difference between the two cases (in the first case, the macro is expanded every time the function is called, whereas in the second it is expanded once, when the function is defined). I also fixed the problems in both org-agenda.el and am including the patch. Thanks, Kosta -- Konstantin Kliakhandler http://slumpy.org )°) )°( (°( On Tue, May 6, 2014 at 6:54 PM, Konstantin Kliakhandler wrote: > While investigating the previous issue, I came upon this code: > > ;;;###autoload > (defun org-store-agenda-views (&rest parameters) > "Store agenda views." > (interactive) > (eval (list 'org-batch-store-agenda-views))) > > I guess there is some advantage over the following, simpler version? > > ;;;###autoload > (defun org-store-agenda-views (&rest parameters) > "Store agenda views." > (interactive) > (org-batch-store-agenda-views)) > > If so, what is it? > > Thanks in advance for furthering my education, > Kosta > > -- > Konstantin Kliakhandler > http://slumpy.org > )°) )°( (°( > > > On Tue, May 6, 2014 at 2:00 PM, Konstantin Kliakhandler wrote: > >> Hello, >> >> [This behavior appears in a previous and the following org versions: >> Org-mode version 8.2.6 (8.2.6-14-g063c8b-elpa @ >> /home/kosta/.emacs.d/elpa/org-20140505/)] >> >> I recently began seeing weird behavior when trying to run >> `org-mobile-push' in an agenda buffer; It appears the files are indeed >> pushed, but at the end I get an error: "(wrong-type-argument arrayp nil)" >> >> This only happens when I attempt to push from an agenda buffer - if I >> push in a regular org buffer, everything works. >> >> The stack trace is: >> org-agenda-filter-apply(nil category) >> org-agenda-redo() >> org-mobile-push() >> >> where the `org-agenda-filter-apply' call is from this sexp in >> `org-agenda-redo': >> (and (or cat-filter cat-preset) (org-agenda-filter-apply cat-filter >> 'category)) >> >> And cat-filter, cat-preset are set in a let* form higher up in >> org-agenda-redo as (their values are included): >> >> (cat-filter org-agenda-category-filter) >> nil >> (cat-preset (get 'org-agenda-category-filter :preset-filter)) >> ("+Academic") >> >> When I start emacs or even look at the agenda, >> (get 'org-agenda-category-filter :preset-filter) always evaluates to nil >> (up to the point where I eval `org-mobile-push'). It gets set in >> `org-mobile-create-sumo-agenda', which is called at some point from >> `org-mobile-push' before `org-agenda-redo'. >> >> Apparently this started happening after I added the following custom >> agenda command: >> >> ("z" "All academic agenda items" alltodo "" >> ((org-agenda-overriding-header "Academic todos.") >> (org-agenda-category-filter-preset >> (quote >> ("+Academic"))) >> (org-agenda-todo-list-sublevels nil))) >> >> Now, I have two questions/comments: >> 1. It appears that `org-agenda-filter-apply' expects an array, and an >> array always evaluates to togical t (As far as I remember, have just >> checked). If this is the case, in the following sexp (from >> `org-agenda-filter-apply'): (and (or cat-filter cat-preset) >> (org-agenda-filter-apply cat-filter 'category)) why is the (or cat-filter >> cat-preset)? It seems that either `cat-filter' is an array, in which case >> it is (possibly) valid to pass it to `org-agenda-filter-apply', or is nil, >> in which case it isn't. What role does cat-preset play here? >> 2. It appears to me that `org-mobile-create-sumo-agenda' does not work >> entirely correctly, as it leaves some properties set that were not set >> before it ran? >> >> Ok, so after writing the last two questions, I looked into >> `org-agenda-filter-apply', and it appears that it expects a list of strings >> of the form "+cat" or "-cat", which is what `cat-preset' holds at this >> point. >> >> Changing >> (and (or cat-filter cat-preset) (org-agenda-filter-apply cat-filter >> 'category)) >> to >> (and (or cat-filter cat-preset) (org-agenda-filter-apply (or cat-filter >> cat-preset) 'category)) >> as a check and reevaling the defun makes org-mobile-push complete with no >> errors even when ran from an agenda buffer. Note however: >> 1. There are several more similar lines in org-agenda-redo, which I >> suspect also need to be checked. >> 2. After org-mobile-push, a category filter is applied to the agenda >> buffer ("+Academic"), despite the original agenda buffer having no such >> filter, so it seems that something is broken in >> `org-mobile-create-sumo-agenda' regardless. >> >> I found a (somewhat) relevant post here: >> http://thread.gmane.org/gmane.emacs.orgmode/57481 >> If what I wrote makes sense, let me know and I will submit a patch for >> `org-agenda-filter-apply', and if I figure out how to fix >> `org-mobile-create-sumo-agenda', for that as well. >> >> Thanks, >> Kosta >> > >