Subject: bug#18405: 24.3.93; bat-mode.el

From: Eli Zaretskii <[email-masked]>
Date: Tue, 09 Sep 2014 16:05:02 +0300

> Date: Sun, 07 Sep 2014 19:47:52 -0700
> From: Daniel Colascione <[email-masked]>
> CC: [email-masked], [email-masked]
> 
> > My point was that I saw a few of its aspects that might benefit from
> > improvements, and if we are going to add that package to Emacs, I'd
> > like to see those happen.
> 
> Like what?

See below.

> In 2011, you just mentioned that we should be using or enhancing
> bat-generic-mode

My goodness, I hope you don't expect me to forever hold my peace about
this just because I happened to write something 3 years ago.

Here are my comments:

 . There are some strange decisions about faces, for example:

   . the switch letters in Unix-style -x switches are highlighted in
     font-lock-type-face
   . redirection characters are highlighted in font-lock-constant-face
   . opening parenthesis in "echo" commands are given
     font-lock-warning-face
   . variable definitions in for loops (the 'x' part in "for %%x") are
     highlighted with different face from their references in the "do"
     part of the loop

 . Text after "echo" (up to redirection character, if any) is always a
   simple string, except if it's "on" or "off", but is not highlighted
   as a string, which then causes some random highlighting of the
   parts of the string that just happen to match other possible
   syntaxes

 . Something like this confuses fontification of the redirection
   character, probably because of the parentheses (the opening paren
   is given the font-lock-warning-face):

      echo int main()           >junk.c

 . In general, I don't understand what was intended to be the handling
   of parentheses, they seem to be either not highlighted at all or
   given the warning face.

 . A command of this form:

     if exist somefile dosomethingwith somefile

   has "dosomethingwith" sometimes in the font-lock-builtin-face and
   sometimes with no face at all, not sure why.  Looks like when
   'somefile' includes slashes, the command is not fontified.

 . The value to which a variable is set in "set foo-bar" doesn't have
   any face, which causes some funny fontifications if that value
   happens to match unrelated syntaxes, as in "set foo=-bar=baz"

 . The equals sign in "if foo == bar" is sometimes given the
   font-lock-keyword-face and sometimes no face at all.  Here's one
   example of the latter:

    if not (%svgsupport%) == (Y) goto :svgDone

 . This line has its fontifications after "(%distfiles%)" screwed:

    for %%d in (%distfiles%) do if not exist %%d set fileNotFound=%%d

   In particular, built-in commands are not fontified as such.

 . Some built-in commands are missing from ntcmd-shell-builtins:

     assoc, call, mklink

 . "dir" and "rem" appear twice in the list in ntcmd-shell-builtins

 . The support of "set /a" command is incomplete, e.g. try

     set /a y+=140

Thanks.