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