Added images

This commit is contained in:
Rodrigo Pedroso 2019-09-16 17:18:44 -04:00
commit aa717a52ee
5 changed files with 691 additions and 1 deletions

View file

@ -1,7 +1,8 @@
# Tube n' kids
A tool to protect children from unwanted online videos.
![Tube n' kids](/assets/Tnk_main.png)
[![Tube n' kids](/assets/Tnk_main.png)](https://www.tubenkids.com)
*Tube n' kids*
## Why we need to do more to protect our children
@ -35,6 +36,12 @@ The right way for a child to watch online videos is under the supervision of an
So, in my view, on top of all the investment into highly complex artificial intelligence algorithms with preemptive capability, the legal battle and invested support provided by devoted associations, I wanted to have more control over what my son was watching. So the approach I took was to create something that would catalog his usage, summarize and flag suspicious activity. Something that could make my job of supervisor a little easier. And that was the incentive behind Tube n' kids.
[![iOS parent area](/assets/Tnk_detail.png)](https://itunes.apple.com/us/app/tube-n-kids/id1143617624?mt=8)
*Parental area in the iOS app*
[![Web parent area](/assets/Tnk_detail_2.png)](https://www.tubenkids.com)
*Parental area in the web app*
It is not a silver bullet. It does not stop bad content from showing up. It does not make it OK to handle and iPad to the kids and let them watch videos alone all day. It does not remove from the parents the responsibility of supervising their kids. It helps them do it.
> I wanted to have more control over what my son was watching. (...) Something that could make my job of supervisor a little easier.
@ -43,4 +50,9 @@ And, of course, everything is for naught if the child is actively looking for th
And that was another thing I put in Tube n' kids. I can search for channels that I know he likes, and I can add them to his list of suggestions. I can browse his history and find the subject he is interested in - like Minecraft and Beyblade, recently - and try to find good channels about those. There were times this strategy didn't work, like with a few amazing zoo channels I found and he dismissed without giving them a second look. Still, it is another way to put inspiring content in front of him.
[![What the child views](/assets/Tnk_shild_view.png)](https://www.tubenkids.com)
*Child area*
At some point he may find something that is not appropriated to him. Probably he won't even understand it, and close it right away. This is where Tnk comes in handy by allowing me to block the video, or the entire channel for that matter, which means that it will not appear for my son, even if he looks for it.
The world has changed. Content comes into our homes through new ways, and it opens way to all sorts of threats. We need to adapt. As technology changed the way we watch content, it also has to provide new means to control it. We need new tools to keep up.

BIN
assets/Tnk_child_view.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

BIN
assets/Tnk_detail.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 KiB

BIN
assets/Tnk_detail_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,021 KiB

678
profile.log Normal file
View file

@ -0,0 +1,678 @@
FUNCTION ale#Var()
Defined: ~/.vim/bundle/ale/autoload/ale.vim line 179
Called 1 time
Total time: 0.000019
Self time: 0.000019
count total (s) self (s)
1 0.000005 let l:full_name = 'ale_' . a:variable_name
1 0.000008 let l:vars = getbufvar(str2nr(a:buffer), '', {})
1 0.000005 return get(l:vars, l:full_name, g:[l:full_name])
FUNCTION <SNR>58_OnDeleteChar()
Defined: ~/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim line 670
Called 2 times
Total time: 0.000176
Self time: 0.000038
count total (s) self (s)
2 0.000172 0.000034 if !s:AllowedToCompleteInCurrentBuffer()
2 0.000002 return a:key
endif
call timer_stop( s:pollers.completion.id )
if pumvisible()
return "\<C-y>" . a:key
endif
return a:key
FUNCTION <SNR>58_OnInsertLeave()
Defined: ~/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim line 748
Called 1 time
Total time: 0.000090
Self time: 0.000019
count total (s) self (s)
1 0.000089 0.000018 if !s:AllowedToCompleteInCurrentBuffer()
1 0.000001 return
endif
call timer_stop( s:pollers.completion.id )
let s:force_semantic = 0
let s:completion = s:default_completion
call s:OnFileReadyToParse()
exec s:python_command "ycm_state.OnInsertLeave()"
if g:ycm_autoclose_preview_window_after_completion || g:ycm_autoclose_preview_window_after_insertion
call s:ClosePreviewWindowIfNeeded()
endif
FUNCTION fugitive#Head()
Defined: ~/.vim/bundle/vim-fugitive/autoload/fugitive.vim line 324
Called 28 times
Total time: 0.003488
Self time: 0.003115
count total (s) self (s)
28 0.000614 0.000241 let dir = a:0 > 1 ? a:2 : s:Dir()
28 0.001142 if empty(dir) || !filereadable(dir . '/HEAD')
return ''
28 0.000014 endif
28 0.000715 let head = readfile(dir . '/HEAD')[0]
28 0.000310 if head =~# '^ref: '
28 0.000577 return substitute(head, '\C^ref: \%(refs/\%(heads/\|remotes/\|tags/\)\=\)\=', '', '')
elseif head =~# '^\x\{40\}$'
let len = a:0 ? a:1 : 0
return len < 0 ? head : len ? head[0:len-1] : ''
else
return ''
endif
FUNCTION <SNR>58_OnTextChangedNormalMode()
Defined: ~/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim line 702
Called 1 time
Total time: 0.000076
Self time: 0.000019
count total (s) self (s)
1 0.000074 0.000017 if !s:AllowedToCompleteInCurrentBuffer()
1 0.000001 return
endif
call s:OnFileReadyToParse()
FUNCTION ActiveStatus()
Defined: ~/.vimrc line 241
Called 14 times
Total time: 0.000888
Self time: 0.000888
count total (s) self (s)
14 0.000058 let statusline=""
14 0.000057 let statusline.="%1*"
14 0.000049 let statusline.="\ %{ModeName(mode())}\ "
14 0.000026 let statusline.="%2*"
14 0.000030 let statusline.="%{mode()=='i'||mode()=='v'?'':''}"
14 0.000032 let statusline.="%3*"
14 0.000049 let statusline.="\ %{fugitive#head()!=''?'\ '.fugitive#head().'\ ':'\ -\ '}"
14 0.000019 let statusline.="%4*"
14 0.000025 let statusline.="%{mode()=='i'||mode()=='v'?'':''}"
14 0.000014 let statusline.="%5*"
14 0.000044 let statusline.="\ [%n/%{len(filter(range(1,bufnr('$')),'buflisted(v:val)'))}]"
14 0.000077 let statusline.="\ %{pathshorten(expand('%:f'))}\ %m\ "
14 0.000028 let statusline.="%{&readonly?'\ \ ':''}"
14 0.000022 let statusline.="%="
14 0.000026 let statusline.="\ %{''!=#&filetype?&filetype:'none'}\ "
14 0.000020 let statusline.="%4*"
14 0.000026 let statusline.="%{mode()=='i'||mode()=='v'?'':''}"
14 0.000034 let statusline.="%3*"
14 0.000043 let statusline.="\ %{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'} %vC|%l/%LL\ " " Column number | Row number / total lines
14 0.000023 let statusline.="%2*"
14 0.000036 let statusline.="%{mode()=='i'||mode()=='v'?'':''}"
14 0.000024 let statusline.="%1*"
14 0.000030 let statusline.="\ %{strftime('%a %b-%d %H:%M')}\ " " Date time clock updated on key presses
14 0.000024 return statusline
FUNCTION <SNR>58_DisableOnLargeFile()
Defined: ~/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim line 418
Called 26 times
Total time: 0.000130
Self time: 0.000130
count total (s) self (s)
26 0.000079 if exists( 'b:ycm_largefile' )
26 0.000026 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
exec s:python_command "vimsupport.PostVimMessage(" . "'YouCompleteMe is disabled in this buffer; " . "the file exceeded the max size (see YCM options).' )"
endif
return b:ycm_largefile
FUNCTION <SNR>58_OnTextChangedInsertMode()
Defined: ~/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim line 711
Called 2 times
Total time: 0.000502
Self time: 0.000069
count total (s) self (s)
2 0.000491 0.000058 if !s:AllowedToCompleteInCurrentBuffer()
2 0.000003 return
endif
if s:completion_stopped
let s:completion_stopped = 0
let s:completion = s:default_completion
return
endif
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.
if s:force_semantic && !s:Pyeval( 'base.LastEnteredCharIsIdentifierChar()' )
let s:force_semantic = 0
endif
if &completefunc == "youcompleteme#CompleteFunc" && ( g:ycm_auto_trigger || s:force_semantic ) && !s:InsideCommentOrStringAndShouldStop() && !s:OnBlankLine()
" Immediately call previous completion to avoid flickers.
call s:Complete()
call s:InvokeCompletion()
endif
exec s:python_command "ycm_state.OnCursorMoved()"
if g:ycm_autoclose_preview_window_after_completion
call s:ClosePreviewWindowIfNeeded()
endif
FUNCTION <SNR>32_Highlight_Matching_Pair()
Defined: /usr/local/Cellar/vim/8.1.1850/share/vim/vim81/plugin/matchparen.vim line 39
Called 6 times
Total time: 0.000998
Self time: 0.000998
count total (s) self (s)
" Remove any previous match.
6 0.000067 if exists('w:paren_hl_on') && w:paren_hl_on
silent! call matchdelete(3)
let w:paren_hl_on = 0
6 0.000011 endif
" Avoid that we remove the popup menu.
" Return when there are no colors (looks like the cursor jumps).
6 0.000039 if pumvisible() || (&t_Co < 8 && !has("gui_running"))
return
6 0.000005 endif
" Get the character under the cursor and check if it's in 'matchpairs'.
6 0.000030 let c_lnum = line('.')
6 0.000033 let c_col = col('.')
6 0.000019 let before = 0
6 0.000028 let text = getline(c_lnum)
6 0.000126 let matches = matchlist(text, '\(.\)\=\%'.c_col.'c\(.\=\)')
6 0.000017 if empty(matches)
let [c_before, c] = ['', '']
6 0.000006 else
6 0.000060 let [c_before, c] = matches[1:2]
6 0.000009 endif
6 0.000225 let plist = split(&matchpairs, '.\zs[:,]')
6 0.000032 let i = index(plist, c)
6 0.000011 if i < 0
" not found, in Insert mode try character before the cursor
6 0.000023 if c_col > 1 && (mode() == 'i' || mode() == 'R')
let before = strlen(c_before)
let c = c_before
let i = index(plist, c)
6 0.000008 endif
6 0.000008 if i < 0
" not found, nothing to do
6 0.000007 return
endif
endif
" Figure out the arguments for searchpairpos().
if i % 2 == 0
let s_flags = 'nW'
let c2 = plist[i + 1]
else
let s_flags = 'nbW'
let c2 = c
let c = plist[i - 1]
endif
if c == '['
let c = '\['
let c2 = '\]'
endif
" Find the match. When it was just before the cursor move it there for a
" moment.
if before > 0
let has_getcurpos = exists("*getcurpos")
if has_getcurpos
" getcurpos() is more efficient but doesn't exist before 7.4.313.
let save_cursor = getcurpos()
else
let save_cursor = winsaveview()
endif
call cursor(c_lnum, c_col - before)
endif
if !has("syntax") || !exists("g:syntax_on")
let s_skip = "0"
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.
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'.
try
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
endtry
endif
" Limit the search to lines visible in the window.
let stoplinebottom = line('w$')
let stoplinetop = line('w0')
if i % 2 == 0
let stopline = stoplinebottom
else
let stopline = stoplinetop
endif
" Limit the search time to 300 msec to avoid a hang on very long lines.
" This fails when a timeout is not supported.
if mode() == 'i' || mode() == 'R'
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
endif
try
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)
endtry
if before > 0
if has_getcurpos
call setpos('.', save_cursor)
else
call winrestview(save_cursor)
endif
endif
" If a match is found setup match highlighting.
if m_lnum > 0 && m_lnum >= stoplinetop && m_lnum <= stoplinebottom
if exists('*matchaddpos')
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\)/'
endif
let w:paren_hl_on = 1
endif
FUNCTION ale#Queue()
Defined: ~/.vim/bundle/ale/autoload/ale.vim line 122
Called 2 times
Total time: 0.000073
Self time: 0.000060
count total (s) self (s)
2 0.000002 if a:0 > 2
throw 'too many arguments!'
2 0.000002 endif
2 0.000006 let l:buffer = get(a:000, 1, v:null)
2 0.000003 if l:buffer is v:null
2 0.000004 let l:buffer = bufnr('')
2 0.000002 endif
2 0.000004 if type(l:buffer) isnot v:t_number
throw 'buffer_number must be a Number'
2 0.000001 endif
2 0.000041 0.000028 if ale#ShouldDoNothing(l:buffer)
2 0.000001 return
endif
" Default linting_flag to ''
let l:should_lint_file = get(a:000, 0) is# 'lint_file'
if s:lint_timer != -1
call timer_stop(s:lint_timer)
let s:lint_timer = -1
endif
if a:delay > 0
let s:lint_timer = timer_start( a:delay, function('s:Lint', [l:buffer, l:should_lint_file]))
else
call s:Lint(l:buffer, l:should_lint_file, 0)
endif
FUNCTION <SNR>58_AllowedToCompleteInBuffer()
Defined: ~/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim line 435
Called 26 times
Total time: 0.001600
Self time: 0.001470
count total (s) self (s)
26 0.000172 let buftype = getbufvar( a:buffer, '&buftype' )
26 0.000098 if has_key( s:buftype_blacklist, buftype )
return 0
26 0.000008 endif
26 0.000093 let filetype = getbufvar( a:buffer, '&filetype' )
26 0.000544 0.000414 if empty( filetype ) || s:DisableOnLargeFile( a:buffer )
return 0
26 0.000011 endif
26 0.000222 let whitelist_allows = type( g:ycm_filetype_whitelist ) != type( {} ) || has_key( g:ycm_filetype_whitelist, '*' ) || has_key( g:ycm_filetype_whitelist, filetype )
26 0.000133 let blacklist_allows = type( g:ycm_filetype_blacklist ) != type( {} ) || !has_key( g:ycm_filetype_blacklist, filetype )
26 0.000048 let allowed = whitelist_allows && blacklist_allows
26 0.000019 if allowed
let s:previous_allowed_buffer_number = bufnr( a:buffer )
26 0.000011 endif
26 0.000021 return allowed
FUNCTION FugitiveGitDir()
Defined: ~/.vim/bundle/vim-fugitive/plugin/fugitive.vim line 11
Called 56 times
Total time: 0.000226
Self time: 0.000226
count total (s) self (s)
56 0.000063 if !a:0 || a:1 ==# -1
56 0.000136 return get(b:, 'git_dir', '')
elseif type(a:1) == type(0)
return getbufvar(a:1, 'git_dir')
elseif type(a:1) == type('')
return substitute(s:Slash(a:1), '/$', '', '')
else
return ''
endif
FUNCTION fugitive#head()
Defined: ~/.vim/bundle/vim-fugitive/autoload/fugitive.vim line 4595
Called 28 times
Total time: 0.004604
Self time: 0.000649
count total (s) self (s)
28 0.000728 0.000261 if empty(s:Dir())
return ''
28 0.000020 endif
28 0.003791 0.000303 return fugitive#Head(a:0 ? a:1 : 0)
FUNCTION MarkdownFold()
Defined: /usr/local/Cellar/vim/8.1.1850/share/vim/vim81/ftplugin/markdown.vim line 22
Called 2274 times
Total time: 10.911360
Self time: 10.911360
count total (s) self (s)
2274 0.004165 let line = getline(v:lnum)
" Regular headers
2274 10.679628 let depth = match(line, '\(^#\+\)\@<=\( .*$\)\@=')
2274 0.002726 if depth > 0
23 0.000036 return ">" . depth
2251 0.001131 endif
" Setext style headings
2251 0.006384 let nextline = getline(v:lnum + 1)
2251 0.103738 if (line =~ '^.\+$') && (nextline =~ '^=\+$')
return ">1"
2251 0.000877 endif
2251 0.099692 if (line =~ '^.\+$') && (nextline =~ '^-\+$')
return ">2"
2251 0.000826 endif
2251 0.001376 return "="
FUNCTION ModeName()
Defined: ~/.vimrc line 217
Called 14 times
Total time: 0.053255
Self time: 0.053255
count total (s) self (s)
14 0.000040 if a:mode == 'i'
5 0.000005 return 'I'
9 0.000011 elseif a:mode == 'v'
hi User1 ctermbg=202 ctermfg=blue
hi User2 ctermbg=215 ctermfg=202
hi User3 ctermbg=215 ctermfg=white
hi User4 ctermbg=none ctermfg=215
hi User5 ctermbg=none ctermfg=202
redrawstatus
return 'V'
9 0.000005 else
9 0.000057 hi User1 ctermbg=none ctermfg=33
9 0.000058 hi User2 ctermbg=none ctermfg=33
9 0.000015 hi User3 ctermbg=none ctermfg=33
9 0.000013 hi User4 ctermbg=none ctermfg=33
9 0.000015 hi User5 ctermbg=none ctermfg=232
9 0.052936 redrawstatus
9 0.000012 return 'N'
endif
FUNCTION UpdateStatusBar()
Defined: ~/.vimrc line 273
Called 6 times
Total time: 0.000140
Self time: 0.000140
count total (s) self (s)
6 0.000131 execute 'let &ro = &ro'
FUNCTION <SNR>58_AllowedToCompleteInCurrentBuffer()
Defined: ~/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim line 462
Called 26 times
Total time: 0.002052
Self time: 0.000452
count total (s) self (s)
26 0.002038 0.000438 return s:AllowedToCompleteInBuffer( '%' )
FUNCTION <SNR>58_OnCursorMovedNormalMode()
Defined: ~/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim line 693
Called 1 time
Total time: 0.000079
Self time: 0.000018
count total (s) self (s)
1 0.000078 0.000017 if !s:AllowedToCompleteInCurrentBuffer()
1 0.000001 return
endif
exec s:python_command "ycm_state.OnCursorMoved()"
FUNCTION <SNR>58_OnInsertChar()
Defined: ~/.vim/bundle/YouCompleteMe/autoload/youcompleteme.vim line 660
Called 19 times
Total time: 0.001638
Self time: 0.000346
count total (s) self (s)
19 0.001608 0.000316 if !s:AllowedToCompleteInCurrentBuffer()
19 0.000016 return
endif
call timer_stop( s:pollers.completion.id )
call s:CloseCompletionMenu()
FUNCTION InsertStatuslineColor()
Defined: ~/.vimrc line 201
Called 1 time
Total time: 0.000022
Self time: 0.000022
count total (s) self (s)
1 0.000001 if a:mode == 'i'
1 0.000007 hi User1 ctermbg=37 ctermfg=black
1 0.000002 hi User2 ctermbg=44 ctermfg=37
1 0.000002 hi User3 ctermbg=44 ctermfg=white
1 0.000002 hi User4 ctermbg=none ctermfg=44
1 0.000002 hi User5 ctermbg=none ctermfg=51
elseif a:mode == 'r'
hi User5 ctermbg=none ctermfg=240
elseif a:mode == 'v'
hi User5 ctermbg=none ctermfg=240
else
hi User5 ctermbg=Red ctermfg=240
1 0.000000 endif
FUNCTION ale#ShouldDoNothing()
Defined: ~/.vim/bundle/ale/autoload/ale.vim line 25
Called 2 times
Total time: 0.000013
Self time: 0.000013
count total (s) self (s)
" The checks are split into separate if statements to make it possible to
" profile each check individually with Vim's profiling tools.
"
" Do nothing if ALE is disabled.
2 0.000008 if !getbufvar(a:buffer, 'ale_enabled', get(g:, 'ale_enabled', 0))
2 0.000002 return 1
endif
" Don't perform any checks when newer NeoVim versions are exiting.
if get(v:, 'exiting', v:null) isnot v:null
return 1
endif
let l:filetype = getbufvar(a:buffer, '&filetype')
" Do nothing when there's no filetype.
if l:filetype is# ''
return 1
endif
" Do nothing for diff buffers.
if getbufvar(a:buffer, '&diff')
return 1
endif
" Do nothing for blacklisted files.
if index(get(g:, 'ale_filetype_blacklist', []), l:filetype) >= 0
return 1
endif
" Do nothing if running from command mode.
if s:getcmdwintype_exists && !empty(getcmdwintype())
return 1
endif
let l:filename = fnamemodify(bufname(a:buffer), ':t')
" Do nothing for directories.
if l:filename is# '.'
return 1
endif
" Don't start linting and so on when an operator is pending.
if ale#util#Mode(1) is# 'no'
return 1
endif
" Do nothing if running in the sandbox.
if ale#util#InSandbox()
return 1
endif
" Do nothing if the file is too large.
if ale#FileTooLarge(a:buffer)
return 1
endif
" Do nothing from CtrlP buffers with CtrlP-funky.
if exists(':CtrlPFunky') is 2&& getbufvar(a:buffer, '&l:statusline') =~# 'CtrlPMode.*funky'
return 1
endif
return 0
FUNCTION <SNR>55_Dir()
Defined: ~/.vim/bundle/vim-fugitive/autoload/fugitive.vim line 225
Called 56 times
Total time: 0.000840
Self time: 0.000614
count total (s) self (s)
56 0.000825 0.000599 return a:0 ? FugitiveGitDir(a:1) : FugitiveGitDir()
FUNCTIONS SORTED ON TOTAL TIME
count total (s) self (s) function
2274 10.911360 MarkdownFold()
14 0.053255 ModeName()
28 0.004604 0.000649 fugitive#head()
28 0.003488 0.003115 fugitive#Head()
26 0.002052 0.000452 <SNR>58_AllowedToCompleteInCurrentBuffer()
19 0.001638 0.000346 <SNR>58_OnInsertChar()
26 0.001600 0.001470 <SNR>58_AllowedToCompleteInBuffer()
6 0.000998 <SNR>32_Highlight_Matching_Pair()
14 0.000888 ActiveStatus()
56 0.000840 0.000614 <SNR>55_Dir()
2 0.000502 0.000069 <SNR>58_OnTextChangedInsertMode()
56 0.000226 FugitiveGitDir()
2 0.000176 0.000038 <SNR>58_OnDeleteChar()
6 0.000140 UpdateStatusBar()
26 0.000130 <SNR>58_DisableOnLargeFile()
1 0.000090 0.000019 <SNR>58_OnInsertLeave()
1 0.000079 0.000018 <SNR>58_OnCursorMovedNormalMode()
1 0.000076 0.000019 <SNR>58_OnTextChangedNormalMode()
2 0.000073 0.000060 ale#Queue()
1 0.000022 InsertStatuslineColor()
FUNCTIONS SORTED ON SELF TIME
count total (s) self (s) function
2274 10.911360 MarkdownFold()
14 0.053255 ModeName()
28 0.003488 0.003115 fugitive#Head()
26 0.001600 0.001470 <SNR>58_AllowedToCompleteInBuffer()
6 0.000998 <SNR>32_Highlight_Matching_Pair()
14 0.000888 ActiveStatus()
28 0.004604 0.000649 fugitive#head()
56 0.000840 0.000614 <SNR>55_Dir()
26 0.002052 0.000452 <SNR>58_AllowedToCompleteInCurrentBuffer()
19 0.001638 0.000346 <SNR>58_OnInsertChar()
56 0.000226 FugitiveGitDir()
6 0.000140 UpdateStatusBar()
26 0.000130 <SNR>58_DisableOnLargeFile()
2 0.000502 0.000069 <SNR>58_OnTextChangedInsertMode()
2 0.000073 0.000060 ale#Queue()
2 0.000176 0.000038 <SNR>58_OnDeleteChar()
1 0.000022 InsertStatuslineColor()
1 0.000076 0.000019 <SNR>58_OnTextChangedNormalMode()
1 0.000090 0.000019 <SNR>58_OnInsertLeave()
1 0.000019 ale#Var()