mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-11 15:37:29 +02:00
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 <mattn.jp@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
64982d6010
commit
77b2376769
+19
-9
@@ -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 <Bram@vim.org>
|
||||
|
||||
" 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
|
||||
|
||||
Reference in New Issue
Block a user