Subject: bug#59719: 29.0.60; emacs-news-mode does not adjust the width of the fringe to accommodate the outline icons

From: Kai Ma <[email-masked]>
Date: Wed, 30 Nov 2022 17:10:40 +0800

The fringe is too small to accomodate the icons, but emacs-news-mode
does not adjust the width.  This is especially bad for the 'emoji'
icons.

Symbol icons:

Text icons:

Emoji icons:

Also reproducible on emacs -Q:

In GNU Emacs 29.0.60 (build 4, x86_64-apple-darwin22.1.0, NS
 appkit-2299.00 Version 13.0.1 (Build 22A400)) of 2022-11-29 built on
 Kais-MacBook.local
Repository revision: 067c65578e02034d7605f1dcaf6a6d0c4bbdbda3
Repository branch: emacs-29
Windowing system distributor 'Apple', version 10.3.2299
System Description:  macOS 13.0.1

Configured using:
 'configure --with-xwidgets --with-json --with-native-compilation'

Configured features:
ACL DBUS GIF GLIB GMP GNUTLS JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP
NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM XWIDGETS ZLIB

Important settings:
  value of $LC_ALL: zh_CN.utf-8
  value of $LANG: zh_CN.utf-8
  locale-coding-system: utf-8-unix

Major mode: NEWS

Minor modes in effect:
  async-bytecomp-package-mode: t
  telega-root-auto-fill-mode: t
  telega-active-locations-mode: t
  telega-patrons-mode: t
  outline-minor-mode: t
  global-wakatime-mode: t
  wakatime-mode: t
  popper-echo-mode: t
  popper-mode: t
  shell-dirtrack-mode: t
  recentf-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  winner-mode: t
  winum-mode: t
  which-key-mode: t
  corfu-popupinfo-mode: t
  global-corfu-mode: t
  corfu-mode: t
  marginalia-mode: t
  vertico-mouse-mode: t
  vertico-mode: t
  projectile-mode: t
  keyfreq-autosave-mode: t
  keyfreq-mode: t
  rime-regexp-mode: t
  prescient-persist-mode: t
  global-ligature-mode: t
  ligature-mode: t
  ns-auto-titlebar-mode: t
  electric-pair-mode: t
  override-global-mode: t
  global-auto-revert-mode: t
  global-so-long-mode: t
  delete-selection-mode: t
  pixel-scroll-precision-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-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
  button-mode: t

Features:
(shadow sort ecomplete mail-extr cl-print vc-hg vc-bzr vc-src vc-sccs
vc-svn vc-cvs vc-rcs log-view pcvs-util vc jka-compr emacs-news-mode
ielm ido vterm face-remap term disp-table ehelp vterm-module term/xterm
xterm all-the-icons-dired dired-filter dired-hacks-utils dired-x
all-the-icons-ibuffer all-the-icons all-the-icons-faces data-material
data-weathericons data-octicons data-fileicons data-faicons
data-alltheicons dabbrev pulse consult-xref helpful cc-langs trace
info-look elisp-refs ffap helm-command helm-elisp helm-eval edebug debug
backtrace helm-info helm-mode helm-misc helm-files image-dired
image-dired-tags image-dired-external image-dired-util helm-buffers
helm-occur helm-tags helm-locate helm-types misearch multi-isearch
tramp-archive tramp-gvfs helm-swoop cape consult-vertico consult
compat-28 bookmark helm-grep helm-regexp helm-utils helm-help helm
helm-global-bindings helm-easymenu helm-core async-bytecomp helm-source
helm-multi-match helm-lib helm-swoop-autoloads loaddefs-gen mm-archive
url-cache vc-git diff-mode vc-dispatcher finder-inf kinsoku thai-util
thai-word telega-obsolete telega telega-tdlib-events telega-webpage
visual-fill-column telega-match telega-root telega-info telega-chat
telega-modes image-mode exif telega-company telega-emoji telega-user
telega-notifications notifications dbus telega-voip telega-msg
telega-tme telega-sticker telega-i18n telega-vvnote bindat telega-ffplay
telega-sort telega-filter telega-ins telega-folders telega-inline
telega-util telega-media telega-tdlib rainbow-identifiers org-noter
ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn
nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar
org-agenda ox-html table ox-ascii ox-publish ox org-download org-element
avl-tree generator org-attach org-id org-refile url-http url-auth url-gw
async org-tempo tempo ob-rust ob-dot ob-haskell ob-python python treesit
ob-sqlite ob-sql ob-C ccls ccls-member-hierarchy
ccls-inheritance-hierarchy ccls-call-hierarchy ccls-tree ccls-code-lens
ccls-semantic-highlight ccls-common lsp-mode lsp-protocol xref spinner
network-stream nsm markdown-mode lv inline imenu ht f f-shortdoc
shortdoc s cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
cc-engine cc-vars cc-defs org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-footnote org-src ob-comint org-pcomplete org-list
org-faces org-entities noutline outline org-version ob-emacs-lisp
ob-core ob-eval org-table oc-basic bibtex ol org-keys oc org-compat
org-macs org-loaddefs cal-menu calendar cal-loaddefs dired-aux ewoc
telega-server telega-core cursor-sensor telega-customize emacsbug
message yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa epg
rfc6068 epg-config mailabbrev gmm-utils mailheader sendmail find-func
vertico-directory wakatime-mode autoinsert popper-echo popper hideshow
hl-todo rainbow-delimiters display-line-numbers tramp-cache time-stamp
tramp-sh tramp tramp-loaddefs trampver tramp-integration cus-edit pp
cus-start files-x tramp-compat shell pcomplete parse-time iso8601
ls-lisp format-spec recentf tree-widget yasnippet winner winum which-key
corfu-popupinfo kind-icon svg-lib color svg dom xml corfu-prescient
corfu marginalia vertico-mouse vertico projectile project grep compile
comint ansi-osc ansi-color ibuf-ext ibuffer ibuffer-loaddefs thingatpt
pcase keyfreq prelude-erc prelude-apps rime-regexp rime rime-predicates
xdg posframe popup dash prelude-mail gnus nnheader gnus-util
text-property-search mail-utils range wid-edit prelude-os prelude-help
prelude-lang-zig prelude-lang-web prelude-lang-agda agda2
prelude-lang-haskell derived prelude-lang-js prelude-lang-ml
prelude-lang-coq prelude-lang-rust prelude-lang-python prelude-lang-cc
prelude-lang-lisp prelude-prog prelude-blog prelude-org prelude-tex
prelude-git prelude-dired prelude-chinese prelude-project
prelude-ibuffer prelude-completion orderless prescient char-fold
prelude-search prelude-workspace prelude-ui ligature ns-auto-titlebar
prelude-core elec-pair use-package-diminish diminish
exec-path-from-shell use-package-ensure undohist edmacro kmacro
use-package-bind-key bind-key easy-mmode autorevert filenotify so-long
delsel no-littering compat compat-macs prelude-benchmark time-date comp
comp-cstr warnings icons advice prelude-common prelude-package
quelpa-use-package cl-extra use-package-core quelpa mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr lisp-mnt monokai-theme pixel-scroll cua-base cus-load
prelude-loaddefs helpful-autoloads geiser-guile-autoloads
eyebrowse-autoloads carbon-now-sh-autoloads benchmark-init-autoloads
company-coq-autoloads elisp-demos-autoloads vertico-prescient-autoloads
kind-icon-autoloads w3m-autoloads pinyinlib-autoloads
lsp-pyright-autoloads autothemer-autoloads org-roam-ui-autoloads
elisp-refs-autoloads cdlatex-autoloads ns-auto-titlebar-autoloads
rime-autoloads highlight-indent-guides-autoloads paredit-autoloads
vterm-autoloads treemacs-all-the-icons-autoloads clhs-autoloads
popper-autoloads merlin-autoloads rainbow-delimiters-autoloads
org-roam-bibtex-autoloads rustic-autoloads xterm-color-autoloads
rust-mode-autoloads yaml-mode-autoloads multiple-cursors-autoloads
websocket-autoloads dired-filter-autoloads auctex-autoloads tex-site
company-math-autoloads zig-mode-autoloads ivy-autoloads
debbugs-autoloads highlight-indentation-autoloads
git-timemachine-autoloads org-noter-autoloads rotate-autoloads
vundo-autoloads diredfl-autoloads embark-consult-autoloads
embark-autoloads nix-mode-autoloads telega-autoloads
rainbow-identifiers-autoloads helm-bibtex-autoloads helm-autoloads
helm-core-autoloads org-download-autoloads async-autoloads
wakatime-mode-autoloads deft-autoloads cmake-mode-autoloads
all-the-icons-dired-autoloads editorconfig-autoloads
python-mode-autoloads dash-at-point-autoloads cape-autoloads
elfeed-autoloads js2-mode-autoloads ripgrep-autoloads
dumb-jump-autoloads rainbow-mode-autoloads blink-search-autoloads
utop-autoloads tuareg-autoloads rx caml-autoloads modus-themes-autoloads
simple-httpd-autoloads company-autoloads which-key-autoloads
org-modern-autoloads quickrun-autoloads geiser-racket-autoloads
geiser-impl help-fns radix-tree help-mode geiser-custom geiser-base ring
geiser-autoloads project-autoloads org-ref-autoloads ox-pandoc-autoloads
citeproc-autoloads queue-autoloads bibtex-completion-autoloads
htmlize-autoloads citre-autoloads speed-type-autoloads
persp-mode-autoloads ccls-autoloads expand-region-autoloads
modern-cpp-font-lock-autoloads cnfonts-autoloads ob-rust-autoloads
biblio-autoloads biblio-core-autoloads org-latex-impatient-autoloads
hyperbole-autoloads undohist-autoloads alert-autoloads gntp-autoloads
string-inflection-autoloads catppuccin-theme-autoloads keyfreq-autoloads
forge-autoloads magit-autoloads git-commit-autoloads
with-editor-autoloads transient-autoloads closql-autoloads
ormolu-autoloads reformatter-autoloads diminish-autoloads
dired-hacks-utils-autoloads wgrep-autoloads diredful-autoloads
meow-autoloads org-appear-autoloads orderless-autoloads
nix-sandbox-autoloads web-mode-autoloads org-roam-autoloads
magit-section-autoloads emacsql-sqlite-autoloads
typescript-mode-autoloads flycheck-haskell-autoloads
haskell-mode-autoloads flycheck-autoloads pkg-info-autoloads
epl-autoloads xref-autoloads power-mode-autoloads
google-translate-autoloads popup-autoloads ghub-autoloads
treepy-autoloads quelpa-use-package-autoloads use-package-autoloads
bind-key-autoloads quelpa-autoloads log4e-autoloads vertico-autoloads
parsebib-autoloads treemacs-projectile-autoloads projectile-autoloads
valign-autoloads visual-fill-column-autoloads smartparens-autoloads
ef-themes-autoloads yasnippet-autoloads corfu-prescient-autoloads
corfu-autoloads hl-todo-autoloads dockerfile-mode-autoloads
dune-autoloads all-the-icons-ibuffer-autoloads all-the-icons-autoloads
math-symbol-lists-autoloads sly-autoloads color-rg-autoloads
typit-autoloads mmt-autoloads go-translate-autoloads nov-autoloads
esxml-autoloads kv-autoloads proof-general-autoloads proof-site
proof-autoloads indent-guide-autoloads pdf-tools-autoloads
tablist-autoloads lsp-ui-autoloads no-littering-autoloads
svg-lib-autoloads doom-themes-autoloads ligature-autoloads
minimap-autoloads prescient-autoloads winum-autoloads
marginalia-autoloads consult-autoloads compat-autoloads
clojure-mode-autoloads emacsql-autoloads dap-mode-autoloads
lsp-docker-autoloads yaml-autoloads lsp-treemacs-autoloads
treemacs-autoloads cfrs-autoloads posframe-autoloads hydra-autoloads
pfuture-autoloads ace-window-autoloads avy-autoloads bui-autoloads
lsp-mode-autoloads lv-autoloads markdown-mode-autoloads
spinner-autoloads ht-autoloads f-autoloads s-autoloads info
dash-autoloads exec-path-from-shell-autoloads monokai-theme-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/ns-win ns-win ucs-normalize mule-util term/common-win 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
kqueue cocoa ns lcms2 multi-tty make-network-process native-compile
emacs)

Memory information:
((conses 16 2641300 697124)
 (symbols 48 62723 10)
 (strings 32 973977 73389)
 (string-bytes 1 47062229)
 (vectors 16 144189)
 (vector-slots 8 3229853 957715)
 (floats 8 83592 5157)
 (intervals 56 19349 30652)
 (buffers 992 44))