xref: /vim-8.2.3635/runtime/ftplugin/gprof.vim (revision 34cc7d8c)
1543b7ef7SBram Moolenaar" Language:     gprof
2543b7ef7SBram Moolenaar" Maintainer:   Dominique Pelle <[email protected]>
3*34cc7d8cSBram Moolenaar" Contributors: Doug Kearns <[email protected]>
4*34cc7d8cSBram Moolenaar" Last Change:  2021 Sep 19
5543b7ef7SBram Moolenaar
6543b7ef7SBram Moolenaar" When cursor is on one line of the gprof call graph,
7543b7ef7SBram Moolenaar" calling this function jumps to this function in the call graph.
8543b7ef7SBram Moolenaarif exists("b:did_ftplugin")
9543b7ef7SBram Moolenaar  finish
10543b7ef7SBram Moolenaarendif
11543b7ef7SBram Moolenaarlet b:did_ftplugin=1
12543b7ef7SBram Moolenaar
13*34cc7d8cSBram Moolenaarfunc! <SID>GprofJumpToFunctionIndex()
14543b7ef7SBram Moolenaar  let l:line = getline('.')
15543b7ef7SBram Moolenaar  if l:line =~ '[\d\+\]$'
16543b7ef7SBram Moolenaar    " We're in a line in the call graph.
17ec7944aaSBram Moolenaar    norm! $y%
18543b7ef7SBram Moolenaar    call search('^' . escape(@", '[]'), 'sw')
19ec7944aaSBram Moolenaar    norm! zz
2056994d21SBram Moolenaar  elseif l:line =~ '^\(\s*[0-9\.]\+\)\{3}\s\+'
21543b7ef7SBram Moolenaar    " We're in line in the flat profile.
22ec7944aaSBram Moolenaar    norm! 55|eby$
23ec7944aaSBram Moolenaar    call search('^\[\d\+\].*\d\s\+' .  escape(@", '[]*.') . '\>', 'sW')
24ec7944aaSBram Moolenaar    norm! zz
25543b7ef7SBram Moolenaar  endif
26*34cc7d8cSBram Moolenaarendfunc
27543b7ef7SBram Moolenaar
28*34cc7d8cSBram Moolenaarif !exists("no_plugin_maps") && !exists("no_gprof_maps")
29543b7ef7SBram Moolenaar  " Pressing <C-]> on a line in the gprof flat profile or in
30543b7ef7SBram Moolenaar  " the call graph, jumps to the corresponding function inside
31543b7ef7SBram Moolenaar  " the flat profile.
32ec7944aaSBram Moolenaar  map <buffer> <silent> <C-]> :call <SID>GprofJumpToFunctionIndex()<CR>
33*34cc7d8cSBram Moolenaar  let b:undo_ftplugin = "silent! unmap <buffer> <C-]>"
34*34cc7d8cSBram Moolenaarendif
35543b7ef7SBram Moolenaar
36543b7ef7SBram Moolenaar" vim:sw=2 fdm=indent
37