From: warsaw@nlm.nih.gov (Barry A. Warsaw)
Subject: Announcing c++-mode.el version 2.261
Reply-To: c++-mode-help@anthem.nlm.nih.gov (Barry A. Warsaw)
Organization: Century Computing, Inc.
Date: 24 Jan 93 23:21:34 GMT


[[I don't think this made it out the first time. Sorry for any
  duplication... baw]]

This message is to announce the release of c++-mode.el version 2.261
for GNU emacs and derivatives (Epoch, Lucid emacs).  This version
should replace all previous versions, including the last public
release 2.195.  Differences between 2.195 and 2.261 are briefly
outlined below. c++-mode.el can be used to edit C++, K&R C, and ANSI C
code.

As usual, I'm not posting the lisp file since it should be pretty easy
for just about everyone to get it via anonymous ftp or mail-server.
2.261 should be available soon on the elisp archive, but you can also
aftp it from ftp.cme.nist.gov:pub/gnu/c++-mode.el.Z. For those of you
without aftp, send the following message to library@cme.nist.gov:

	send pub/gnu/c++-mode.el.Z

Be sure that you include a valid reply path. When you receive the
response, you need to remove the mail headers and other cruft,
uudecode, then uncompress.  For more information about the
mail-server, send the message `help' (sans quotes) to the library
address.

Read the comments at the top of the file for information about getting
on the beta testers list, and submitting bug reports.

Performance
===========
There have been lots of complaints about performance with 2.195. These
problems are related to bugs in emacs which prohibit more than 1 style
of comments per buffer. C++, of course, requires 2 styles of comments.
c++-mode employs lisp workarounds so that indentation is accurate, but
lisp is slower than using the C built-ins.  I've tried to speed up the
lisp routines as much as possible, but you'll still notice c++-mode
getting slow inside big routines, or in a file of preprocessor
commands.  The solution is to patch emacs...

...which has been done for you as of the 19.4 Lucid Emacs release!
Tons 'o thanks to Jamie Zawinski for working with me on these. Lemacs
19.4 also comes with 2.261 so lemacsers win big.  c++-mode can
recognize a patched emacs and will automatically use the faster
built-in routines. Also, backslashing certain characters (e.g. single
quote) inside comment regions are unnecessary when the patches are
installed and c++-mode will automatically set the value of the
c++-untame-characters variable to nil in a patched emacs.

Jack Repenning has ported the lemacs patches back into GNU emacs 18.59
and this will be submitted to the gnu.emacs.sources newsgroup in a
companion article (thanks Jack!).  The patches will also be made
available on ftp.cme.nist.gov for access via aftp and mail-server,
under the file name pub/gnu/syntax-18.59.Z. Of course, these are *not*
official GNU patches. Volunteers to port the patches to Epoch are
welcome!

Other Changes Since 2.195
=========================

* LOTS OF BUG FIXES. I won't bore you with the details, but almost all
  reported bugs have been fixed. There are still some problems with
  indentation of continued statements at the top level (ie not inside
  functions), and re-indenting continued statements with
  c++-indent-exp (ESC C-q).

* function c++-fill-C-comment has been removed.

* variable c++-class-member-indent has been removed. c-indent-level is
  now used to determine indentation inside class definitions.

* column-zero comment only lines need not be anchored to column-zero.
  See the docstring for variable c++-comment-only-line-offset for more
  information.

* new variable c++-backscan-limit to improve performance when *not*
  running a patched emacs. This limits how far back lisp back-scanning
  will look at the expense of occasionally (hopefully, very rarely)
  being wrong. This feature is not used in patched emacses.

* new functions c++-backward-sexp and c++-forward-sexp are bound to
  M-C-b and M-C-f respectively.  These work better than backward-sexp
  and forward-sexp for c++-mode.

Enjoy,
-Barry