X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/3a12f2ed99734eff668f83f630c7108000e0b399..85aa6ede9fe1b8165a99a4046dd8262ec93a02d5:/lisp/progmodes/cc-fonts.el diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index d39376a2f0..ad564f7c3d 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el @@ -1,6 +1,6 @@ ;;; cc-fonts.el --- font lock support for CC Mode -;; Copyright (C) 2002-2014 Free Software Foundation, Inc. +;; Copyright (C) 2002-2015 Free Software Foundation, Inc. ;; Authors: 2003- Alan Mackenzie ;; 2002- Martin Stjernholm @@ -539,28 +539,29 @@ stuff. Used on level 1 and higher." (let* ((re (c-make-keywords-re nil (c-lang-const c-cpp-include-directives))) (re-depth (regexp-opt-depth re))) - `((,(concat noncontinued-line-end - (c-lang-const c-opt-cpp-prefix) - re - (c-lang-const c-syntactic-ws) - "\\(<[^>\n\r]*>?\\)") - (,(+ ncle-depth re-depth sws-depth 1) - font-lock-string-face) - - ;; Use an anchored matcher to put paren syntax - ;; on the brackets. - (,(byte-compile - `(lambda (limit) - (let ((beg (match-beginning - ,(+ ncle-depth re-depth sws-depth 1))) - (end (1- (match-end ,(+ ncle-depth re-depth - sws-depth 1))))) - (if (eq (char-after end) ?>) - (progn - (c-mark-<-as-paren beg) - (c-mark->-as-paren end)) - (c-unmark-<->-as-paren beg))) - nil))))))) + ;; We used to use a font-lock "anchored matcher" here for + ;; the paren syntax. This failed when the ">" was at EOL, + ;; since `font-lock-fontify-anchored-keywords' terminated + ;; its loop at EOL without executing our lambda form at + ;; all. + `((,(c-make-font-lock-search-function + (concat noncontinued-line-end + (c-lang-const c-opt-cpp-prefix) + re + (c-lang-const c-syntactic-ws) + "\\(<[^>\n\r]*>?\\)") + `(,(+ ncle-depth re-depth sws-depth 1) + font-lock-string-face t) + `((let ((beg (match-beginning + ,(+ ncle-depth re-depth sws-depth 1))) + (end (1- (match-end ,(+ ncle-depth re-depth + sws-depth 1))))) + (if (eq (char-after end) ?>) + (progn + (c-mark-<-as-paren beg) + (c-mark->-as-paren end)) + (c-unmark-<->-as-paren beg))) + nil)))))) ;; #define. ,@(when (c-lang-const c-opt-cpp-macro-define) @@ -1771,8 +1772,8 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'." ;; "\\|" ;; (c-lang-const c-symbol-key) ;; "\\)") -;; `((c-font-lock-declarators limit t nil) ; That `nil' says use `font-lock-variable-name-face'; -;; ; `t' would mean `font-lock-function-name-face'. +;; `((c-font-lock-declarators limit t nil) ; That nil says use `font-lock-variable-name-face'; +;; ; t would mean `font-lock-function-name-face'. ;; (progn ;; (c-put-char-property (match-beginning 0) 'c-type ;; 'c-decl-id-start)