Subject: bug#17733: 24.4.50; [ruby-mode] Font-locking of true, false and nil

From: Bozhidar Batsov <[email-masked]>
Date: Sun, 08 Jun 2014 09:25:08 +0300

We've discussed with Dmitry before that the current use of
font-lock-variable-name-face for things like `true`, `false` and `nil`
is not correct semantically. Technically those are keywords in Ruby, but
they are also constants (singleton instances of TrueClass, FalseClass,
NilClass). In this respect they share a lot with symbols and I suggest
using the `font-lock-constant-face` for them as well. I noticed that this is a
practice adopted in several modes (rust-mode, swift-mode, clojure-mode,
etc) and it seems pretty sensible to me.

In GNU Emacs 24.4.50.1 (x86_64-apple-darwin13.1.0, NS apple-appkit-1265.19)
 of 2014-04-11 on bozhidar-mini.local
Windowing system distributor `Apple', version 10.3.1265
Configured using:
 `configure --prefix=/usr/local/Cellar/emacs/HEAD --without-dbus
 --enable-locallisppath=/usr/local/share/emacs/site-lisp
 --infodir=/usr/local/Cellar/emacs/HEAD/share/info/emacs --with-gnutls
 --with-ns --disable-ns-self-contained'

Configured features:
ACL GNUTLS LIBXML2 ZLIB

Important settings:
  locale-coding-system: utf-8-unix

Major mode: Outline

Minor modes in effect:
  goto-address-mode: t
  magit-auto-revert-mode: t
  erc-truncate-mode: t
  erc-spelling-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-networks-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  global-flycheck-mode: t
  which-function-mode: t
  global-company-mode: t
  company-mode: t
  flx-ido-mode: t
  ido-ubiquitous-mode: t
  global-diff-hl-mode: t
  diff-hl-mode: t
  diff-auto-refine-mode: t
  winner-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  whitespace-mode: t
  global-anzu-mode: t
  anzu-mode: t
  projectile-global-mode: t
  projectile-mode: t
  flyspell-mode: t
  shell-dirtrack-mode: t
  volatile-highlights-mode: t
  global-hl-line-mode: t
  recentf-mode: t
  savehist-mode: t
  show-smartparens-global-mode: t
  show-smartparens-mode: t
  global-auto-revert-mode: t
  delete-selection-mode: t
  prelude-global-mode: t
  prelude-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-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
  buffer-read-only: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t
  view-mode: t

Recent input:
M-< C-v C-n C-n C-n C-n C-n C-k <backspace> C-x C-s 
C-x g C-n d <return> <down-mouse-1> <mouse-1> q s c 
c R e m o v e SPC r e d u n d a t n SPC <backspace> 
<backspace> <backspace> n t SPC r e q u i r e <return> 
<return> C-' e <backspace> <return> e a s y - m e n 
u s-/ SPC i s SPC a u t o l o a d e d . <backspace> 
. C-c C-c P P <wheel-down> <double-wheel-down> <triple-wheel-down> 
<triple-wheel-down> <triple-wheel-down> <triple-wheel-down> 
<triple-wheel-down> <triple-wheel-down> <wheel-down> 
<double-wheel-down> <triple-wheel-down> <triple-wheel-down> 
<triple-wheel-down> <wheel-down> <double-wheel-down> 
<down-mouse-1> <mouse-1> s-g f o n t <backspace> <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> f o n t - l o c 
k - c o m m e n t <return> <help-echo> <down-mouse-2> 
<mouse-1> <help-echo> <down-mouse-2> <mouse-1> C-l 
<help-echo> <down-mouse-2> <mouse-1> <help-echo> <down-mouse-2> 
<mouse-1> <clear> <kp-multiply> <kp-subtract> <clear> 
<f13> <backspace> <help> C-p <clear> <kp-divide> <kp-1> 
<kp-5> <kp-7> <kp-0> <kp-multiply> <kp-8> <kp-divide> 
<kp-1> <kp-9> <kp-0> <kp-divide> <kp-8> <clear> <backspace> 
<f13> <help> <f10> = <f9> - <f8> <f7> <f6> <f5> <f4> 
<f6> <f7> <f8> ) _ <S-f9> <S-f10> <C-S-backspace> C-+ 
<C-S-f11> <S-help> <S-left> <backspace> <kp-subtract> 
<kp-subtract> <kp-multiply> <kp-enter> <kp-decimal> 
<escape> ` 1 2 <f1> 3 4 5 6 7 <f5> 8 9 - <f9> <backspace> 
= <prior> <kp-add> <kp-enter> <kp-enter> s-8 s-u 1 
<escape> ` <tab> <down-mouse-2> <mouse-1> <help-echo> 
<help-echo> <help-echo> <down-mouse-1> <mouse-1> C-p 
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p M-f 
M-f M-b M-b C-b C-b C-b C-f C-f C-p C-p C-p C-p C-p 
C-p C-p C-p C-p C-p C-p C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n M-x M-< C-g <help-echo> <help-echo> 
<down-mouse-1> <mouse-1> M-x r e p o r t <return>

Recent messages:
[2014-06-08 01:00:09] `*magit-commit*' [42004 259200]
[2014-06-08 01:00:09] `*Help*' [40565 3600]
[2014-06-08 01:00:09] killing `*Help*'
[2014-06-08 01:00:09] `*magit-log*' [40742 259200]
[2014-06-08 01:00:09] `*magit-diff*' [40520 259200]
[2014-06-08 01:00:09] `*Completions*' [39683 259200]
(No files need saving)
completing-read-default: Command attempted to use minibuffer while in minibuffer
Quit
(No files need saving)

Load-path shadows:
/Users/bozhidar/.emacs.d/elpa/tabulated-list-20120406.1351/tabulated-list hides /usr/local/Cellar/emacs/HEAD/share/emacs/24.4.50/lisp/emacs-lisp/tabulated-list

Features:
(tmm face-remap goto-addr crm clojure-test-mode cider-interaction
arc-mode archive-mode cider-stacktrace cider-client nrepl-client
cider-util clojure-mode-test clojure-mode-expansions clojure-mode
inf-lisp find-dired cus-edit cus-start cus-load shadow sort mail-extr
emacsbug sendmail jka-compr ielm cap-words superword subword ruby-tools
inf-ruby ruby-mode-expansions smartparens-ruby ruby-mode eieio-opt
speedbar sb-image ezimage dframe checkdoc hippie-exp make-mode ffap
markdown-mode noutline outline mule-util misearch multi-isearch
magit-key-mode magit view epa derived epg epg-config git-rebase-mode
git-commit-mode server log-edit pcvs-util add-log easy-kill rainbow-mode
color rainbow-delimiters elisp-slime-nav guru-mode prelude-xml
nxml-mode-expansions html-mode-expansions sgml-mode smartparens-html
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 nxml-util
nxml-glyph nxml-enc xmltok prelude-web prelude-shell sh-script smie
executable prelude-scss prelude-scheme prelude-ruby prelude-perl
prelude-org prelude-key-chord key-chord prelude-js prelude-erc
erc-truncate erc-autoaway erc-spelling erc-notify erc-log erc-list
erc-menu erc-join erc-ring erc-networks erc-pcomplete erc-track
erc-match erc-button erc-fill erc-stamp erc-netsplit erc-goodies erc
erc-backend erc-compat prelude-emacs-lisp prelude-css prelude-coffee
prelude-clojure prelude-lisp prelude-c prelude-programming flycheck
help-mode rx f which-func imenu prelude-company company-files
company-oddmuse company-keywords company-etags company-gtags
company-dabbrev-code company-dabbrev company-capf company-cmake
company-ropemacs company-xcode company-clang company-semantic
company-eclim company-template company-css company-nxml company-bbdb
company prelude-ido smex flx-ido flx ido-ubiquitous ido prelude-osx
exec-path-from-shell prelude-global-keybindings prelude-editor
operate-on-number diff-hl vc-dir vc vc-dispatcher diff-mode winner
undo-tree diff esh-var esh-io esh-cmd esh-opt esh-ext esh-proc esh-arg
eldoc esh-groups eshell esh-module esh-mode esh-util re-builder
whitespace browse-kill-ring midnight ediff-merg ediff-wind ediff-diff
ediff-mult ediff-help ediff-init ediff-util ediff dired-x anzu
projectile ibuf-ext ibuffer pkg-info grep s bookmark pp expand-region
text-mode-expansions er-basic-expansions expand-region-core
expand-region-custom flyspell ispell tramp tramp-compat tramp-loaddefs
trampver shell pcomplete etags volatile-highlights hl-line windmove
recentf tree-widget wid-edit savehist saveplace diminish
smartparens-config smartparens autorevert filenotify delsel prelude-mode
easy-mmode prelude-core epl pcase ov dash thingatpt prelude-custom
prelude-ui zenburn-theme prelude-packages smartrep ert find-func ewoc
debug tar-mode calc-bin calc-ext calc calc-loaddefs calc-macs makey
edmacro kmacro warnings compile comint ansi-color ring ace-window
ace-jump-mode advice autoload lisp-mnt vc-git mm-archive message dired
format-spec rfc822 mml mml-sec mailabbrev gmm-utils mailheader mm-decode
mm-bodies mm-encode mail-utils network-stream starttls url-http tls
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums url-gw url-cache url-auth
url url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap url-handlers url-parse auth-source gnus-util
mm-util help-fns mail-prsvr password-cache url-vars finder-inf eieio
byte-opt bytecomp byte-compile cconv eieio-core info easymenu cl-macs gv
package cl cl-loaddefs cl-lib time-date tooltip electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel ns-win tool-bar dnd fontset
image regexp-opt fringe tabulated-list newcomment lisp-mode prog-mode
register page menu-bar rfn-eshadow timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
minibuffer 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 make-network-process
cocoa ns multi-tty emacs)

Memory information:
((conses 16 756046 603398)
 (symbols 48 50210 0)
 (miscs 40 5655 16177)
 (strings 32 118000 172997)
 (string-bytes 1 3236489)
 (vectors 16 107877)
 (vector-slots 8 3572504 257945)
 (floats 8 19156 7566)
 (intervals 56 39577 4539)
 (buffers 960 139))