diff options
author | Alan Mackenzie <acm@muc.de> | 2018-12-10 14:30:40 +0000 |
---|---|---|
committer | Alan Mackenzie <acm@muc.de> | 2018-12-10 14:30:40 +0000 |
commit | 2075864c7717491f1156998120535ce72ed8f0cc (patch) | |
tree | 7c9e2f7ac5f09384fa730fd433e62869c5a88cd1 | |
parent | 0220391c0015bdec0e658c7ab206c6226bb335ca (diff) | |
download | emacs-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.el | 8 |
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) ?,) |