Subject: 24.4.50; [ruby-mode] Font-lock bug for hash literals

From: Bozhidar Batsov <[email-masked]>
Date: Mon, 06 Oct 2014 14:45:52 +0300

The following code is not properly font-locked by ruby-mode:

{:a=>2, :b=>2}

Seems that `=` is interpreted as part of the symbol names, although it isn't.

In GNU Emacs 24.4.50.1 (x86_64-apple-darwin13.3.0, NS appkit-1265.21 Version 10.9.4 (Build 13E28))
 of 2014-09-13 on Bozhidars-MacBook-Pro.local
Windowing system distributor `Apple', version 10.3.1265
Configured using:
 `configure --prefix=/usr/local/Cellar/emacs/HEAD
 --enable-locallisppath=/usr/local/share/emacs/site-lisp
 --infodir=/usr/local/Cellar/emacs/HEAD/share/info/emacs --without-dbus
 --with-gnutls --with-ns --disable-ns-self-contained'

Configured features:
ACL GNUTLS LIBXML2 ZLIB

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

Major mode: Ruby

Minor modes in effect:
  ruby-tools-mode: t
  inf-ruby-minor-mode: t
  magit-auto-revert-mode: t
  subword-mode: t
  electric-pair-mode: t
  global-company-mode: t
  company-mode: t
  show-paren-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-anzu-mode: t
  anzu-mode: t
  projectile-global-mode: t
  projectile-mode: t
  shell-dirtrack-mode: t
  global-hl-line-mode: t
  recentf-mode: t
  savehist-mode: t
  global-auto-revert-mode: t
  delete-selection-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
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t

Recent input:
o c k SPC b u g SPC i n SPC <backspace> <backspace> 
<backspace> f o r SPC h a s h SPC l i t e r a l s <return> 
T h e SPC f o l l o w i n g SPC c o d e SPC i s SPC 
n o t SPC p r o p e r l y SPC f o n t e d - l o c <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
- l o c k e d : <return> <return> C-y <return> <return> 
T h e SPC = SPC s i g n SPC i s SPC t r e a t e d SPC 
a s SPC p a r t SPC o f SPC t h e SPC s y m b o l SPC 
n a <backspace> <backspace> <backspace> ' s SPC n a 
m e , SPC b u t SPC i t SPC s h o <backspace> <backspace> 
<backspace> <backspace> ' s SPC n o t . C-a C-f C-f 
C-f C-f ` C-f ` C-p C-p C-p C-p C-e C-b SPC i n SPC 
r u b y - m o d e C-n C-n C-c C-c y s m <return> n 
M-< M-f M-f M-f M-f M-f M-b M-d M-d M-d C-d C-d C-d 
C-d C-d C-d b a t s o v . c o m A-H-s-÷µ¹¶ C-g C-n C-c 
C-c y l o c a l h o s t <return> <return> <help-echo> 
<down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1> <help-echo> 
<down-mouse-1> <mouse-1> <help-echo> 2 5 <return> <down-mouse-1> 
<mouse-1> C-x b C-g <down-mouse-1> <mouse-1> C-x b 
m e s s C-g <help-echo> <down-mouse-1> <mouse-1> C-x 
b C-g M-x r e p o s e <backspace> <backspace> r m a 
C-s <return>

Recent messages:
Wrote /Users/bozhidar/*message*-20141006-141241
Saving file /Users/bozhidar/.emacs.d/init.el...
Wrote /Users/bozhidar/.emacs.d/init.el [2 times]
Saving file /Users/bozhidar/.emacs.d/init.el...
Wrote /Users/bozhidar/.emacs.d/init.el [2 times]
Sending email 
Sending email done
Sending...done
Saving file /Users/bozhidar/projects/test.rb...
Wrote /Users/bozhidar/projects/test.rb
Quit [3 times]

Load-path shadows:
None found.

Features:
(mailalias smtpmail cus-edit cus-start cus-load shadow sort mail-extr
emacsbug sendmail ruby-tools inf-ruby ruby-mode-expansions ruby-mode
smie executable markdown-mode misearch multi-isearch network-stream
starttls tls cider tramp-sh cider-mode cider-repl cider-eldoc
cider-interaction apropos arc-mode archive-mode cider-doc org-table
the-org-mode-expansions org org-macro org-footnote org-pcomplete
org-list org-faces org-entities noutline outline org-version
ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp
ob-comint ob-core ob-eval org-compat org-macs org-loaddefs cal-menu
calendar cal-loaddefs cider-test cider-stacktrace cider-client
nrepl-client queue cider-util ffap url-parse url-vars mule-util
magit-key-mode magit view epa derived epg epg-config git-rebase-mode
git-commit-mode server log-edit message rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log vc-git
cl-macs cap-words superword subword clojure-mode-expansions clojure-mode
imenu inf-lisp cl rainbow-delimiters paredit elisp-slime-nav help-mode
elec-pair company-files company-oddmuse company-keywords company-etags
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 paren exec-path-from-shell pcase smex flx-ido flx
ido-ubiquitous ido diff-hl vc-dir ewoc vc vc-dispatcher diff-mode
easy-mmode winner 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 dired edmacro
kmacro anzu warnings gv projectile ibuf-ext ibuffer pkg-info find-func
lisp-mnt epl grep compile dash s ucs-normalize bookmark pp expand-region
text-mode-expansions er-basic-expansions thingatpt expand-region-core
expand-region-custom flyspell ispell tramp tramp-compat auth-source
eieio eieio-core gnus-util mm-util mail-prsvr password-cache
tramp-loaddefs trampver shell pcomplete comint ansi-color ring
format-spec hl-line byte-opt bytecomp byte-compile cconv advice help-fns
windmove recentf tree-widget wid-edit cl-loaddefs cl-lib savehist
saveplace diminish autorevert filenotify delsel zenburn-theme info
easymenu package 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 574559 251678)
 (symbols 48 44490 151)
 (miscs 40 1945 3457)
 (strings 32 101806 165383)
 (string-bytes 1 2945334)
 (vectors 16 92618)
 (vector-slots 8 2604559 113663)
 (floats 8 8543 1592)
 (intervals 56 6462 763)
 (buffers 976 38))