Mercurial > emacs
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.