Subject: 31.0.50; Image icons from 'icons.el' could be accidentally dropped

From: Pengji Zhang <[email-masked]>
Date: Wed, 05 Mar 2025 18:10:38 +0800

Greetings!

Currently in 'icons.el' image icons returned by 'icon-string' is a space
with a display property (see 'icons--create'). However, IMO it is common
to stripped spaces, and that means the icon could be accidentally
removed. For example,

  - Run 'emacs -Q'
  - Evaluate the following snippet:

--8<---------------cut here---------------start------------->8---
(require 'outline) ; for the icon
(setopt mode-line-compact t)
(setf global-mode-string
      '("" (:eval (icon-string 'outline-open)) " "))
(force-mode-line-update t)
--8<---------------cut here---------------end--------------->8---

Notice that the down arrow icon does not show at all in the mode line
due to 'mode-line-compact'.

I suppose an easy fix is to use a non-space character. WDYT?

Thanks!

In GNU Emacs 31.0.50 (build 71, x86_64-pc-linux-gnu, GTK+ Version
3.24.48, cairo version 1.18.2)
Repository revision: fe7a8c92be6269f8fc7933eb6c190178839d0f8a
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101016
System Description: Arch Linux

Configured using:
 'configure --disable-build-details'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINERAMA XINPUT2 XPM
XRANDR GTK3 ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  tab-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug lisp-mnt message mailcap yank-media puny
dired dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068
epg-config gnus-util text-property-search time-date mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils auth-source
cl-seq eieio eieio-core cl-macs password-cache json map byte-opt gv
subr-x comp-run bytecomp byte-compile comp-common rx icons 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 dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process tty-child-frames native-compile emacs)

Memory information:
((conses 16 73089 11379) (symbols 48 7060 0) (strings 32 18927 2897)
 (string-bytes 1 596210) (vectors 16 12730)
 (vector-slots 8 167990 9957) (floats 8 28 18) (intervals 56 392 87)
 (buffers 992 12))