Subject: bug#64101: 29.0.91; Eglot inlay hints rendered out of order

From: João Távora <[email-masked]>
Date: Sun, 18 Jun 2023 15:22:25 +0100

Stefan Monnier <[email-masked]> writes:

>>> The `priority` property is a source of problem in itself
>> How so?  What problem are you talking about.
>
> Most overlays don't have a `priority` property, so any overlay with
> a `priority` property set to a number greater than 0 will have priority
> over basically everything else, which is rarely what you want.
>
> Often, the resulting problems take a while to appear and when they do,
> it's in relation with some other package elsewhere, so that package's
> authors end up working around the problem by adding another `priority`
> property on their overlays, thus spreading the problem further.

Right, that makes sense.  It's more or less what I feared too, though
this is all speculative at this point.  Anyway, can you explain this?
Take this scratch buffer

   ;; This buffer is for text that is not saved, and for Lisp evaluation.
   ;; To create a file, visit it with C-x C-f and enter text in its buffer.
    
   (progn
     (mapc #'delete-overlay (overlays-in (point-min) (point-max)))
     (let ((a (make-overlay 10 20))
           (b (make-overlay 10 20)))
       (overlay-put a 'after-string (propertize "aaaa" 'face 'highlight))
       (overlay-put b 'after-string (propertize "bbbb" 'face 'speedbar-highlight-face))
       ;; (overlay-put a 'priority 1)
       ;; (overlay-put b 'priority 2)
       (overlay-put a 'priority `(nil . 1))
       (overlay-put b 'priority `(nil . 2))
       ))

This displays AAAABBBB eventually, but I would expect it to show
BBBBAAAA, which is what I get if I use "primary" priorities.

João