Commit graph

217 commits

Author SHA1 Message Date
Paul Eggert
d8e9122115 Merge from origin/emacs-24
e726f20 Handle "#" operator properly inside macro.  Fix coding bug.
618931b Handle dead frame in menu-bar-non-minibuffer-window-p.  (Bug#19728)
017a03a Document MS-Windows file-name idiosyncrasies  (Bug#19463)
f3faf4f Fix description of Customize buffer in Emacs manual.
1c1d0b7 Fix a typo in the Emacs manual's Hungry Delete description.
be7fb82 src/dispextern.h (FACE_FOR_CHAR): Fix the commentary.
33c4409 Spelling fixes
6c8231e python.el: Handle tabs in python-indent-dedent-line.
41c3b92 * lisp/progmodes/python.el: Respect user indentation after comment.
868df45 Avoid compiler warnings in decode_env_path.
b28c979 Fix XEmacs version typo in comment and ChangeLog
989fb32 Improve solution of bug #19701
6310530 Fix refilling of list of language environments in User Manual
c4c447d Restore XEmacs compatibility

Conflicts:
	doc/emacs/ChangeLog
	lisp/ChangeLog
	src/ChangeLog
	test/ChangeLog
2015-02-25 22:53:56 -08:00
Alan Mackenzie
e726f2058c Handle "#" operator properly inside macro. Fix coding bug.
cc-mode.el (c-neutralize-syntax-in-and-mark-CPP): On finding a "#" which
looks like the start of a macro, check it isn't already inside a macro.

cc-engine.el (c-state-safe-place): Don't record a new "safe" position
into the list of them when this is beyond our current position.
2015-01-31 21:44:47 +00:00
Paul Eggert
7e09ef09a4 Update copyright year to 2015
Run admin/update-copyright.
2015-01-01 14:26:41 -08:00
Paul Eggert
732fd4c7e1 Update copyright year to 2015
Run admin/update-copyright.
2015-01-01 09:18:06 -08:00
Alan Mackenzie
948fa912de Make C++11 uniform init syntax work. New keywords "final" and "override"
cc-engine.el (c-back-over-member-initializer-braces): New function.
(c-guess-basic-syntax): Set `containing-sex' and `lim' using the new
function.

cc-fonts.el (c-font-lock-declarations): Check more carefully for "are we
at a declarator?" using c-back-over-member-initializers.

cc-langs.el (c-type-modifier-kwds): include "final" and "override" in
the
C++ value.
2014-12-19 18:35:14 +00:00
Stefan Monnier
517505322a Merge some of the differences from the standalone CC-mode.
The main change is to only use the `category' text-property only when
available.  For that many calls are changed to use c-get-char-property,
c-next-single-property-change, c-sc-scan-lists,
c-sc-parse-partial-sexp, c-unmark-<->-as-paren.

* lisp/progmodes/cc-align.el (c-lineup-respect-col-0): New function.

* lisp/progmodes/cc-cmds.el (c-forward-into-nomenclature)
(c-backward-into-nomenclature): Use cc-subword if subword-mode is
not available.
(c-beginning-of-defun, c-end-of-defun, c-mark-function)
(c-indent-line-or-region): Use c-region-is-active-p.

* lisp/progmodes/cc-defs.el (c-version): Bump up to 5.33.
(c-use-category): New const.
(c-next-single-property-change): New macro.
(c-region-is-active-p): Prefer region-active-p when available.
(c-search-backward-char-property): Fix old min/max typo; probably
a copy/paste error.
(c-mark-<-as-paren, c-mark->-as-paren, c-unmark-<->-as-paren):
Turn them into macros that obey c-use-category.
(c-sc-scan-lists-no-category+1+1, c-sc-scan-lists-no-category+1-1)
(c-sc-scan-lists-no-category-1+1, c-sc-scan-lists-no-category-1-1)
(c-sc-scan-lists, c-sc-parse-partial-sexp)
(c-looking-at-non-alphnumspace): New macros.
(c-sc-parse-partial-sexp-no-category): New function.
(c-emacs-features): Add `category-properties' element.

* lisp/progmodes/cc-engine.el (c-invalidate-state-cache, c-parse-state):
Handle the case where categories are not available.
(c-record-parse-state-state, c-replay-parse-state-state):
Handle marker values.
(c-before-change-check-<>-operators): Look for the `syntax-table'
property rather than for the corresponding `category'.
(c-looking-at-decl-block): Remove unused var
`c-disallow-comma-in-<>-arglists'.
(c-forward-<>-arglist-recur): Remove unused var
`orig-record-found-types'.

* lisp/progmodes/cc-langs.el (c-modified-constant): New lang var.
(c-known-type-key): Don't make a list just to throw it away.

* lisp/progmodes/cc-bytecomp.el (cc-bytecomp-unbound-variables)
(cc-bytecomp-original-functions, cc-bytecomp-original-properties)
(cc-bytecomp-loaded-files): Re-set each time the file is loaded.
(cc-bytecomp-obsolete-var, cc-bytecomp-ignore-obsolete)
(cc-bytecomp-obsolete-fun): Delete unused functions.

* lisp/progmodes/cc-mode.el (c-just-done-before-change): New var.
(c-basic-common-init): Initialize it.
(c-common-init): Only use mode-require-final-newline when available.
(c-before-change): Check and set c-just-done-before-change.
(c-after-change): Re-set c-just-done-before-change.
(c-advise-fl-for-region): New macro.
(lazy-lock-defer-rest-after-change, lazy-lock-defer-line-after-change)
(font-lock-after-change-function, jit-lock-after-change):
Advise if needed.
2014-12-01 15:06:49 -05:00
Alan Mackenzie
7e24ac11d4 Remove spurious reference to symbol category_properties.
cc-engine.el (c-state-pp-to-literal): Fixed here.
2014-11-26 16:42:55 +00:00
Alan Mackenzie
a2634462b8 Backport fix to bug #18749 to Emacs-24 branch. 2014-11-05 18:38:51 +00:00
Paul Eggert
a9f1618de8 Spelling fixes; tweak explanation of commit messages.
* admin/notes/repo: Avoid "DVCS" acronym without first explaining it.
Mention using the first line of a ChangeLog as the topic line, and
that commit messages should use UTF-8.
* lisp/mouse.el (mouse-drag-line): Fix misspelling of "right-fringe".
2014-11-04 09:46:49 -08:00
Alan Mackenzie
ff73c2c3e2 Add "enum classs" support to C++ mode.
progmodes/cc-langs.el (c-after-brace-list-decl-kwds)
(c-after-brace-list-key): New language consts/variables.
progmodes/cc-engine.el (c-looking-at-decl-block): Exclude
spurious match of "enum struct" from decl-block recognition.
(c-backward-colon-prefixed-type): New function.
(c-backward-over-enum-header): Call above function to extend
recognition of enum structure.
2014-10-30 16:07:19 +00:00
Alan Mackenzie
605cfb8b7a Check that a "macro" found near point-min isn't a ## operator. Fixes
bug #18749.
progmodes/cc-engine.el (c-macro-is-genuine-p): New function.
(c-beginning-of-macro): Use the above new function.
2014-10-18 10:02:59 +00:00
Paul Eggert
cc541e588a Spelling fixes. 2014-10-12 13:09:15 -07:00
Stefan Monnier
03c4553666 Merge trivially safe differences from standalone CC-mode.
* lisp/progmodes/cc-mode.el (c-initialize-cc-mode): Don't quote a symbol
just to then pass it to `symbol-value'.
(prog-mode): Provide fallback definition, if needed.
* lisp/progmodes/cc-langs.el: Always load `cl'.  Don't load `cl-lib'.
Remove "cl-" prefix accordingly.
* lisp/progmodes/cc-fonts.el (c-font-lock-invalid-string): Use integerp or
characterp depending on the type of characters.
(c-font-lock-enum-tail): Remove unused var `start'.
* lisp/progmodes/cc-engine.el: Load CL at compile-time.
(c-declare-lang-variables): Use mapcan.
(c-append-to-state-cache): Remove unused var `ce+1'.
(c-parse-state-state): Make buffer-local.
(c-ssb-lit-begin): Remove unused var `pps-end-pos'.
(c-just-after-func-arglist-p): Remove unused var `end'.
* lisp/progmodes/cc-defs.el: Load cc-fix if delete-dups is undefined.
(c-<-as-paren-syntax, c->-as-paren-syntax): Move definition earlier.
(c-make-keywords-re): Use delete-dups.
(c-get-current-file): Avoid file-name-base.
* lisp/progmodes/cc-cmds.el (c-electric-lt-gt): Remove unused var
`close-paren-inserted'.
* lisp/progmodes/cc-awk.el (c-forward-sws): Remove unused declaration.
2014-10-04 00:03:49 -04:00
Paul Eggert
0f2ed59206 Spelling fixes.
* lisp/ses.el (ses-file-format-extend-parameter-list): Rename from
ses-file-format-extend-paramter-list.  All uses changed.
* lisp/gnus-cloud.el (gnus-cloud-parse-version-1): Fix misspelling
of ":delete".
2014-09-11 12:44:25 -07:00
Alan Mackenzie
c8b22035d6 CC Mode: revert recent changes and fix bug 17463 (cc-langs.elc gets
loaded at run-time).
* progmodes/cc-langs.el (c-no-parens-syntax-table): Rename the
c-lang-const to c-make-no-parens-syntax-table and correct the
logic.
(c-no-parens-syntax-table): Correct the logic of the c-lang-defvar.
2014-09-10 21:38:11 +00:00
Stefan Monnier
4700363363 CC-mode: Set open-paren-in-column-0-is-defun-start to nil;
plus misc cleanup.
* lisp/progmodes/cc-mode.el (c-basic-common-init):
Set open-paren-in-column-0-is-defun-start.
(adaptive-fill-first-line-regexp, font-lock-syntactic-keywords):
Remove declarations, unused.
(run-mode-hooks): Remove declaration.
(font-lock-defaults): Use plain `defvar' to declare.
(c-run-mode-hooks): Test existence of run-mode-hooks with fboundp.
* lisp/progmodes/cc-langs.el (c-filter-ops): Avoid `setq'.
(c-make-mode-syntax-table): Don't micro-optimize.
(c-keywords, c-keyword-member-alist): Simplify.
(c-kwds-lang-consts): Don't eval at compile-time.
(c-primary-expr-regexp): Comment out unused vars.
* lisp/progmodes/cc-fonts.el (c-font-lock-context): Declare at top-level.
(c-font-byte-compile): New var.
(c--compile): New function.  Use it instead of `byte-compile'.
(c-cpp-matchers): Quote the value returned by
`c-make-syntactic-matcher' in case it's not self-evaluating.
(c-basic-matchers-before): Avoid a plain MATCHER as keyword, wrap it in
parentheses instead (in case MATCHER happens to be a list).
(c-font-lock-enum-tail): Remove unused var `start'.
(c-font-lock-objc-methods): Silence byte-compiler warnings.
* lisp/progmodes/cc-engine.el (c-syntactic-re-search-forward): Sink an `if'
test into an argument.
* lisp/progmodes/cc-defs.el (c-point, c-major-mode-is, c-put-char-property)
(c-get-char-property): Don't use `eval' just to unquote a constant.
(c-use-extents): Remove.  Use (featurep 'xemacs), compiled
more efficiently.
(c-put-char-property-fun): Don't call `byte-compile' by hand.
(c-clear-char-property, c-clear-char-properties): Check that `property'
is a quoted constant.
(c-emacs-features): Remove `infodock', `syntax-properties', and
`pps-extended-state' (never used), `8-bit' and `1-bit' (use (featurep
'xemacs) instead).  Use `with-temp-buffer' and let-bind vars after
changing buffer, so we don't have to setq them again afterwards.
(c-lang-const): Remove redundant symbolp assertions.
(c-find-assignment-for-mode): Use `or'.
* lisp/Makefile.in (compile-one-process): Remove cc-mode dependency.
2014-09-10 12:32:36 -04:00
Alan Mackenzie
4031fb7bac Handle C++11's "auto" and "decltype" constructions.
cc-engine.el (c-forward-type): Enhance to recognise and return 'decltype.
(c-forward-decl-or-cast-1): New let variables backup-kwd-sym,
prev-kwd-sym, new-style-auto.  Enhance to handle the new "auto" keyword.
    
cc-fonts.el (c-font-lock-declarations): Handle the "decltype" keyword.
(c-font-lock-c++-new): Handle "decltype" constructions.
    
cc-langs.el (c-auto-ops, c-auto-ops-re): New c-lang-defconsts/defvars.
(c-haskell-op, c-haskell-op-re): New c-lang-defconsts/defvars.
(c-typeof-kwds, c-typeof-key): New c-lang-defconsts/defvars.
(c-typeless-decl-kwds): Append "auto" onto the C++ value.
(c-not-decl-init-keywords): Also exclude c-typeof-kwds from value.
2014-08-24 20:50:11 +00:00
Alan Mackenzie
66bb9533fc Make ">>" act as double template ender in C++ Mode.
cc-langs.el (c->-op-cont-tokens): New lang-const split off from
c->-op-cont-re.
(c->-op-cont-tokens): Change to use the above.
(c->-op-without->-cont-regexp): New lang-const.
    
cc-engine.el (c-forward-<>-arglist-recur): Use
c->-op-without->-cont-regexp in place of c->-op-cont-tokens.
2014-08-24 20:38:11 +00:00
Alan Mackenzie
d6c17223fe Fix confusion in C++ file caused by comma in "= {1,2},".
cc-engine.el (c-beginning-of-statement-1): In checking for a statement
boundary marked by "}", check there's no "=" before the "{".
(c-guess-basic-syntax CASE 9B): Call c-beginning-of-statement with
non-nil `comma-delim' argument.
cc-fonts.el (c-font-lock-declarators): Parse an initializer expression
more accurately.
2014-08-02 18:52:48 +00:00
Alan Mackenzie
7902217745 Correct loop termination condition in c-syntactic-skip-backward.
progmodes/cc-engine.el (c-syntactic-skip-backward): Correct for the
situation where, after moving back out of a literal, skip-chars-backward
doesn't move further, yet checks have still to be done.
2014-08-02 16:42:29 +00:00
Alan Mackenzie
e3be29073e Don't call c-parse-state when c++-template-syntax-table is active.
* progmodes/cc-engine.el (c-guess-continued-construct CASE G)
(c-guess-basic-syntax CASE 5D.3): Rearrange so that
c-syntactic-skip-backwards isn't called with the pertinent syntax
table.
2014-06-29 11:26:47 +00:00
Alan Mackenzie
9155e80d79 Guard (looking-at "\\s!") from XEmacs.
progmodes/cc-engine.el (c-state-pp-to-literal): add guard form.
2014-05-30 17:06:53 +00:00
Alan Mackenzie
99f7b0a6d6 c-parse-state. Don't "append-lower-brace-pair" in certain
circumstances.  Also fix an obscure bug where "\\s!" shouldn't be
recognised as a comment.

* progmodes/cc-engine.el (c-state-pp-to-literal): Check for "\\s!"
as well as normal comment starter.
(c-parse-state-get-strategy): Extra return possibility
'back-and-forward.
(c-remove-stale-state-cache): Extra element CONS-SEPARATED in
return value list to indicate replacement of a brace-pair cons
with its car.
(c-parse-state-1): With 'back-and-forward, only call
c-append-lower-brace-pair-to state-cache when cons-separated.
2014-02-02 16:28:52 +00:00
Alan Mackenzie
e3af763f4d Bind open-paren-in-column-0-is-defun-start to nil at some entry points.
* progmodes/cc-engine.el (c-invalidate-state-cache-1)
(c-parse-state-1, c-guess-basic-syntax):  Bind it here.
* progmodes/cc-mode.el (c-before-change, c-after-change)
(c-font-lock-fontify-region): Bind it here.
2014-01-19 12:32:47 +00:00
Paul Eggert
c91c771dbe Spelling fixes. 2014-01-15 22:24:06 -08:00
Paul Eggert
ba3189039a Update copyright year to 2014 by running admin/update-copyright. 2014-01-01 07:43:34 +00:00
Alan Mackenzie
b1e8e01061 Indent statements in macros following "##" correctly.
* progmodes/cc-engine.el (c-crosses-statement-barrier-p): Modify
the "#" arm of a cond form to handle "#" and "##" operators.
2013-10-27 21:24:17 +00:00
Alan Mackenzie
87756ca9f4 Allow comma separated lists after Java "implements".
* progmodes/cc-engine.el (c-backward-over-enum-header): parse
commas.
* progmodes/cc-fonts.el (c-basic-matchers-after): Remove comma
from a "disallowed" list in enum fontification.
2013-10-20 14:27:22 +00:00
Alan Mackenzie
033f22ddad Fix fontification bugs with constructors and const.
* progmodes/cc-engine.el (c-forward-decl-or-cast-1): (Just after
CASE 2) Remove the check for the absence of a suffix construct
after a function declaration with only types (no identifiers) in
the parentheses.  Also, accept a function declaration with just a
type inside the parentheses, if this type can be positively
recognised as such, or if a prefix keyword like "explicit" nails
down the construct as a declaration.
2013-10-19 15:11:07 +00:00
Alan Mackenzie
7a06871716 Fix indentation/fontification of Java enum with "implements"/generic.
* progmodes/cc-engine.el (c-backward-over-enum-header): Extracted from
the three other places and enhanced to handle generics.
(c-inside-bracelist-p): Uses new function above.
* progmodes/cc-fonts.el (c-font-lock-declarations): Uses new function
above.
(c-font-lock-enum-tail): Uses new function above.
2013-10-13 19:54:46 +00:00
Alan Mackenzie
38de11bd5a Fix indentation/fontification of Java enum with "implements".
* progmodes/cc-langs.el (c-postfix-decl-spec-key): New variable, a
regexp which matches "implements", etc., in Java.
* progmodes/cc-engine.el (c-inside-bracelist-p): Check for extra
specifier clauses coming after "enum".
* progmodes/cc-fonts.el (c-font-lock-declarations)
(c-font-lock-enum-tail): Check for extra specifier clauses coming
after "enum".
2013-09-28 17:17:01 +00:00
Alan Mackenzie
ece1500470 C++: fontify identifier in declaration following "public:" correctly.
* progmodes/cc-langs.el (c-decl-start-colon-kwd-re): New lang var
to match "public", etc.
(c-decl-prefix-re): Add ":" into the C++ value.
* progmodes/cc-engine.el (c-find-decl-prefix-search): Refactor a
bit.  Add a check for a ":" preceded by "public", etc.
2013-09-21 17:21:29 +00:00
Alan Mackenzie
ee3ce8a7bb Fix fontification of type when followed by "const".
* progmodes/cc-engine.el (c-forward-decl-or-cast-1): Don't exclude
"known" types from fontification.
2013-09-18 20:47:37 +00:00
Alan Mackenzie
e8dd0787d9 Correctly fontify Java class constructors.
* progmodes/cc-langs.el (c-type-decl-suffix-key): Now matches ")"
in Java Mode.
(c-recognize-typeless-decls): Set the Java value to t.
* progmodes/cc-engine.el (c-forward-decl-or-cast-1): While
handling a "(", add a check for, effectively, Java, and handle a
"typeless" declaration there.
2013-09-07 14:33:50 +00:00
Glenn Morris
6758b6a8db * lisp/progmodes/cc-engine.el (c-pull-open-brace): Move definition before use.
Ref: http://lists.gnu.org/archive/html/emacs-devel/2013-08/msg00773.html
2013-08-29 13:26:48 -04:00
Alan Mackenzie
8a51e84232 Improve indentation of bracelists defined by macros (without "=").
* progmodes/cc-engine.el (c-inside-bracelist-p): When a macro
expansion begins with "{", regard it as bracelist when it doesn't
contain a ";".
2013-08-25 21:06:07 +00:00
Alan Mackenzie
869455d432 Parse C++ inher-intro when there's a template split over 2 lines.
* progmodes/cc-engine.el (c-guess-basic-syntax CASE 5C): Code more
rigorously the search for "class" etc. followed by ":".

* progmodes/cc-langs.el (c-opt-<>-sexp-key): Make the value for
random languages a regexp which never matches rather than nil.
2013-08-25 13:52:14 +00:00
Alan Mackenzie
b5eb903526 Handle "/"s more accurately in test for virtual semicolons (AWK Mode).
* progmodes/cc-awk.el (c-awk-one-line-possibly-open-string-re)
(c-awk-regexp-one-line-possibly-open-char-list-re)
(c-awk-one-line-possibly-open-regexp-re)
(c-awk-one-line-non-syn-ws*-re): Remove.
(c-awk-possibly-open-string-re, c-awk-non-/-syn-ws*-re)
(c-awk-space*-/-re, c-awk-space*-regexp-/-re)
(c-awk-space*-unclosed-regexp-/-re): New constants.
(c-awk-at-vsemi-p): Reformulate better to recognize "/"s which
aren't regexp delimiters.

* progmodes/cc-engine.el (c-crosses-statement-barrier-p): Add in
handling for a rare situation in AWK Mode involving unterminated
strings/regexps.
2013-08-25 10:09:56 +00:00
Alan Mackenzie
5ab78d3d6a Make Java try-with-resources statement parse properly.
progmodes/cc-langs.el (c-block-stmt-1-2-kwds, c-block-stmt-1-2-key): New
language constants/variables.
progmodes/cc-engine.el (c-beginning-of-statement-1, c-after-conditional): Adapt
to deal with c-block-stmt-1-2-key.
progmodes/cc-fonts.el (c-font-lock-declarations): Adapt to deal with
c-block-stmt-1-2-key.
2013-07-27 12:07:43 +00:00
Paul Eggert
3af1c8684e Spelling fixes. 2013-07-13 22:18:48 -07:00
Alan Mackenzie
2cdb769811 progmodes/cc-engine.el (c-forward-decl-or-cast-1): Label CASE 13
and comment it out.  This out-commenting enables certain C++
declarations to be parsed correctly.
2013-07-13 17:45:07 +00:00
Alan Mackenzie
6490c52ee8 Remove faulty optimisation from indentation calculation.
* progmodes/cc-engine.el (c-guess-basic-syntax): Don't calculate
        search limit based on 2000 characters back from indent-point.
2013-06-04 13:26:15 +00:00
Glenn Morris
683853b9fe Plain fboundp silences compilation warnings since Emacs 22.1
* progmodes/cc-cmds.el (delete-forward-p):
* progmodes/cc-defs.el (buffer-syntactic-context-depth):
* progmodes/cc-engine.el (buffer-syntactic-context):
* progmodes/cc-fonts.el (face-property-instance):
* progmodes/cc-mode.el (set-keymap-parents):
* progmodes/cc-vars.el (get-char-table): No need for cc-bytecomp-defun.
* progmodes/cc-defs.el (c-set-region-active, c-beginning-of-defun-1)
* progmodes/cc-mode.el (c-make-inherited-keymap): Use plain fboundp.
2013-06-01 11:19:29 -07:00
Alan Mackenzie
3d1c39faa4 Handle arbitrarily long C++ member initialisation lists.
* progmodes/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-30 16:19:14 +00:00
Alan Mackenzie
691e26ae7d Handle `parse-partial-sexp' landing inside a comment opener
(Bug#13244). Also adapt to the new values of element 7 of a parse
	state.

	* progmodes/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.

	* progmodes/cc-fonts.el (c-font-lock-doc-comments): New handling
	for elt. 7 of a parse state.
2013-04-03 17:50:39 +00:00
Paul Eggert
c38e0c974e Prefer UTF-8 when the encoding shouldn't matter and changes are small. 2013-03-05 09:13:01 -08:00
Glenn Morris
8c4b24b2ab Merge from emacs-24; up to 2012-12-14T15:22:24Z!monnier@iro.umontreal.ca 2013-02-06 22:23:54 -08:00
Alan Mackenzie
d23b0804fb 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-02-02 18:24:10 +00:00
Alan Mackenzie
b7aea0ffb6 AWK Mode: Fix indentation bug at top level. Bug #12274.
progmodes/cc-engine.el (c-guess-basic-syntax): Move CASE 5P to just
before CASE 5D.
2013-01-25 18:18:14 +00:00
Alan Mackenzie
267eacb5e3 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-23 18:58:11 +00:00