File emacs-cc-mode-custom-keywords.patch of Package emacs
diff --git a/cc-langs.el b/cc-langs.el.new
index 20de650..755ce57 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -2408,7 +2408,7 @@ If any of these also are on `c-type-list-kwds', `c-ref-list-kwds',
`c-<>-type-kwds', or `c-<>-arglist-kwds' then the associated clauses
will be handled."
t nil
- (c c++) '("extern" "inline" "register" "static")
+ (c c++) (append '("extern" "inline" "register" "static") c-custom-modifier-kwds)
c (append '("auto") (c-lang-const c-modifier-kwds))
c++ (append '("constexpr" "explicit" "friend" "mutable" "template"
"thread_local" "virtual")
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 1b44c75..7ba6c01 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -127,6 +127,7 @@
(cc-require 'cc-defs)
(cc-require 'cc-vars)
+(cc-require 'cc-custom-keywords)
;; This file is not always loaded. See note above.
@@ -2482,10 +2483,24 @@ one of `c-type-list-kwds', `c-ref-list-kwds',
;; like this usually is wrapped in project specific macros. (It'd
;; of course be even better if we could cope without knowing this.)
t nil
- (c c++) '(;; GCC extension.
+ (c c++) (append '(;; GCC extension.
"__attribute__"
;; MSVC extension.
- "__declspec"))
+ "__declspec"
+ "__cdecl"
+ "__stdcall"
+ "__fastcall"
+ "__thiscall"
+ "__always_inline"
+ "__forceinline"
+ "__noinline"
+ "__deprecated"
+ "__may_alias"
+ "__noreturn"
+ "__restrict"
+ "alignas"
+ )
+ c-custom-hangon-kwds))
(c-lang-defconst c-decl-hangon-key
;; Adorned regexp matching `c-decl-hangon-kwds'.
@@ -2705,7 +2713,8 @@ regexp if `c-colon-type-list-kwds' isn't nil."
"Keywords that may be followed by a parenthesis expression that doesn't
contain type identifiers."
t nil
- (c c++) '(;; GCC extension.
+ (c c++) '("alignas"
+ ;; GCC extension.
"__attribute__"
;; MSVC extension.
"__declspec")
@@ -2719,7 +2728,7 @@ contain type identifiers."
"Keywords that may be followed by a parenthesis expression containing
type identifiers separated by arbitrary tokens."
t nil
- c++ '("throw")
+ c++ '("throw" "alignas")
objc '("@defs")
idl '("switch")
pike '("array" "function" "int" "mapping" "multiset" "object" "program"))