[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#8897: `completion--insert-strings' clobbers user-added text properti
From: |
Štěpán Němec |
Subject: |
bug#8897: `completion--insert-strings' clobbers user-added text properties |
Date: |
Mon, 20 Jun 2011 10:07:41 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> In my particular case I define annotations as buttons (which display
>> even more detail about a completion value upon activation), so a visual
>> indication of clickability is very important for me.
>
> Currently, the completion-list-mode uses the `mouse-face' text-property
> to determine what is a completion item and what i something else (blank
> space, annotation, you name it). So as it stands, any mouse-face you'd
> add to an annotation would confuse completion-list-mode into thinking it
> is a completion item.
>
> Maybe you could try to use the `category' text-property instead.
Well I do use the `category' property, but the button functions seem to
set up the button face automatically, which is then clobbered by
`completion--insert-strings' (which is the problem). Here's how I set up
an annotation, `n' being the number of a pull request as a string (i.e.,
the completion value itself):
#+begin_src elisp
(let ((req (assoc-default n minibuffer-completion-table)))
(concat " "
(propertize (plist-get req :title)
'fontified t
'button '(t)
'category 'default-button
'help-echo "RET or mouse-2 for details"
'pr-data req
'action (lambda (b) (magithub-pull-request-details
(button-get b 'pr-data))))))
#+end_src
With my patch I haven't noticed any problems you mention -- clicking
or RET on the completion itself selects it, clicking or RET on the
annotation displays further details, the button face is preserved.
Štěpán