Subject: 30.0.50; Displaying image slice in the right margin
From: Evgeny Zajcev <[email-masked]>
To: [email-masked]
Date: Thu, 23 Jan 2025 10:10:05 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

I'm having problem displaying an image slice in the right margin.  To
reproduce this, download
https://www.gnu.org/software/emacs/images/emacs.png to your ~/Downloads
folder.  Activate right margin with M-x visual-fill-column RET.  And
consider three pieces of code:

1. (insert
     (propertize "E" 'display `((slice 0 0 1.0 20) ,(create-image
     "~/Downloads/emacs.png" nil nil :scale 1.0))))

   Displays image slice in the buffer as expected.

2. (insert
     (propertize "E" 'display `((margin right-margin) ,(create-image
     "~/Downloads/emacs.png" nil nil :scale 1.0))))

   Displays image in the right margin as expected.

3. (insert
     (propertize "E" 'display `((margin right-margin)
      ((slice 0 0 1.0 20)
      ,(create-image "~/Downloads/emacs.png" nil nil :scale 1.0)))))

   Displays "E"

Documentation say that ((margin right-margin) SPEC) can be used to
display image in the right margin, and SPEC is totally valid in the
3. because 2. works.

Is this a bug?

Thanks

In GNU Emacs 30.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version
 3.24.20, cairo version 1.16.0) of 2023-11-16 built on x1
Repository revision: 26b1ce77f355e3d0f84c26dabe35067ad8e07170
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12009000
System Description: Ubuntu 20.04.1 LTS

Configured using:
 'configure --with-modules --with-xwidgets --with-tree-sitter'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND
SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM
XINPUT2 XPM XWIDGETS GTK3 ZLIB

Important settings:
  value of $LC_MONETARY: ru_RU.UTF-8
  value of $LC_NUMERIC: ru_RU.UTF-8
  value of $LC_TIME: ru_RU.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tracking-mode: t
  global-telega-mnz-mode: t
  global-telega-url-shorten-mode: t
  telega-emacs-stories-mode: t
  telega-root-auto-fill-mode: t
  telega-contact-birthdays-mode: t
  telega-recognize-voice-message-mode: t
  telega-active-video-chats-mode: t
  telega-active-locations-mode: t
  telega-my-location-mode: t
  telega-patrons-mode: t
  global-telega-squash-message-mode: t
  telega-autoplay-mode: t
  telega-appindicator-mode: t
  telega-mode-line-mode: t
  telega-notifications-mode: t
  telega-active-stories-mode: t
  visual-fill-column-mode: t
  company-mode: t
  reverse-im-mode: t
  recentf-mode: t
  desktop-save-mode: t
  magit-todos-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  global-paren-face-mode: t
  paren-face-mode: t
  dot-mode: t
  which-function-mode: t
  save-place-mode: t
  server-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  icomplete-mode: t
  disable-mouse-global-mode: t
  override-global-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  minibuffer-regexp-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
~/github/eukleides.el/eukleides hides ~/github/emacs-stuff/eukleides
/home/lg/.emacs.d/elpa/git-commit-20210328.1730/git-commit hides
/home/lg/.emacs.d/elpa/magit-20241219.1744/git-commit
~/github/totp.el/totp-auth hides
/home/lg/.emacs.d/elpa/totp-auth-20240227.1841/totp-auth
~/github/totp.el/base32 hides
/home/lg/.emacs.d/elpa/base32-20240227.1821/base32
/home/lg/.emacs.d/elpa/vertico-20241208.2233/vertico hides
/home/lg/.emacs.d/elpa/vertico-0.11/vertico
/home/lg/.emacs.d/elpa/vertico-20241208.2233/vertico-pkg hides
/home/lg/.emacs.d/elpa/vertico-0.11/vertico-pkg
/home/lg/.emacs.d/elpa/vertico-20241208.2233/vertico-autoloads hides
/home/lg/.emacs.d/elpa/vertico-0.11/vertico-autoloads
/home/lg/.emacs.d/elpa/bind-key-20210210.1609/bind-key hides
/usr/local/share/emacs/30.0.50/lisp/bind-key
/home/lg/.emacs.d/elpa/transient-20241219.1713/transient hides
/usr/local/share/emacs/30.0.50/lisp/transient
/home/lg/.emacs.d/elpa/use-package-20210207.1926/use-package hides
/usr/local/share/emacs/30.0.50/lisp/use-package/use-package
/home/lg/.emacs.d/elpa/use-package-20210207.1926/use-package-diminish hides
/usr/local/share/emacs/30.0.50/lisp/use-package/use-package-diminish
/home/lg/.emacs.d/elpa/use-package-20210207.1926/use-package-core hides
/usr/local/share/emacs/30.0.50/lisp/use-package/use-package-core
/home/lg/.emacs.d/elpa/use-package-20210207.1926/use-package-ensure hides
/usr/local/share/emacs/30.0.50/lisp/use-package/use-package-ensure
/home/lg/.emacs.d/elpa/use-package-20210207.1926/use-package-bind-key hides
/usr/local/share/emacs/30.0.50/lisp/use-package/use-package-bind-key
/home/lg/.emacs.d/elpa/use-package-20210207.1926/use-package-lint hides
/usr/local/share/emacs/30.0.50/lisp/use-package/use-package-lint
/home/lg/.emacs.d/elpa/use-package-20210207.1926/use-package-delight hides
/usr/local/share/emacs/30.0.50/lisp/use-package/use-package-delight
/home/lg/.emacs.d/elpa/use-package-20210207.1926/use-package-jump hides
/usr/local/share/emacs/30.0.50/lisp/use-package/use-package-jump

Features:
(shadow sort mail-extr conf-mode lua-mode ispell tabify man tramp-cmds
tramp-cache time-stamp completion battery nroff-mode crdt sql view
rng-xsd xsd-regexp rng-cmpct rng-nxml rng-valid rng-loc rng-uri
rng-parse nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns
nxml-mode nxml-outln nxml-rap sgml-mode facemenu nxml-util nxml-enc
xmltok ruby-mode yaml-mode make-mode memory-report two-column descr-text
treesitter-context-focus treesitter-context treesitter-context-toml
treesitter-context-yaml treesitter-context-typescript
treesitter-context-javascript treesitter-context-json
treesitter-context-go treesitter-context-rust treesitter-context-cpp
treesitter-context-c treesitter-context-python treesitter-context-java
treesitter-context-common misc json-mode json-reformat json-snatcher js
json-ts-mode rect wordfreq shr-color textsec uni-scripts idna-mapping
ucs-normalize uni-confusable textsec-check multitran cmake-mode rst
cython-mode python-mode info-look hideshow hippie-exp markdown-mode
apropos shortdoc comp comp-cstr goto-last-change image-converter
org-journal org-crypt cal-iso holidays holiday-loaddefs cal-move
yaml-ts-mode totp-interop dabbrev vertico-mouse skeleton help-fns
cl-print vertico-multiform vertico-posframe-autoloads vertico-flat
vertico vertico-autoloads loaddefs-gen radix-tree tar-mode arc-mode
archive-mode mm-archive network-stream url-cache display-line-numbers
wgrep thai-util thai-word hl-line tracking shorten telega-adblock
telega-mnz ol-telega telega-url-shorten telega-emacs-stories
telega-dashboard telega-live-location geo-simulate geo telega-obsolete
telega telega-tdlib-events telega-match telega-root telega-info
telega-chat telega-modes telega-company telega-emoji telega-user
telega-notifications notifications telega-voip telega-msg telega-story
telega-webpage visual-fill-column telega-tme telega-sticker
telega-vvnote telega-ffplay telega-i18n telega-sort telega-filter
telega-ins telega-inline telega-util telega-folders telega-topic
telega-media telega-tdlib dired-aux telega-server telega-core
telega-customize cus-edit cus-start cus-load emacsbug vterm
magit-bookmark bookmark vterm-module vc-hg vc-bzr vc-src vc-sccs vc-svn
vc-cvs vc-rcs log-view bug-reference magit-extras misearch multi-isearch
company-org-block org-indent org-element org-persist org-id org-refile
avl-tree oc-basic ol-eww eww url-queue mm-url ol-rmail ol-mhe ol-irc
ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime
gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom gnus-group
gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail
mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win ol-docview
doc-view jka-compr image-mode exif ol-bibtex bibtex ol-bbdb ol-w3m
ol-doi org-link-doi mule-util face-remap c++-ts-mode c-ts-mode
c-ts-common eglot external-completion jsonrpc flymake ert pp ewoc debug
backtrace warnings python vc-git company-keywords company-dabbrev-code
company-dabbrev company-files company-clang company-template
company-cmake company-posframe posframe company eat term/xterm xterm
term disp-table ehelp reverse-im avy quail dockerfile-mode sh-script
smie treesit executable dashboard dashboard-widgets all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons recentf tree-widget ffap
home lichess lichess-runtime lichess-api lichess-util sound-wav deferred
request cider cider-debug cider-browse-ns cider-mode cider-inspector
cider-completion cider-profile cider-eval cider-repl-history pulse
cider-repl cider-resolve cider-test cider-overlays cider-stacktrace
cider-doc cider-browse-spec cider-clojuredocs cider-eldoc cider-client
cider-common etags fileloop generator xref project cider-connection
cider-util thingatpt cider-popup sesman-browser nrepl-client queue
nrepl-dict cider-compat spinner sesman vc vc-dispatcher clojure-mode
lisp-mnt align parseedn parseclj-parser parseclj-lex a desktop frameset
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs gnus nnheader range wid-edit autoinsert magit-todos
pcre2el rxt re-builder magit-submodule magit-blame magit-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
magit-remote magit-commit magit-sequence magit-notes magit-worktree
magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
magit-status magit magit-repos magit-apply magit-wip magit-log
magit-diff smerge-mode diff-mode git-commit log-edit message sendmail
yank-media rfc822 mml mml-sec epa derived epg rfc6068 epg-config
gnus-util mm-decode mm-bodies mm-encode mailabbrev mail-utils gmm-utils
mailheader pcvs-util add-log magit-core magit-autorevert autorevert
filenotify magit-margin magit-transient magit-process with-editor
magit-mode transient benchmark magit-git magit-base magit-section
cursor-sensor crm compat hl-todo f s dash async grep compile
text-property-search paren-face dot-mode which-func imenu totp-auth
bindat hmac base32 gist-org saveplace tramp-sh tramp trampver
tramp-integration files-x tramp-message tramp-compat xdg shell
parse-time iso8601 tramp-loaddefs gist dired dired-loaddefs gh-gist
gh-oauth gh-api logito gh-cache pcache gh-auth gh-common marshal gh-url
url-http url-auth mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr url-gw nsm puny gh-profile timezone eieio-base server time
google-translate google-translate-default-ui google-translate-core-ui
color popup google-translate-core google-translate-tk
google-translate-backend whitespace undo-tree diff ido icomplete avoid
disable-mouse page-break-lines ibuffer-vc ibuf-ext ibuffer
ibuffer-loaddefs org-bullets org ob ob-tangle ob-ref ob-lob ob-table
ob-exp org-macro org-src ob-comint org-pcomplete pcomplete comint
ansi-osc ansi-color ring org-list org-footnote org-faces org-entities
time-date noutline outline icons ob-emacs-lisp ob-core ob-eval org-cycle
org-table ol org-fold org-fold-core org-keys oc org-loaddefs find-func
cal-menu calendar cal-loaddefs org-version org-compat org-macs
format-spec edmacro kmacro advice browse-kill-ring delsel cl-extra
help-mode use-package use-package-ensure use-package-delight
use-package-diminish use-package-bind-key bind-key use-package-core
finder-inf adaptive-wrap-autoloads all-the-icons-autoloads tex-site
closql-autoloads company-box-autoloads company-org-block-autoloads
company-posframe-autoloads corfu-autoloads dashboard-autoloads
devdocs-autoloads embark-autoloads esxml-autoloads frame-local-autoloads
gist-autoloads gh-autoloads rx kv-autoloads magit-todos-autoloads
magit-autoloads pcase magit-section-autoloads page-break-lines-autoloads
pcre2el-autoloads persist-autoloads poly-org-autoloads
polymode-autoloads company-autoloads pyvenv-auto-autoloads easy-mmode
shackle-autoloads taxy-autoloads totp-auth-autoloads base32-autoloads
transient-autoloads compat-autoloads w3m-load wgrep-autoloads info
yaml-autoloads zig-mode-autoloads reformatter-autoloads package
browse-url url url-proxy url-privacy url-expand url-methods url-history
url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers
url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache
json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs
cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify
ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads xwidget-internal dbusbind inotify dynamic-setting
system-font-setting font-render-setting cairo gtk x-toolkit xinput2 x
multi-tty move-toolbar make-network-process emacs)

Memory information:
((conses 16 24053588 10726299) (symbols 48 107204 7)
 (strings 32 1689337 382021) (string-bytes 1 67604757)
 (vectors 16 238666) (vector-slots 8 4748919 8061340)
 (floats 8 54565 48892) (intervals 56 3948215 94544) (buffers 992 577))

-- 
lg