111 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " 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
 |