Commits

Anonymous committed fc3861c Merge

update and merge cc-mode

  • Participants
  • Parent commits e2709e8, 2ae3802

Comments (0)

Files changed (19)

+2013-05-03  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	* Patch release 5.32.5
+
+	* ChangeLog: Update for patch releases 5.32.3 and 5.32.5.
+
+	* cc-defs.el (c-version): Increment to 5.32.5.
+
+	* *.el, cc-mode.texi: Add 2012 and 2013 to copyright notices.
+
+2013-05-02  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Eliminate variable c-standard-font-lock-fontify-region-function.
+	* cc-mode.el (c-standard-font-lock-fontify-region-function): Remove.
+	(c-font-lock-fontify-region, c-after-font-lock-init): Adapt.
+
+2013-04-30  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Handle arbitrarily long C++ member initialisation lists.  Test files.
+	* tests/member-init-1.cc: Remove erroneous code which clashes with
+	this change.
+	* tests/member-init-1.res: Recreated.
+	* tests/class-31.cc: Renamed from member-9.cc; replace a
+	constructor with a member init list by a class with inheritance.
+	* tests/class-31.res: Renamed from member-9.res and recreated.
+
+2013-04-30  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Handle arbitrarily long C++ member initialisation lists.
+	Made necessary by change 2012-02-26-ell-m, where a search limit of
+	500 was introduced.
+
+	* cc-engine.el (c-back-over-member-initializers): new function.
+	(c-guess-basic-syntax): New CASE 5R (extracted from 5B) to handle
+	(most) member init lists.
+
 2013-04-17  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.66 released.
 
+2013-04-15  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Correct the placement of c-cpp-delimiters when there're #s not at col 0.
+	* cc-langs.el (c-anchored-cpp-prefix): Reformulate and place a
+	submatch around the #.
+	* cc-mode.el (c-neutralize-syntax-in-and-mark-CPP): Start a search
+	at BOL.  Put the c-cpp-delimiter category text propertiy on the #,
+	not BOL.
+
+2013-04-15  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Reformulate java imenu-generic-expression.  Contributed by Filipp Gunbin.
+	The old expression contained ill formed regexps.
+
+	* cc-menus.el (cc-imenu-java-ellipsis-regexp)
+	(cc-imenu-java-type-spec-regexp, cc-imenu-java-comment-regexp)
+	(cc-imenu-java-method-arg-regexp): New defconsts.
+	(cc-imenu-java-build-type-args-regex): New defun.
+	(cc-imenu-java-generic-expression): Fixed, to remove "ambiguous"
+	handling of spaces in the regexp.
+
 2013-04-04  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.65 released.
 
+2013-04-03  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Handle `parse-partial-sexp' landing inside a comment opener.
+	Also adapt to the new values of element 7 of a parse state.
+
+	* cc-engine.el (c-state-pp-to-literal): New optional parameter
+	`not-in-delimiter'.  Handle being inside comment opener.
+	(c-invalidate-state-cache-1): Reckon with an extra "invalid"
+	character in case we're typing a '*' after a '/'.
+	(c-literal-limits): Handle the awkward "not-in-delimiter" cond arm
+	instead by passing the parameter to c-state-pp-to-literal.
+
+	* cc-fonts.el (c-font-lock-doc-comments): New handling for elt. 7
+	of a parse state.
+
 2013-03-06  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.64 released.
 
+2013-03-06  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Correct the position of point in some line-up functions.
+	* cc-align.el (c-lineup-whitesmith-in-block, c-lineup-assignments)
+	(c-lineup-gcc-asm-reg ): take position of point at column 0 rather
+	than at a random place in the line.
+	* cc-mode.texi (Custom Line-Up): State explicitly that point
+	starts at a random position in the line being indented.
+
+2013-03-04  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Replace `last-command-event' by `last-command-char' in XEmacs.
+	* cc-defs.el (c-last-command-char): New macro.
+	* cc-align.el (c-semi&comma-inside-parenlist)
+	(c-semi&comma-no-newlines-before-nonblanks)
+	(c-semi&comma-no-newlines-for-oneline-inliners): Use the new macro
+	in place of `last-command-event'.
+	* cc-cmds.el (c-electric-pound, c-electric-brace)
+	(c-electric-slash, c-electric-semi&comma, c-electric-lt-gt)
+	(c-electric-paren, c-electric-continued-statement): Use the new
+	macro in place of `last-command-event'.
+
 2013-02-08  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.63 released.
 
 	* Makefile (VERSION): XEmacs package 1.62 released.
 
+2013-02-02  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Fix bug in the state cache mechanism.  Remove 'BOD "strategy".  Refactor.
+	* cc-engine.el (c-get-fallback-scan-pos): Remove.
+	(c-parse-state-get-strategy): Don't return 'BOD any more.
+	(c-append-lower-brace-pair-to-state-cache): Extra parameter HERE
+	instead of narrowing.  Widen to top of buffer before searching
+	backwards for a brace pair.
+	(c-state-push-any-brace-pair): Add HERE parameter to function
+	call.
+	(c-append-to-state-cache): Extra parameter HERE in place of
+	narrowing.  Narrow to parameter HERE, in place of being called
+	narrowed.
+	(c-remove-stale-state-cache): Extra parameter HERE in place of
+	narrowing.  Check there's an open brace in the cache before
+	searching for its match.
+	(c-invalidate-state-cache-1): Add HERE parameter to function call.
+	(c-parse-state-1): Don't narrow here for 'forward strategy,
+	instead passing extra parameter HERE to several functions.  Remove
+	'BOD strategy.
+
+2013-01-29  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Amend to fontify /regexp/s in actions correctly.
+	* cc-awk.el (c-awk-harmless-char-re, c-awk-harmless-string*-re)
+	(c-awk-harmless-string*-here-re): braces, parens and semicolons
+	are no longer included.
+	(c-awk-harmless-line-char-re, c-awk-harmless-line-string*-re):
+	What used to be these variables without "-line" in the name.
+	(c-awk-neutral-re): { is no longer neutral.  Escaped newlines now
+	are.
+	(c-awk-non-arith-op-bra-re): Now also matches {.
+	(c-awk-pre-exp-alphanum-kwd-re): New regexp to match "print",
+	"return", and "case".
+	(c-awk-kwd-regexp-sign-re): New, to match "print", etc., followed
+	by /.
+	(c-awk-syntax-tablify-/): Check special cases "print /re/", etc.
+	(c-awk-set-syntax-table-properties): Extend FSM to handle
+	{,},(,),;.
+
+	awk-face-2.awk, awk-face-2.face: New test files for /regexp/s.
+
 2013-01-27  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.60 released.
 
+2013-01-25  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	AWK Mode: Fix indentation bug at top level.
+	* cc-engine.el (c-guess-basic-syntax): Move CASE 5P to just before
+	CASE 5D.
+	* awk-top-1.awk, awk-top-1.res:  Add an extra test for this.
+
+2013-01-23  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Fix a bug in the state cache mechanism.  Refactor this a bit.
+
+	* cc-engine.el (c-parse-state-get-strategy): Remove the
+	`cache-pos' element from the return value.
+	(c-append-lower-brace-pair-to-state-cache): "Narrow" to end of
+	buffer to enable proper searching from beyond HERE.  Amend the
+	test for detecting the sought brace pair.  Amend the value written
+	to the "brace desert cache" when the brace isn't found.
+	(c-remove-stale-state-cache): Rename `good-pos' to `start-point',
+	and several other variables analogously.
+	(c-remove-stale-state-cache-backwards): Change `cache-pos' from a
+	parameter to a locally calculated variable.
+	(c-parse-state-1): Change the calling conventions to the two
+	defuns involving `cache-pos'.
+
+2013-01-17  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Fix bugs in the state cache.  Enhance a debugging mechanism.
+
+	* cc-engine.el (c-state-old-cpp-beg-marker)
+	(c-state-old-cpp-end-marker): New variables.
+	(c-parse-state-get-strategy): Don't use "brace at column zero"
+	strategy for C++.
+	(c-append-lower-brace-pair-to-state-cache): Repair algorithm.
+	Start a backward search for "}" definitively outside CPP
+	constructs.
+	(c-remove-stale-state-cache): Inform the caller of a need to
+	search back for a brace pair in certain circumstances.
+	(c-state-maybe-marker): New macro.
+	(c-parse-state): Reuse markers when appropriate.
+	(c-parse-state-point): New variable.
+	(c-record-parse-state-state): Record old parse state with
+	`copy-tree'.  Record previous value of point.
+	(c-replay-parse-state-state): Replay markers more correctly.
+	(c-debug-parse-state-double-cons): New debugging function.
+	(c-debug-parse-state): Call the above new function.
+	(c-toggle-parse-state-debug): Output a confirmatory message.
+
+	* cc-mode.el (c-before-change, c-after-change): Call
+	c-invalidate-state-cache from `c-before-change' instead of
+	`c-after-change'.
+
 2012-12-28  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.59 released.
 
+2012-12-23  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Speed up fontification where there's large brace blocks.
+	* cc-fonts.el (c-font-lock-enclosing-decls): Add a limit to a call
+	of c-beginning-of-decl-1.
+
 2012-12-10  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.58 released.
 
+2012-12-09  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Make CC Mode not hang when _some_ lines end in CRLF.
+	* cc-engine.el (c-backward-comments): Add code to work around
+	`forward-comment' not recognizing ^M as whitespace.
+
 2012-09-11  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.57 released.
 
+2012-09-09  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Correct the handling of two c-state-cache state variables.
+	* cc-engine.el (c-state-cache-init): Initialise
+	c-state-semi-nonlit-pos-cache\(-limit\)? properly.
+	(c-record-parse-state-state): record
+	c-state-semi-nonlit-pos-cache\(-limit\)?.
+
 2012-09-03  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.56 released.
 
+2012-08-19  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	AWK Mode: make auto-newline work when there's "==" in the pattern.
+	* cc-cmds.el (c-point-syntax): Handle virtual semicolons
+	correctly.
+	* cc-engine.el (c-guess-basic-syntax CASE 5A.3): Test more
+	rigorously for "=" token.
+
+2012-05-05  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	* Patch release 5.32.3
+
+	* cc-defs.el (c-version): Increment to 5.32.3.
+
+	* *.el, cc-mode.texi: Add 2012 to copyright notices.
+
 2012-04-23  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.55 released.
 
+2012-04-22  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Fix erroneous commit.
+
+2012-04-21  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Adding a ) can hide the resulting (..) from searches.  Fix it.
+
+	* cc-engine (c-append-lower-brace-pair-to-state-cache): Bound the
+	backward search to the position of the existing (.
+
 2012-04-16  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.54 released.
 
+2012-04-15  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Ensure searching for keywords is case sensitive.
+
+        * cc-cmds.el (c-electric-brace, c-electric-lt-gt)
+	(c-electric-paren c-beginning-of-defun, c-end-of-defun)
+	(c-defun-name, c-mark-function c-cpp-define-name)
+	(c-comment-indent, c-scan-conditionals c-indent-defun)
+	(c-context-line-break): bind case-fold-search to nil.
+
+	* cc-mode.el (c-font-lock-fontify-region): bind case-fold-search
+	to nil.
+
+2012-04-11  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Make imenu work again for Objective C Mode.
+	* cc-menus.el (cc-imenu-objc-generic-expression): Correct the
+	*-index values, these having been disturbed by a previous change
+	in 2011-08.
+
+2012-04-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Correct two search limits in c-before-change-check_<>-operators.
+	* cc-engine.el (c-before-change-check-<>-operators): Make the
+	correction.
+
+	* cc-mode.texi (c-offsets-alist): Correct a typo.
+
 2012-03-19  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.53 released.
 
+2012-03-16  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Further optimise the handling of large macros.
+
+	* cc-engine.el (c-crosses-statement-barrier-p): Use a limit to a
+	call of `c-literal-limits'.
+	(c-determine-+ve-limit): New function.
+	(c-at-macro-vsemi-p): Move `c-in-literal' to the bottom of an `and'.
+	(c-guess-basic-syntax): In macros, restrict a search limit to
+	2000.  In CASE 5B, restrict a search limit to 500.
+	(c-just-after-func-arglist-p): Obviouly wrong `or' -> `and'.
+
+	* cc-mode.el (c-neutralize-syntax-in-and-mark-CPP): Restrict
+	macro bounds to +-500 from after-change's BEG END.
+
+2012-03-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	* cc-cmds.el (c-mark-defun): Leave a mark, and extend region when
+	command is repeated.
+
 2012-03-06  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.52 released.
 
+2012-03-02  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Depessimize the handling of very large macros.
+
+	* cc-engine.el (c-macro-cache, c-macro-cache-start-pos):
+	(c-macro-cache-syntactic): New variables to implement a one
+	element macro cache.
+	(c-invalidate-macro-cache): New function.
+	(c-beginning-of-macro, c-end-of-macro, c-syntactic-end-of-macro):
+	Adapt to use the new cache.
+	(c-state-safe-place): Use better the cache of safe positions.
+	(c-state-semi-nonlit-pos-cache)
+	(c-state-semi-nonlit-pos-cache-limit): New variables for...
+	(c-state-semi-safe-place): New function.  Here, in a macro is
+	"safe".
+	(c-invalidate-state-cache-1): New stuff for
+	c-state-semi-safe-place.
+	(c-in-literal, c-literal-limits, c-determine-limit-get-base): Use
+	c-state-semi-safe-place.
+
+	* cc-langs.el (c-get-state-before-change-functions): Add
+	c-invalidate-macro-cache to the C, C++, Obj entries.
+
+2012-03-01  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Optimise macro handling with a 1 element cache of beginning and
+	end.  Make the default of c-macro-names-with-semicolon nil.  See
+	2012-03-02 for details.
+
+2012-02-29  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Optimise c-state-safe-place.  See 2012-03-02 for details.
+
 2012-02-14  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.51 released.
 
+2012-02-13  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Fix a loop in c-set-fl-decl-start.
+	* cc-engine.el (c-set-fl-decl-start): Add a check that
+	c-backward-syntactic-ws actually moves backwards.
+
+2012-02-12  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Fix infinite loop with long macros.
+	* cc-engine.el (c-state-safe-place): Handle macros properly.
+
 2012-02-09  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.50 released.
 
+2012-02-07  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Fix spurious recognition of c-in-knr-argdecl.
+
+	* cc-engine.el (c-in-knr-argdecl): Check for '=' in a putative K&R
+	region.
+
+2012-02-07  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Test for keyword @implementation in a #pragma.  This used to
+	loop.
+
+2012-02-07  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	* cc-engine.el (c-forward-objc-directive): Prevent looping in
+	"#pragma mark @implementation".
+
 2012-01-19  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.49 released.
 
 	* Makefile (VERSION): XEmacs package 1.48 released.
 
+2012-01-18  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Eliminate sluggishness and hangs in fontification of "semicolon
+	deserts".
+
+	* cc-engine.el (c-state-nonlit-pos-interval): change value 10000
+	-> 3000.
+	(c-state-safe-place): Reformulate so it doesn't stack up an
+	infinite number of wrong entries in c-state-nonlit-pos-cache.
+	(c-determine-limit-get-base, c-determine-limit): New functions to
+	determine backward search limits disregarding literals.
+	(c-find-decl-spots): Amend commenting.
+	(c-cheap-inside-bracelist-p): New function which detects "={".
+
+	* cc-fonts.el (c-make-font-lock-BO-decl-search-function): Give a
+	limit to a backward search.
+	(c-font-lock-declarations): Fix an occurrence of point being
+	undefined.  Check additionally for point being in a bracelist or
+	near a macro invocation without a semicolon so as to avoid a
+	fruitless time consuming search for a declarator.  Give a more
+	precise search limit for declarators using the new
+	c-determine-limit.
+
+2012-01-17  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Correct a test to do with C-y:
+	* cc-mode.el (c-after-change): Correct a singular-plural
+	confusion.
+
 2012-01-13  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.48 released.
 
+2012-01-13  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Fix filling for when filladapt mode is enabled.
+
+	* cc-cmds.el (c-fill-paragraph): In the invocation of
+	c-mask-paragraph, pass in `fill-paragraph' rather than
+	`fill-region-as-paragraph'.  (This is a reversion of a previous
+	change.)
+	* cc-mode.el (c-basic-common-init): Make
+	fill-paragraph-handle-comment buffer local and set it to nil.
+
+2012-01-11  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Fix Emacs bug #10463 - put `widen's around the critical spots.
+
+	* cc-engine.el (c-in-literal, c-literal-limits): put a widen
+	around each invocation of c-state-pp-to-literal.  Remove an unused
+	let variable.
+
 2012-01-10  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.47 released.
 
 	* Makefile (VERSION): XEmacs package 1.46 released.
 
+2012-01-08  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Optimise font locking in long enum definitions.
+
+	* cc-fonts.el (c-font-lock-declarations): Add an extra arm to a
+	cond form to handle enums.
+	* cc-langs.el (c-enums-contain-decls): New lang variable.
+	* cc-mode.el (c-font-lock-fontify-region): Correct a typo.
+
+2011-12-24  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Introduce a mechanism to widen the region used in context font
+	locking.  Use this to protect declarations from losing their
+	contexts.
+
+	* cc-langs.el (c-before-font-lock-functions): replace
+	c-set-fl-decl-start with c-change-set-fl-decl-start (Renaming).
+	(c-before-context-fontification-functions): new defvar, a list of
+	functions to be run just before context (etc.) font locking.
+
+	* cc-mode.el (c-extend-font-lock-region-for-macros): new,
+	functionality extracted from c-neutralize-syntax-in-and-mark-CPP.
+	(c-in-after-change-fontification): new variable.
+	(c-after-change): Set c-in-after-change-fontification.
+	(c-set-fl-decl-start): Rejig its interface, so it can be called
+	from both after-change and context fontifying.
+	(c-change-set-fl-decl-start, c-context-set-fl-decl-start): new
+	functions.
+	(c-standard-font-lock-fontify-region-function): new variable.
+	(c-font-lock-fontify-region): new function
+
+2011-12-22  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Fix unstable fontification inside templates.
+
+	* cc-langs.el (c-before-font-lock-functions): newly created from
+	the singular version.  The (c c++ objc) entry now additionally has
+	c-set-fl-decl-start.  The other languages (apart from AWK) have
+	that as a single entry.
+
+	* cc-fonts.el (c-font-lock-enclosing-decls): The functionality for
+	"local" declarations has been extracted to c-set-fl-decl-start.
+
+	* cc-mode.el: (c-common-init, c-after-change): Changes due to
+	pluralisation of c-before-font-lock-functions.
+	(c-set-fl-decl-start): New function, extraced from
+	c-font-lock-enclosing-decls and enhanced.
+	(top level): Only advise the font-lock change functions when
+	font-lock-extend-after-change-region-function is not defined.
+
+2011-12-20  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Convert some British English spellings to American English.
+
+2011-12-13  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Large brace-block initialisation makes CC Mode slow: Fix.  Tidy up
+	and accelerate c-in-literal, etc. by using the c-parse-state
+	routines.  Limit backward searching in c-font-lock-enclosing.decl.
+
+	* cc-engine.el (c-state-pp-to-literal): Return the pp-state and
+	literal type in addition to the limits.
+	(c-state-safe-place): New defun, extracted from
+	c-state-literal-at.
+	(c-state-literal-at): Use the above new defun.
+	(c-slow-in-literal, c-fast-in-literal): Removed.
+	(c-in-literal, c-literal-limits): Amended to use
+	c-state-pp-to-literal.
+
+	* cc-fonts.el (c-font-lock-enclosing-decls): Check for being in a
+	literal.  Add a limit for backward searching.
+
+	* cc-mode.el (awk-mode): Don't alias c-in-literal to
+	c-slow-in-literal.
+
+2011-12-04  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Add the switch statement to AWK Mode.
+
+	cc-awk (awk-font-lock-keywords): Add "switch", "case", "default"
+	to the keywords regexp.
+
+	cc-langs (c-label-kwds): Let AWK take the same expression as the
+	rest.
+	(c-nonlabel-token-key): Allow string literals for AWK.  Refactor
+	for the other modes.
+
+2011-10-22  Alan Mackenzie  <bug-cc-mode@gnu.org>
+
+	Fix bug #9560, sporadic wrong indentation; improve instrumentation of
+	c-parse-state.
+	* cc-engine.el (c-append-lower-brace-pair-to-state-cache): correct faulty
+	logical expression.
+
+	(c-parse-state-state, c-record-parse-state-state)
+	c-replay-parse-state-state): New defvar/defuns.
+	(c-debug-parse-state): Use new functions.
+
 2011-10-18  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.46 released.
 
 ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 ;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011   Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013   Free Software Foundation, Inc.
 
 ;; Authors:    2004- Alan Mackenzie
 ;;	       1998- Martin Stjernholm
 ;;; cc-awk.el --- AWK specific code within cc-mode.
 
 ;; Copyright (C) 1988, 1994, 1996, 2000, 2001, 2002, 2003, 2004, 2005,
-;;   2006, 2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
+;;   2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
+;; Free Software Foundation, Inc.
 
 ;; Author: Alan Mackenzie <acm@muc.de> (originally based on awk-mode.el)
 ;; Maintainer: FSF

File cc-bytecomp.el

 ;;; cc-bytecomp.el --- compile time setup for proper compilation
 
 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-;;   2008, 2009, 2010, 2011  Free Software Foundation, Inc.
+;;   2008, 2009, 2010, 2011, 2012, 2013  Free Software Foundation, Inc.
 
 ;; Author:     Martin Stjernholm
 ;; Maintainer: bug-cc-mode@gnu.org
 
 ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 ;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011   Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013   Free Software Foundation, Inc.
 
 ;; Authors:    2003- Alan Mackenzie
 ;;	       1998- Martin Stjernholm

File cc-compat.el

 
 ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 ;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011   Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013   Free Software Foundation, Inc.
 
 ;; Authors:    1998- Martin Stjernholm
 ;;	       1994-1999 Barry A. Warsaw
 
 ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 ;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011   Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013   Free Software Foundation, Inc.
 
 ;; Authors:    2003- Alan Mackenzie
 ;;	       1998- Martin Stjernholm
 
 ;;; Variables also used at compile time.
 
-(defconst c-version "5.32.2"
+(defconst c-version "5.32.5"
   "CC Mode version number.")
 
 (defconst c-version-sym (intern c-version))

File cc-engine.el

 
 ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 ;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011   Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013   Free Software Foundation, Inc.
 
 ;; Authors:    2001- Alan Mackenzie
 ;;	       1998- Martin Stjernholm
 	   (c-go-list-forward)
          t)))
 
+(defun c-back-over-member-initializers ()
+  ;; Test whether we are in a C++ member initializer list, and if so, go back
+  ;; to the introducing ":", returning the position of the opening paren of
+  ;; the function's arglist.  Otherwise return nil, leaving point unchanged.
+  (let ((here (point))
+	(paren-state (c-parse-state))
+	res)
+
+    (setq res
+	  (catch 'done
+	    (if (not (c-at-toplevel-p))
+		(progn
+		  (while (not (c-at-toplevel-p))
+		    (goto-char (c-pull-open-brace paren-state)))
+		  (c-backward-syntactic-ws)
+		  (when (not (c-simple-skip-symbol-backward))
+		    (throw 'done nil))
+		  (c-backward-syntactic-ws))
+	      (c-backward-syntactic-ws)
+	      (when (memq (char-before) '(?\) ?}))
+		(when (not (c-go-list-backward))
+		  (throw 'done nil))
+		(c-backward-syntactic-ws))
+	      (when (c-simple-skip-symbol-backward)
+		(c-backward-syntactic-ws)))
+
+	    (while (eq (char-before) ?,)
+	      (backward-char)
+	      (c-backward-syntactic-ws)
+
+	      (when (not (memq (char-before) '(?\) ?})))
+		(throw 'done nil))
+	      (when (not (c-go-list-backward))
+		(throw 'done nil))
+	      (c-backward-syntactic-ws)
+	      (when (not (c-simple-skip-symbol-backward))
+		(throw 'done nil))
+	      (c-backward-syntactic-ws))
+
+	    (and
+	     (eq (char-before) ?:)
+	     (c-just-after-func-arglist-p))))
+
+    (or res (goto-char here))
+    res))
+
 
 ;; Handling of large scale constructs like statements and declarations.
 
 	      ;; 2007-11-09)
 	      ))))
 
-	 ;; CASE 5B: After a function header but before the body (or
-	 ;; the ending semicolon if there's no body).
+	 ;; CASE 5R: Member init list.  (Used to be part of CASE  5B.1)
+	 ;; Note there is no limit on the backward search here, since member
+	 ;; init lists can, in practice, be very large.
 	 ((save-excursion
-	    (when (setq placeholder (c-just-after-func-arglist-p
-				     (max lim (c-determine-limit 500))))
+	    (when (setq placeholder (c-back-over-member-initializers))
 	      (setq tmp-pos (point))))
-	  (cond
-
-	   ;; CASE 5B.1: Member init list.
-	   ((eq (char-after tmp-pos) ?:)
-	    (if (or (>= tmp-pos indent-point)
-		    (= (c-point 'bosws) (1+ tmp-pos)))
+	  (if (= (c-point 'bosws) (1+ tmp-pos))
 		(progn
 		  ;; There is no preceding member init clause.
 		  ;; Indent relative to the beginning of indentation
 	      (c-forward-syntactic-ws)
 	      (c-add-syntax 'member-init-cont (point))))
 
+	 ;; CASE 5B: After a function header but before the body (or
+	 ;; the ending semicolon if there's no body).
+	 ((save-excursion
+	    (when (setq placeholder (c-just-after-func-arglist-p
+				     (max lim (c-determine-limit 500))))
+	      (setq tmp-pos (point))))
+	  (cond
+
+	   ;; CASE 5B.1: Member init list.
+	   ((eq (char-after tmp-pos) ?:)
+	    ;; There is no preceding member init clause.
+	    ;; Indent relative to the beginning of indentation
+	    ;; for the topmost-intro line that contains the
+	    ;; prototype's open paren.
+	    (goto-char placeholder)
+	    (c-add-syntax 'member-init-intro (c-point 'boi)))
+
 	   ;; CASE 5B.2: K&R arg decl intro
 	   ((and c-recognize-knr-p
 		 (c-in-knr-argdecl lim))
 ;;; cc-fix.el --- compatibility library for old (X)Emacs versions
 
 ;; Copyright (C) 1985,1987,1992-2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010, 2011  Free Software Foundation, Inc.
+;; 2009, 2010, 2011, 2012, 2013  Free Software Foundation, Inc.
 
 ;; Authors:    2003- Alan Mackenzie
 ;;             1998- Martin Stjernholm
 ;;; cc-fonts.el --- font lock support for CC Mode
 
 ;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011  Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013  Free Software Foundation, Inc.
 
 ;; Authors:    2003- Alan Mackenzie
 ;;             2002- Martin Stjernholm
 ;;; cc-guess.el --- guess indentation values by scanning existing code
 
 ;; Copyright (C) 1985,1987,1992-2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010, 2011  Free Software Foundation, Inc.
+;; 2009, 2010, 2011, 2012, 2013  Free Software Foundation, Inc.
 
 ;; Author:     1994-1995 Barry A. Warsaw
 ;;             2011-     Masatake YAMATO
 
 ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 ;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011   Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013   Free Software Foundation, Inc.
 
 ;; Authors:    2002- Alan Mackenzie
 ;;	       1998- Martin Stjernholm

File cc-lobotomy.el

 ;;; cc-lobotomy.el --- excise portions of cc-mode's brain... for speed
 
 ;; Copyright (C) 1985,1987,1992-2003, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011  Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013  Free Software Foundation, Inc.
 
 ;; Author:     1995 Barry A. Warsaw
 ;; Maintainer: Unmaintained
 
 ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 ;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011   Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013   Free Software Foundation, Inc.
 
 ;; Authors:    1998- Martin Stjernholm
 ;;	       1992-1999 Barry A. Warsaw
 
 ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 ;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011   Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013   Free Software Foundation, Inc.
 
 ;; Authors:    2003- Alan Mackenzie
 ;;             1998- Martin Stjernholm
   ;; `c-set-fl-decl-start' for the detailed functionality.
   (cons (c-set-fl-decl-start beg) end))
 
-(defvar c-standard-font-lock-fontify-region-function nil
-  "Standard value of `font-lock-fontify-region-function'")
-
 (defun c-font-lock-fontify-region (beg end &optional verbose)
   ;; Effectively advice around `font-lock-fontify-region' which extends the
   ;; region (BEG END), for example, to avoid context fontification chopping
 		  (setq new-region (funcall fn new-beg new-end))
 		  (setq new-beg (car new-region)  new-end (cdr new-region)))
 		c-before-context-fontification-functions))))
-    (funcall c-standard-font-lock-fontify-region-function
+    (funcall (default-value 'font-lock-fontify-region-function)
 	     new-beg new-end verbose)))
   
 (defun c-after-font-lock-init ()
   ;; Put on `font-lock-mode-hook'.  This function ensures our after-change
-  ;; function will get excuted before the font-lock one.  Amongst other
-  ;; things.
+  ;; function will get excuted before the font-lock one.
   (remove-hook 'after-change-functions 'c-after-change t)
-  (add-hook 'after-change-functions 'c-after-change nil t)
-  (setq c-standard-font-lock-fontify-region-function
-	(default-value 'font-lock-fontify-region-function)))
+  (add-hook 'after-change-functions 'c-after-change nil t))
 
 (defun c-font-lock-init ()
   "Set up the font-lock variables for using the font-lock support in CC Mode.

File cc-mode.texi

 
 @copying
 Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011  Free Software
-Foundation, Inc.
+2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013  Free
+Software Foundation, Inc.
 
 This manual is free documentation; you can redistribute it and/or
 modify it under the terms of the GNU General Public License as
 @vskip 0pt plus 1filll
 @insertcopying
 
-This manual was generated from $Revision: 5.265 $ of $RCSfile: cc-mode.texi,v $, which can be
+This manual was generated from $Revision$ of $RCSfile$, which can be
 downloaded from
 @url{http://cvs.sf.net/viewcvs.py/cc-mode/cc-mode/cc-mode.texi}.
 @end titlepage

File cc-styles.el

 
 ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 ;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011   Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013   Free Software Foundation, Inc.
 
 ;; Authors:    2004- Alan Mackenzie
 ;;	       1998- Martin Stjernholm

File cc-subword.el

 ;;; cc-subword.el --- Handling capitalized subwords in a nomenclature
 
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
+;; 2013 Free Software Foundation, Inc.
 
 ;; Author: Masatake YAMATO
 
 
 ;; Copyright (C) 1985, 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 ;;   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-;;   2010, 2011   Free Software Foundation, Inc.
+;;   2010, 2011, 2012, 2013   Free Software Foundation, Inc.
 
 ;; Authors:    2002- Alan Mackenzie
 ;;	       1998- Martin Stjernholm