42 lines · 1.3 KB · Text
RawDownload
" Enable folding for ftrace function_graph traces."" To use, :source this file while viewing a function_graph trace, or use vim's" -S option to load from the command-line together with a trace.  You can then" use the usual vim fold commands, such as "za", to open and close nested" functions.  While closed, a fold will show the total time taken for a call," as would normally appear on the line with the closing brace.  Folded" functions will not include finish_task_switch(), so folding should remain" relatively sane even through a context switch."" Note that this will almost certainly only work well with a" single-CPU trace (e.g. trace-cmd report --cpu 1). function! FunctionGraphFoldExpr(lnum)  let line = getline(a:lnum)  if line[-1:] == '{'    if line =~ 'finish_task_switch() {$'      return '>1'    endif    return 'a1'  elseif line[-1:] == '}'    return 's1'  else    return '='  endifendfunction function! FunctionGraphFoldText()  let s = split(getline(v:foldstart), '|', 1)  if getline(v:foldend+1) =~ 'finish_task_switch() {$'    let s[2] = ' task switch  '  else    let e = split(getline(v:foldend), '|', 1)    let s[2] = e[2]  endif  return join(s, '|')endfunction setlocal foldexpr=FunctionGraphFoldExpr(v:lnum)setlocal foldtext=FunctionGraphFoldText()setlocal foldcolumn=12setlocal foldmethod=expr