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