summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/gprof.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/gprof.vim')
-rw-r--r--runtime/syntax/gprof.vim70
1 files changed, 70 insertions, 0 deletions
diff --git a/runtime/syntax/gprof.vim b/runtime/syntax/gprof.vim
new file mode 100644
index 0000000..d2c5cb4
--- /dev/null
+++ b/runtime/syntax/gprof.vim
@@ -0,0 +1,70 @@
+" Vim syntax file
+" Language: Syntax for Gprof Output
+" Maintainer: Dominique Pelle <dominique.pelle@gmail.com>
+" Last Change: 2021 Sep 19
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+syn spell notoplevel
+syn case match
+syn sync minlines=100
+
+" Flat profile
+syn match gprofFlatProfileTitle
+ \ "^Flat profile:$"
+syn region gprofFlatProfileHeader
+ \ start="^Each sample counts as.*"
+ \ end="^ time.*name\s*$"
+syn region gprofFlatProfileTrailer
+ \ start="^\s*%\s\+the percentage of the total running time.*"
+ \ end="^\s*the gprof listing if it were to be printed\."
+
+" Call graph
+syn match gprofCallGraphTitle "Call graph (explanation follows)"
+syn region gprofCallGraphHeader
+ \ start="^granularity: each sample hit covers.*"
+ \ end="^\s*index % time\s\+self\s\+children\s\+called\s\+name$"
+syn match gprofCallGraphFunction "\<\(\d\+\.\d\+\s\+\)\{3}\([0-9+]\+\)\?\s\+[a-zA-Z_<].*\ze\["
+syn match gprofCallGraphSeparator "^-\+$"
+syn region gprofCallGraphTrailer
+ \ start="This table describes the call tree of the program"
+ \ end="^\s*the cycle\.$"
+
+" Index
+syn region gprofIndex
+ \ start="^Index by function name$"
+ \ end="\%$"
+
+syn match gprofIndexFunctionTitle "^Index by function name$"
+
+syn match gprofNumbers "^\s*[0-9 ./+]\+"
+syn match gprofFunctionIndex "\[\d\+\]"
+syn match gprofSpecial "<\(spontaneous\|cycle \d\+\)>"
+
+hi def link gprofFlatProfileTitle Title
+hi def link gprofFlatProfileHeader Comment
+hi def link gprofFlatProfileFunction Number
+hi def link gprofFlatProfileTrailer Comment
+
+hi def link gprofCallGraphTitle Title
+hi def link gprofCallGraphHeader Comment
+hi def link gprofFlatProfileFunction Number
+hi def link gprofCallGraphFunction Special
+hi def link gprofCallGraphTrailer Comment
+hi def link gprofCallGraphSeparator Label
+
+hi def link gprofFunctionIndex Label
+hi def link gprofSpecial SpecialKey
+hi def link gprofNumbers Number
+
+hi def link gprofIndexFunctionTitle Title
+
+let b:current_syntax = "gprof"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo