aboutsummaryrefslogtreecommitdiff
path: root/runtime/syntax/cpp.vim
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2026-09-22 08:51:54 +0800
committerzeertzjq <zeertzjq@outlook.com>2026-09-22 08:51:58 +0800
commit2f0876d0c8a43c70e33c8f2c0f98e4a7cf215604 (patch)
treee2e469d620d97a68c3021da2bd4728c8021b6de8 /runtime/syntax/cpp.vim
parentac24d56c5e617160844f11ef5faab65c89fe6cf9 (diff)
downloadrneovim-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.vim95
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"