(setf (nth 1 (assoc 'gnu compilation-error-regexp-alist-alist))
(replace-regexp-in-string (regexp-quote " [^-/\n]\\|") ""
(nth 1 (assoc 'gnu compilation-error-regexp-alist-alist)) t t))
+
+(defun debug-compilation-error-regexps ()
+ (interactive)
+ (save-excursion
+ (save-restriction
+ (beginning-of-line)
+ (narrow-to-region (point) (save-excursion (forward-line 1) (point)))
+ (let ((match (loop for key in compilation-error-regexp-alist
+ for elt = (assoc key compilation-error-regexp-alist-alist)
+ if (and elt (re-search-forward (cadr elt) nil t))
+ thereis key)))
+ (if match
+ (message "compilation-error-regexp-alist-alist key: %s" match)
+ (error "no error line at point"))))))
+
+(defun c++-mode-update-font-lock-keywords ()
+ (font-lock-add-keywords
+ nil '(;; complete some fundamental keywords
+ ;; add the new C++11 keywords
+ ("\\<\\(alignof\\|alignas\\|constexpr\\|decltype\\|noexcept\\|nullptr\\|static_assert\\|thread_local\\|override\\|final\\)\\>" . font-lock-keyword-face)
+ ("\\<\\(char[0-9]+_t\\)\\>" . font-lock-keyword-face)
+ ;; hexadecimal numbers
+ ("\\<0[xX][0-9A-Fa-f]+\\>" . font-lock-constant-face)
+ ;; integer/float/scientific numbers
+ ("\\<[\\-+]*[0-9]*\\.?[0-9]+\\([ulUL]+\\|[eE][\\-+]?[0-9]+\\)?\\>" . font-lock-constant-face))))
+
+(add-hook 'c++-mode-hook 'c++-mode-update-font-lock-keywords t)