[gnu.emacs.bug] bug in scan_lists

layer@UUNET.UU.NET (Kevin Layer) (05/24/89)

There are two bugs which have been annoying me for some time.  Well, I
just spent 3 minutes finding and fixing them (they were due to the
same bug).

First, in Lisp mode I set the syntax of ?. to '.  This is supposed to
(from the Gnu Emacs Manual) make ?. part of "the class of
expression-adhering characters.  These characters are part of a symbol
if found within or adjacent to one, and are part of a following
expression if immediately preceding one, but are like whitespace if
surrounded by whitespace."  Well, ?. obviously doesn't behave this
way.  Put the following in a buffer (in Lisp mode):

	(thisissupposedtobe.onesymbol thesecondsymbol
		  	   thethirdsymbol)

Note, first, that the indentation of the second line is incorrect (my
first annoyance).  Second, note that (forward-sexp 1) when the point
is just inside the ?( will move the point to the ?., not to the true
end of the symbol thisissupposedtobe.onesymbol.  I have made the fix
and here it is (in the function scan_lists):

snooze% diff -c syntax.c-18.53 syntax.c
*** syntax.c.~1~	Tue Jan 19 03:49:45 1988
--- syntax.c	Tue May 23 08:48:36 1989
***************
*** 508,513 ****
--- 508,514 ----
  		      break;
  		    case Sword:
  		    case Ssymbol:
+ 		    case Squote:	/* DKL 5/23/89 */
  		      break;
  		    default:
  		      goto done;

After making this change forward-sexp and indenting in lisp mode both
work fine.

Kevin Layer
Franz Inc.
layer%franz.uucp@Berkeley.EDU