Subject: 27.1; bad fontification of Common Lisp uninterned symbols

From: Robert Brown <[email-masked]>
Date: Sun, 23 Aug 2020 16:08:25 -0400

Git commit bae7a63b808 introduced fontification of Common Lisp
uninterned symbols using this code:

         ;; Uninterned symbols, e.g., (defpackage #:my-package ...)
         ;; must come before keywords below to have effect
         (,(concat "\\(#:\\)\\(" lisp-mode-symbol-regexp "\\)")
           (1 font-lock-comment-delimiter-face)
           (2 font-lock-doc-face))

An uninterned symbol looks like "#:my-symbol".  The change causes "#:"
to be displayed with one face and "my-symbol" with another.  That's bad.
Fontification signals a semantic property The entire thing is a symbol,
so it should be displayed using one face.  What face should we use?
Keyword symbols are displayed using font-lock-builtin-face, so that's
what I would use.

Why I'm commenting on Lisp fontification ...  Symbols that start with an
ampersand character are currently being displayed using
font-lock-type-face, which doesn't make much sense, since they too are
symbols.  Perhaps they should be displayed using font-lock-builtin-face
too.

In GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu)
 of 2020-08-16 built on chuwi
System Description: Ubuntu 18.04.5 LTS

Recent messages:

Configured using:
 'configure --without-x
 --prefix=/home/brown/local/software/package/emacs-27.1'

Configured features:
SOUND NOTIFY INOTIFY GNUTLS ZLIB XIM MODULES THREADS JSON PDUMPER GMP

Important settings:
  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:
  show-paren-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t

Load-path shadows:
/home/brown/local/software/source/dash/dash-functional hides
/home/brown/.emacs.d/elpa/dash-functional-20191109.1327/dash-functional
/home/brown/local/software/source/dash/dash hides
/home/brown/.emacs.d/elpa/dash-20191109.1327/dash
/home/brown/local/software/source/markdown-mode/markdown-mode hides
/home/brown/.emacs.d/elpa/markdown-mode-20190802.2215/markdown-mode

Features:
(shadow sort mail-extr warnings emacsbug message rmc puny dired
dired-loaddefs format-spec rfc822 mml mml-sec epa derived epg epg-config
gnus-util rmail rmail-loaddefs 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
term/xterm xterm vm-autoloads vm-version vm-vars cc-styles cc-align
cc-engine cc-vars cc-defs slime-autoloads regexp-opt edmacro kmacro
paren finder-inf info tool-bar package easymenu browse-url url-handlers
url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json subr-x map url-vars seq byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch timer select mouse jit-lock font-lock syntax
facemenu font-core term/tty-colors frame minibuffer cl-generic 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 charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads inotify
multi-tty make-network-process emacs)

Memory information:
((conses 16 102351 27442)
 (symbols 48 11628 5)
 (strings 32 32543 5246)
 (string-bytes 1 1146866)
 (vectors 16 12405)
 (vector-slots 8 142487 34066)
 (floats 8 32 537)
 (intervals 56 184 0)
 (buffers 1000 12))