runtime(c): classify type qualifiers, function specifiers and C23 attributes
Commit: https://github.com/vim/vim/commit/77b2376769a3f6b0dc21467a56986f3725fc270d Author: Yasuhiro Matsumoto <[email protected]> Date: Mon Jun 1 21:04:08 2026 +0000 runtime(c): classify type qualifiers, function specifiers and C23 attributes Move const, volatile, restrict and _Atomic to a new cTypeQualifier group and inline and _Noreturn to cFunctionSpec. Add the C23 standard attributes deprecated, fallthrough, maybe_unused, nodiscard, unsequenced and reproducible as cStandardAttribute, and reclassify the existing noreturn into the same group. The new groups link to cStorageClass, so the default highlighting and any existing cStorageClass override are unchanged, while allowing finer-grained customization. fixes: #19574 closes: #20368 Signed-off-by: Yasuhiro Matsumoto <[email protected]> Signed-off-by: Christian Brabandt <[email protected]> diff --git a/runtime/syntax/c.vim b/runtime/syntax/c.vim index 64bcd3e36..683810952 100644 --- a/runtime/syntax/c.vim +++ b/runtime/syntax/c.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: C " Maintainer: The Vim Project <https://github.com/vim/vim> -" Last Change: 2026 Jan 13 +" Last Change: 2026 Jun 01 " Former Maintainer: Bram Moolenaar <[email protected]> " Quit when a (custom) syntax file was already loaded @@ -278,9 +278,9 @@ if exists("c_gnu") syn keyword cOperator __alignof__ syn keyword cOperator typeof __typeof__ syn keyword cOperator __real__ __imag__ - syn keyword cStorageClass __attribute__ __const__ __extension__ - syn keyword cStorageClass inline __inline __inline__ - syn keyword cStorageClass __restrict__ __volatile__ __noreturn__ + syn keyword cStorageClass __attribute__ __extension__ + syn keyword cTypeQualifier __const__ __restrict__ __volatile__ + syn keyword cFunctionSpec inline __inline __inline__ __noreturn__ endif syn keyword cType int long short char void syn keyword cType signed unsigned float double @@ -314,9 +314,11 @@ endif syn keyword cTypedef typedef syn keyword cStructure struct union enum -syn keyword cStorageClass static register auto volatile extern const +syn keyword cStorageClass static register auto extern +syn keyword cTypeQualifier const volatile if !exists("c_no_c99") && !s:in_cpp_family - syn keyword cStorageClass inline restrict + syn keyword cFunctionSpec inline + syn keyword cTypeQualifier restrict endif if (s:ft ==# "c" && !exists("c_no_c23")) || (s:in_cpp_family && !exists("cpp_no_cpp11")) syn keyword cStorageClass constexpr @@ -324,11 +326,11 @@ endif if !exists("c_no_c11") syn keyword cStorageClass _Alignas alignas syn keyword cOperator _Alignof alignof - syn keyword cStorageClass _Atomic + syn keyword cTypeQualifier _Atomic syn keyword cOperator _Generic - syn keyword cStorageClass _Noreturn + syn keyword cFunctionSpec _Noreturn if !s:in_cpp_family - syn keyword cStorageClass noreturn + syn keyword cStandardAttribute noreturn endif syn keyword cOperator _Static_assert static_assert syn keyword cStorageClass _Thread_local thread_local @@ -352,6 +354,11 @@ if !exists("c_no_c11") syn keyword cType atomic_intmax_t atomic_uintmax_t endif +if !exists("c_no_c23") && !s:in_cpp_family + syn keyword cStandardAttribute deprecated fallthrough maybe_unused nodiscard + syn keyword cStandardAttribute unsequenced reproducible +endif + if (s:ft ==# "c" && !exists("c_no_c23")) || (s:in_cpp_family && !exists("cpp_no_cpp20")) syn keyword cType char8_t endif @@ -606,6 +613,9 @@ hi def link cOperator Operator hi def link cStructure Structure hi def link cTypedef Structure hi def link cStorageClass StorageClass +hi def link cTypeQualifier cStorageClass +hi def link cFunctionSpec cStorageClass +hi def link cStandardAttribute cStorageClass hi def link cInclude Include hi def link cPreProc PreProc hi def link cDefine Macro -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1wU9yR-000dkq-BE%40256bit.org.
