>> - (org-eval-in-calendar '(setq cursor-type nil) t)
>> + ;; FIXME: Could we use `with-current-buffer' or do we really
>> + ;; need the `move-overlay' that's in `org-funcall-in-calendar'?
>> + (org-funcall-in-calendar (lambda () (setq cursor-type nil)) t)
>
> `move-overlay' is important - this is additional decoration that Org
> mode uses to indicate "current" date in the calendar while the focus is
> on other window and the cursor may not be clearly visible.
I understand it's important in general, but the question is for this
specific use of `org-funcall-in-calendar` where all we do (apparently)
is to set `cursor-type` which shouldn't require any change to the
overlay (nor does it require to `select-window`), or should it?
Along the same lines, maybe:
(progn
(calendar-forward-day (- (time-to-days org-def)
(calendar-absolute-from-gregorian
(calendar-current-date))))
(org-funcall-in-calendar #'ignore t)
(let* ((old-map (current-local-map))
(map (copy-keymap calendar-mode-map))
(minibuffer-local-map
should turn into something like:
(let ((days (- (time-to-days org-def)
(calendar-absolute-from-gregorian
(calendar-current-date)))))
(org-funcall-in-calendar #'calendar-forward-day t days)
(let* ((old-map (current-local-map))
(map (copy-keymap calendar-mode-map))
(minibuffer-local-map
so it's clear why we need to use `org-funcall-in-calendar`?
>> -(defun org-eval-in-calendar (form &optional keepdate)
>> - "Eval FORM in the calendar window and return to current window.
>> +(defun org-funcall-in-calendar (func &optional keepdate &rest args)
>> + "Call FUNC in the calendar window and return to current window.
> Why not a macro? Having to write lambda may be awkward.
[ Hmm... in my book, writing `lambda` should not be considered awkward. ]
So far there are only two uses of `org-funcall-in-calendar` which go
through `lambda`, one of them is quoted and discussed above and the
other is the backward compatibility wrapper `org-eval-in-calendar`, so
I'm not sure it's worth the trouble. But if you want, I can include
a macro for it, of course.
Stefan