Subject: bug#8632: closed (Re: bug#15941: 24.2; Shell-script mode's syntax highligting gets confused by shift (<<) operator like in '$((1 << 32)))

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 21 Nov 2013 01:42:04 +0000

Your bug report

#15941: 23.2; shell-script[bash] doesn't handle bitshift $(( 1 << 16 ))

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
15941: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15941
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#15941: 24.2; Shell-script mode's syntax highligting gets confused by shift (<<) operator like in '$((1 << 32))
From: Stefan Monnier <[email-masked]>
To: Ilya Tatar <[email-masked]>
Cc: [email-masked]
Date: Wed, 20 Nov 2013 20:41:00 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

> 2. add this line to it
> echo $((1 << 32))
> everything that follows this line will be highlighted as though it
> is a comment
[...]
> In GNU Emacs 24.2.1 (x86_64-redhat-linux-gnu, GTK+ Version 3.6.4)

Thank you.  This is already fixed in 24.3.

        Stefan

Subject: 23.2; shell-script[bash] doesn't handle bitshift $(( 1 << 16 ))
From: Ben Wong <[email-masked]>
To: [email-masked]
Date: Fri, 06 May 2011 15:38:05 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

In shell-script mode (bash minor mode) Emacs 23.2 incorrectly parses the
following line as a HERE DOCUMENT.

	echo $(( 1 << 16 ))

It is confused because sh-font-lock-open-heredoc (in sh-script.el)
does not know about bash's ARITHMETIC EXPANSION. There should be a
function, similar to sh-in-comment-or-string, which parses the
script looking for arithmetic expansion.

As a temporary workaround for users, I believe it is legal to put double
quotes around any arithmetic expansion to force emacs to view it as a
string.

In GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0)
 of 2010-12-11 on raven, modified by Debian
configured using `configure  '--build' 'i486-linux-gnu' '--build' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Shell-script

Minor modes in effect:
  shell-dirtrack-mode: t
  gpm-mouse-mode: t
  which-function-mode: t
  show-paren-mode: t
  display-time-mode: t
  recentf-mode: t
  iswitchb-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  size-indication-mode: t
  line-number-mode: t