Skip to content

Instantly share code, notes, and snippets.

@bstaletic
Created November 29, 2019 18:38
Show Gist options
  • Save bstaletic/d18eb1dba8ee28def401874d5184cc3a to your computer and use it in GitHub Desktop.
Save bstaletic/d18eb1dba8ee28def401874d5184cc3a to your computer and use it in GitHub Desktop.
FUNCTION traces#cmdl_leave()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:762
Called 2 times
Total time: 0.001325
Self time: 0.001130
count total (s) self (s)
2 0.000050 let s:nr = bufnr('%')
2 0.000046 if !exists('s:buf[s:nr]')
return
2 0.000004 endif
2 0.000270 0.000075 call s:restore_undo_history()
" highlights
2 0.000033 if exists('s:win[win_getid()]')
if &scrolloff !=# 0
let scrolloff = &scrolloff
noautocmd let &scrolloff = 0
endif
let cur_win = win_getid()
let alt_win = win_getid(winnr('#'))
let windows = filter(win_findbuf(s:nr), {_, val -> win_id2win(val)})
for id in windows
noautocmd call win_gotoid(id)
if exists('s:win[id]')
if exists('s:win[id].hlight')
for group in keys(s:win[id].hlight)
if s:win[id].hlight[group].index !=# - 1
silent! call matchdelete(s:win[id].hlight[group].index)
endif
endfor
endif
if exists('s:win[id].options')
for option in keys(s:win[id].options)
execute 'noautocmd let &' . option . '="' . s:win[id].options[option] . '"'
endfor
endif
unlet s:win[id]
endif
endfor
if bufname('%') !=# '[Command Line]'
noautocmd call win_gotoid(alt_win)
noautocmd call win_gotoid(cur_win)
endif
if exists('scrolloff')
noautocmd let &scrolloff = scrolloff
endif
2 0.000006 endif
2 0.000030 if &hlsearch !=# s:buf[s:nr].hlsearch
noautocmd let &hlsearch = s:buf[s:nr].hlsearch
2 0.000005 endif
2 0.000020 if &cmdheight !=# s:buf[s:nr].cmdheight
noautocmd let &cmdheight = s:buf[s:nr].cmdheight
2 0.000006 endif
2 0.000046 if winsaveview() !=# s:buf[s:nr].view
call winrestview(s:buf[s:nr].view)
2 0.000004 endif
2 0.000040 unlet s:buf[s:nr]
FUNCTION <SNR>42_is_file_buffer()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:60
Called 1 time
Total time: 0.000034
Self time: 0.000034
count total (s) self (s)
1 0.000031 return empty(getbufvar(a:bufnr, '&buftype'))
FUNCTION gitgutter#async#execute()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/async.vim:14
Called 1 time
Total time: 0.001526
Self time: 0.001458
count total (s) self (s)
1 0.000072 0.000014 call gitgutter#debug#log('[async] '.a:cmd)
1 0.000008 let options = { 'stdoutbuffer': [], 'buffer': a:bufnr, 'handler': a:handler }
1 0.000023 0.000013 let command = s:build_command(a:cmd)
1 0.000006 if has('nvim')
call jobstart(command, extend(options, { 'on_stdout': function('s:on_stdout_nvim'), 'on_stderr': function('s:on_stderr_nvim'), 'on_exit': function('s:on_exit_nvim') }))
1 0.000001 else
1 0.001385 call job_start(command, { 'out_cb': function('s:on_stdout_vim', options), 'err_cb': function('s:on_stderr_vim', options), 'close_cb': function('s:on_exit_vim', options) })
1 0.000010 endif
FUNCTION <SNR>81_remove_signs()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/sign.vim:154
Called 1 time
Total time: 0.000146
Self time: 0.000092
count total (s) self (s)
1 0.000053 0.000025 if a:all_signs && s:supports_star && empty(gitgutter#utility#getbufvar(a:bufnr, 'other_signs'))
1 0.000049 0.000023 let dummy_sign_present = gitgutter#utility#getbufvar(a:bufnr, 'dummy_sign')
1 0.000016 execute "sign unplace * buffer=" . a:bufnr
1 0.000004 if dummy_sign_present
execute "sign place" s:dummy_sign_id "line=" . 9999 "name=GitGutterDummy buffer=" . a:bufnr
1 0.000002 endif
else
for id in a:sign_ids
execute "sign unplace" id
endfor
1 0.000002 endif
FUNCTION <SNR>42_winshell()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:65
Called 1 time
Total time: 0.000033
Self time: 0.000033
count total (s) self (s)
1 0.000031 return &shell =~? 'cmd' || exists('+shellslash') && !&shellslash
FUNCTION <SNR>42_unc_path()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:168
Called 1 time
Total time: 0.000232
Self time: 0.000044
count total (s) self (s)
1 0.000231 0.000043 return s:abs_path(a:bufnr, 0) =~ '^\\\\'
FUNCTION <SNR>77_Complete()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:897
Called 76 times
Total time: 0.011293
Self time: 0.002853
count total (s) self (s)
" Do not call user's completion function if the start column is after the
" current column or if there are no candidates. Close the completion menu
" instead. This avoids keeping the user in completion mode.
76 0.000448 if s:completion.completion_start_column > s:completion.column || empty( s:completion.completions )
30 0.000575 0.000323 call s:CloseCompletionMenu()
46 0.000055 else
" <c-x><c-u> invokes the user's completion function (which we have set to
" youcompleteme#CompleteFunc), and <c-p> tells Vim to select the previous
" completion candidate. This is necessary because by default, Vim selects
" the first candidate when completion is invoked, and selecting a candidate
" automatically replaces the current text with it. Calling <c-p> forces Vim
" to deselect the first candidate and in turn preserve the user's current
" text until he explicitly chooses to replace it with a completion.
46 0.000930 0.000539 call s:SendKeys( "\<C-X>\<C-U>\<C-P>" )
76 0.000074 endif
" Displaying or hiding the PUM might mean we need to hide the sig help
76 0.008545 0.000748 call s:UpdateSignatureHelp()
FUNCTION slash#callBlink()
Defined: ~/.vim/autoload/slash.vim:41
Called 2 times
Total time: 0.000273
Self time: 0.000273
count total (s) self (s)
2 0.000103 if getcmdtype() == '/' || getcmdtype() == '?'
return "\<cr>:call slash#blink(3, 100)\<cr>"
2 0.000015 else
2 0.000028 if &grepprg != 'grep'
2 0.000051 return "\<C-\>eslash#SubstituteWordBoundaries()\<cr>\<cr>"
endif
return "\<cr>"
endif
FUNCTION neomake#GetCurrentErrorMsg()
Defined: ~/.vim/pack/bundle/start/neomake/autoload/neomake.vim:2632
Called 18 times
Total time: 0.003250
Self time: 0.003250
count total (s) self (s)
18 0.000325 let buf = bufnr('%')
18 0.000212 let ln = line('.')
18 0.000121 let ln_errors = []
54 0.000373 for maker_type in ['file', 'project']
36 0.000790 let buf_errors = get(s:current_errors[maker_type], buf, {})
36 0.000551 let ln_errors += get(buf_errors, ln, [])
54 0.000205 endfor
18 0.000121 if empty(ln_errors)
18 0.000081 return ''
endif
if len(ln_errors) > 1
let ln_errors = copy(ln_errors)
call sort(ln_errors, function('neomake#utils#sort_by_col'))
endif
let entry = ln_errors[0]
let r = entry.maker_name . ': ' . entry.text
let suffix = entry.type . (entry.nr != -1 ? entry.nr : '')
if !empty(suffix)
let r .= ' ('.suffix.')'
endif
return r
FUNCTION <SNR>77_SendKeys()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:627
Called 65 times
Total time: 0.000915
Self time: 0.000915
count total (s) self (s)
" By default keys are added to the end of the typeahead buffer. If there are
" already keys in the buffer, they will be processed first and may change the
" state that our keys combination was sent for (e.g. <C-X><C-U><C-P> in normal
" mode instead of insert mode or <C-e> outside of completion mode). We avoid
" that by inserting the keys at the start of the typeahead buffer with the 'i'
" option. Also, we don't want the keys to be remapped to something else so we
" add the 'n' option.
65 0.000611 call feedkeys( a:keys, 'in' )
FUNCTION <SNR>72_save_last_seen_change()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/diff.vim:352
Called 1 time
Total time: 0.000067
Self time: 0.000027
count total (s) self (s)
1 0.000066 0.000026 call gitgutter#utility#setbufvar(a:bufnr, 'tick', getbufvar(a:bufnr, 'changedtick'))
FUNCTION <SNR>77_ShouldUseSignatureHelp()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:865
Called 2357 times
Total time: 0.520391
Self time: 0.520391
count total (s) self (s)
2357 0.510175 return py3eval( 'vimsupport.VimSupportsPopupWindows()' )
FUNCTION <SNR>49_t_stop()
Defined: ~/.vim/pack/bundle/start/traces/plugin/traces.vim:46
Called 2 times
Total time: 0.001359
Self time: 0.001359
count total (s) self (s)
2 0.000029 if exists('s:previous_cmdl')
unlet s:previous_cmdl
2 0.000008 endif
2 0.000019 if exists('s:track_cmdl_timer')
2 0.000020 call timer_stop(s:track_cmdl_timer)
2 0.000014 unlet s:track_cmdl_timer
2 0.000005 endif
2 0.000017 if exists('s:start_init_timer')
2 0.000156 call timer_stop(s:start_init_timer)
2 0.000012 unlet s:start_init_timer
2 0.000005 endif
2 0.000024 augroup traces_augroup_cmdline_changed
2 0.000998 autocmd!
2 0.000012 augroup END
FUNCTION <SNR>77_RequestSignatureHelp()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:870
Called 38 times
Total time: 0.022343
Self time: 0.014633
count total (s) self (s)
38 0.003777 0.000590 if !s:ShouldUseSignatureHelp()
return
38 0.000049 endif
38 0.012974 py3 ycm_state.SendSignatureHelpRequest()
38 0.005320 0.000797 call s:PollSignatureHelp()
FUNCTION <SNR>42_not_git_dir()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:56
Called 1 time
Total time: 0.000438
Self time: 0.000063
count total (s) self (s)
1 0.000436 0.000061 return s:dir(a:bufnr) !~ '[/\\]\.git\($\|[/\\]\)'
FUNCTION <SNR>77_ClosePreviewWindowIfNeeded()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:766
Called 2 times
Total time: 0.000103
Self time: 0.000103
count total (s) self (s)
2 0.000032 let current_buffer_name = bufname('')
" We don't want to try to close the preview window in special buffers like
" "[Command Line]"; if we do, Vim goes bonkers. Special buffers always start
" with '['.
2 0.000031 if current_buffer_name[ 0 ] == '['
return
2 0.000006 endif
" This command does the actual closing of the preview window. If no preview
" window is shown, nothing happens.
2 0.000006 pclose
FUNCTION gitgutter#utility#cd_cmd()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:163
Called 1 time
Total time: 0.000533
Self time: 0.000069
count total (s) self (s)
1 0.000404 0.000051 let cd = s:unc_path(a:bufnr) ? 'pushd' : (s:windows() ? 'cd /d' : 'cd')
1 0.000127 0.000016 return cd.' '.s:dir(a:bufnr).' && '.a:cmd
FUNCTION neomake#CursorMovedDelayed()
Defined: ~/.vim/pack/bundle/start/neomake/autoload/neomake.vim:2691
Called 45 times
Total time: 0.003945
Self time: 0.003945
count total (s) self (s)
45 0.000652 if exists('s:cursormoved_timer')
45 0.000576 call timer_stop(s:cursormoved_timer)
45 0.000138 endif
45 0.001732 let s:cursormoved_timer = timer_start(get(g:, 'neomake_cursormoved_delay', 100), function('s:cursormoved_delayed_cb'))
45 0.000634 let s:cursormoved_last_pos = getpos('.')
FUNCTION <SNR>77_OnCursorMovedNormalMode()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:688
Called 45 times
Total time: 0.026185
Self time: 0.014648
count total (s) self (s)
45 0.013127 0.001590 if !s:AllowedToCompleteInCurrentBuffer()
return
45 0.000101 endif
45 0.012624 py3 ycm_state.OnCursorMoved()
FUNCTION <SNR>70_build_command()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/async.vim:40
Called 1 time
Total time: 0.000010
Self time: 0.000010
count total (s) self (s)
1 0.000004 if has('unix')
1 0.000004 return ['sh', '-c', a:cmd]
endif
if has('win32')
return has('nvim') ? ['cmd.exe', '/c', a:cmd] : 'cmd.exe /c '.a:cmd
endif
throw 'unknown os'
FUNCTION youcompleteme#CompleteFunc()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:919
Called 92 times
Total time: 0.002101
Self time: 0.002101
count total (s) self (s)
92 0.000304 if a:findstart
" When auto-wrapping is enabled, Vim wraps the current line after the
" completion request is sent but before calling this function. The starting
" column returned by the server is invalid in that case and must be
" recomputed.
46 0.000224 if s:completion.line != line( '.' )
" Given
" scb: column where the completion starts before auto-wrapping
" cb: cursor column before auto-wrapping
" sca: column where the completion starts after auto-wrapping
" ca: cursor column after auto-wrapping
" we have
" ca - sca = cb - scb
" sca = scb + ca - cb
let s:completion.completion_start_column += col( '.' ) - s:completion.column
46 0.000079 endif
46 0.000247 return s:completion.completion_start_column - 1
46 0.000040 endif
46 0.000103 return s:completion.completions
FUNCTION <SNR>79_cursormoved_delayed_cb()
Defined: ~/.vim/pack/bundle/start/neomake/autoload/neomake.vim:2686
Called 18 times
Total time: 0.007626
Self time: 0.001600
count total (s) self (s)
18 0.000755 if getpos('.') == s:cursormoved_last_pos
18 0.006678 0.000652 call neomake#CursorMoved()
18 0.000043 endif
FUNCTION <SNR>83_save_marks()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:835
Called 2 times
Total time: 0.000438
Self time: 0.000438
count total (s) self (s)
2 0.000063 if !exists('s:buf[s:nr].marks')
2 0.000027 let types = ['[', ']']
2 0.000050 let s:buf[s:nr].marks = {}
6 0.000056 for mark in types
4 0.000149 let s:buf[s:nr].marks[mark] = getpos("'" . mark)
6 0.000038 endfor
2 0.000008 endif
FUNCTION <SNR>77_PollCompletion()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:852
Called 78 times
Total time: 0.046682
Self time: 0.039974
count total (s) self (s)
78 0.017652 if !py3eval( 'ycm_state.CompletionRequestReady()' )
40 0.000844 let s:pollers.completion.id = timer_start( s:pollers.completion.wait_milliseconds, function( 's:PollCompletion' ) )
40 0.000100 return
38 0.000047 endif
38 0.020029 let s:completion = py3eval( 'ycm_state.GetCompletionResponse()' )
38 0.007381 0.000673 call s:Complete()
FUNCTION <SNR>77_OnCompleteChanged()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:509
Called 72 times
Total time: 0.016606
Self time: 0.001451
count total (s) self (s)
72 0.006640 0.000672 if !s:AllowedToCompleteInCurrentBuffer()
return
72 0.000047 endif
72 0.009757 0.000570 call s:UpdateSignatureHelp()
FUNCTION gitgutter#diff#parse_diff()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/diff.vim:174
Called 1 time
Total time: 0.000070
Self time: 0.000070
count total (s) self (s)
1 0.000009 let hunks = []
1 0.000032 for line in split(a:diff, '\n')
let hunk_info = gitgutter#diff#parse_hunk(line)
if len(hunk_info) == 4
call add(hunks, hunk_info)
endif
1 0.000002 endfor
1 0.000005 return hunks
FUNCTION gitgutter#diff#process_hunks()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/diff.vim:200
Called 1 time
Total time: 0.000060
Self time: 0.000060
count total (s) self (s)
1 0.000032 let modified_lines = []
1 0.000007 for hunk in a:hunks
call extend(modified_lines, s:process_hunk(a:bufnr, hunk))
1 0.000003 endfor
1 0.000005 return modified_lines
FUNCTION <SNR>81_find_current_signs()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/sign.vim:97
Called 1 time
Total time: 0.000432
Self time: 0.000298
count total (s) self (s)
1 0.000007 let gitgutter_signs = {} " <line_number (string)>: {'id': <id (number)>, 'name': <name (string)>}
1 0.000005 let other_signs = [] " [<line_number (number),...]
1 0.000005 let dummy_sign_placed = 0
1 0.000010 redir => signs
1 0.000043 silent execute "sign place buffer=" . a:bufnr
1 0.000008 redir END
1 0.000036 for sign_line in filter(split(signs, '\n')[2:], 'v:val =~# "="')
" Typical sign line: line=88 id=1234 name=GitGutterLineAdded
" We assume splitting is faster than a regexp.
let components = split(sign_line)
let name = split(components[2], '=')[1]
if name =~# 'GitGutterDummy'
let dummy_sign_placed = 1
else
let line_number = str2nr(split(components[0], '=')[1])
if name =~# 'GitGutter'
let id = str2nr(split(components[1], '=')[1])
" Remove orphaned signs (signs placed on lines which have been deleted).
" (When a line is deleted its sign lingers. Subsequent lines' signs'
" line numbers are decremented appropriately.)
if has_key(gitgutter_signs, line_number)
execute "sign unplace" gitgutter_signs[line_number].id
endif
let gitgutter_signs[line_number] = {'id': id, 'name': name}
else
call add(other_signs, line_number)
endif
end
1 0.000003 endfor
1 0.000072 0.000025 call gitgutter#utility#setbufvar(a:bufnr, 'dummy_sign', dummy_sign_placed)
1 0.000070 0.000023 call gitgutter#utility#setbufvar(a:bufnr, 'gitgutter_signs', gitgutter_signs)
1 0.000085 0.000045 call gitgutter#utility#setbufvar(a:bufnr, 'other_signs', other_signs)
FUNCTION GetVimIndentIntern()
Defined: /usr/share/vim/vim81/indent/vim.vim:36
Called 25 times
Total time: 0.008073
Self time: 0.008073
count total (s) self (s)
" Find a non-blank line above the current line.
25 0.000203 let lnum = prevnonblank(v:lnum - 1)
" If the current line doesn't start with '\' or '"\ ' and below a line that
" starts with '\' or '"\ ', use the indent of the line above it.
25 0.000130 let cur_text = getline(v:lnum)
25 0.000380 if cur_text !~ s:lineContPat
25 0.000262 while lnum > 0 && getline(lnum) =~ s:lineContPat
let lnum = lnum - 1
25 0.000045 endwhile
25 0.000026 endif
" At the start of the file use zero indent.
25 0.000044 if lnum == 0
return 0
25 0.000026 endif
25 0.000094 let prev_text = getline(lnum)
" Add a 'shiftwidth' after :if, :while, :try, :catch, :finally, :function
" and :else. Add it three times for a line that starts with '\' or '"\ '
" after a line that doesn't (or g:vim_indent_cont if it exists).
25 0.000107 let ind = indent(lnum)
" In heredoc indenting works completely differently.
25 0.000207 if has('syntax_items')
25 0.001652 let syn_here = synIDattr(synID(v:lnum, 1, 1), "name")
25 0.000203 if syn_here =~ 'vimLetHereDocStop'
" End of heredoc: use indent of matching start line
let lnum = v:lnum - 1
while lnum > 0
if synIDattr(synID(lnum, 1, 1), "name") !~ 'vimLetHereDoc'
return indent(lnum)
endif
let lnum -= 1
endwhile
return 0
25 0.000026 endif
25 0.000138 if syn_here =~ 'vimLetHereDoc'
if synIDattr(synID(lnum, 1, 1), "name") !~ 'vimLetHereDoc'
" First line in heredoc: increase indent
return ind + shiftwidth()
endif
" Heredoc continues: no change in indent
return ind
25 0.000021 endif
25 0.000020 endif
25 0.000213 if cur_text =~ s:lineContPat && v:lnum > 1 && prev_text !~ s:lineContPat
if exists("g:vim_indent_cont")
let ind = ind + g:vim_indent_cont
else
let ind = ind + shiftwidth() * 3
endif
25 0.000232 elseif prev_text =~ '^\s*aug\%[roup]\s\+' && prev_text !~ '^\s*aug\%[roup]\s\+[eE][nN][dD]\>'
let ind = ind + shiftwidth()
25 0.000025 else
" A line starting with :au does not increment/decrement indent.
25 0.000160 if prev_text !~ '^\s*au\%[tocmd]'
25 0.000643 let i = match(prev_text, '\(^\||\)\s*\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\%[lly]\|fu\%[nction]\|el\%[seif]\)\>')
25 0.000063 if i >= 0
1 0.000012 let ind += shiftwidth()
1 0.000022 if strpart(prev_text, i, 1) == '|' && has('syntax_items') && synIDattr(synID(lnum, i, 1), "name") =~ '\(Comment\|String\)$'
let ind -= shiftwidth()
1 0.000003 endif
25 0.000023 endif
25 0.000021 endif
25 0.000023 endif
" If the previous line contains an "end" after a pipe, but not in an ":au"
" command. And not when there is a backslash before the pipe.
" And when syntax HL is enabled avoid a match inside a string.
25 0.000285 let i = match(prev_text, '[^\\]|\s*\(ene\@!\)')
25 0.000070 if i > 0 && prev_text !~ '^\s*au\%[tocmd]'
if !has('syntax_items') || synIDattr(synID(lnum, i + 2, 1), "name") !~ '\(Comment\|String\)$'
let ind = ind - shiftwidth()
endif
25 0.000024 endif
" Subtract a 'shiftwidth' on a :endif, :endwhile, :catch, :finally, :endtry,
" :endfun, :else and :augroup END.
25 0.000429 if cur_text =~ '^\s*\(ene\@!\|cat\|fina\|el\|aug\%[roup]\s\+[eE][nN][dD]\)'
23 0.000130 let ind = ind - shiftwidth()
25 0.000029 endif
25 0.000049 return ind
FUNCTION <SNR>83_evaluate_range()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:330
Called 22 times
Total time: 0.006102
Self time: 0.006102
count total (s) self (s)
22 0.000353 let result = { 'range': [], 'pattern': '', 'end': ''}
22 0.000149 let s:range_valid = 1
22 0.000332 let pos = s:buf[s:nr].cur_init_pos[0]
22 0.000223 for specifier in a:range_structure
let tmp_pos = pos
let specifier_result = []
for address in specifier.addresses
" skip empty unclosed pattern specifier when range is empty otherwise
" substitute it with current position
if address.address =~# '^[?/]$'
let s:buf[s:nr].show_range = 1
if empty(result.range)
break
endif
let address.address = '.'
endif
let query = s:spec_to_abs(address, tmp_pos)
" % specifier doesn't accept additional addresses
if !query.valid || len(query.range) == 2 && len(specifier.addresses) > 1
let s:range_valid = 0
break
endif
let tmp_pos = query.range[-1]
let specifier_result = deepcopy(query.range)
let result.pattern = query.regex
endfor
if !s:range_valid
break
endif
call extend(result.range, specifier_result)
if get(specifier, 'delimiter') is# ';'
let pos = result.range[-1]
endif
22 0.000123 endfor
22 0.000173 if !empty(result.range)
let result.end = result.range[-1]
if len(result.range) == 1
call extend(result.range, result.range)
else
let result.range = result.range[-2:-1]
if result.range[-1] < result.range[-2]
let temp = result.range[-2]
let result.range[-2] = result.range[-1]
let result.range[-1] = temp
endif
endif
22 0.000047 endif
22 0.000244 return s:range_valid ? result : { 'range': [], 'pattern': '', 'end': '' }
FUNCTION gitgutter#debug#log()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/debug.vim:80
Called 2 times
Total time: 0.000185
Self time: 0.000185
count total (s) self (s)
2 0.000013 if g:gitgutter_log
if s:new_log_session && gitgutter#async#available()
if exists('*ch_logfile')
call ch_logfile(s:channel_log, 'w')
endif
endif
execute 'redir >> '.s:log_file
if s:new_log_session
let s:start = reltime()
silent echo "\n==== start log session ===="
endif
let elapsed = reltimestr(reltime(s:start)).' '
silent echo ''
" callers excluding this function
silent echo elapsed.expand('<sfile>')[:-22].':'
silent echo elapsed.s:format_for_log(a:message)
if a:0 && !empty(a:1)
for msg in a:000
silent echo elapsed.s:format_for_log(msg)
endfor
endif
redir END
let s:new_log_session = 0
2 0.000003 endif
FUNCTION <SNR>77_OnFileReadyToParse()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:590
Called 12 times
Total time: 0.038155
Self time: 0.034907
count total (s) self (s)
" Accepts an optional parameter that is either 0 or 1. If 1, send a
" FileReadyToParse event notification, whether the buffer has changed or not;
" effectively forcing a parse of the buffer. Default is 0.
12 0.000142 let force_parsing = a:0 > 0 && a:1
" We only want to send a new FileReadyToParse event notification if the buffer
" has changed since the last time we sent one, or if forced.
12 0.002309 if force_parsing || py3eval( "ycm_state.NeedsReparse()" )
" We switched buffers or somethuing, so claer.
" FIXME: sig hekp should be buffer local?
10 0.003774 0.000526 call s:ClearSignatureHelp()
10 0.030878 py3 ycm_state.OnFileReadyToParse()
10 0.000272 call timer_stop( s:pollers.file_parse_response.id )
10 0.000430 let s:pollers.file_parse_response.id = timer_start( s:pollers.file_parse_response.wait_milliseconds, function( 's:PollFileParseResponse' ) )
12 0.000059 endif
FUNCTION <SNR>77_UpdateSignatureHelp()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:943
Called 232 times
Total time: 0.060609
Self time: 0.017931
count total (s) self (s)
232 0.045132 0.002454 if !s:ShouldUseSignatureHelp()
return
232 0.000244 endif
232 0.014295 call py3eval( 'ycm_state.UpdateSignatureHelp( vim.eval( "s:signature_help" ) )' )
FUNCTION <SNR>77_DisableOnLargeFile()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:393
Called 253 times
Total time: 0.003272
Self time: 0.003272
count total (s) self (s)
253 0.001849 if exists( 'b:ycm_largefile' )
253 0.000922 return b:ycm_largefile
endif
let threshold = g:ycm_disable_for_files_larger_than_kb * 1024
let b:ycm_largefile = threshold > 0 && getfsize( expand( a:buffer ) ) > threshold
if b:ycm_largefile
py3 vimsupport.PostVimMessage( 'YouCompleteMe is disabled in this buffer; the file exceeded the max size (see YCM options).' )
endif
return b:ycm_largefile
FUNCTION gitgutter#utility#extension()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:85
Called 1 time
Total time: 0.000172
Self time: 0.000034
count total (s) self (s)
1 0.000171 0.000033 return fnamemodify(s:abs_path(a:bufnr, 0), ':e')
FUNCTION <SNR>83_trim()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:83
Called 90 times
Total time: 0.005215
Self time: 0.005215
count total (s) self (s)
90 0.000608 if a:0 == 2
2 0.000035 let a:1[0] = strcharpart(a:1[0], a:2)
88 0.000266 else
88 0.002872 let a:1[0] = substitute(a:1[0], '^\s\+', '', '')
90 0.000331 endif
FUNCTION <SNR>83_evaluate_cmdl()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:818
Called 22 times
Total time: 0.045251
Self time: 0.005333
count total (s) self (s)
22 0.000235 let cmdl = {}
22 0.000233 let cmdl.string = a:string
22 0.023988 0.001470 let r = s:evaluate_range(s:parse_range([], cmdl.string))
22 0.000181 let cmdl.range = {}
22 0.000173 let cmdl.range.abs = r.range
22 0.000137 let cmdl.range.end = r.end
22 0.001320 0.000932 let cmdl.range.pattern = s:get_selection_regexp(r.range)
22 0.001082 0.000713 let cmdl.range.specifier = s:add_flags(r.pattern, cmdl, 3)
22 0.000149 let cmdl.cmd = {}
22 0.000138 let cmdl.cmd.args = {}
22 0.017294 0.000651 call s:parse_command(cmdl)
22 0.000119 return cmdl
FUNCTION <SNR>77_PollFileParseResponse()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:612
Called 10 times
Total time: 0.005481
Self time: 0.005481
count total (s) self (s)
10 0.002511 if !py3eval( "ycm_state.FileParseRequestReady()" )
let s:pollers.file_parse_response.id = timer_start( s:pollers.file_parse_response.wait_milliseconds, function( 's:PollFileParseResponse' ) )
return
10 0.000035 endif
10 0.001627 py3 ycm_state.HandleFileParseRequest()
10 0.000790 if py3eval( "ycm_state.ShouldResendFileParseRequest()" )
call s:OnFileReadyToParse( 1 )
10 0.000028 endif
FUNCTION <SNR>49_create_cmdl_changed_au()
Defined: ~/.vim/pack/bundle/start/traces/plugin/traces.vim:28
Called 2 times
Total time: 0.001394
Self time: 0.001012
count total (s) self (s)
2 0.000069 augroup traces_augroup_cmdline_changed
2 0.000749 autocmd!
2 0.000065 autocmd CmdlineChanged : call s:cmdline_changed()
2 0.000009 augroup END
" necessary when entering command line that has already been populated with
" text from mappings
2 0.000474 0.000092 call s:cmdline_changed()
FUNCTION gitgutter#hunk#hunks()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/hunk.vim:6
Called 1 time
Total time: 0.000061
Self time: 0.000029
count total (s) self (s)
1 0.000060 0.000028 return gitgutter#utility#getbufvar(a:bufnr, 'hunks', [])
FUNCTION <SNR>77_AllowedToCompleteInCurrentBuffer()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:435
Called 253 times
Total time: 0.040114
Self time: 0.005947
count total (s) self (s)
253 0.039889 0.005722 return s:AllowedToCompleteInBuffer( '%' )
FUNCTION gitgutter#sign#update_signs()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/sign.vim:57
Called 1 time
Total time: 0.001042
Self time: 0.000183
count total (s) self (s)
1 0.000460 0.000028 call s:find_current_signs(a:bufnr)
1 0.000014 let new_gitgutter_signs_line_numbers = map(copy(a:modified_lines), 'v:val[0]')
1 0.000151 0.000040 let obsolete_signs = s:obsolete_gitgutter_signs_to_remove(a:bufnr, new_gitgutter_signs_line_numbers)
1 0.000011 let flicker_possible = s:remove_all_old_signs && !empty(a:modified_lines)
1 0.000004 if flicker_possible
call s:add_dummy_sign(a:bufnr)
1 0.000002 endif
1 0.000171 0.000025 call s:remove_signs(a:bufnr, obsolete_signs, s:remove_all_old_signs)
1 0.000202 0.000032 call s:upsert_new_gitgutter_signs(a:bufnr, a:modified_lines)
1 0.000004 if flicker_possible
call gitgutter#sign#remove_dummy_sign(a:bufnr, 0)
1 0.000002 endif
FUNCTION <SNR>77_OnTextChangedInsertMode()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:706
Called 40 times
Total time: 0.183903
Self time: 0.007139
count total (s) self (s)
40 0.003228 0.000373 if !s:AllowedToCompleteInCurrentBuffer()
return
40 0.000023 endif
40 0.000048 if s:completion_stopped
let s:completion_stopped = 0
let s:completion = s:default_completion
return
40 0.000023 endif
40 0.014312 0.000431 call s:IdentifierFinishedOperations()
" We have to make sure we correctly leave semantic mode even when the user
" inserts something like a "operator[]" candidate string which fails
" CurrentIdentifierFinished check.
40 0.000120 if s:force_semantic && !py3eval( 'base.LastEnteredCharIsIdentifierChar()' )
let s:force_semantic = 0
40 0.000031 endif
40 0.012757 0.000960 if &completefunc == "youcompleteme#CompleteFunc" && ( g:ycm_auto_trigger || s:force_semantic ) && !s:InsideCommentOrStringAndShouldStop() && !s:OnBlankLine()
" Immediately call previous completion to avoid flickers.
38 0.004944 0.000359 call s:Complete()
38 0.083738 0.000386 call s:RequestCompletion()
38 0.038555 0.000604 call s:UpdateSignatureHelp()
38 0.023027 0.000684 call s:RequestSignatureHelp()
40 0.000052 endif
40 0.002002 py3 ycm_state.OnCursorMoved()
40 0.000178 if g:ycm_autoclose_preview_window_after_completion
call s:ClosePreviewWindowIfNeeded()
40 0.000050 endif
FUNCTION undotree#UndotreeUpdate()
Defined: ~/.vim/pack/bundle/start/undotree/autoload/undotree.vim:1262
Called 47 times
Total time: 0.000932
Self time: 0.000932
count total (s) self (s)
47 0.000571 if !exists('t:undotree')
47 0.000209 return
endif
if !exists('w:undotree_id')
let w:undotree_id = 'id_'.s:getUniqueID()
call s:log("Unique window id assigned: ".w:undotree_id)
endif
" assume window layout won't change during updating.
let thiswinnr = winnr()
call t:undotree.Update()
" focus moved
if winnr() != thiswinnr
call s:exec("norm! ".thiswinnr."\<c-w>\<c-w>")
endif
FUNCTION <SNR>77_CloseCompletionMenu()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:639
Called 67 times
Total time: 0.002050
Self time: 0.001526
count total (s) self (s)
67 0.000415 if pumvisible()
19 0.001100 0.000576 call s:SendKeys( "\<C-e>" )
67 0.000141 endif
FUNCTION <SNR>70_on_exit_vim()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/async.vim:87
Called 1 time
Total time: 0.002010
Self time: 0.000073
count total (s) self (s)
1 0.002007 0.000070 call self.handler.out(self.buffer, join(self.stdoutbuffer, "\n"))
FUNCTION <SNR>77_InsideCommentOrStringAndShouldStop()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:811
Called 40 times
Total time: 0.007610
Self time: 0.000888
count total (s) self (s)
40 0.007151 0.000429 let retval = s:InsideCommentOrString()
40 0.000090 let inside_comment = retval == 1
40 0.000070 let inside_string = retval == 2
40 0.000112 if inside_comment && g:ycm_complete_in_comments || inside_string && g:ycm_complete_in_strings
return 0
40 0.000026 endif
40 0.000044 return retval
FUNCTION <SNR>83_parse_range()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:91
Called 22 times
Total time: 0.016416
Self time: 0.012594
count total (s) self (s)
22 0.000188 let specifier = {}
22 0.000173 let specifier.addresses = []
22 0.000139 let while_limit = 0
22 0.000096 while 1
" address part
22 0.001986 0.000619 call s:trim(a:cmdl)
22 0.000160 let entry = {}
" regexp for pattern specifier
22 0.000182 let pattern = '/%(\\.|/@!&.)*/=|\?%(\\.|\?@!&.)*\?='
22 0.000227 if !len(specifier.addresses)
" \& is not supported
22 0.001338 let address = matchstrpos(a:cmdl[0], '\v^%(\d+|\.|\$|\%|\*|''.|'. pattern . '|\\\/|\\\?)')
else
let address = matchstrpos(a:cmdl[0], '\v^%(' . pattern . ')' )
22 0.000065 endif
22 0.000199 if address[2] != -1
call s:trim(a:cmdl, address[2])
let entry.address = address[0]
22 0.000050 endif
" offset
22 0.001789 0.000578 call s:trim(a:cmdl)
22 0.000836 let offset = matchstrpos(a:cmdl[0], '\m^\%(\d\|\s\|+\|-\)\+')
22 0.000265 if offset[2] != -1
call s:trim(a:cmdl, offset[2])
let entry.offset = offset[0]
22 0.000051 endif
" add first address
22 0.000232 if address[2] != -1 || offset[2] != -1
" if offset is present but specifier is missing add '.' specifier
if !has_key(entry, 'address')
let entry.address = '.'
endif
call add(specifier.addresses, entry)
22 0.000071 else
" stop trying if previous attempt was unsuccessful
22 0.000068 break
endif
let while_limit += 1 | if while_limit == 1000 | echoerr 'infinite loop' | break | endif
22 0.000159 endwhile
" delimiter
22 0.001923 0.000679 call s:trim(a:cmdl)
22 0.000718 let delimiter = matchstrpos(a:cmdl[0], '\m^\%(,\|;\)')
22 0.000224 if delimiter[2] != -1
call s:trim(a:cmdl, delimiter[2])
let specifier.delimiter = delimiter[0]
22 0.000062 endif
" add when addresses or delimiter are found or when one specifier is
" already known
22 0.000401 if !empty(specifier.addresses) || delimiter[2] != -1 || !empty(a:range)
" specifiers are not given but delimiter is present
if empty(specifier.addresses)
call add(specifier.addresses, { 'address': '.' })
endif
call add(a:range, specifier)
22 0.000056 endif
22 0.000153 if delimiter[2] != -1
try
return s:parse_range(a:range, a:cmdl)
catch /^Vim\%((\a\+)\)\=:E132/
return []
endtry
22 0.000052 else
22 0.000121 return a:range
endif
FUNCTION <SNR>77_IdentifierFinishedOperations()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:782
Called 40 times
Total time: 0.013881
Self time: 0.013881
count total (s) self (s)
40 0.002535 if !py3eval( 'base.CurrentIdentifierFinished()' )
35 0.000069 return
5 0.000002 endif
5 0.011128 py3 ycm_state.OnCurrentIdentifierFinished()
5 0.000049 let s:force_semantic = 0
5 0.000051 let s:completion = s:default_completion
FUNCTION <SNR>77_RequestCompletion()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:830
Called 38 times
Total time: 0.083352
Self time: 0.067855
count total (s) self (s)
38 0.066728 py3 ycm_state.SendCompletionRequest( vimsupport.GetBoolValue( 's:force_semantic' ) )
38 0.016464 0.000967 call s:PollCompletion()
FUNCTION <SNR>77_OnCompleteDone()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:499
Called 46 times
Total time: 0.025091
Self time: 0.014399
count total (s) self (s)
46 0.005693 0.000675 if !s:AllowedToCompleteInCurrentBuffer()
return
46 0.000045 endif
46 0.012698 py3 ycm_state.OnCompleteDone()
46 0.006487 0.000813 call s:UpdateSignatureHelp()
FUNCTION <SNR>72_write_buffer()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/diff.vim:332
Called 1 time
Total time: 0.007934
Self time: 0.007934
count total (s) self (s)
1 0.000195 let bufcontents = getbufline(a:bufnr, 1, '$')
1 0.000016 if getbufvar(a:bufnr, '&fileformat') ==# 'dos'
call map(bufcontents, 'v:val."\r"')
1 0.000003 endif
1 0.000013 let fenc = getbufvar(a:bufnr, '&fileencoding')
1 0.000008 if fenc !=# &encoding
call map(bufcontents, 'iconv(v:val, &encoding, "'.fenc.'")')
1 0.000003 endif
1 0.000011 if getbufvar(a:bufnr, '&bomb')
let bufcontents[0]=''.bufcontents[0]
1 0.000002 endif
1 0.007645 call writefile(bufcontents, a:file)
FUNCTION <SNR>83_parse_command()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:519
Called 22 times
Total time: 0.016643
Self time: 0.003173
count total (s) self (s)
22 0.014319 0.000849 let a:cmdl.cmd.name = s:get_command(a:cmdl.string)
22 0.000669 if a:cmdl.cmd.name =~# '\v^%(g%[lobal]\!=|v%[global])$'
let a:cmdl.cmd.args = s:parse_global(a:cmdl)
22 0.000519 elseif a:cmdl.cmd.name =~# '\v^%(s%[ubstitute]|sm%[agic]|sno%[magic])$'
let a:cmdl.cmd.args = s:parse_substitute(a:cmdl)
22 0.000339 elseif a:cmdl.cmd.name =~# '\v^%(sor%[t]\!=)$'
let a:cmdl.cmd.args = s:parse_sort(a:cmdl)
22 0.000061 endif
FUNCTION <SNR>77_ClearSignatureHelp()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:953
Called 12 times
Total time: 0.003817
Self time: 0.002549
count total (s) self (s)
12 0.001753 0.000485 if !s:ShouldUseSignatureHelp()
return
12 0.000038 endif
12 0.000197 call timer_stop( s:pollers.signature_help.id )
12 0.000144 let s:signature_help = s:default_signature_help
12 0.001541 call py3eval( 'ycm_state.ClearSignatureHelp()' )
FUNCTION GetVimIndent()
Defined: /usr/share/vim/vim81/indent/vim.vim:24
Called 25 times
Total time: 0.009288
Self time: 0.001215
count total (s) self (s)
25 0.000175 let ignorecase_save = &ignorecase
25 0.000053 try
25 0.000296 let &ignorecase = 0
25 0.008422 0.000349 return GetVimIndentIntern()
25 0.000052 finally
25 0.000164 let &ignorecase = ignorecase_save
25 0.000050 endtry
FUNCTION <SNR>77_OnTextChangedNormalMode()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:697
Called 10 times
Total time: 0.035080
Self time: 0.000739
count total (s) self (s)
10 0.002679 0.000312 if !s:AllowedToCompleteInCurrentBuffer()
return
10 0.000021 endif
10 0.032309 0.000335 call s:OnFileReadyToParse()
FUNCTION gitgutter#utility#shellescape()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:70
Called 4 times
Total time: 0.000408
Self time: 0.000375
count total (s) self (s)
4 0.000276 if a:arg =~ '^[A-Za-z0-9_/.-]\+$'
3 0.000018 return a:arg
1 0.000062 0.000029 elseif s:winshell()
return '"' . substitute(substitute(a:arg, '"', '""', 'g'), '%', '"%"', 'g') . '"'
1 0.000003 else
1 0.000012 return shellescape(a:arg)
endif
FUNCTION <SNR>42_dir()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:191
Called 2 times
Total time: 0.000486
Self time: 0.000094
count total (s) self (s)
2 0.000485 0.000093 return gitgutter#utility#shellescape(fnamemodify(s:abs_path(a:bufnr, 0), ':h'))
FUNCTION <SNR>42_windows()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:208
Called 1 time
Total time: 0.000121
Self time: 0.000121
count total (s) self (s)
1 0.000119 return has('win64') || has('win32') || has('win16')
FUNCTION gitgutter#async#available()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/async.vim:9
Called 1 time
Total time: 0.000004
Self time: 0.000004
count total (s) self (s)
1 0.000003 return s:available
FUNCTION <SNR>49_t_start()
Defined: ~/.vim/pack/bundle/start/traces/plugin/traces.vim:38
Called 2 times
Total time: 0.000278
Self time: 0.000278
count total (s) self (s)
2 0.000080 if exists('##CmdlineChanged')
2 0.000111 let s:track_cmdl_timer = timer_start(30,function('s:create_cmdl_changed_au'))
else
let s:track_cmdl_timer = timer_start(30,function('s:track_cmdl'),{'repeat':-1})
2 0.000010 endif
FUNCTION <SNR>83_restore_undo_history()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:875
Called 2 times
Total time: 0.000195
Self time: 0.000195
count total (s) self (s)
2 0.000025 if s:buf[s:nr].changed
noautocmd keepjumps silent undo
call s:restore_marks()
2 0.000005 endif
2 0.000045 if type(get(s:buf[s:nr], 'undo_file')) isnot v:t_string
2 0.000009 return
endif
if has('nvim')
" can't use try/catch on Neovim inside CmdlineLeave
" https://github.com/neovim/neovim/issues/7876
silent! execute 'noautocmd rundo ' . s:buf[s:nr].undo_file
if undotree().seq_last !=# s:buf[s:nr].seq_last
echohl WarningMsg
echom 'traces.vim - undo history could not be restored'
echohl None
endif
else
try
silent execute 'noautocmd rundo ' . s:buf[s:nr].undo_file
catch
echohl WarningMsg
echom 'traces.vim - ' . v:exception
echohl None
endtry
endif
call delete(s:buf[s:nr].undo_file)
FUNCTION <SNR>83_get_command()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:399
Called 22 times
Total time: 0.013470
Self time: 0.012077
count total (s) self (s)
22 0.001899 0.000585 call s:trim(a:cmdl)
22 0.000122 if !s:range_valid
return ''
22 0.000051 endif
22 0.010177 let result = matchstrpos(a:cmdl[0], s:cmd_pattern)
22 0.000352 if result[2] != -1
2 0.000141 0.000062 call s:trim(a:cmdl, result[2])
2 0.000015 return result[0]
20 0.000056 endif
20 0.000084 return ''
FUNCTION <SNR>69_has_fresh_changes()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter.vim:84
Called 1 time
Total time: 0.000096
Self time: 0.000045
count total (s) self (s)
1 0.000094 0.000043 return getbufvar(a:bufnr, 'changedtick') != gitgutter#utility#getbufvar(a:bufnr, 'tick')
FUNCTION UltiSnips#TrackChange()
Defined: ~/.vim/pack/bundle/start/ultisnips/autoload/UltiSnips.vim:147
Called 77 times
Total time: 0.021322
Self time: 0.021322
count total (s) self (s)
77 0.021120 exec g:_uspy "UltiSnips_Manager._track_change()"
FUNCTION gitgutter#utility#setbufvar()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:9
Called 6 times
Total time: 0.000302
Self time: 0.000302
count total (s) self (s)
6 0.000111 let dict = get(getbufvar(a:buffer, ''), 'gitgutter', {})
6 0.000046 let needs_setting = empty(dict)
6 0.000066 let dict[a:varname] = a:val
6 0.000021 if needs_setting
call setbufvar(a:buffer, 'gitgutter', dict)
6 0.000013 endif
FUNCTION <SNR>81_upsert_new_gitgutter_signs()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/sign.vim:169
Called 1 time
Total time: 0.000170
Self time: 0.000119
count total (s) self (s)
1 0.000051 0.000024 let other_signs = gitgutter#utility#getbufvar(a:bufnr, 'other_signs')
1 0.000047 0.000023 let old_gitgutter_signs = gitgutter#utility#getbufvar(a:bufnr, 'gitgutter_signs')
1 0.000006 for line in a:modified_lines
let line_number = line[0] " <number>
if index(other_signs, line_number) == -1 " don't clobber others' signs
let name = s:highlight_name_for_change(line[1])
if !has_key(old_gitgutter_signs, line_number) " insert
let id = s:next_sign_id()
execute "sign place" id "line=" . line_number "name=" . name "buffer=" . a:bufnr
else " update if sign has changed
let old_sign = old_gitgutter_signs[line_number]
if old_sign.name !=# name
execute "sign place" old_sign.id "name=" . name "buffer=" . a:bufnr
end
endif
endif
1 0.000002 endfor
" At this point b:gitgutter_gitgutter_signs is out of date.
FUNCTION <SNR>49_cmdline_changed()
Defined: ~/.vim/pack/bundle/start/traces/plugin/traces.vim:21
Called 24 times
Total time: 0.004639
Self time: 0.004639
count total (s) self (s)
24 0.000799 if exists('s:start_init_timer')
22 0.000453 call timer_stop(s:start_init_timer)
24 0.000141 endif
24 0.003010 let s:start_init_timer = timer_start(1, {_-> traces#init(getcmdline())})
FUNCTION neomake#CursorMoved()
Defined: ~/.vim/pack/bundle/start/neomake/autoload/neomake.vim:2682
Called 18 times
Total time: 0.006026
Self time: 0.000523
count total (s) self (s)
18 0.005984 0.000481 call neomake#EchoCurrentError()
FUNCTION neomake#EchoCurrentError()
Defined: ~/.vim/pack/bundle/start/neomake/autoload/neomake.vim:2659
Called 18 times
Total time: 0.005503
Self time: 0.002253
count total (s) self (s)
18 0.000321 if !get(g:, 'neomake_echo_current_error', 1)
return
18 0.000071 endif
" a:1 might be a timer from the VimResized event.
18 0.000285 let force = a:0 ? a:1 : 0
18 0.004022 0.000772 let message = neomake#GetCurrentErrorMsg()
18 0.000116 if empty(message)
18 0.000170 if exists('s:neomake_last_echoed_error')
echon ''
unlet s:neomake_last_echoed_error
18 0.000043 endif
18 0.000055 return
endif
if !force && exists('s:neomake_last_echoed_error') && s:neomake_last_echoed_error == message
return
endif
let s:neomake_last_echoed_error = message
call neomake#utils#WideMessage(message)
FUNCTION <SNR>77_InsideCommentOrString()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:793
Called 40 times
Total time: 0.006722
Self time: 0.006722
count total (s) self (s)
" Has to be col('.') -1 because col('.') doesn't exist at this point. We are
" in insert mode when this func is called.
40 0.006171 let syntax_group = synIDattr( synIDtrans( synID( line( '.' ), col( '.' ) - 1, 1 ) ), 'name')
40 0.000160 if stridx(syntax_group, 'Comment') > -1
return 1
40 0.000032 endif
40 0.000083 if stridx(syntax_group, 'String') > -1
return 2
40 0.000024 endif
40 0.000042 return 0
FUNCTION gitgutter#process_buffer()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter.vim:27
Called 1 time
Total time: 0.012746
Self time: 0.000225
count total (s) self (s)
" NOTE a:bufnr is not necessarily the current buffer.
1 0.000914 0.000044 if gitgutter#utility#is_active(a:bufnr)
1 0.000137 0.000041 if a:force || s:has_fresh_changes(a:bufnr)
1 0.000007 let diff = ''
1 0.000005 try
1 0.011625 0.000070 let diff = gitgutter#diff#run_diff(a:bufnr, 0)
catch /gitgutter not tracked/
call gitgutter#debug#log('Not tracked: '.gitgutter#utility#file(a:bufnr))
catch /gitgutter diff failed/
call gitgutter#debug#log('Diff failed: '.gitgutter#utility#file(a:bufnr))
call gitgutter#hunk#reset(a:bufnr)
1 0.000002 endtry
1 0.000004 if diff != 'async'
call gitgutter#diff#handler(a:bufnr, diff)
1 0.000001 endif
1 0.000001 endif
1 0.000001 endif
FUNCTION gitgutter#utility#repo_path()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:105
Called 3 times
Total time: 0.000325
Self time: 0.000150
count total (s) self (s)
3 0.000215 0.000093 let p = gitgutter#utility#getbufvar(a:bufnr, 'path')
3 0.000104 0.000051 return a:shellesc ? gitgutter#utility#shellescape(p) : p
FUNCTION <SNR>42_exists_file()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:200
Called 1 time
Total time: 0.000259
Self time: 0.000058
count total (s) self (s)
1 0.000257 0.000056 return filereadable(s:abs_path(a:bufnr, 0))
FUNCTION <SNR>77_OnBlankLine()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:825
Called 40 times
Total time: 0.004187
Self time: 0.004187
count total (s) self (s)
40 0.004163 return py3eval( 'not vim.current.line or vim.current.line.isspace()' )
FUNCTION <SNR>28_Highlight_Matching_Pair()
Defined: /usr/share/vim/vim81/plugin/matchparen.vim:39
Called 136 times
Total time: 0.041454
Self time: 0.041454
count total (s) self (s)
" Remove any previous match.
136 0.001628 if exists('w:paren_hl_on') && w:paren_hl_on
2 0.000006 silent! call matchdelete(3)
2 0.000005 let w:paren_hl_on = 0
136 0.000315 endif
" Avoid that we remove the popup menu.
" Return when there are no colors (looks like the cursor jumps).
136 0.001300 if pumvisible() || (&t_Co < 8 && !has("gui_running"))
return
136 0.000197 endif
" Get the character under the cursor and check if it's in 'matchpairs'.
136 0.001156 let c_lnum = line('.')
136 0.000773 let c_col = col('.')
136 0.000546 let before = 0
136 0.000999 let text = getline(c_lnum)
136 0.004678 let matches = matchlist(text, '\(.\)\=\%'.c_col.'c\(.\=\)')
136 0.000774 if empty(matches)
let [c_before, c] = ['', '']
136 0.000252 else
136 0.001545 let [c_before, c] = matches[1:2]
136 0.000266 endif
136 0.003424 let plist = split(&matchpairs, '.\zs[:,]')
136 0.001104 let i = index(plist, c)
136 0.000448 if i < 0
" not found, in Insert mode try character before the cursor
136 0.000902 if c_col > 1 && (mode() == 'i' || mode() == 'R')
81 0.000222 let before = strlen(c_before)
81 0.000120 let c = c_before
81 0.000170 let i = index(plist, c)
136 0.000218 endif
136 0.000295 if i < 0
" not found, nothing to do
132 0.000339 return
4 0.000003 endif
4 0.000000 endif
" Figure out the arguments for searchpairpos().
4 0.000004 if i % 2 == 0
2 0.000004 let s_flags = 'nW'
2 0.000007 let c2 = plist[i + 1]
2 0.000002 else
2 0.000003 let s_flags = 'nbW'
2 0.000002 let c2 = c
2 0.000005 let c = plist[i - 1]
4 0.000002 endif
4 0.000006 if c == '['
let c = '\['
let c2 = '\]'
4 0.000004 endif
" Find the match. When it was just before the cursor move it there for a
" moment.
4 0.000004 if before > 0
4 0.000014 let has_getcurpos = exists("*getcurpos")
4 0.000004 if has_getcurpos
" getcurpos() is more efficient but doesn't exist before 7.4.313.
4 0.000011 let save_cursor = getcurpos()
else
let save_cursor = winsaveview()
4 0.000002 endif
4 0.000017 call cursor(c_lnum, c_col - before)
4 0.000003 endif
4 0.000022 if !has("syntax") || !exists("g:syntax_on")
let s_skip = "0"
4 0.000003 else
" Build an expression that detects whether the current cursor position is
" in certain syntax types (string, comment, etc.), for use as
" searchpairpos()'s skip argument.
" We match "escape" for special items, such as lispEscapeSpecial.
4 0.000015 let s_skip = '!empty(filter(map(synstack(line("."), col(".")), ''synIDattr(v:val, "name")''), ' . '''v:val =~? "string\\|character\\|singlequote\\|escape\\|comment"''))'
" If executing the expression determines that the cursor is currently in
" one of the syntax types, then we want searchpairpos() to find the pair
" within those syntax types (i.e., not skip). Otherwise, the cursor is
" outside of the syntax types and s_skip should keep its value so we skip
" any matching pair inside the syntax types.
" Catch if this throws E363: pattern uses more memory than 'maxmempattern'.
4 0.000003 try
4 0.001155 execute 'if ' . s_skip . ' | let s_skip = "0" | endif'
catch /^Vim\%((\a\+)\)\=:E363/
" We won't find anything, so skip searching, should keep Vim responsive.
return
4 0.000004 endtry
4 0.000002 endif
" Limit the search to lines visible in the window.
4 0.000013 let stoplinebottom = line('w$')
4 0.000012 let stoplinetop = line('w0')
4 0.000004 if i % 2 == 0
2 0.000004 let stopline = stoplinebottom
2 0.000001 else
2 0.000003 let stopline = stoplinetop
4 0.000001 endif
" Limit the search time to 300 msec to avoid a hang on very long lines.
" This fails when a timeout is not supported.
4 0.000012 if mode() == 'i' || mode() == 'R'
4 0.000020 let timeout = exists("b:matchparen_insert_timeout") ? b:matchparen_insert_timeout : g:matchparen_insert_timeout
else
let timeout = exists("b:matchparen_timeout") ? b:matchparen_timeout : g:matchparen_timeout
4 0.000003 endif
4 0.000004 try
4 0.012700 let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline, timeout)
catch /E118/
" Can't use the timeout, restrict the stopline a bit more to avoid taking
" a long time on closed folds and long lines.
" The "viewable" variables give a range in which we can scroll while
" keeping the cursor at the same position.
" adjustedScrolloff accounts for very large numbers of scrolloff.
let adjustedScrolloff = min([&scrolloff, (line('w$') - line('w0')) / 2])
let bottom_viewable = min([line('$'), c_lnum + &lines - adjustedScrolloff - 2])
let top_viewable = max([1, c_lnum-&lines+adjustedScrolloff + 2])
" one of these stoplines will be adjusted below, but the current values are
" minimal boundaries within the current window
if i % 2 == 0
if has("byte_offset") && has("syntax_items") && &smc > 0
let stopbyte = min([line2byte("$"), line2byte(".") + col(".") + &smc * 2])
let stopline = min([bottom_viewable, byte2line(stopbyte)])
else
let stopline = min([bottom_viewable, c_lnum + 100])
endif
let stoplinebottom = stopline
else
if has("byte_offset") && has("syntax_items") && &smc > 0
let stopbyte = max([1, line2byte(".") + col(".") - &smc * 2])
let stopline = max([top_viewable, byte2line(stopbyte)])
else
let stopline = max([top_viewable, c_lnum - 100])
endif
let stoplinetop = stopline
endif
let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline)
4 0.000004 endtry
4 0.000006 if before > 0
4 0.000004 if has_getcurpos
4 0.000012 call setpos('.', save_cursor)
else
call winrestview(save_cursor)
4 0.000003 endif
4 0.000003 endif
" If a match is found setup match highlighting.
4 0.000009 if m_lnum > 0 && m_lnum >= stoplinetop && m_lnum <= stoplinebottom
2 0.000004 if exists('*matchaddpos')
2 0.000034 call matchaddpos('MatchParen', [[c_lnum, c_col - before], [m_lnum, m_col]], 10, 3)
else
exe '3match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) . 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/'
2 0.000002 endif
2 0.000004 let w:paren_hl_on = 1
4 0.000003 endif
FUNCTION slash#SubstituteWordBoundaries()
Defined: ~/.vim/autoload/slash.vim:31
Called 2 times
Total time: 0.000164
Self time: 0.000164
count total (s) self (s)
2 0.000050 let l:cmd = getcmdline()
" TODO: make sure this is calling grep, not vimgrep
2 0.000053 if l:cmd =~# '\<grep\>'
return substitute(l:cmd, '\\[<>]', '\\\\b', 'g')
2 0.000008 else
2 0.000012 return l:cmd
endif
FUNCTION traces#init()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:965
Called 22 times
Total time: 0.077905
Self time: 0.018314
count total (s) self (s)
22 0.000925 if &buftype ==# 'terminal' || (has('nvim') && !empty(&inccommand))
if exists('s:track_cmdl_timer')
call timer_stop(s:track_cmdl_timer)
endif
return
22 0.000070 endif
22 0.000473 let s:nr = bufnr('%')
22 0.000551 if !exists('s:buf[s:nr]')
2 0.001659 0.000144 call s:cmdl_enter()
22 0.000071 endif
22 0.000204 let s:highlighted = 0
22 0.000137 let s:moved = 0
22 0.000211 let s:last_pattern = @/
22 0.000317 if s:buf[s:nr].duration < s:timeout
22 0.000314 let start_time = reltime()
22 0.000073 endif
22 0.000230 if s:buf[s:nr].changed
let view = winsaveview()
noautocmd keepjumps silent undo
let s:buf[s:nr].changed = 0
let s:highlighted = 1
call s:restore_marks()
call winrestview(view)
22 0.000083 endif
22 0.057073 0.001812 let cmdl = s:evaluate_cmdl([s:skip_modifiers(a:cmdl)])
22 0.000311 if s:buf[s:nr].duration < s:timeout
" range preview
22 0.000420 if (!empty(cmdl.cmd.name) || s:buf[s:nr].show_range) && !get(s:, 'entire_file')
2 0.000180 0.000063 call s:highlight('Visual', cmdl.range.pattern, 100)
2 0.000013 if empty(cmdl.cmd.name)
call s:highlight('TracesSearch', cmdl.range.specifier, 101)
2 0.000005 endif
2 0.000082 0.000051 call s:pos_range(cmdl.range.end, cmdl.range.specifier)
22 0.000058 endif
" cmd preview
22 0.000511 if cmdl.cmd.name =~# '\v^%(s%[ubstitute]|sm%[agic]|sno%[magic])$'
call s:preview_substitute(cmdl)
22 0.000466 elseif cmdl.cmd.name =~# '\v^%(g%[lobal]\!=|v%[global])$'
call s:preview_global(cmdl)
22 0.000309 elseif cmdl.cmd.name =~# '\v^%(sor%[t]\!=)$'
call s:preview_sort(cmdl)
22 0.000058 endif
" clear unnecessary hl
22 0.000221 if empty(cmdl.range.pattern) || get(s:, 'entire_file')
22 0.002126 0.000689 call s:highlight('Visual', '', 100)
22 0.000056 endif
22 0.000358 if empty(cmdl.cmd.name) && empty(cmdl.range.specifier) || !empty(cmdl.cmd.name) && empty(cmdl.cmd.args)
22 0.001833 0.000603 call s:highlight('TracesSearch', '', 101)
22 0.000058 endif
22 0.000048 endif
" move to starting position if necessary
22 0.000540 if !s:moved && winsaveview() != s:buf[s:nr].view && !wildmenumode()
call winrestview(s:buf[s:nr].view)
22 0.000054 endif
" update screen if necessary
22 0.000094 if s:highlighted
call s:adjust_cmdheight(a:cmdl)
if has('nvim')
redraw
else
" https://github.com/markonm/traces.vim/issues/17
" if Vim is missing CmdlineChanged, use explicit redraw only at the
" start of preview or else it is going to be slow
if exists('##CmdlineChanged') || s:buf[s:nr].redraw
redraw
let s:buf[s:nr].redraw = 0
else
call winline()
endif
" after patch 8.0.1449, necessary for linux cui, otherwise highlighting
" is not drawn properly, fixed by 8.0.1476
if has('unix') && !has('gui_running') && has("patch-8.0.1449") && !has("patch-8.0.1476")
silent! call feedkeys("\<left>\<right>", 'tn')
endif
endif
22 0.000046 endif
22 0.000171 if exists('start_time')
22 0.000514 let s:buf[s:nr].duration = reltimefloat(reltime(start_time)) * 1000
22 0.000067 endif
FUNCTION <SNR>83_cmdl_enter()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:743
Called 2 times
Total time: 0.001515
Self time: 0.001077
count total (s) self (s)
2 0.000082 let s:buf[s:nr] = {}
2 0.000087 let s:buf[s:nr].view = winsaveview()
2 0.000031 let s:buf[s:nr].show_range = 0
2 0.000024 let s:buf[s:nr].duration = 0
2 0.000028 let s:buf[s:nr].hlsearch = &hlsearch
2 0.000061 let s:buf[s:nr].cword = expand('<cword>')
2 0.000036 let s:buf[s:nr].cWORD = expand('<cWORD>')
2 0.000057 let s:buf[s:nr].cfile = expand('<cfile>')
2 0.000128 let s:buf[s:nr].cur_init_pos = [line('.'), col('.')]
2 0.000130 let s:buf[s:nr].seq_last = undotree().seq_last
2 0.000117 let s:buf[s:nr].empty_undotree = empty(undotree().entries)
2 0.000031 let s:buf[s:nr].changed = 0
2 0.000028 let s:buf[s:nr].cmdheight = &cmdheight
2 0.000029 let s:buf[s:nr].redraw = 1
2 0.000061 let s:buf[s:nr].s_mark = (&encoding == 'utf-8' ? "\uf8b4" : '' )
2 0.000546 0.000108 call s:save_marks()
FUNCTION <SNR>80_reset_summary()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/hunk.vim:20
Called 1 time
Total time: 0.000073
Self time: 0.000026
count total (s) self (s)
1 0.000072 0.000025 call gitgutter#utility#setbufvar(a:bufnr, 'summary', [0,0,0])
FUNCTION gitgutter#diff#run_diff()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/diff.vim:60
Called 1 time
Total time: 0.011555
Self time: 0.000910
count total (s) self (s)
1 0.000155 0.000063 while gitgutter#utility#repo_path(a:bufnr, 0) == -1
sleep 5m
1 0.000007 endwhile
1 0.000109 0.000029 if gitgutter#utility#repo_path(a:bufnr, 0) == -2
throw 'gitgutter not tracked'
1 0.000003 endif
" Wrap compound commands in parentheses to make Windows happy.
" bash doesn't mind the parentheses.
1 0.000006 let cmd = '('
" Append buffer number to avoid race conditions between writing and reading
" the files when asynchronously processing multiple buffers.
"
" Without the buffer number, index_file would have a race in the shell
" between the second process writing it (with git-show) and the first
" reading it (with git-diff).
1 0.000017 let index_file = s:temp_index.'.'.a:bufnr
" Without the buffer number, buff_file would have a race between the
" second gitgutter#process_buffer() writing the file (synchronously, below)
" and the first gitgutter#process_buffer()'s async job reading it (with
" git-diff).
1 0.000014 let buff_file = s:temp_buffer.'.'.a:bufnr
1 0.000203 0.000031 let extension = gitgutter#utility#extension(a:bufnr)
1 0.000009 if !empty(extension)
1 0.000013 let index_file .= '.'.extension
1 0.000008 let buff_file .= '.'.extension
1 0.000003 endif
" Write file from index to temporary file.
1 0.000190 0.000037 let index_name = g:gitgutter_diff_base.':'.gitgutter#utility#repo_path(a:bufnr, 1)
1 0.000019 let cmd .= g:gitgutter_git_executable.' --no-pager show '.index_name.' > '.index_file.' && '
" Write buffer to temporary file.
" Note: this is synchronous.
1 0.008066 0.000132 call s:write_buffer(a:bufnr, buff_file)
" Call git-diff with the temporary files.
1 0.000042 let cmd .= g:gitgutter_git_executable.' --no-pager'
1 0.000008 if s:c_flag
1 0.000010 let cmd .= ' -c "diff.autorefreshindex=0"'
1 0.000007 let cmd .= ' -c "diff.noprefix=false"'
1 0.000007 let cmd .= ' -c "core.safecrlf=false"'
1 0.000004 endif
1 0.000018 let cmd .= ' diff --no-ext-diff --no-color -U0 '.g:gitgutter_diff_args.' -- '.index_file.' '.buff_file
" Pipe git-diff output into grep.
1 0.000018 if !a:preserve_full_diff && !empty(g:gitgutter_grep)
1 0.000255 0.000104 let cmd .= ' | '.g:gitgutter_grep.' '.gitgutter#utility#shellescape('^@@ ')
1 0.000004 endif
" grep exits with 1 when no matches are found; git-diff exits with 1 when
" differences are found. However we want to treat non-matches and
" differences as non-erroneous behaviour; so we OR the command with one
" which always exits with success (0).
1 0.000008 let cmd .= ' || exit 0'
1 0.000007 let cmd .= ')'
1 0.000624 0.000091 let cmd = gitgutter#utility#cd_cmd(a:bufnr, cmd)
1 0.000016 0.000012 if g:gitgutter_async && gitgutter#async#available()
1 0.001610 0.000084 call gitgutter#async#execute(cmd, a:bufnr, { 'out': function('gitgutter#diff#handler'), 'err': function('gitgutter#hunk#reset'), })
1 0.000009 return 'async'
else
let diff = gitgutter#utility#system(cmd)
if v:shell_error
call gitgutter#debug#log(diff)
throw 'gitgutter diff failed'
endif
return diff
endif
FUNCTION <SNR>81_obsolete_gitgutter_signs_to_remove()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/sign.vim:138
Called 1 time
Total time: 0.000111
Self time: 0.000082
count total (s) self (s)
1 0.000006 let signs_to_remove = [] " list of [<id (number)>, ...]
1 0.000005 let remove_all_signs = 1
1 0.000053 0.000024 let old_gitgutter_signs = gitgutter#utility#getbufvar(a:bufnr, 'gitgutter_signs')
1 0.000009 for line_number in keys(old_gitgutter_signs)
if index(a:new_gitgutter_signs_line_numbers, str2nr(line_number)) == -1
call add(signs_to_remove, old_gitgutter_signs[line_number].id)
else
let remove_all_signs = 0
endif
1 0.000003 endfor
1 0.000007 let s:remove_all_old_signs = remove_all_signs
1 0.000004 return signs_to_remove
FUNCTION gitgutter#diff#handler()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/diff.vim:146
Called 1 time
Total time: 0.001937
Self time: 0.000296
count total (s) self (s)
1 0.000192 0.000065 call gitgutter#debug#log(a:diff)
1 0.000338 0.000054 call gitgutter#hunk#set_hunks(a:bufnr, gitgutter#diff#parse_diff(a:diff))
1 0.000162 0.000041 let modified_lines = gitgutter#diff#process_hunks(a:bufnr, gitgutter#hunk#hunks(a:bufnr))
1 0.000008 let signs_count = len(modified_lines)
1 0.000007 if signs_count > g:gitgutter_max_signs
call gitgutter#utility#warn_once(a:bufnr, printf( 'exceeded maximum number of signs (%d > %d, configured by g:gitgutter_max_signs).', signs_count, g:gitgutter_max_signs), 'max_signs')
call gitgutter#sign#clear_signs(a:bufnr)
1 0.000003 else
1 0.000006 if g:gitgutter_signs || g:gitgutter_highlight_lines
1 0.001070 0.000028 call gitgutter#sign#update_signs(a:bufnr, modified_lines)
1 0.000002 endif
1 0.000001 endif
1 0.000093 0.000026 call s:save_last_seen_change(a:bufnr)
1 0.000014 if exists('#User#GitGutter')
let g:gitgutter_hook_context = {'bufnr': a:bufnr}
execute 'doautocmd' s:nomodeline 'User GitGutter'
unlet g:gitgutter_hook_context
1 0.000002 endif
FUNCTION <SNR>77_OnInsertChar()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:646
Called 37 times
Total time: 0.016888
Self time: 0.004009
count total (s) self (s)
37 0.012513 0.001432 if !s:AllowedToCompleteInCurrentBuffer()
return
37 0.000090 endif
37 0.000523 call timer_stop( s:pollers.completion.id )
37 0.002949 0.001151 call s:CloseCompletionMenu()
" TODO: Do we really need this here?
37 0.000427 call timer_stop( s:pollers.signature_help.id )
FUNCTION <SNR>77_OnInsertLeave()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:746
Called 2 times
Total time: 0.015616
Self time: 0.007902
count total (s) self (s)
2 0.000963 0.000102 if !s:AllowedToCompleteInCurrentBuffer()
return
2 0.000007 endif
2 0.000034 call timer_stop( s:pollers.completion.id )
2 0.000020 let s:force_semantic = 0
2 0.000039 let s:completion = s:default_completion
2 0.006277 0.000096 call s:OnFileReadyToParse()
2 0.007388 py3 ycm_state.OnInsertLeave()
2 0.000037 if g:ycm_autoclose_preview_window_after_completion || g:ycm_autoclose_preview_window_after_insertion
2 0.000191 0.000088 call s:ClosePreviewWindowIfNeeded()
2 0.000004 endif
2 0.000622 0.000053 call s:ClearSignatureHelp()
FUNCTION <SNR>83_add_flags()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:412
Called 22 times
Total time: 0.000369
Self time: 0.000369
count total (s) self (s)
22 0.000221 if !len(a:pattern)
22 0.000096 return ''
endif
if !s:range_valid
return ''
endif
if !len(substitute(a:pattern, '\\[cCvVmM]', '', 'g'))
return ''
endif
let option = ''
" magic
if has_key(a:cmdl, 'cmd') && a:cmdl.cmd.name =~# '\v^sm%[agic]$'
let option = '\m'
elseif has_key(a:cmdl, 'cmd') && a:cmdl.cmd.name =~# '\v^sno%[magic]$'
let option = '\M'
elseif &magic
let option = '\m'
else
let option = '\M'
endif
" case
if &ignorecase
if &smartcase
if match(a:pattern, '\u') ==# -1
let option .= '\c'
else
let option .= '\C'
endif
else
let option .= '\c'
endif
endif
if !empty(a:cmdl.range.abs)
let start = a:cmdl.range.abs[-2] - 1
let end = a:cmdl.range.abs[-1] + 1
elseif a:type ==# 1
return option . a:pattern
elseif a:type ==# 2
let start = s:buf[s:nr].cur_init_pos[0] - 1
let end = s:buf[s:nr].cur_init_pos[0] + 1
endif
" range pattern specifer
if a:type == 3
let start = a:cmdl.range.end - 1
let end = a:cmdl.range.end + 1
endif
let range = '\m\%>'. start .'l' . '\%<' . end . 'l'
" group is necessary to contain pattern inside range when using branches (\|)
let group_start = '\%('
let group_end = '\m\)'
" add backslash to the end of pattern if it ends with odd number of
" backslashes, this is required to properly close group
if len(matchstr(a:pattern, '\\\+$')) % 2
let group_end = '\' . group_end
endif
return range . group_start . option . a:pattern . group_end
FUNCTION <SNR>77_AllowedToCompleteInBuffer()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:408
Called 253 times
Total time: 0.034167
Self time: 0.030895
count total (s) self (s)
253 0.004641 let buftype = getbufvar( a:buffer, '&buftype' )
253 0.001824 if has_key( s:buftype_blacklist, buftype )
return 0
253 0.000497 endif
253 0.002189 let filetype = getbufvar( a:buffer, '&filetype' )
253 0.008704 0.005432 if empty( filetype ) || s:DisableOnLargeFile( a:buffer )
return 0
253 0.000353 endif
253 0.004672 let whitelist_allows = type( g:ycm_filetype_whitelist ) != type( {} ) || has_key( g:ycm_filetype_whitelist, '*' ) || has_key( g:ycm_filetype_whitelist, filetype )
253 0.002833 let blacklist_allows = type( g:ycm_filetype_blacklist ) != type( {} ) || !has_key( g:ycm_filetype_blacklist, filetype )
253 0.001237 let allowed = whitelist_allows && blacklist_allows
253 0.000575 if allowed
253 0.002156 let s:previous_allowed_buffer_number = bufnr( a:buffer )
253 0.000446 endif
253 0.000650 return allowed
FUNCTION <SNR>83_pos_range()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:560
Called 2 times
Total time: 0.000031
Self time: 0.000031
count total (s) self (s)
2 0.000020 if g:traces_preserve_view_state || empty(a:end)
2 0.000005 return
endif
call cursor([a:end, 1])
if !empty(a:pattern)
call search(a:pattern, 'c', a:end, s:s_timeout)
endif
let s:moved = 1
FUNCTION <SNR>83_get_selection_regexp()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:386
Called 22 times
Total time: 0.000388
Self time: 0.000388
count total (s) self (s)
22 0.000221 if empty(a:range)
22 0.000102 return ''
endif
let pattern = '\%>' . (a:range[-2] - 1) . 'l\%<' . (a:range[-1] + 1) . 'l'
if &listchars =~# 'eol:.'
let pattern .= '\_.'
else
let pattern .= '\(.\|^\)'
endif
return pattern
FUNCTION <SNR>77_OnDeleteChar()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:659
Called 1 time
Total time: 0.000579
Self time: 0.000152
count total (s) self (s)
1 0.000504 0.000077 if !s:AllowedToCompleteInCurrentBuffer()
return a:key
1 0.000002 endif
1 0.000020 call timer_stop( s:pollers.completion.id )
"
" TODO: Do we really need this here?
1 0.000012 call timer_stop( s:pollers.signature_help.id )
1 0.000007 if pumvisible()
1 0.000017 return "\<C-y>" . a:key
endif
return a:key
FUNCTION gitgutter#utility#getbufvar()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:18
Called 10 times
Total time: 0.000339
Self time: 0.000339
count total (s) self (s)
10 0.000170 let dict = get(getbufvar(a:buffer, ''), 'gitgutter', {})
10 0.000081 if has_key(dict, a:varname)
10 0.000062 return dict[a:varname]
else
if a:0
return a:1
endif
endif
FUNCTION <SNR>77_PollSignatureHelp()
Defined: ~/.vim/pack/bundle/start/YouCompleteMe/autoload/youcompleteme.vim:880
Called 2075 times
Total time: 0.950819
Self time: 0.477561
count total (s) self (s)
2075 0.597986 0.124728 if !s:ShouldUseSignatureHelp()
return
2075 0.009125 endif
2075 0.190333 if !py3eval( 'ycm_state.SignatureHelpRequestReady()' )
2075 0.101935 let s:pollers.signature_help.id = timer_start( s:pollers.signature_help.wait_milliseconds, function( 's:PollSignatureHelp' ) )
2075 0.009890 return
endif
let s:signature_help = py3eval( 'ycm_state.GetSignatureHelpResponse()' )
call s:UpdateSignatureHelp()
FUNCTION <SNR>42_abs_path()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:186
Called 5 times
Total time: 0.000715
Self time: 0.000715
count total (s) self (s)
5 0.000641 let p = resolve(expand('#'.a:bufnr.':p'))
5 0.000061 return a:shellesc ? gitgutter#utility#shellescape(p) : p
FUNCTION gitgutter#utility#is_active()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/utility.vim:48
Called 1 time
Total time: 0.000870
Self time: 0.000139
count total (s) self (s)
1 0.000868 0.000137 return g:gitgutter_enabled && !pumvisible() && s:is_file_buffer(a:bufnr) && s:exists_file(a:bufnr) && s:not_git_dir(a:bufnr)
FUNCTION <SNR>83_highlight()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:571
Called 46 times
Total time: 0.002784
Self time: 0.002784
count total (s) self (s)
46 0.000475 let cur_win = win_getid()
46 0.000926 if exists('s:win[cur_win].hlight[a:group].pattern') && s:win[cur_win].hlight[a:group].pattern ==# a:pattern
return
46 0.000112 endif
46 0.000750 if !exists('s:win[cur_win].hlight[a:group].pattern') && empty(a:pattern)
46 0.000165 return
endif
if &hlsearch && !empty(a:pattern) && a:group ==# 'TracesSearch'
noautocmd let &hlsearch = 0
endif
if &scrolloff !=# 0
let scrolloff = &scrolloff
noautocmd let &scrolloff = 0
endif
let alt_win = win_getid(winnr('#'))
let windows = filter(win_findbuf(s:nr), {_, val -> win_id2win(val)})
for id in windows
noautocmd call win_gotoid(id)
let s:win[id] = get(s:win, id, {})
let s:win[id].hlight = get(s:win[id], 'hlight', {})
if !exists('s:win[id].hlight[a:group]')
let x = {}
let x.pattern = a:pattern
silent! let x.index = matchadd(a:group, a:pattern, a:priority)
let s:win[id].hlight[a:group] = x
let s:highlighted = 1
elseif s:win[id].hlight[a:group].pattern !=# a:pattern
if s:win[id].hlight[a:group].index !=# -1
silent! call matchdelete(s:win[id].hlight[a:group].index)
endif
let s:win[id].hlight[a:group].pattern = a:pattern
silent! let s:win[id].hlight[a:group].index = matchadd(a:group, a:pattern, a:priority)
let s:highlighted = 1
endif
if (&conceallevel !=# 2 || &concealcursor !=# 'c') && a:group ==# 'Conceal'
let s:win[id].options = get(s:win[id], 'options', {})
let s:win[id].options.conceallevel = &conceallevel
let s:win[id].options.concealcursor = &concealcursor
noautocmd set conceallevel=2
noautocmd set concealcursor=c
endif
" highlighting doesn't work properly when cursorline or cursorcolumn is
" enabled
if &cursorcolumn || &cursorline
let s:win[id].options = get(s:win[id], 'options', {})
let s:win[id].options.cursorcolumn = &cursorcolumn
let s:win[id].options.cursorline = &cursorline
noautocmd set nocursorcolumn
noautocmd set nocursorline
endif
endfor
if bufname('%') !=# '[Command Line]'
noautocmd call win_gotoid(alt_win)
noautocmd call win_gotoid(cur_win)
endif
if exists('scrolloff')
noautocmd let &scrolloff = scrolloff
endif
FUNCTION gitgutter#hunk#set_hunks()
Defined: ~/.vim/pack/bundle/start/gitgutter/autoload/gitgutter/hunk.vim:1
Called 1 time
Total time: 0.000214
Self time: 0.000060
count total (s) self (s)
1 0.000115 0.000034 call gitgutter#utility#setbufvar(a:bufnr, 'hunks', a:hunks)
1 0.000098 0.000025 call s:reset_summary(a:bufnr)
FUNCTION <SNR>83_skip_modifiers()
Defined: ~/.vim/pack/bundle/start/traces/autoload/traces.vim:919
Called 22 times
Total time: 0.010010
Self time: 0.010010
count total (s) self (s)
22 0.000259 let cmdl = a:cmdl
" skip leading colon
22 0.000809 let cmdl = substitute(cmdl, '\v^:+', '', '')
" skip modifiers
22 0.000516 let pattern = '\v^\s*%(' . 'sil%[ent]\!=|' . 'verb%[ose]|' . 'noa%[utocmd]|' . 'loc%[kmarks]' . 'keepp%[atterns]|' . 'keepa%[lt]|' . 'keepj%[umps]|' . 'kee%[pmarks]|' . ')\s+'
22 0.000186 while 1
22 0.002425 let offset = matchstrpos(cmdl, pattern)
22 0.000408 if offset[2] isnot -1
let cmdl = strcharpart(cmdl, offset[2])
22 0.000104 else
22 0.000091 break
endif
22 0.000101 endwhile
22 0.000148 if g:traces_skip_modifiers
" skip *do modifiers
22 0.001818 let cmdl = substitute(cmdl, '\v^\s*%(%(%(\d+|\.|\$|\%)\s*[,;]=\s*)+)=\s*%(cdo|cfdo|ld%[o]|lfdo' . '|bufd%[o]|tabd%[o]|argdo|wind%[o])\!=\s+', '', '')
" skip modifiers
22 0.000116 while 1
22 0.001156 let offset = matchstrpos(cmdl, pattern)
22 0.000254 if offset[2] isnot -1
let cmdl = strcharpart(cmdl, offset[2])
22 0.000070 else
22 0.000068 break
endif
22 0.000083 endwhile
22 0.000061 endif
22 0.000133 return cmdl
FUNCTIONS SORTED ON TOTAL TIME
count total (s) self (s) function
2075 0.950819 0.477561 <SNR>77_PollSignatureHelp()
2357 0.520391 <SNR>77_ShouldUseSignatureHelp()
40 0.183903 0.007139 <SNR>77_OnTextChangedInsertMode()
38 0.083352 0.067855 <SNR>77_RequestCompletion()
22 0.077905 0.018314 traces#init()
232 0.060609 0.017931 <SNR>77_UpdateSignatureHelp()
78 0.046682 0.039974 <SNR>77_PollCompletion()
22 0.045251 0.005333 <SNR>83_evaluate_cmdl()
136 0.041454 <SNR>28_Highlight_Matching_Pair()
253 0.040114 0.005947 <SNR>77_AllowedToCompleteInCurrentBuffer()
12 0.038155 0.034907 <SNR>77_OnFileReadyToParse()
10 0.035080 0.000739 <SNR>77_OnTextChangedNormalMode()
253 0.034167 0.030895 <SNR>77_AllowedToCompleteInBuffer()
45 0.026185 0.014648 <SNR>77_OnCursorMovedNormalMode()
46 0.025091 0.014399 <SNR>77_OnCompleteDone()
38 0.022343 0.014633 <SNR>77_RequestSignatureHelp()
77 0.021322 UltiSnips#TrackChange()
37 0.016888 0.004009 <SNR>77_OnInsertChar()
22 0.016643 0.003173 <SNR>83_parse_command()
72 0.016606 0.001451 <SNR>77_OnCompleteChanged()
FUNCTIONS SORTED ON SELF TIME
count total (s) self (s) function
2357 0.520391 <SNR>77_ShouldUseSignatureHelp()
2075 0.950819 0.477561 <SNR>77_PollSignatureHelp()
38 0.083352 0.067855 <SNR>77_RequestCompletion()
136 0.041454 <SNR>28_Highlight_Matching_Pair()
78 0.046682 0.039974 <SNR>77_PollCompletion()
12 0.038155 0.034907 <SNR>77_OnFileReadyToParse()
253 0.034167 0.030895 <SNR>77_AllowedToCompleteInBuffer()
77 0.021322 UltiSnips#TrackChange()
22 0.077905 0.018314 traces#init()
232 0.060609 0.017931 <SNR>77_UpdateSignatureHelp()
45 0.026185 0.014648 <SNR>77_OnCursorMovedNormalMode()
38 0.022343 0.014633 <SNR>77_RequestSignatureHelp()
46 0.025091 0.014399 <SNR>77_OnCompleteDone()
40 0.013881 <SNR>77_IdentifierFinishedOperations()
22 0.016416 0.012594 <SNR>83_parse_range()
22 0.013470 0.012077 <SNR>83_get_command()
22 0.010010 <SNR>83_skip_modifiers()
25 0.008073 GetVimIndentIntern()
1 0.007934 <SNR>72_write_buffer()
2 0.015616 0.007902 <SNR>77_OnInsertLeave()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment