mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-03 08:30:09 +00:00
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.
This commit is contained in:
parent
dbc471b133
commit
d6c17223fe
@ -1,5 +1,15 @@
|
||||
2014-08-02 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
Fix confusion in C++ file caused by comma in "= {1,2},". Bug
|
||||
#17756.
|
||||
* progmodes/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.
|
||||
* progmodes/cc-fonts.el (c-font-lock-declarators): Parse an
|
||||
initializer expression more accurately.
|
||||
|
||||
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,
|
||||
|
@ -1033,7 +1033,10 @@ comment at the start of cc-engine.el for more info."
|
||||
;; Just gone back over a brace block?
|
||||
((and
|
||||
(eq (char-after) ?{)
|
||||
(not (c-looking-at-inexpr-block lim nil t)))
|
||||
(not (c-looking-at-inexpr-block lim nil t))
|
||||
(save-excursion
|
||||
(c-backward-token-2 1 t nil)
|
||||
(not (looking-at "=\\([^=]\\|$\\)"))))
|
||||
(save-excursion
|
||||
(c-forward-sexp) (point)))
|
||||
;; Just gone back over some paren block?
|
||||
@ -10476,7 +10479,7 @@ comment at the start of cc-engine.el for more info."
|
||||
(if (eq (point) (c-point 'boi))
|
||||
(c-add-syntax 'brace-list-close (point))
|
||||
(setq lim (c-most-enclosing-brace c-state-cache (point)))
|
||||
(c-beginning-of-statement-1 lim)
|
||||
(c-beginning-of-statement-1 lim nil nil t)
|
||||
(c-add-stmt-syntax 'brace-list-close nil t lim paren-state)))
|
||||
|
||||
(t
|
||||
|
@ -1037,7 +1037,8 @@ casts and declarations are fontified. Used on level 2 and higher."
|
||||
paren-depth
|
||||
id-face got-init
|
||||
c-last-identifier-range
|
||||
(separator-prop (if types 'c-decl-type-start 'c-decl-id-start)))
|
||||
(separator-prop (if types 'c-decl-type-start 'c-decl-id-start))
|
||||
brackets-after-id)
|
||||
|
||||
;; The following `while' fontifies a single declarator id each time round.
|
||||
;; It loops only when LIST is non-nil.
|
||||
@ -1110,13 +1111,24 @@ casts and declarations are fontified. Used on level 2 and higher."
|
||||
;; Search syntactically to the end of the declarator (";",
|
||||
;; ",", a closing paren, eob etc) or to the beginning of an
|
||||
;; initializer or function prototype ("=" or "\\s\(").
|
||||
;; Note that the open paren will match array specs in
|
||||
;; square brackets, and we treat them as initializers too.
|
||||
(c-syntactic-re-search-forward
|
||||
"[;,]\\|\\s)\\|\\'\\|\\(=\\|\\s(\\)" limit t t))
|
||||
;; Note that square brackets are now not also treated as
|
||||
;; initializers, since this broke when there were also
|
||||
;; initializing brace lists.
|
||||
(let (found)
|
||||
(while
|
||||
(and (setq found
|
||||
(c-syntactic-re-search-forward
|
||||
"[;,]\\|\\s)\\|\\'\\|\\(=\\|\\s(\\)" limit t t))
|
||||
(eq (char-before) ?\[))
|
||||
(backward-char)
|
||||
(c-safe (c-forward-sexp 1))
|
||||
(setq found nil)
|
||||
(setq brackets-after-id t))
|
||||
found))
|
||||
|
||||
(setq next-pos (match-beginning 0)
|
||||
id-face (if (and (eq (char-after next-pos) ?\()
|
||||
(not brackets-after-id)
|
||||
(let (c-last-identifier-range)
|
||||
(save-excursion
|
||||
(goto-char next-pos)
|
||||
@ -1486,9 +1498,12 @@ casts and declarations are fontified. Used on level 2 and higher."
|
||||
c-recognize-knr-p) ; Strictly speaking, bogus, but it
|
||||
; speeds up lisp.h tremendously.
|
||||
(save-excursion
|
||||
(unless (or (eobp)
|
||||
(looking-at "\\s(\\|\\s)"))
|
||||
(forward-char))
|
||||
(setq bod-res (car (c-beginning-of-decl-1 decl-search-lim)))
|
||||
(if (and (eq bod-res 'same)
|
||||
(progn
|
||||
(save-excursion
|
||||
(c-backward-syntactic-ws)
|
||||
(eq (char-before) ?\})))
|
||||
(c-beginning-of-decl-1 decl-search-lim))
|
||||
|
Loading…
Reference in New Issue
Block a user