[comp.emacs] Again, plea for a yacc/bison mode!

allbery@axcess.UUCP (Brandon S. Allbery) (01/15/88)

I am still looking for a yacc or bison major mode for GNU Emacs; C mode does
things I don't like to yacc files.  I have something hacked together currently,
but I'm not an elisp hacker; it's rather ugly code and has some glitches in it.

The code I have (attempts to) handle a yacc file as a file in one mode contain-
ing sections in a second mode (c-mode); upon entry to yacc mode it narrows to
a region bounded by the top of the file and the second %% token (or the whole
file if there is no second %%).  C code blocks, which I always indent relative
to rule bodies, are hidden courtesy "selective-display" and "selective-display-
ellipses"; inserting a { or typing C-C { when the cursor is positioned in front
of such a block causes the buffer to be narrowed to the code block and C mode
to be entered, wherein C-C C-C will resume yacc mode.  Also, C-C C-N switches
to c-mode after narrowing to the bottom third of a yacc file; again, C-C C-C
returns.  (Inserting a second %% token also does this.)  Various things are
configurable for the user's tastes.

The unfortunate part is that the code glitches on occasion:  in particular,
doing the wrong thing around an ellipsis produces garbage in the file, and
inserting the second %% ends up with THREE % characters in the file (after
triggering on the FIRST % instead of the second -- program bug I haven't
flushed out yet).  It's very much unready for posting to the net, but it's
better that what I've got now (my choice of c-mode or Jove).

Anyway -- I would like either some suggestions as to a better way to do this
or a complete ready-to-use yacc mode.

Thanks in advance.
-- 
 ___  ________________,	Brandon S. Allbery	       cbosgd \
'   \/  __   __,  __,	aXcess Company		       mandrill|
 __  | /__> <__  <__	6615 Center St. #A1-105		       !ncoast!
/  ` | \__. .__> .__>	Mentor, OH 44060-4101	       necntc  | axcess!allbery
\___/\________________.	Moderator, comp.sources.misc   hoptoad/