summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Mackenzie <acm@muc.de>2018-12-10 14:30:40 +0000
committerAlan Mackenzie <acm@muc.de>2018-12-10 14:30:40 +0000
commit2075864c7717491f1156998120535ce72ed8f0cc (patch)
tree7c9e2f7ac5f09384fa730fd433e62869c5a88cd1
parent0220391c0015bdec0e658c7ab206c6226bb335ca (diff)
downloademacs-2075864c7717491f1156998120535ce72ed8f0cc.tar.gz
CC Mode: stop extra parens on expression causing false fontification as type
* lisp/progmodes/cc-fonts.el (c-get-fontification-context): recognize arithmetic operator followed by several open parentheses, not just one, as not being an argument list.
-rw-r--r--lisp/progmodes/cc-fonts.el8
1 files changed, 5 insertions, 3 deletions
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index fa9b8f354ef..39d167f0190 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -1279,12 +1279,14 @@ casts and declarations are fontified. Used on level 2 and higher."
(c-put-char-property (1- match-pos)
'c-type 'c-decl-arg-start)
(cons 'decl nil))
- ;; Got an open paren preceded by an arith operator.
+ ;; Got (an) open paren(s) preceded by an arith operator.
((and (eq (char-before match-pos) ?\()
(save-excursion
(goto-char match-pos)
- (and (zerop (c-backward-token-2 2))
- (looking-at c-arithmetic-op-regexp))))
+ (while
+ (progn (c-backward-token-2)
+ (eq (char-after) ?\()))
+ (looking-at c-arithmetic-op-regexp)))
(cons nil nil))
;; In a C++ member initialization list.
((and (eq (char-before match-pos) ?,)