Thanks for the tip on `calendar-make-temp-face'. It gets even weirder now.

If I use a face, that function does not even seem to get called, so it
seems to work.

If I use the anonymous face though, it does get called, and I see the
inconsistent behavior.

However, if I edebug `calendar-make-temp-face' and step through each line,
then it works the same as using a face. And, after that it seems to work
most of the time.

"Do not call this directly from Lisp code; use ‘defface’ instead." seems
like a weird message. Where else would one use this?

Anyway, thanks again, I have stumbled on a solution, which is to modify
`calendar-mark-visible-date' so it does not use `calendar-make-temp-face' .

It is a small change of:
(t                           ; attr list
            (overlay-put
             (make-overlay (1- (point)) (1+ (point))) 'face
             (calendar-make-temp-face mark)))

to

(t                           ; attr list
            (overlay-put
             (make-overlay (1- (point)) (1+ (point))) 'face
    mark))

That seems to work.

A simpler way though is to just put the overlays on manually in the hook,
e.g.

(let* ((mark-calendar (lambda ()
;; Goto today
(save-excursion
 (calendar-cursor-to-visible-date (read (format-time-string "(%m %d %Y)")))
 (overlay-put
  (make-overlay (1- (point)) (1+ (point))) 'face
  (list :foreground "blue" :weight 'bold)))))
       (calendar-today-visible-hook))
  (add-hook 'calendar-today-visible-hook
   mark-calendar)
  (org-read-date))

I can live with that solution. Thanks for the assist!

On Wed, Feb 14, 2024 at 3:14 PM Ihor Radchenko <yanta...@posteo.net> wrote:

> John Kitchin <jkitc...@andrew.cmu.edu> writes:
>
> > why does it work with a face though?
>
> It really does. That's confusing. And proves that Emacs is smart enough
> to invert cursor color in some situations.
>
> My only guess is that `calendar-make-temp-face' is using `make-face'
> incorrectly. I guess that
>
>     Do not call this directly from Lisp code; use `defface' instead.
>
> in `make-face' docstring is there for a reason.
> Maybe report this as Emacs bug in calendar.el?
>
> --
> 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>
>


-- 
John

-----------------------------------
Professor John Kitchin (he/his)
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
https://kitchingroup.cheme.cmu.edu
https://pointbreezepubs.gumroad.com/ pycse bookstore

Reply via email to