emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: interaction of fontified calendar entries and org-read-date


From: John Kitchin
Subject: Re: interaction of fontified calendar entries and org-read-date
Date: Wed, 14 Feb 2024 20:17:51 -0500

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 <yantar92@posteo.net> wrote:
John Kitchin <jkitchin@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

[Prev in Thread] Current Thread [Next in Thread]