Subject: bug#65583: 30.0.50; rainbow-mode highlights quoted text in man pages

From: Davide Masserut <[email-masked]>
Date: Mon, 28 Aug 2023 11:42:19 +0200

When rainbow-mode is enabled in buffers displaying man pages (both 
man and woman), the `font-lock-string-face` is applied to text 
between quotes.  AFAIK, man pages don't require the use of closing 
quotes which causes entire sections to interpreted as if they were 
quoted strings.

To reproduce this, install and load the package, then:

(add-hook 'Man-mode-hook #'rainbow-mode)
(man "git-config(1)")

Scroll up until you see the wrongly fontified text.

One way to mitigate this is to add

(modify-syntax-entry ?\" "." table)

to the syntax tables.

In GNU Emacs 30.0.50 (build 7, x86_64-pc-linux-gnu, GTK+ Version
 3.24.38, cairo version 1.17.8) of 2023-08-28 built on T480s
Repository revision: 36ddabd59cb949c63d4036170f0fc97a6333a410
Repository branch: master
System Description: Arch Linux

Configured using:
 'configure -C --prefix /home/davide/.local --with-pgtk
 --with-native-compilation --enable-link-time-optimization
 --enable-locallisppath=/usr/share/emacs/site-lisp/
 'CFLAGS=-march=native -O2''
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ 
JPEG
JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY 
INOTIFY
PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB
Important settings:
  value of $LC_TIME: en_GB.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
  TeX-PDF-mode: t
  denote-modules-global-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  mu4e-modeline-mode: t
  save-place-mode: t
  global-diff-hl-mode: t
  diff-hl-mode: t
  global-auto-revert-mode: t
  server-mode: t
  electric-pair-mode: t
  display-line-numbers-mode: t
  display-fill-column-indicator-mode: t
  flymake-mode: t
  rainbow-mode: t
  recentf-mode: t
  corfu-popupinfo-mode: t
  corfu-history-mode: t
  global-corfu-mode: t
  corfu-mode: t
  marginalia-mode: t
  vertico-multiform-mode: t
  vertico-mouse-mode: t
  vertico-mode: t
  winner-mode: t
  repeat-mode: t
  override-global-mode: t
  savehist-mode: t
  pixel-scroll-precision-mode: t
  minibuffer-depth-indicate-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  undelete-frame-mode: t
  size-indication-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
  temp-buffer-resize-mode: t

Load-path shadows:
/home/davide/.emacs.d/elpa/embark-consult-0.7/embark-org hides 
/home/davide/.emacs.d/elpa/embark-0.22.1/embark-org
~/src/org-pomodoro/org-pomodoro hides 
/home/davide/.emacs.d/elpa/org-pomodoro-20220318.1618/org-pomodoro
~/src/org-pomodoro/org-pomodoro-autoloads hides 
/home/davide/.emacs.d/elpa/org-pomodoro-20220318.1618/org-pomodoro-autoloads
~/src/org-pomodoro/org-pomodoro-pkg hides 
/home/davide/.emacs.d/elpa/org-pomodoro-20220318.1618/org-pomodoro-pkg
/home/davide/.emacs.d/elpa/transient-20230825.2019/transient hides 
/home/davide/.local/share/emacs/30.0.50/lisp/transient

Features:
(shadow emacsbug ibuffer ibuffer-loaddefs go-mode find-file etags
fileloop js c-ts-common cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs tex-info tex texmathp
texinfo texinfo-loaddefs wgrep grep oc-basic disp-table org-mouse 
ol-eww
eww url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus 
nnselect
ol-docview doc-view image-mode exif ol-bibtex bibtex ol-bbdb 
ol-w3m
ol-doi org-link-doi dired-aux denote diff-hl-dired cap-words 
superword
subword package-vc vertico-grid consult-xref xref ispell 
dictionary
external-completion dictionary-connection do-at-point
do-at-point-autoloads loaddefs-gen tar-mode arc-mode archive-mode
mm-archive network-stream url-cache url-http url-auth url-gw nsm
finder-inf sort shortdoc delsel jka-compr consult-info rect 
misearch
multi-isearch goto-addr view vertico-buffer consult-imenu 
hippie-exp
jinx tempel embark-org org-element org-persist org-id org-refile
avl-tree generator embark-consult embark ffap cl-print 
magit-bundle
magit-gitignore magit-patch magit-subtree help-fns radix-tree 
tramp-cmds
vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs bug-reference
face-remap magit-extras magit-bookmark 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 which-func imenu magit-diff smerge-mode diff
git-commit log-edit add-log magit-core magit-autorevert 
magit-margin
magit-transient magit-process with-editor magit-mode transient 
magit-git
magit-base magit-section crm dash vc-git vertico-directory
gitconfig-mode conf-mode consult-register consult cursor-sensor
vertico-repeat mu4e mu4e-org org org-macro org-pcomplete org-list
org-footnote org-faces org-entities noutline outline ob-shell 
ob-python
python treesit ob ob-tangle org-src ob-ref ob-lob ob-table ob-exp
ob-comint ob-emacs-lisp ob-core ob-eval org-cycle org-table ol 
org-fold
org-fold-core org-keys oc org-loaddefs org-version org-compat 
org-macs
mu4e-notification notifications mu4e-main mu4e-view gnus-art mm-uu
mml2015 mm-view mml-smime smime gnutls dig gnus-sum gnus-group 
gnus-undo
gnus-start gnus-dbus dbus gnus-cloud nnimap nnmail mail-source 
utf7 nnoo
gnus-spec gnus-int gnus-range gnus-win gnus nnheader range 
cal-menu
calendar cal-loaddefs mu4e-headers mu4e-compose mu4e-draft 
mu4e-actions
smtpmail mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark 
mu4e-message
shr pixel-fill kinsoku url-file svg xml dom flow-fill mule-util 
hl-line
mu4e-contacts mu4e-update mu4e-folders mu4e-context 
mu4e-query-items
mu4e-server mu4e-modeline mu4e-vars mu4e-helpers mu4e-config 
mu4e-window
bookmark ido message sendmail yank-media puny dired dired-loaddefs
rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 
mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
mu4e-obsolete saveplace diff-hl log-view pcvs-util vc-dir ewoc vc
vc-dispatcher diff-mode autorevert filenotify server elec-pair
display-line-numbers display-fill-column-indicator checkdoc 
lisp-mnt
flymake-proc flymake project compile text-property-search 
thingatpt
rainbow-mode color delight comp comp-cstr warnings 
use-package-delight
tramp-cache time-stamp tramp-sh tramp trampver tramp-integration 
files-x
tramp-message tramp-compat xdg shell pcomplete comint ansi-osc
parse-time iso8601 time-date format-spec ansi-color tramp-loaddefs
recentf tree-widget cape corfu-popupinfo corfu-history corfu 
marginalia
orderless vertico-multiform vertico-mouse vertico compat winner 
repeat
modus-vivendi-theme modus-themes edmacro kmacro cl-extra help-mode
use-package-bind-key bind-key easy-mmode use-package-ensure
use-package-core savehist pixel-scroll cua-base ring mb-depth 
find-func
auth-source-pass cus-edit pp cus-load icons wid-edit 
auctex-autoloads
tex-site cape-autoloads cdlatex-autoloads corfu-autoloads
csv-mode-autoloads debbugs-autoloads delight-autoloads 
denote-autoloads
diff-hl-autoloads eat-autoloads editorconfig-autoloads
eglot-tempel-autoloads eldoc-box-autoloads 
embark-consult-autoloads
consult-autoloads embark-autoloads expreg-autoloads 
fish-mode-autoloads
forge-autoloads closql-autoloads emacsql-autoloads ghub-autoloads
git-modes-autoloads gnuplot-autoloads go-mode-autoloads
indent-bars-autoloads jinx-autoloads ledger-mode-autoloads
lua-mode-autoloads magit-autoloads pcase git-commit-autoloads
magit-section-autoloads dash-autoloads marginalia-autoloads
markdown-mode-autoloads modus-themes-autoloads nov-autoloads
esxml-autoloads kv-autoloads olivetti-autoloads 
orderless-autoloads
org-pomodoro-autoloads alert-autoloads log4e-autoloads 
gntp-autoloads
osm-autoloads password-store-autoloads rainbow-mode-autoloads
rust-mode-autoloads systemd-autoloads rx tablist-autoloads
tempel-autoloads terminal-here-autoloads tmr-autoloads
transient-autoloads treepy-autoloads vertico-autoloads 
vterm-autoloads
vundo-autoloads wgrep-autoloads with-editor-autoloads info
compat-autoloads wolfram-autoloads yaml-autoloads 
yaml-mode-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/pgtk-win pgtk-win term/common-win pgtk-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
dynamic-setting system-font-setting font-render-setting cairo gtk 
pgtk
lcms2 multi-tty move-toolbar make-network-process native-compile 
emacs)

Memory information:
((conses 16 2042546 297810) (symbols 48 50767 9)
 (strings 32 336256 13021) (string-bytes 1 12766412)
 (vectors 16 117373) (vector-slots 8 2592801 222067)
 (floats 8 852 6676) (intervals 56 197669 1396) (buffers 992 48))