1" Vim syntax file 2" Language: Valgrind Memory Debugger Output 3" Maintainer: Roger Luethi <[email protected]> 4" Program URL: http://devel-home.kde.org/~sewardj/ 5" Last Change: 2019 Jul 24 6" 7" Notes: mostly based on strace.vim and xml.vim 8" 9" Contributors: Christoph Gysin <[email protected]> 10 11" Quit when a syntax file was already loaded 12if exists("b:current_syntax") 13 finish 14endif 15let s:keepcpo= &cpo 16set cpo&vim 17 18" Lines can be long with demangled c++ functions. 19setlocal synmaxcol=8000 20 21syn case match 22syn sync minlines=50 23 24syn match valgrindSpecLine "^[+-]\{2}\d\+[+-]\{2}.*$" 25 26syn region valgrindRegion 27 \ start=+^==\z(\d\+\)== \w.*$+ 28 \ skip=+^==\z1==\( \| .*\| \S.*\)$+ 29 \ end=+^+ 30 \ fold 31 \ keepend 32 \ contains=valgrindPidChunk,valgrindLine 33 34syn region valgrindPidChunk 35 \ start=+^==\zs+ 36 \ end=+\ze==+ 37 \ contained 38 \ contains=valgrindPid0,valgrindPid1,valgrindPid2,valgrindPid3,valgrindPid4,valgrindPid5,valgrindPid6,valgrindPid7,valgrindPid8,valgrindPid9 39 \ keepend 40 41syn match valgrindPid0 "\d\+0=" contained 42syn match valgrindPid1 "\d\+1=" contained 43syn match valgrindPid2 "\d\+2=" contained 44syn match valgrindPid3 "\d\+3=" contained 45syn match valgrindPid4 "\d\+4=" contained 46syn match valgrindPid5 "\d\+5=" contained 47syn match valgrindPid6 "\d\+6=" contained 48syn match valgrindPid7 "\d\+7=" contained 49syn match valgrindPid8 "\d\+8=" contained 50syn match valgrindPid9 "\d\+9=" contained 51 52syn region valgrindLine 53 \ start=+\(^==\d\+== \)\@<=+ 54 \ end=+$+ 55 \ keepend 56 \ contained 57 \ contains=valgrindOptions,valgrindMsg,valgrindLoc 58 59syn match valgrindOptions "[ ]\{3}-.*$" contained 60 61syn match valgrindMsg "\S.*$" contained 62 \ contains=valgrindError,valgrindNote,valgrindSummary 63syn match valgrindError "\(Invalid\|\d\+ errors\|.* definitely lost\).*$" contained 64syn match valgrindNote ".*still reachable.*" contained 65syn match valgrindSummary ".*SUMMARY:" contained 66 67syn match valgrindLoc "\s\+\(by\|at\|Address\).*$" contained 68 \ contains=valgrindAt,valgrindAddr,valgrindFunc,valgrindBin,valgrindSrc 69syn match valgrindAt "at\s\@=" contained 70syn match valgrindAddr "\W\zs0x\x\+" contained 71 72syn match valgrindFunc ": \zs\h[a-zA-Z0-9_:\[\]()<>&*+\-,=%!|^ @.]*\ze([^)]*)$" contained 73syn match valgrindBin "(\(with\)\=in \zs\S\+)\@=" contained 74syn match valgrindSrc "(\zs[^)]*:\d\+)\@=" contained 75 76" Define the default highlighting 77 78hi def link valgrindSpecLine Type 79"hi def link valgrindRegion Special 80 81hi def link valgrindPid0 Special 82hi def link valgrindPid1 Comment 83hi def link valgrindPid2 Type 84hi def link valgrindPid3 Constant 85hi def link valgrindPid4 Number 86hi def link valgrindPid5 Identifier 87hi def link valgrindPid6 Statement 88hi def link valgrindPid7 Error 89hi def link valgrindPid8 LineNr 90hi def link valgrindPid9 Normal 91"hi def link valgrindLine Special 92 93hi def link valgrindOptions Type 94"hi def link valgrindMsg Special 95"hi def link valgrindLoc Special 96 97hi def link valgrindError Special 98hi def link valgrindNote Comment 99hi def link valgrindSummary Type 100 101hi def link valgrindAt Special 102hi def link valgrindAddr Number 103hi def link valgrindFunc Type 104hi def link valgrindBin Comment 105hi def link valgrindSrc Statement 106 107let b:current_syntax = "valgrind" 108 109let &cpo = s:keepcpo 110unlet s:keepcpo 111