Stefan Monnier <monn...@iro.umontreal.ca> writes: >>> - (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?
No, it should not, and it does not require `select-window'. > 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`? Yes. Looks reasonable. >>> -(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. Not necessary. Lambda is also ok, I just slightly prefer macro. The only reason why I call lambda "awkward" is because it is more typing. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92>