diff lisp/ChangeLog @ 44728:7a3ac6c387fe

CC Mode update to version 5.29. This is for testing; it's not a released version.
author Martin Stjernholm <mast@lysator.liu.se>
date Mon, 22 Apr 2002 00:35:36 +0000
parents 867beadfbb38
children 712ef4d4683e
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Apr 21 18:21:47 2002 +0000
+++ b/lisp/ChangeLog	Mon Apr 22 00:35:36 2002 +0000
@@ -1,3 +1,893 @@
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-mode.el: (c-define-abbrev-table): New function to
+	pass the SYSTEM-FLAG to `define-abbrev' in a way that works in
+	emacsen that doesn't support it.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-align.el, progmodes/cc-engine.el,
+	progmodes/cc-styles.el, progmodes/cc-vars.el
+	(c-guess-basic-syntax, c-lineup-topmost-intro-cont): Find
+	correct anchor for statement-cont in top level constructs.
+	Analyze variable initializations in top level constructs as
+	topmost-intro-cont instead of statement-cont.  That is an
+	incompatible change but it gives better consistency.  The new
+	lineup function c-lineup-topmost-intro-cont' compensates for
+	it and is now put on topmost-intro-cont by default.
+
+	* progmodes/cc-align.el, progmodes/cc-engine.el,
+	progmodes/cc-langs.el (c-lineup-argcont): Lineup function
+	contributed by Kevin Ryde.
+
+	(c-in-gcc-asm-p): Function to recognize asm statements.
+	Contributed by Kevin Ryde.
+
+	(c-opt-asm-stmt-key): New language variable to recognize the
+	beginning of asm statements.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Detect
+	variable declarations after class and struct declarations
+	correctly.  Fixed limit error when finding the anchor for
+	template-args-cont and topmost-intro-cont.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-beginning-of-defun,
+	c-declaration-limits): Find the "line oriented" declaration
+	start too, just like the "line oriented" end is found.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-vars.el (c-offsets-alist): A more sane default
+	for `inexpr-statement'.  This is not compatible, though.  I
+	think the benefit of a good default style outweights that in
+	this case.  Besides, `inexpr-statement' is not very common.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-electric-delete-forward): Fixed
+	silly bug that caused it to delete backwards in hungry delete
+	mode.  (It's amazing that this bug hasn't been reported.)
+
+	* progmodes/cc-cmds.el (c-declaration-limits, c-mark-function):
+	Extracted the code to get the declaration limits from
+	`c-mark-function' to a new `c-declaration-limits'.
+
+	(c-indent-defun): Use the same method to get the limits of the
+	declaration or macro as `c-mark-function'.
+
+	* progmodes/cc-engine.el (c-beginning-of-decl-1): Handle brace
+	list initializers correctly (but costly; it ought to be
+	integrated into `c-beginning-of-statement-1').
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el, progmodes/cc-engine.el
+	(c-beginning-of-defun, c-end-of-defun, c-mark-function):
+	Rewritten to detect the declaration limits better.  Now
+	handles K&R argdecls, class definitions followed by variables
+	etc.
+
+	(c-in-knr-argdecl): Broke out the K&R argdecl test in
+	`c-beginning-of-decl-1' to this new function.
+
+	(c-end-of-statement-1, c-end-of-decl-1): Replaced
+	`c-end-of-statement-1' with `c-end-of-decl-1', which correctly
+	handles declarations that continue after the block.
+
+	* progmodes/cc-engine.el (c-syntactic-re-search-forward):
+	Added an option to restrict matching to the top level of the
+	current paren sexp.
+
+	* progmodes/cc-langs.el (c-opt-block-decls-with-vars-key): New
+	regexp to recognize declarations that continue after the
+	block.
+
+	(c-syntactic-eol): New regexp to match a "syntactic" eol.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Fixed a bug
+	that often caused the backward limit to be lost at the top
+	level.  This improves performance a bit.
+
+	* progmodes/cc-engine.el (c-syntactic-re-search-forward): New
+	function that works like `re-search-forward' but only returns
+	matches in syntactically significant text.
+
+	* progmodes/cc-engine.el: Fixed a faster and more accurate way
+	to recognize K&R argdecls.
+
+	(c-beginning-of-decl-1): New function that put point at the
+	beginning of the declaration.  It handles K&R argdecl blocks.
+
+	(c-guess-basic-syntax): Replaced the `knr-argdecl' recognition
+	code with one that doesn't depend on the current indentation.
+	The anchor position for `knr-argdecl' has also changed, but in
+	a way that is unlikely to cause compatibility problems.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-defs.el, progmodes/cc-engine.el
+	(c-forward-comment): `forward-comment' in XEmacs skips over
+	line continuations in the backward direction.  Correct for
+	that.  Also made this a defun since it has grown too large now
+	to be a defsubst.
+
+	* progmodes/cc-langs.el: More convenient and decentralized
+	setup of the language specific variables.  The regexp-opt
+	mangling is also done at compile time now.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-indent-line-or-region): Call
+	`c-indent-line' directly instead of through
+	`indent-according-to-mode' so that this function always
+	indents syntactically.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Fixed a bug
+	where a class beginning with a nested class could cause an
+	infinite loop (the state outside the narrowed out class is
+	never used now).
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-align.el, progmodes/cc-cmds.el,
+	progmodes/cc-engine.el, progmodes/cc-vars.el: Fixes so that
+	the context sensitive analysis inside macros is restricted to
+	the bodies of #define's; other things, like #if expressions,
+	never have anything in common with their surroundings.  The
+	old `cpp-macro-cont' syntax is now used in situations where
+	the syntactic analysis isn't applicable, and a new syntactic
+	element `cpp-define-intro' is used to add indentation in
+	#define bodies.
+
+	(c-lineup-cpp-define): New name for `c-lineup-macro-cont' to
+	better reflect its use.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Ignore line
+	continuation backslashes in the detection of
+	`arglist-cont-nonempty'.
+
+	* progmodes/cc-align.el: Use the vector form in the return
+	value in all cases where lineup functions return absolute
+	columns.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-add-stmt-syntax,
+	c-guess-basic-syntax): Anchor `brace-list-intro' and
+	`bracec-list-close' better for brace lists nested inside
+	expressions.
+
+	* progmodes/cc-engine.el, progmodes/cc-langs.el,
+	progmodes/cc-mode.el, progmodes/cc-styles.el: Cleaned up the
+	various language specific variables and their initialization.
+	The keyword regexps are now lists that are combined with
+	regexp-opt.  Some variables have changed names to fit better
+	with the naming convention.
+
+	* progmodes/cc-defs.el, progmodes/cc-vars.el
+	(c-buffer-is-cc-mode): The value is the mode symbol of the
+	original CC Mode mode.
+
+	(c-major-mode-is): Compare against the buffer local variable
+	`c-buffer-is-cc-mode', which is faster than using
+	`derived-mode-class'.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-forward-syntactic-ws,
+	c-backward-syntactic-ws, c-forward-token-1,
+	c-backward-token-1, c-in-literal, c-literal-limits,
+	c-collect-line-comments, c-literal-type, c-on-identifier,
+	c-guess-basic-syntax): These functions are now considered part
+	of the "CC Mode API" and may be used by other code.  That's
+	signified by making their documentation into docstrings.
+
+	(c-whack-state, c-hack-state, c-skip-case-statement-forward):
+	Removed these internal functions since they aren't used.
+
+	(c-forward-to-cpp-expression): Classified this function as
+	internal.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-langs.el (c-ObjC-class-key, c-Java-class-key):
+	Simplified these regexps; the class keywords they contain
+	ought to be enough to avoid false matches, so checking for
+	following identifiers etc is just unnecessary (and might also
+	fail for oddly formatted code).
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el, progmodes/cc-cmds.el
+	(c-forward-comment-lc): New function that behaves like
+	`c-forward-comment', with the exception that line
+	continuations are treated as whitespace.
+
+	(c-beginning-of-statement): Use `c-forward-comment-lc', to
+	work correctly in macros and other places where line
+	continuations should be treated as whitespace.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Analyze a
+	normal label in a switch block as a case label, to get
+	consistent lineup with the case labels.
+
+	* progmodes/cc-engine.el (c-backward-syntactic-ws): Fixed bug
+	in skipping over a macro that ends with an empty line.
+
+	* progmodes/cc-styles.el: Require cc-align since styles added
+	with `c-add-style' often contains references to functions
+	defined there, and so the `c-valid-offset' check might
+	otherwise complain on them.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-align.el, progmodes/cc-mode.texi,
+	progmodes/cc-vars.el: Added two new lineup functions:
+
+	(c-lineup-knr-region-comment): A new lineup function to get
+	(what most people think is) better indentation of comments in
+	the "K&R region" between the function header and its body.
+
+	(c-lineup-gcc-asm-reg): New lineup function for better
+	indentation inside gcc asm blocks.  Contributed by Kevin Ryde.
+
+	(c-offsets-alist): Use `c-lineup-gcc-asm-reg' and
+	`c-lineup-knr-region-comment' in the default offset
+	configuration, since these two functions have little impact
+	outside their intended use, and they generally do the right
+	thing when they kick in.
+
+	* progmodes/cc-engine.el (c-guess-continued-construct,
+	c-guess-basic-syntax): Handle nested functions in all
+	languages, not just Pike.  In C and C++ there's a gcc
+	extension for this, and it also gives better treatment of
+	macros that are followed by blocks.
+
+	* progmodes/cc-langs.el (c-symbol-key): Made this variable
+	mode specific, to handle Pike special symbols like `== better.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el, progmodes/cc-engine.el,
+	progmodes/cc-vars.el (c-report-syntactic-errors): A new
+	variable to control the syntactic error messages.  It defaults
+	to off; since CC Mode ignores most syntactic errors it might
+	as well ignore them all for the sake of consistency.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-looking-at-inexpr-block):
+	Optimization.  Can give a noticeable speedup if there's a
+	large preceding function or class body.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-align.el, progmodes/cc-cmds.el: Use more
+	efficient and correct insertion functions in many places.
+	Always inherit text properties correctly if the text is
+	permanent.  Also do it for speed in temporary insertions,
+	since I figure it's less work to continue the surrounding text
+	properties than to break them.
+
+	* progmodes/cc-styles.el (c-read-offset): Unbind SPC in the
+	completion to make it easier to enter lists.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-beginning-of-defun): Fixed bug where
+	c-state-cache was clobbered.
+
+	* progmodes/cc-cmds.el, progmodes/cc-engine.el
+	(c-calculate-state): Moved from cc-cmds.el to cc-engine.el due
+	to dependency.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-parse-state): Ignore unbalanced
+	open parens in macros (if point isn't in the same one).
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-context-open-line): New function
+	that is the `open-line' equivalent to `c-context-line-break'.
+
+	* progmodes/cc-mode.el (c-mode-base-map): Compatibility fix
+	for Emacs 21 since `indent-new-comment-line' has been changed
+	to `comment-indent-new-line' there.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el, progmodes/cc-langs.el
+	(c-stmt-delim-chars, c-stmt-delim-chars-with-comma): New
+	variables containing the character sets used to recognize
+	statement/declaration boundaries.  These variables might help
+	to support languages like javascript and awk, where newlines
+	sometimes delimits statements.
+
+	(c-crosses-statement-barrier-p): Use `c-stmt-delim-chars' as
+	the set of statement delimiting characters, to allow it to be
+	changed dynamically and per-mode.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-looking-at-bos,
+	c-looking-at-inexpr-block, c-add-stmt-syntax,
+	c-guess-basic-syntax): Treat blocks directly inside function
+	calls like "bare" statements inside function calls, and not
+	like in-expression statements.  This to make indentation of
+	such blocks consistent with other statements inside macro
+	calls.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Made
+	arglist-cont anchor correctly in arglists that contain
+	statements.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Fixed
+	consistent anchoring of defun-block-intro in defuns in code
+	blocks (can only occur in Pike).
+
+	* progmodes/cc-engine.el (c-looking-at-inexpr-block,
+	c-looking-at-inexpr-block-backward): Changed the arguments to
+	require containing sexps and paren state, for better
+	efficiency.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el, progmodes/cc-engine.el,
+	progmodes/cc-vars.el: Improved anchoring of statement and
+	handling of labels in front of substatements.
+
+	(c-guess-continued-construct, c-guess-basic-syntax): Improved
+	and unified anchoring at statements.  Statements beginning
+	with comments or labels are now avoided, by going out of
+	blocks and containing statements if necessary.  This nesting
+	handling also fixes the case when there's a statement after a
+	block open brace.  Added the syntactic symbol
+	`substatement-label'.
+
+	(c-electric-colon): Map the new `substatement-label' to
+	`label' when consulting `c-hanging-colons-alist'.
+
+	(c-offsets-alist): Added substatement-label.  Updated the
+	comments for the new anchoring positions at statements.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Use more sane
+	anchor points for knr-argdecl-intro and access-label.  They
+	used to refer to some point on the same line, a bug which was
+	neutralized by a kludge in `c-get-syntactic-indentation' which
+	ignored such anchor points.
+
+	(c-get-syntactic-indentation): Removed the kludge that was
+	necessary due to buggy anchor points.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Do not check
+	the absence of a comma before arglist-close (case 7A) in any
+	language, since there's nothing better to do that case anyway.
+	Added special case to make in-expression statements be
+	recognized as normal arglist-cont if we're directly in a macro
+	arglist, for consistency with other "bare" statements.
+
+	* progmodes/cc-engine.el (c-looking-at-bos): Added optional
+	limit arg for backward searches.
+
+	* progmodes/cc-engine.el (c-looking-at-inexpr-block): Anchor
+	gcc in-expression statements at the surrounding open
+	parenthesis.  Treat a class body as an in-expression class if
+	it's used in an object clone expression in Pike.
+
+	* progmodes/cc-engine.el (c-get-offset,
+	c-get-syntactic-indentation): Allow several anchor positions
+	in the list of syntactic symbols.  Only the first is used as
+	the base for the offset calculation.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-indent-defun): Indent the current
+	macro if inside one at the top level.  Do not throw an error
+	if used at the top level outside a macro.
+
+	* progmodes/cc-cmds.el (c-backslash-region): Do tab width
+	alignment only if the backslashes can't be aligned with
+	surrounding backslashes.
+
+	* progmodes/cc-engine.el (c-end-of-macro): New function.
+
+	* progmodes/cc-engine.el (c-least-enclosing-brace): Rewritten
+	to not be destructive.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-context-line-break): Only do a macro
+	line break when point is inside the content of it; if it's in
+	the cpp keyword a normal line break is done.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Do not add
+	cpp-macro-cont inside the argument list to a #define.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-defs.el (c-forward-comment): Implemented a
+	kludge to avoid the problem most forward-comment incarnations
+	have with `\' together with comment parsing.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-check-state-cache): Fixed bug
+	which could cause the state returned by `c-parse-state' to
+	lack a closed paren element.  That in turn could result in
+	very long searches, since it's common that they start from the
+	last preceding close brace.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-beginning-of-statement-1): Do not
+	treat else-if as a single continuation, since that'd make it
+	hard to get the right anchor point when there's a line break
+	between the two keywords.  This change causes else-clause to
+	be anchored on the closest preceding else-if and not always on
+	the starting if, but that doesn't affect the indentation for
+	any reasonably sane style.  Also introduced a noerror flag.
+
+	(c-beginning-of-closest-statement): Removed;
+	c-beginning-of-statement-1 now avoids the problem this one
+	solved.
+
+	* progmodes/cc-engine.el (c-guess-continued-construct,
+	c-guess-basic-syntax): Better and more uniform anchor points
+	for 'statement-cont and 'substatement.  The effect is
+	noticeable mostly when there's a label on the same line as the
+	beginning of the statement, or when there are more stuff
+	before the start of the statement.
+
+	* progmodes/cc-engine.el (c-looking-at-inexpr-block): Added
+	flag to disable looking at the type of the surrounding paren
+	since that confuses c-beginning-of-statement-1 and a couple of
+	other places.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Avoid
+	stepping to the previous statement in case 18.  Improvements
+	in recognition of statement blocks on the top level.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-beginning-of-statement-1,
+	c-crosses-statement-barrier-p): Rewritten to get a well
+	defined and documented behavior.  This fixes some tricky cases
+	in recognition of do-while constructs.
+
+	(c-backward-to-start-of-do, c-backward-to-start-of-if):
+	Removed; use c-beginning-of-statement-1 instead.
+
+	(c-guess-continued-construct, c-guess-basic-syntax): Various
+	fixes to not depend on the bugs previously in
+	c-beginning-of-statement-1.  Cleanups in cases 18 and 17 to
+	use the new behavior of c-beginning-of-statement-1 better.
+	Fixed recognition of catch blocks inside macros.
+
+	* progmodes/cc-engine.el (c-backward-syntactic-ws): Fixed bug
+	in skipping over a macro.
+
+	* progmodes/cc-langs.el (c-label-kwds): New variable to
+	contain the appropriate c-*-label-kwds value.
+
+	* progmodes/cc-vars.el (defcustom-c-stylevar): Fixed value
+	evaluation bug that caused the widget for
+	c-block-comment-prefix to bug out.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Improved
+	recognition of statements: They are now recognized in contexts
+	where they normally can't occur, e.g. on the top level or in
+	function call arguments.  This is mainly useful to recognize
+	statements in macros at the top level, and in arguments to
+	macros.  The cases has been moved around quite a bit, and case
+	10 has been copied to case 18.  (The cases has not been
+	renumbered because of this.)
+
+	(c-guess-continued-construct): New function which has the
+	rules which are common between cases 10 and 18.
+
+	* progmodes/cc-engine.el (c-beginning-of-statement-1,
+	c-backward-to-start-of-do, c-backward-to-start-of-if): Fixes
+	so that they really obey the passed limits.
+
+	(c-safe-position): Return nil if the state doesn't contain a
+	suitable position.
+
+	(c-guess-basic-syntax): Fixes some too short limits in calls
+	to c-beginning-of-statement-1.  Some fixes for top level
+	analysis in ObjC mode.
+
+	* progmodes/cc-engine.el (c-beginning-of-statement-1): Fixed
+	bug in do-while statements where the body is not a block.
+
+	* progmodes/cc-styles.el (c-set-style): Reset
+	c-special-indent-hook to its global value if in override mode.
+	Fixes problem where functions on that hook remained after
+	style switch.
+
+	* progmodes/cc-engine.el (c-evaluate-offset, c-get-offset):
+	Use c-benign-error to report the c-strict-syntax-p error.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-align.el, progmodes/cc-defs.el,
+	progmodes/cc-cmds.el, progmodes/cc-engine.el, cc-vars.el:
+	Several fixes to treat macros as code and not literals and to
+	handle line continuations transparently.
+
+	(c-skip-ws-forward, c-skip-ws-backward): New macros to skip
+	through whitespace and line continuations, but not comments
+	and macros.
+
+	(c-in-literal): No longer recognizes macros as literals by
+	default. An extra flag argument is required to do that.
+
+	(c-macro-start, c-query-macro-start,
+	c-query-and-set-macro-start): Added a cache for the macro
+	start position.
+
+	(c-forward-syntactic-ws, c-backward-syntactic-ws): Fixes for
+	more speed when limits are given.  Workaround for bad behavior
+	in forward-comment in some emacsen when it hits a buffer limit
+	with a large repeat count.
+
+	(c-lineup-macro-cont): Improved behavior when
+	c-syntactic-indentation-in-macros is nil.
+
+	(c-syntactic-indentation-in-macros, c-backslash-max-column,
+	c-auto-align-backslashes): New customization variables to
+	control macro handling.
+
+	* progmodes/cc-menus.el (cc-imenu-c++-generic-expression):
+	Fixes to handle line continuations.
+
+	* progmodes/cc-defs.el, progmodes/cc-styles.el
+	(c-get-style-variables, c-set-offset): Report style errors
+	with message and ding instead of error signal.  This to avoid
+	interrupted mode init if there's some style problem.
+
+	(c-benign-error): New macro to report errors that doesn't need
+	to interrupt the operation.
+
+	* progmodes/cc-defs.el (c-point): Added eonl and eopl
+	positions.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-electric-brace, c-indent-region):
+	Removed most of the c-state-cache fiddling, since the global
+	state cache now handles this.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Fixed bug
+	when there's an open paren at the very first char of the
+	visible buffer region.
+
+	* progmodes/cc-engine.el (c-parse-state, c-check-state-cache):
+	Cache the state globally and invalidate it below every buffer
+	change with the new after change function
+	`c-check-state-cache'.  This gives a considerable performance
+	boost when editing large functions or classes.
+
+	* progmodes/cc-engine.el (c-whack-state-after): Slight
+	optimization.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el, progmodes/cc-langs.el,
+	progmodes/cc-align.el: Improvements to syntactic analysis
+	inside macros:
+
+	(c-block-stmt-1-kwds, c-block-stmt-2-kwds): New variables used
+	by `c-guess-basic-syntax'.
+
+	(c-parse-state): Fixed bug with braces inside macros when
+	using cached state info.
+
+	(c-forward-to-cpp-expression): New function to aid in
+	syntactic analysis inside macros.
+
+	(c-beginning-of-statement-1, c-backward-syntactic-ws): Fixes
+	to work better inside macros.
+
+	(c-forward-syntactic-ws): Whitespace between the # and the
+	command should be allowed in preprocessor directives.
+
+	(c-lineup-macro-cont): New lineup function to get context
+	sensitive indentation inside macros.
+
+	(c-offsets-alist): Made `c-lineup-macro-cont' the default for
+	cpp-macro-cont.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-beginning-of-statement-1,
+	c-forward-syntactic-ws): Fixes to handle continued lines.
+
+	(c-backward-to-start-of-if, c-guess-basic-syntax): Do
+	syntactic analysis inside macros.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-indent-region): Did a speedup made
+	possible by the more flexible state cache.
+
+	* progmodes/cc-engine.el (c-parse-state, c-whack-state-before,
+	c-whack-state-after, c-hack-state,
+	c-narrow-out-enclosing-class, c-guess-basic-syntax): Improved
+	the state cache system.  It now can use partial info from an
+	old cached state to calculate a new one at a different
+	position.  Removed some kludges to avoid the state cache.  The
+	new functions `c-whack-state-before' and `c-whack-state-after'
+	replace the now obsolete `c-whack-state'.
+
+	* progmodes/cc-engine.el (c-beginning-of-statement-1):
+	Optimized backing through a macro.  This can speed things up
+	quite a bit when there are long macros before point.
+
+	(c-beginning-of-macro): Do not ignore the limit.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-electric-continued-statement): Fixed
+	a bug where the keyword wasn't reindented correctly if
+	followed by another keyword or identifier.
+
+	* progmodes/cc-engine.el (c-parse-state): Ignore closed brace
+	pairs that are in macros.  Fixes some cases where e.g. the
+	second of two "do { } while (0)" macros after each other
+	indented differently.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-beginning-of-macro,
+	c-forward-syntactic-ws): Recognize "#!" as a preprocessor
+	directive when it begins a line, to allow for script
+	interpreter lines like "#!/usr/bin/pike" at the beginning of
+	the file.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-looking-at-inexpr-block):
+	Recognize brace blocks inside a parenthesis expression as
+	inexpr-statement.  Useful when writing statements as macro
+	arguments.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-fill-paragraph, c-do-auto-fill,
+	c-mask-comment): Broke out the comment masking code from
+	`c-fill-paragraph' to a new function `c-mask-comment', to be
+	able to do the same thing in `c-do-auto-fill'.  This should
+	make auto-fill-mode behave better.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-electric-brace, c-electric-paren):
+	Check `executing-macro' to avoid blinking parens when macros
+	are executed.
+
+	* progmodes/cc-mode.el, progmodes/cc-styles.el
+	(c-setup-filladapt): Moved from cc-mode.el to cc-styles.el for
+	consistency with `c-setup-paragraph-variables' (which was
+	placed there due to the dependency from `c-set-style').
+
+	* progmodes/cc-styles.el, progmodes/cc-vars.el: Fixed bug with
+	incomplete initialization from the style variable fallbacks if
+	there already is a style called "user" defined when CC Mode
+	starts up for the first time.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el, progmodes/cc-vars.el
+	(c-comment-indent, c-indent-comment-alist): Added new variable
+	`c-indent-comment-alist' to allow better control over
+	`c-comment-indent'.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-align.el (c-lineup-C-comments): Try to match
+	both `comment-start-skip' and the comment prefix on the
+	current line with the comment starter, so that we line up
+	comments which matches `c-comment-prefix-regexp' on the first
+	line (after the `/') without the need to make
+	`comment-start-skip' match whatever `c-comment-prefix-regexp'
+	matches.
+
+	* progmodes/cc-mode.el, progmodes/cc-styles.el (c-common-init,
+	c-set-style-1, c-setup-paragraph-variables): Moved the
+	variable initialization based on `c-comment-prefix-regexp' to
+	a new function `c-setup-paragraph-variables', which is now
+	used both at mode init and when a style that sets
+	`c-comment-prefix-regexp' is activated.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-beginning-of-member-init-list):
+	Better handling of C++ template args to avoid confusion with
+	`<' and `>' used as operators in member init expressions.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-most-enclosing-brace,
+	c-least-enclosing-brace): Added optional second arg to limit
+	the search to before a certain point.
+
+	* progmodes/cc-engine.el (c-guess-basic-syntax): Fixed bug
+	which could cause incorrect analysis if a cached state is used
+	(usually only happens when an electric key reindents a line).
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-defs.el (c-forward-comment): More idiosyncrasy
+	insulation.  This time for XEmacs 21.
+
+	* progmodes/cc-engine.el, progmodes/cc-langs.el: Improved
+	handling of inheritance lists:
+
+	(c-beginning-of-inheritance-list): Rewritten to use a more
+	syntactically correct method that doesn't get confused by
+	badly placed linebreaks and comments.
+
+	(c-guess-basic-syntax): Several fixes to the handling of
+	inheritance lists in combination with templates.  'inher-intro
+	is now anchored on the start of the class declaration and not
+	the indentation of the current line.  Switched places on cases
+	5D.3 and 5D.4 and made them use more syntactically correct
+	methods.
+
+	(c-inher-key): Removed since the code in
+	`c-guess-basic-syntax' now uses token-based search.
+
+	* progmodes/cc-cmds.el, progmodes/cc-mode.el (c-mode-menu):
+	Added a submenu to access some toggles.
+
+	(c-toggle-syntactic-indentation): New function to toggle the
+	variable `c-syntactic-indentation'.
+
+	* progmodes/cc-styles.el (c-set-style): Improved the error
+	message for incorrect offsets a bit.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-indent-exp): Don't require that the
+	sexp follows point immediately, instead find the closest
+	following open paren that ends on another line.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-align.el (c-lineup-cascaded-calls): New
+	indentation function.
+
+	* progmodes/cc-engine.el (c-beginning-of-macro): Bugfix for
+	directives with whitespace between the '#' and the name.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-forward-syntactic-ws,
+	c-backward-syntactic-ws): Handle line continuations as
+	whitespace.  Don't move past a macro if that'd take us past
+	the limit.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-engine.el (c-beginning-of-macro,
+	c-forward-syntactic-ws): Multiline strings begin with `#"' in
+	Pike, and that shouldn't be confused with a preprocessor
+	directive.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el: Extended the kludge to interoperate
+	with the delsel and pending-del packages wrt to the new
+	function `c-electric-delete-forward'.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-indent-exp): Keep the indentation of
+	the block itself, i.e. only indent the contents in it.
+
+	* progmodes/cc-styles.el (c-set-style): Use the default
+	argument to completing-read instead of initial-contents, if
+	the function is recent enough to support it.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-mode.el (c-mode-help-address): Removed
+	bug-gnu-emacs@gnu.org from the receiver list for bug reports.
+	I've almost never seen a bug reported this way that should go
+	to that list, but it's rather common that the reports concern
+	the combination CC Mode and XEmacs instead.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-electric-paren): Fixed bug when both
+	brace-elseif-brace and brace-catch-brace are active and
+	there's a "else if"-block before the catch block.
+
+	* progmodes/cc-menus.el (cc-imenu-c++-generic-expression):
+	Detect function headers that span lines.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-electric-brace,
+	c-electric-semi&comma, c-electric-colon, c-electric-paren):
+	Check for last on line only for doing the auto-newline-mode
+	stuff, not for the reindentation.
+
+	* progmodes/cc-cmds.el (c-electric-brace): Fixed bugs in the
+	handling of c-syntactic-indentation: When it's nil, indent the
+	new lines but don't reindent the current one.  Reindent the
+	line only when the inserted brace comes first on it, instead
+	of last.
+
+	* progmodes/cc-cmds.el (c-electric-brace,
+	c-electric-semi&comma): Fixed two places where
+	c-syntactic-indentation wasn't heeded.
+
+	* progmodes/cc-cmds.el (c-electric-pound): Don't be electric
+	inside a macro.
+
+	* progmodes/cc-engine.el (c-backward-to-start-of-if): Try a
+	little harder to find a fallback position when an orphan else
+	is found.  Fixed case where an else following a do-while
+	statement could be associated with an if inside the do-while.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-guess-fill-prefix): Tuned the dwim
+	for the fallback to add a single space after the comment
+	prefix.
+
+	* progmodes/cc-cmds.el (c-indent-new-comment-line): Somewhat
+	better behavior in some special cases, especially for
+	single-line comments.  Avoid breaking up a comment starter or
+	ender.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-outline-level): Applied patch from
+	the Emacs sources to make this work in invisible text.
+
+	* progmodes/cc-langs.el (c-switch-label-key): Fixed regexp to
+	not be confused by a later ':' on the same line as the label.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el, progmodes/cc-mode.el
+	(c-electric-delete, c-electric-delete-forward): Split
+	`c-electric-delete' into two functions where
+	`c-electric-delete-forward' always deletes forward and
+	`c-electric-delete' only contains the code necessary for
+	XEmacs to choose between backward and forward deletion.
+	`c-electric-delete-forward' is now bound to C-d to get the
+	electric behavior on that key too.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-cmds.el (c-fill-paragraph): Fixed bogus direct
+	use of c-comment-prefix-regexp, which caused an error when
+	it's a list.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-mode.el, progmodes/cc-vars.el (c-common-init,
+	c-default-style): Removed the hardcoded switch to "java" style
+	in Java mode.  It's instead taken care of by the default value
+	for c-default-style.
+
+2002-04-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
+
+	* progmodes/cc-align.el (c-lineup-math): Fix bug where lineup
+	was triggered by equal signs in string literals.
+
 2002-04-21  Kim F. Storm  <storm@cua.dk>
 
 	* subr.el (insert-buffer-substring-no-properties): New function.