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