diff options
| author | zeertzjq <zeertzjq@outlook.com> | 2026-09-22 08:51:54 +0800 |
|---|---|---|
| committer | zeertzjq <zeertzjq@outlook.com> | 2026-09-22 08:51:58 +0800 |
| commit | 2f0876d0c8a43c70e33c8f2c0f98e4a7cf215604 (patch) | |
| tree | e2e469d620d97a68c3021da2bd4728c8021b6de8 /runtime/syntax/cpp.vim | |
| parent | ac24d56c5e617160844f11ef5faab65c89fe6cf9 (diff) | |
| download | rneovim-2f0876d0c8a43c70e33c8f2c0f98e4a7cf215604.tar.gz rneovim-2f0876d0c8a43c70e33c8f2c0f98e4a7cf215604.tar.bz2 rneovim-2f0876d0c8a43c70e33c8f2c0f98e4a7cf215604.zip | |
vim-patch:6fd4f6c: runtime(cpp): Update syntax, cleanup
- Prefer non-capturing groups in patterns - idiomatic.
- Remove changelog entries - there is no maintainer to inform.
- Normalise whitespace use.
closes: vim/vim#21348
https://github.com/vim/vim/commit/6fd4f6cda1602fc0fedcdf4af64f528a3cad9273
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Diffstat (limited to 'runtime/syntax/cpp.vim')
| -rw-r--r-- | runtime/syntax/cpp.vim | 95 |
1 files changed, 44 insertions, 51 deletions
diff --git a/runtime/syntax/cpp.vim b/runtime/syntax/cpp.vim index 78d3f217ca..03cd8acc29 100644 --- a/runtime/syntax/cpp.vim +++ b/runtime/syntax/cpp.vim @@ -1,16 +1,9 @@ " Vim syntax file -" Language: C++ +" Language: C++ " Maintainer: This runtime file is looking for a new maintainer. -" Previous Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) +" Previous Maintainers: vim-jp (https://github.com/vim-jp/vim-cpp) " Ken Shan <ccshan@post.harvard.edu> -" Last Change: 2024 May 04 -" 2024 May 04 by Vim Project fix digit separator in octals and floats -" 2026 Jan 06 by Vim Project orphaning announcement -" 2026 Jan 08 by Vim Project highlight capital letter prefixes for numbers -" 2026 May 29 by Vim Project add C++23 stdfloat types (#16498) -" 2026 Sep 14 by Vim Project support number suffix uz for C++23 (#21281) -" 2026 Sep 14 by Vim Project fix number patterns to avoid catastrophic -" backtracking under re=1 +" Last Change: 2026 Sep 16 " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -33,8 +26,8 @@ syn keyword cppType bool wchar_t syn keyword cppExceptions throw try catch syn keyword cppOperator operator typeid syn keyword cppOperator and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq -syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1 -syn match cppCast "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$" +syn match cppCast "\<\%(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1 +syn match cppCast "\<\%(const\|static\|dynamic\|reinterpret\)_cast\s*$" syn keyword cppStorageClass mutable syn keyword cppStructure class typename template namespace syn keyword cppBoolean true false @@ -53,31 +46,31 @@ if !exists("cpp_no_cpp11") syn keyword cppConstant ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_SHORT_LOCK_FREE syn keyword cppConstant ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE syn keyword cppConstant ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE - syn region cppRawString matchgroup=cppRawStringDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"\(sv\|s\|_[_a-zA-Z][_a-zA-Z0-9]*\)\=+ contains=@Spell - syn match cppCast "\<\(const\|static\|dynamic\)_pointer_cast\s*<"me=e-1 - syn match cppCast "\<\(const\|static\|dynamic\)_pointer_cast\s*$" + syn region cppRawString matchgroup=cppRawStringDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"\%(sv\|s\|_[_a-zA-Z][_a-zA-Z0-9]*\)\=+ contains=@Spell + syn match cppCast "\<\%(const\|static\|dynamic\)_pointer_cast\s*<"me=e-1 + syn match cppCast "\<\%(const\|static\|dynamic\)_pointer_cast\s*$" endif " C++ 14 extensions if !exists("cpp_no_cpp14") syn match cppNumbers display transparent "\<\d\|\.\d" contains=cppNumber,cppFloat - syn match cppNumber display contained "\<0\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppNumber display contained "\<[1-9]\d*\('\d\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppNumber display contained "\<0\o*\('\o\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppNumber display contained "\<0[Bb][01]\+\('[01]\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppNumber display contained "\<0[Xx]\x\+\('\x\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppFloat display contained "\<\d\+\('\d\+\)*\.\(\d\+\('\d\+\)*\)\=\([Ee][-+]\=\d\+\)\=\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppFloat display contained "\.\d\+\('\d\+\)*\([Ee][-+]\=\d\+\)\=\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppFloat display contained "\<\d\+[Ee][-+]\=\d\+\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn region cppString start=+\(L\|u\|u8\|U\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"\(sv\|s\|_\i*\)\=+ end='$' contains=cSpecial,cFormat,@Spell + syn match cppNumber display contained "\<0\%([Uu]\=\%([Ll]\|LL\|ll\)\|\%([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppNumber display contained "\<[1-9]\d*\%('\d\+\)*\%([Uu]\=\%([Ll]\|LL\|ll\)\|\%([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppNumber display contained "\<0\o*\%('\o\+\)*\%([Uu]\=\%([Ll]\|LL\|ll\)\|\%([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppNumber display contained "\<0[Bb][01]\+\%('[01]\+\)*\%([Uu]\=\%([Ll]\|LL\|ll\)\|\%([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppNumber display contained "\<0[Xx]\x\+\%('\x\+\)*\%([Uu]\=\%([Ll]\|LL\|ll\)\|\%([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppFloat display contained "\<\d\+\%('\d\+\)*\.\%(\d\+\%('\d\+\)*\)\=\%([Ee][-+]\=\d\+\)\=\%([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppFloat display contained "\.\d\+\%('\d\+\)*\%([Ee][-+]\=\d\+\)\=\%([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppFloat display contained "\<\d\+[Ee][-+]\=\d\+\%([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn region cppString start=+\%(L\|u\|u8\|U\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"\%(sv\|s\|_\i*\)\=+ end='$' contains=cSpecial,cFormat,@Spell endif " C++ 17 extensions if !exists("cpp_no_cpp17") syn match cppCast "\<reinterpret_pointer_cast\s*<"me=e-1 syn match cppCast "\<reinterpret_pointer_cast\s*$" - syn match cppFloat display contained "\<0[Xx]\(\x\+\('\x\+\)*\)\=\.\x\+\('\x\+\)*[Pp][-+]\=\d\+\('\d\+\)*\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppFloat display contained "\<0[Xx]\x\+\('\x\+\)*\.\=[Pp][-+]\=\d\+\('\d\+\)*\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppFloat display contained "\<0[Xx]\%(\x\+\%('\x\+\)*\)\=\.\x\+\%('\x\+\)*[Pp][-+]\=\d\+\%('\d\+\)*\%([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppFloat display contained "\<0[Xx]\x\+\%('\x\+\)*\.\=[Pp][-+]\=\d\+\%('\d\+\)*\%([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" " TODO: push this up to c.vim if/when supported in C23 syn match cppCharacter "u8'[^\\]'" @@ -96,11 +89,11 @@ endif " C++ 20 extensions if !exists("cpp_no_cpp20") - syn match cppNumber display contained "\<0\(y\|d\)\>" - syn match cppNumber display contained "\<[1-9]\d*\('\d\+\)*\(y\|d\)\>" - syn match cppNumber display contained "\<0\o\+\(y\|d\)\>" - syn match cppNumber display contained "\<0[Bb][01]\+\('[01]\+\)*\(y\|d\)\>" - syn match cppNumber display contained "\<0[Xx]\x\+\('\x\+\)*\(y\|d\)\>" + syn match cppNumber display contained "\<0\%(y\|d\)\>" + syn match cppNumber display contained "\<[1-9]\d*\%('\d\+\)*\%(y\|d\)\>" + syn match cppNumber display contained "\<0\o\+\%(y\|d\)\>" + syn match cppNumber display contained "\<0[Bb][01]\+\%('[01]\+\)*\%(y\|d\)\>" + syn match cppNumber display contained "\<0[Xx]\x\+\%('\x\+\)*\%(y\|d\)\>" syn keyword cppStatement co_await co_return co_yield requires syn keyword cppStorageClass consteval constinit syn keyword cppStructure concept @@ -110,11 +103,11 @@ endif " C++ 23 extensions if !exists("cpp_no_cpp23") - syn match cppNumber display contained "\<0\([Zz][Uu]\=\|[Uu][Zz]\)\>" - syn match cppNumber display contained "\<[1-9]\d*\('\d\+\)*\([Zz][Uu]\=\|[Uu][Zz]\)\>" - syn match cppNumber display contained "\<0\o*\('\o\+\)*\([Zz][Uu]\=\|[Uu][Zz]\)\>" - syn match cppNumber display contained "\<0[Bb][01]\+\('[01]\+\)*\([Zz][Uu]\=\|[Uu][Zz]\)\>" - syn match cppNumber display contained "\<0[Xx]\x\+\('\x\+\)*\([Zz][Uu]\=\|[Uu][Zz]\)\>" + syn match cppNumber display contained "\<0\%([Zz][Uu]\=\|[Uu][Zz]\)\>" + syn match cppNumber display contained "\<[1-9]\d*\%('\d\+\)*\%([Zz][Uu]\=\|[Uu][Zz]\)\>" + syn match cppNumber display contained "\<0\o*\%('\o\+\)*\%([Zz][Uu]\=\|[Uu][Zz]\)\>" + syn match cppNumber display contained "\<0[Bb][01]\+\%('[01]\+\)*\%([Zz][Uu]\=\|[Uu][Zz]\)\>" + syn match cppNumber display contained "\<0[Xx]\x\+\%('\x\+\)*\%([Zz][Uu]\=\|[Uu][Zz]\)\>" syn match cppFloat display contained "\<\d\+\%('\d\+\)*\.\%(\d\+\%('\d\+\)*\)\=\%([Ee][-+]\=\d\+\%('\d\+\)*\)\=\%([Ff]\%(16\|32\|64\|128\)\|\%(BF\|bf\)16\)\>" syn match cppFloat display contained "\.\d\+\%('\d\+\)*\%([Ee][-+]\=\d\+\%('\d\+\)*\)\=\%([Ff]\%(16\|32\|64\|128\)\|\%(BF\|bf\)16\)\=\>" syn match cppFloat display contained "\<0[Xx]\%(\x\+\%('\x\+\)*\)\=\.\x\+\%('\x\+\)*[Pp][-+]\=\d\+\%('\d\+\)*\%([Ff]\%(16\|32\|64\|128\)\|\%(BF\|bf\)16\)\=\>" @@ -135,29 +128,29 @@ endif syn match cppMinMax "[<>]?" " Default highlighting -hi def link cppAccess cppStatement -hi def link cppCast cppStatement +hi def link cppAccess cppStatement +hi def link cppCast cppStatement hi def link cppExceptions Exception -hi def link cppOperator Operator +hi def link cppOperator Operator hi def link cppStatement Statement -hi def link cppModifier Type -hi def link cppType Type -hi def link cppStorageClass StorageClass +hi def link cppModifier Type +hi def link cppType Type +hi def link cppStorageClass StorageClass hi def link cppStructure Structure -hi def link cppBoolean Boolean +hi def link cppBoolean Boolean hi def link cppCharacter cCharacter hi def link cppSpecialCharacter cSpecialCharacter hi def link cppSpecialError cSpecialError -hi def link cppConstant Constant +hi def link cppConstant Constant hi def link cppRawStringDelimiter Delimiter hi def link cppRawString String -hi def link cppString String -hi def link cppNumber Number -hi def link cppFloat Number -hi def link cppModule Include -hi def link cppAttributeBracket Special -hi def link cppReflect Operator -hi def link cppSpliceBracket Special +hi def link cppString String +hi def link cppNumber Number +hi def link cppFloat Number +hi def link cppModule Include +hi def link cppAttributeBracket Special +hi def link cppReflect Operator +hi def link cppSpliceBracket Special let b:current_syntax = "cpp" |