Subject: 24.5; Syntax highlighting: required keyword arguments in ruby are highlighted incorrectly

From: Kieran Trezona <[email-masked]>
Date: Fri, 28 Aug 2015 09:35:32 +1200

Hi there,

Required keyword arguments (introduced in Ruby 2.1) are being

highlighted in alternating colours rather than consistently.

I have attached example images showing this behaviour. Note that

this only occurs when the the keyword arguments are required, i.e.,

they don’t have a default value. So, the following method signature

would result in the argument colours alternating:

  def foo(bar:, baz:)

  end

While the following method signature would result in all of the

arguments being coloured consistently:

  def foo(bar: true, baz: false)

  end

Also note that inserting a space before the delimiting comma between

the arguments results in consistent colouring:

  def foo(bar: , baz:)

  end

Please let me know if you need any further information.

Thanks very much,

Kieran

--report-emacs-bug output follows--

In GNU Emacs 24.5.1 (x86_64-apple-darwin13.4.0, NS apple-appkit-1265.21)

 of 2015-04-11 on builder10-9.porkrind.org

Windowing system distributor `Apple', version 10.3.1348

Configured using:

 `configure --with-ns '--enable-locallisppath=/Library/Application

 Support/Emacs/${version}/site-lisp:/Library/Application

 Support/Emacs/site-lisp''

Important settings:

  value of $LC_CTYPE:

  value of $LANG:

  locale-coding-system: utf-8

Major mode: Ruby

Minor modes in effect:

  global-git-commit-mode: t

  async-bytecomp-package-mode: t

  global-flycheck-mode: t

  flycheck-mode: t

  rspec-verifiable-mode: t

  subword-mode: t

  robe-mode: t

  eldoc-mode: t

  highlight-symbol-nav-mode: t

  highlight-symbol-mode: t

  diff-hl-mode: t

  diff-auto-refine-mode: t

  bug-reference-prog-mode: t

  paredit-everywhere-mode: t

  goto-address-prog-mode: t

  auto-compile-on-load-mode: t

  auto-compile-on-save-mode: t

  ipretty-mode: t

  global-rinari-mode: t

  rinari-minor-mode: t

  inf-ruby-minor-mode: t

  shell-dirtrack-mode: t

  guide-key-mode: t

  hes-mode: t

  global-page-break-lines-mode: t

  page-break-lines-mode: t

  delete-selection-mode: t

  cua-mode: t

  show-paren-mode: t

  global-undo-tree-mode: t

  undo-tree-mode: t

  global-whitespace-cleanup-mode: t

  whitespace-cleanup-mode: t

  global-auto-revert-mode: t

  electric-pair-mode: t

  savehist-mode: t

  desktop-save-mode: t

  winner-mode: t

  global-auto-complete-mode: t

  auto-complete-mode: t

  ido-ubiquitous-mode: t

  ido-everywhere: t

  recentf-mode: t

  global-anzu-mode: t

  anzu-mode: t

  tooltip-mode: t

  electric-indent-mode: t

  mouse-wheel-mode: t

  global-prettify-symbols-mode: t

  menu-bar-mode: t

  file-name-shadow-mode: t

  global-font-lock-mode: t

  font-lock-mode: t

  blink-cursor-mode: t

  auto-composition-mode: t

  auto-encryption-mode: t

  auto-compression-mode: t

  column-number-mode: t

  line-number-mode: t

  transient-mark-mode: t

Recent messages:

(No files need saving)

<left-fringe> <drag-mouse-1> is undefined

byte-code: Beginning of buffer [5 times]

Auto-saving...done

Auto-saving...done

Auto-saving...done

user-error: No further undo information

(No changes need to be saved)

Quit

End of buffer

Load-path shadows:

None found.

Features:

(shadow sort mail-extr emacsbug sendmail term ehelp magit-blame

magit-stash magit-bisect magit-remote magit-commit magit-sequence magit

magit-apply magit-wip magit-log magit-diff smerge-mode magit-core

magit-process magit-popup magit-mode magit-git crm magit-section

magit-utils git-commit log-edit message rfc822 mml mml-sec mm-decode

mm-bodies mm-encode mailabbrev mail-utils gmm-utils mailheader pcvs-util

add-log with-editor async-bytecomp async tramp-sh wgrep-ag wgrep grep

vc-hg ag find-dired ac-robe ace-jump-mode tabify dash-at-point

ac-inf-ruby face-remap align landmark smex mc-mark-more

multiple-cursors-core rect executable elisp-slime-nav redshank skeleton

aggressive-indent highlight-quoted vc-bzr vc-sccs vc-svn vc-cvs vc-rcs

diff-hl-dired org-element org-rmail org-mhe org-irc org-info org-gnus

org-docview doc-view image-mode dired-sort dired+ image-dired image-file

dired-x dired-aux dired org-bibtex bibtex org-bbdb org-w3m jsx-mode

warnings web-mode mmm-sample mmm-mode mmm-univ mmm-class tidy

rainbow-mode color json-mode json-reformat json-snatcher yaml-mode

rainbow-delimiters mmm-erb mmm-region mmm-utils tagedit sgml-mode

js2-imenu-extras js2-mode js2-old-indent js cc-mode cc-fonts cc-guess

cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs linum

disp-table vc-git vc-darcs xml flycheck-clojure cider-client

nrepl-client tramp tramp-compat tramp-loaddefs trampver queue cider-util

clojure-mode flycheck-package lisp-mnt flycheck-hdevtools flycheck

subr-x flymake rspec-mode superword subword robe eldoc url-http tls

url-auth mail-parse rfc2231 rfc2047 rfc2045 ietf-drums url-gw url

url-proxy url-privacy url-expand url-methods url-history url-cookie

url-domsuf url-util url-parse auth-source gnus-util mm-util mail-prsvr

password-cache url-vars mailcap etags highlight-symbol diff-hl vc-dir

ewoc vc vc-dispatcher diff-mode bug-reference paredit-everywhere paredit

goto-addr init init-locales init-local session

sanityinc-tomorrow-eighties-theme color-theme-sanityinc-tomorrow server

jka-compr init-ledger init-dash init-misc init-common-lisp

init-clojure-cider init-clojure init-slime init-lisp cl-lib-highlight

auto-compile packed ipretty pp init-paredit init-sql init-rails rinari

json jump inflections findr ruby-compilation which-func imenu inf-ruby

compile ruby-mode smie init-ruby-mode derived init-haskell

init-python-mode init-haml init-css init-html init-nxml init-org

ob-sqlite ob-sh shell ob-ruby ob-python ob-octave ob-ledger ob-latex

ob-gnuplot ob-dot ob-ditaa ob-R org-clock org org-macro org-footnote

org-pcomplete pcomplete org-list org-faces org-entities noutline outline

org-version ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp

org-src ob-keys ob-comint comint ansi-color ob-core ob-eval org-compat

org-macs org-loaddefs format-spec find-func cal-menu calendar

cal-loaddefs init-php init-javascript easy-mmode init-erlang

erlang-start init-csv init-markdown init-textile init-crontab

init-compile init-github init-git init-darcs init-vc init-editing-utils

guide-key s ucs-normalize popwin dash highlight-escape-sequences

whole-line-or-region page-break-lines delsel cua-base paren undo-tree

diff whitespace-cleanup-mode whitespace autorevert filenotify elec-pair

init-mmm mmm-auto mmm-vars mmm-compat init-fonts init-sessions savehist

desktop frameset init-windows switch-window quail help-mode winner ring

init-auto-complete auto-complete-config auto-complete popup

init-hippie-expand init-ido ido-ubiquitous ido-completing-read+ ido

init-recentf recentf tree-widget wid-edit init-flycheck init-ibuffer

ibuf-macs init-uniquify init-grep init-isearch diminish anzu mule-util

thingatpt init-dired init-proxies init-gui-frames init-osx-keys edmacro

kmacro init-themes init-xterm init-frame-hooks init-exec-path

exec-path-from-shell init-elpa fullframe eieio byte-opt bytecomp

byte-compile cl-extra cconv eieio-core rx cl-macs slime-autoloads info

easymenu package epg-config init-site-lisp cl gv cl-loaddefs cl-lib

init-utils init-compat init-benchmarking advice help-fns 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 753436 85819)

 (symbols 48 57910 0)

 (miscs 40 23901 5918)

 (strings 32 172559 22772)

 (string-bytes 1 4657766)

 (vectors 16 85104)

 (vector-slots 8 1922389 141622)

 (floats 8 893 3334)

 (intervals 56 11310 257)

 (buffers 960 121))