| 
									
										
										
										
											2021-09-21 20:09:51 +02:00
										 |  |  | " Language:     gprof | 
					
						
							|  |  |  | " Maintainer:   Dominique Pelle <dominique.pelle@gmail.com> | 
					
						
							|  |  |  | " Contributors: Doug Kearns <dougkearns@gmail.com> | 
					
						
							|  |  |  | " Last Change:  2021 Sep 19 | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | " When cursor is on one line of the gprof call graph, | 
					
						
							|  |  |  | " calling this function jumps to this function in the call graph. | 
					
						
							|  |  |  | if exists("b:did_ftplugin") | 
					
						
							|  |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | let b:did_ftplugin=1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-21 20:09:51 +02:00
										 |  |  | func! <SID>GprofJumpToFunctionIndex() | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  |   let l:line = getline('.') | 
					
						
							|  |  |  |   if l:line =~ '[\d\+\]$' | 
					
						
							|  |  |  |     " We're in a line in the call graph. | 
					
						
							| 
									
										
										
										
											2013-06-12 21:29:15 +02:00
										 |  |  |     norm! $y% | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  |     call search('^' . escape(@", '[]'), 'sw') | 
					
						
							| 
									
										
										
										
											2013-06-12 21:29:15 +02:00
										 |  |  |     norm! zz | 
					
						
							| 
									
										
										
										
											2021-04-17 16:31:09 +02:00
										 |  |  |   elseif l:line =~ '^\(\s*[0-9\.]\+\)\{3}\s\+' | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  |     " We're in line in the flat profile. | 
					
						
							| 
									
										
										
										
											2013-06-12 21:29:15 +02:00
										 |  |  |     norm! 55|eby$ | 
					
						
							|  |  |  |     call search('^\[\d\+\].*\d\s\+' .  escape(@", '[]*.') . '\>', 'sW') | 
					
						
							|  |  |  |     norm! zz | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  |   endif | 
					
						
							| 
									
										
										
										
											2021-09-21 20:09:51 +02:00
										 |  |  | endfunc | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-21 20:09:51 +02:00
										 |  |  | if !exists("no_plugin_maps") && !exists("no_gprof_maps") | 
					
						
							|  |  |  |   " Pressing <C-]> on a line in the gprof flat profile or in | 
					
						
							|  |  |  |   " the call graph, jumps to the corresponding function inside | 
					
						
							|  |  |  |   " the flat profile. | 
					
						
							|  |  |  |   map <buffer> <silent> <C-]> :call <SID>GprofJumpToFunctionIndex()<CR> | 
					
						
							|  |  |  |   let b:undo_ftplugin = "silent! unmap <buffer> <C-]>" | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | " vim:sw=2 fdm=indent |