brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · 0544b50 Raw
43 lines · plain
1" Enable folding for ftrace function_graph traces.2"3" To use, :source this file while viewing a function_graph trace, or use vim's4" -S option to load from the command-line together with a trace.  You can then5" use the usual vim fold commands, such as "za", to open and close nested6" functions.  While closed, a fold will show the total time taken for a call,7" as would normally appear on the line with the closing brace.  Folded8" functions will not include finish_task_switch(), so folding should remain9" relatively sane even through a context switch.10"11" Note that this will almost certainly only work well with a12" single-CPU trace (e.g. trace-cmd report --cpu 1).13 14function! FunctionGraphFoldExpr(lnum)15  let line = getline(a:lnum)16  if line[-1:] == '{'17    if line =~ 'finish_task_switch() {$'18      return '>1'19    endif20    return 'a1'21  elseif line[-1:] == '}'22    return 's1'23  else24    return '='25  endif26endfunction27 28function! FunctionGraphFoldText()29  let s = split(getline(v:foldstart), '|', 1)30  if getline(v:foldend+1) =~ 'finish_task_switch() {$'31    let s[2] = ' task switch  '32  else33    let e = split(getline(v:foldend), '|', 1)34    let s[2] = e[2]35  endif36  return join(s, '|')37endfunction38 39setlocal foldexpr=FunctionGraphFoldExpr(v:lnum)40setlocal foldtext=FunctionGraphFoldText()41setlocal foldcolumn=1242setlocal foldmethod=expr43