| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | " Language:    gprof | 
					
						
							|  |  |  | " Maintainer:  Dominique Pelle <dominique.pelle@gmail.com> | 
					
						
							| 
									
										
										
										
											2013-06-12 21:29:15 +02:00
										 |  |  | " Last Change: 2013 Jun 09 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | fun! <SID>GprofJumpToFunctionIndex() | 
					
						
							|  |  |  |   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 | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  |   elseif l:line =~ '^\(\s\+[0-9\.]\+\)\{3}\s\+' | 
					
						
							|  |  |  |     " 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 | 
					
						
							|  |  |  | endfun | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Pressing <C-]> on a line in the gprof flat profile or in | 
					
						
							|  |  |  | " the call graph, jumps to the corresponding function inside | 
					
						
							|  |  |  | " the flat profile. | 
					
						
							| 
									
										
										
										
											2013-06-12 21:29:15 +02:00
										 |  |  | map <buffer> <silent> <C-]> :call <SID>GprofJumpToFunctionIndex()<CR> | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | " vim:sw=2 fdm=indent |