GNU bug report logs -
#42521
28.0.50; Can't include an image in a display string
Previous Next
To reply to this bug, email your comments to 42521 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#42521
; Package
emacs
.
(Fri, 24 Jul 2020 19:41:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Dmitry Gutov <dgutov <at> yandex.ru>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Fri, 24 Jul 2020 19:41:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
(progn
(erase-buffer)
(insert " ")
(setq o (make-overlay (point-min) (point)))
(overlay-put o 'display
(concat (propertize " " 'display
(create-image "splash.svg" nil nil
:max-height
(default-font-height)))
" text after image")))
The script above will end with a blank space instead of an image being
displayed.
To compare: replace the first 'display symbol with 'after-string, and
the image is displayed.
Why do we need this: if this worked, we would implement icons display in
the default completion popup in company-mode. It's a feature that has
been requested for a while. See the discussion here:
https://github.com/company-mode/company-mode/pull/996#issuecomment-662743347
Unfortunately, as we seem to have concluded in
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18285
and
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20847,
I have to use the `display' overlay property in most of the cases.
P.S. This is not a regression, Emacs 26.3 is the same.
In GNU Emacs 28.0.50 (build 25, x86_64-pc-linux-gnu, GTK+ Version
3.24.20, cairo version 1.16.0)
of 2020-07-20 built on potemkin
Repository revision: 4c08c2f45b9bb0265f6d7c3529011dee1b18e843
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12008000
System Description: Ubuntu 20.04 LTS
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#42521
; Package
emacs
.
(Sat, 25 Jul 2020 05:56:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 42521 <at> debbugs.gnu.org (full text, mbox):
severity 42521 wishlist
thanks
> From: Dmitry Gutov <dgutov <at> yandex.ru>
> Date: Fri, 24 Jul 2020 22:40:02 +0300
>
> (progn
> (erase-buffer)
> (insert " ")
> (setq o (make-overlay (point-min) (point)))
> (overlay-put o 'display
> (concat (propertize " " 'display
> (create-image "splash.svg" nil nil
> :max-height
> (default-font-height)))
> " text after image")))
>
> The script above will end with a blank space instead of an image being
> displayed.
This is a documented limitation of the current design and
implementation of the 'display' property. The ELisp manual says:
‘STRING’
Display STRING instead of the text that has this property.
Recursive display specifications are not supported—STRING’s
‘display’ properties, if any, are not used.
I never looked into lifting this restriction, so I don't know what
would that entail. There are probably some complications with faces,
at least. If someone wants to study the issue, that'd be welcome, I
think.
Severity set to 'wishlist' from 'normal'
Request was from
Eli Zaretskii <eliz <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Sat, 25 Jul 2020 05:56:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#42521
; Package
emacs
.
(Sat, 25 Jul 2020 10:27:02 GMT)
Full text and
rfc822 format available.
Message #13 received at 42521 <at> debbugs.gnu.org (full text, mbox):
On 25.07.2020 08:54, Eli Zaretskii wrote:
> Recursive display specifications are not supported—STRING’s
> ‘display’ properties, if any, are not used.
I see, thank you.
But what about other ways to reach the same goal?
Like supporting image spec placed on 'before-string' instead of 'display':
(progn
(erase-buffer)
(insert " ")
(setq o (make-overlay (point-min) (point)))
(overlay-put o 'display
(propertize " text after image"
'before-string
(create-image "splash.svg" nil nil
:max-height
(default-font-height)))))
If this worked, I would actually prefer it.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#42521
; Package
emacs
.
(Sat, 25 Jul 2020 10:57:01 GMT)
Full text and
rfc822 format available.
Message #16 received at 42521 <at> debbugs.gnu.org (full text, mbox):
> Cc: 42521 <at> debbugs.gnu.org
> From: Dmitry Gutov <dgutov <at> yandex.ru>
> Date: Sat, 25 Jul 2020 13:26:19 +0300
>
> Like supporting image spec placed on 'before-string' instead of 'display':
>
> (progn
> (erase-buffer)
> (insert " ")
> (setq o (make-overlay (point-min) (point)))
> (overlay-put o 'display
> (propertize " text after image"
> 'before-string
> (create-image "splash.svg" nil nil
> :max-height
> (default-font-height)))))
>
> If this worked, I would actually prefer it.
This puts a 'before-string' property on a display string. But
'before-string' is an overlay property, not a text property, so it
cannot be put on a string, only on buffer text.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#42521
; Package
emacs
.
(Sat, 25 Jul 2020 11:35:01 GMT)
Full text and
rfc822 format available.
Message #19 received at 42521 <at> debbugs.gnu.org (full text, mbox):
On 25.07.2020 13:56, Eli Zaretskii wrote:
> This puts a 'before-string' property on a display string. But
> 'before-string' is an overlay property, not a text property, so it
> cannot be put on a string, only on buffer text.
Ah, yes. Thank you for the reminder.
This bug report was last modified 4 years and 113 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.