summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/valgrind.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/valgrind.vim')
-rw-r--r--runtime/syntax/valgrind.vim110
1 files changed, 110 insertions, 0 deletions
diff --git a/runtime/syntax/valgrind.vim b/runtime/syntax/valgrind.vim
new file mode 100644
index 0000000..a9b4a8c
--- /dev/null
+++ b/runtime/syntax/valgrind.vim
@@ -0,0 +1,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