Skip to content
Browse files

Added everything.

  • Loading branch information...
1 parent 4e01434 commit 2f110ca5fbf810cc83ff3625f86fb0878743ca90 @romainl committed Aug 28, 2012
Showing with 19,888 additions and 0 deletions.
  1. +4 −0 after/ftplugin/css.vim
  2. +31 −0 after/ftplugin/html.vim
  3. +6 −0 after/ftplugin/javascript.vim
  4. +4 −0 after/ftplugin/php.vim
  5. +10 −0 after/ftplugin/python.vim
  6. +166 −0 autoload/pathogen.vim
  7. +449 −0 bundle/autocomplpop/autoload/acp.vim
  8. +298 −0 bundle/autocomplpop/doc/acp.jax
  9. +512 −0 bundle/autocomplpop/doc/acp.txt
  10. +45 −0 bundle/autocomplpop/doc/tags
  11. +44 −0 bundle/autocomplpop/doc/tags-ja
  12. +184 −0 bundle/autocomplpop/plugin/acp.vim
  13. +1 −0 bundle/commentary/.gitignore
  14. +61 −0 bundle/commentary/README.markdown
  15. +18 −0 bundle/commentary/doc/commentary.txt
  16. +59 −0 bundle/commentary/plugin/commentary.vim
  17. +8 −0 bundle/ctrlp/.gitignore
  18. +1,926 −0 bundle/ctrlp/autoload/ctrlp.vim
  19. +140 −0 bundle/ctrlp/autoload/ctrlp/bookmarkdir.vim
  20. +238 −0 bundle/ctrlp/autoload/ctrlp/buffertag.vim
  21. +96 −0 bundle/ctrlp/autoload/ctrlp/changes.vim
  22. +92 −0 bundle/ctrlp/autoload/ctrlp/dir.vim
  23. +63 −0 bundle/ctrlp/autoload/ctrlp/line.vim
  24. +83 −0 bundle/ctrlp/autoload/ctrlp/mixed.vim
  25. +119 −0 bundle/ctrlp/autoload/ctrlp/mrufiles.vim
  26. +62 −0 bundle/ctrlp/autoload/ctrlp/quickfix.vim
  27. +56 −0 bundle/ctrlp/autoload/ctrlp/rtscript.vim
  28. +113 −0 bundle/ctrlp/autoload/ctrlp/tag.vim
  29. +154 −0 bundle/ctrlp/autoload/ctrlp/undo.vim
  30. +72 −0 bundle/ctrlp/autoload/ctrlp/utils.vim
  31. +1,188 −0 bundle/ctrlp/doc/ctrlp.txt
  32. +60 −0 bundle/ctrlp/plugin/ctrlp.vim
  33. +88 −0 bundle/ctrlp/readme.md
  34. +586 −0 bundle/delimitmate/autoload/delimitMate.vim
  35. +818 −0 bundle/delimitmate/doc/delimitMate.txt
  36. +52 −0 bundle/delimitmate/doc/tags
  37. +434 −0 bundle/delimitmate/plugin/delimitMate.vim
  38. +580 −0 bundle/easygrep/doc/EasyGrep.txt
  39. +37 −0 bundle/easygrep/doc/tags
  40. +2,478 −0 bundle/easygrep/plugin/EasyGrep.vim
  41. +72 −0 bundle/easygrep/plugin/EasyGrepFileAssociations
  42. +1 −0 bundle/easymotion/.gitignore
  43. +52 −0 bundle/easymotion/README.md
  44. +573 −0 bundle/easymotion/autoload/EasyMotion.vim
  45. +319 −0 bundle/easymotion/doc/easymotion.txt
  46. +73 −0 bundle/easymotion/plugin/EasyMotion.vim
  47. +118 −0 bundle/insertimg/plugin/insertimg.vim
  48. +5 −0 bundle/snipMate/README.markdown
  49. +40 −0 bundle/snipMate/after/plugin/snipMate.vim
  50. +435 −0 bundle/snipMate/autoload/snipMate.vim
  51. +322 −0 bundle/snipMate/doc/snipMate.txt
  52. +37 −0 bundle/snipMate/doc/tags
  53. +10 −0 bundle/snipMate/ftplugin/html_snip_helper.vim
  54. +8 −0 bundle/snipMate/plugin-info.txt
  55. +271 −0 bundle/snipMate/plugin/snipMate.vim
  56. +9 −0 bundle/snipMate/snippets/_.snippets
  57. +66 −0 bundle/snipMate/snippets/autoit.snippets
  58. +113 −0 bundle/snipMate/snippets/c.snippets
  59. +34 −0 bundle/snipMate/snippets/cpp.snippets
  60. +39 −0 bundle/snipMate/snippets/erlang.snippets
  61. +190 −0 bundle/snipMate/snippets/html.snippets
  62. +95 −0 bundle/snipMate/snippets/java.snippets
  63. +74 −0 bundle/snipMate/snippets/javascript.snippets
  64. +54 −0 bundle/snipMate/snippets/mako.snippets
  65. +247 −0 bundle/snipMate/snippets/objc.snippets
  66. +97 −0 bundle/snipMate/snippets/perl.snippets
  67. +216 −0 bundle/snipMate/snippets/php.snippets
  68. +86 −0 bundle/snipMate/snippets/python.snippets
  69. +504 −0 bundle/snipMate/snippets/ruby.snippets
  70. +28 −0 bundle/snipMate/snippets/sh.snippets
  71. +7 −0 bundle/snipMate/snippets/snippet.snippets
  72. +92 −0 bundle/snipMate/snippets/tcl.snippets
  73. +115 −0 bundle/snipMate/snippets/tex.snippets
  74. +32 −0 bundle/snipMate/snippets/vim.snippets
  75. +58 −0 bundle/snipMate/snippets/zsh.snippets
  76. +19 −0 bundle/snipMate/syntax/snippet.vim
  77. +23 −0 bundle/sparkup/README.txt
  78. +1,087 −0 bundle/sparkup/ftplugin/html/sparkup.py
  79. +94 −0 bundle/sparkup/ftplugin/html/sparkup.vim
  80. +222 −0 bundle/surround/doc/surround.txt
  81. +19 −0 bundle/surround/doc/tags
  82. +625 −0 bundle/surround/plugin/surround.vim
  83. +131 −0 bundle/syntastic/README.markdown
  84. +171 −0 bundle/syntastic/autoload/syntastic/c.vim
  85. +574 −0 bundle/syntastic/doc/syntastic.txt
  86. +31 −0 bundle/syntastic/doc/tags
  87. +614 −0 bundle/syntastic/plugin/syntastic.vim
  88. +43 −0 bundle/syntastic/syntax_checkers/applescript.vim
  89. +156 −0 bundle/syntastic/syntax_checkers/c.vim
  90. +27 −0 bundle/syntastic/syntax_checkers/coffee.vim
  91. +94 −0 bundle/syntastic/syntax_checkers/cpp.vim
  92. +31 −0 bundle/syntastic/syntax_checkers/css.vim
Sorry, we could not display the entire diff because it was too big.
View
4 after/ftplugin/css.vim
@@ -0,0 +1,4 @@
+nnoremap <leader>g I/* <Esc>A */<Esc>yyp0llv$r-$hc$*/<Esc>yykPjj
+
+vnoremap !! <Esc>'<O/*<Esc>'>o*/<Esc>
+vnoremap ?? <Esc>'<"_dd'>"_dd'<
View
31 after/ftplugin/html.vim
@@ -0,0 +1,31 @@
+vnoremap !! <Esc>'<O<!--<Esc>'>o--><Esc>
+vnoremap ?? <Esc>'<"_dd'>"_dd'<
+
+nnoremap <leader>& :call Entities()<CR>
+nnoremap <leader>é :call ReverseEntities()<CR>
+vnoremap <leader>& :call Entities()<CR>
+vnoremap <leader>é :call ReverseEntities()<CR>
+
+nnoremap <leader>< /<\w*\(\s\\|>\)<CR>
+nnoremap <leader>> ?<\w*\(\s\\|>\)<CR>
+
+let b:match_words='<:>,<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
+
+if has('gui_running')
+
+ if os == 'Darwin' || os == 'Mac'
+
+ nnoremap <F12>f :exe ':silent !open -a firefox %'<CR>
+ nnoremap <F12>c :exe ':silent !open -a "google chrome" %'<CR>
+ nnoremap <F12>o :exe ':silent !open -a opera %'<CR>
+ nnoremap <F12>s :exe ':silent !open -a safari %'<CR>
+
+ elseif os == 'Linux'
+
+ nnoremap <F12>f :exe ':silent !firefox % &'<CR>
+ nnoremap <F12>c :exe ':silent !chromium-browser % &'<CR>
+ nnoremap <F12>o :exe ':silent !opera % &'<CR>
+
+ endif
+
+endif
View
6 after/ftplugin/javascript.vim
@@ -0,0 +1,6 @@
+nnoremap <leader>g I// <Esc>A //<Esc>yyp0llv$hhhr-yykPjj
+
+vnoremap !! <Esc>'<O/*<Esc>'>o*/<Esc>
+vnoremap ?? <Esc>'<"_dd'>"_dd'<
+
+" autocmd BufWritePost,FileWritePost *.js :silent! !ctags -R . &
View
4 after/ftplugin/php.vim
@@ -0,0 +1,4 @@
+vnoremap !! <Esc>'<O/*<Esc>'>o*/<Esc>
+vnoremap ?? <Esc>'<"_dd'>"_dd'<
+
+set filetype=php.html
View
10 after/ftplugin/python.vim
@@ -0,0 +1,10 @@
+setlocal tabstop=4
+setlocal shiftwidth=4
+setlocal expandtab
+setlocal autoindent
+setlocal smarttab
+setlocal formatoptions=croql
+setlocal smartindent
+setlocal softtabstop=4
+setlocal cinwords=if,elif,else,for,while,try,except,finally,def,class
+setlocal omnifunc=pythoncomplete#Complete
View
166 autoload/pathogen.vim
@@ -0,0 +1,166 @@
+" pathogen.vim - path option manipulation
+" Maintainer: Tim Pope <http://tpo.pe/>
+" Version: 1.3
+
+" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
+"
+" For management of individually installed plugins in ~/.vim/bundle
+" (or $HOME/vimfiles/bundle), adding 'call pathogen#infect()' to your
+" .vimrc prior to 'fileype plugin indent on' is the only other setup necessary.
+"
+" API is documented below.
+
+if exists("g:loaded_pathogen") || &cp
+ finish
+endif
+let g:loaded_pathogen = 1
+
+" Point of entry for basic default usage.
+function! pathogen#infect(...) abort " {{{1
+ let source_path = a:0 ? a:1 : 'bundle'
+ call pathogen#runtime_append_all_bundles(source_path)
+ call pathogen#cycle_filetype()
+endfunction " }}}1
+
+" Split a path into a list.
+function! pathogen#split(path) abort " {{{1
+ if type(a:path) == type([]) | return a:path | endif
+ let split = split(a:path,'\\\@<!\%(\\\\\)*\zs,')
+ return map(split,'substitute(v:val,''\\\([\\,]\)'',''\1'',"g")')
+endfunction " }}}1
+
+" Convert a list to a path.
+function! pathogen#join(...) abort " {{{1
+ if type(a:1) == type(1) && a:1
+ let i = 1
+ let space = ' '
+ else
+ let i = 0
+ let space = ''
+ endif
+ let path = ""
+ while i < a:0
+ if type(a:000[i]) == type([])
+ let list = a:000[i]
+ let j = 0
+ while j < len(list)
+ let escaped = substitute(list[j],'[,'.space.']\|\\[\,'.space.']\@=','\\&','g')
+ let path .= ',' . escaped
+ let j += 1
+ endwhile
+ else
+ let path .= "," . a:000[i]
+ endif
+ let i += 1
+ endwhile
+ return substitute(path,'^,','','')
+endfunction " }}}1
+
+" Convert a list to a path with escaped spaces for 'path', 'tag', etc.
+function! pathogen#legacyjoin(...) abort " {{{1
+ return call('pathogen#join',[1] + a:000)
+endfunction " }}}1
+
+" Remove duplicates from a list.
+function! pathogen#uniq(list) abort " {{{1
+ let i = 0
+ let seen = {}
+ while i < len(a:list)
+ if has_key(seen,a:list[i])
+ call remove(a:list,i)
+ else
+ let seen[a:list[i]] = 1
+ let i += 1
+ endif
+ endwhile
+ return a:list
+endfunction " }}}1
+
+" \ on Windows unless shellslash is set, / everywhere else.
+function! pathogen#separator() abort " {{{1
+ return !exists("+shellslash") || &shellslash ? '/' : '\'
+endfunction " }}}1
+
+" Convenience wrapper around glob() which returns a list.
+function! pathogen#glob(pattern) abort " {{{1
+ let files = split(glob(a:pattern),"\n")
+ return map(files,'substitute(v:val,"[".pathogen#separator()."/]$","","")')
+endfunction "}}}1
+
+" Like pathogen#glob(), only limit the results to directories.
+function! pathogen#glob_directories(pattern) abort " {{{1
+ return filter(pathogen#glob(a:pattern),'isdirectory(v:val)')
+endfunction "}}}1
+
+" Turn filetype detection off and back on again if it was already enabled.
+function! pathogen#cycle_filetype() " {{{1
+ if exists('g:did_load_filetypes')
+ filetype off
+ filetype on
+ endif
+endfunction " }}}1
+
+" Checks if a bundle is 'disabled'. A bundle is considered 'disabled' if
+" its 'basename()' is included in g:pathogen_disabled[]' or ends in a tilde.
+function! pathogen#is_disabled(path) " {{{1
+ if a:path =~# '\~$'
+ return 1
+ elseif !exists("g:pathogen_disabled")
+ return 0
+ endif
+ let sep = pathogen#separator()
+ return index(g:pathogen_disabled, strpart(a:path, strridx(a:path, sep)+1)) != -1
+endfunction "}}}1
+
+" Prepend all subdirectories of path to the rtp, and append all 'after'
+" directories in those subdirectories.
+function! pathogen#runtime_prepend_subdirectories(path) " {{{1
+ let sep = pathogen#separator()
+ let before = filter(pathogen#glob_directories(a:path.sep."*"), '!pathogen#is_disabled(v:val)')
+ let after = filter(pathogen#glob_directories(a:path.sep."*".sep."after"), '!pathogen#is_disabled(v:val[0:-7])')
+ let rtp = pathogen#split(&rtp)
+ let path = expand(a:path)
+ call filter(rtp,'v:val[0:strlen(path)-1] !=# path')
+ let &rtp = pathogen#join(pathogen#uniq(before + rtp + after))
+ return &rtp
+endfunction " }}}1
+
+" For each directory in rtp, check for a subdirectory named dir. If it
+" exists, add all subdirectories of that subdirectory to the rtp, immediately
+" after the original directory. If no argument is given, 'bundle' is used.
+" Repeated calls with the same arguments are ignored.
+function! pathogen#runtime_append_all_bundles(...) " {{{1
+ let sep = pathogen#separator()
+ let name = a:0 ? a:1 : 'bundle'
+ if "\n".s:done_bundles =~# "\\M\n".name."\n"
+ return ""
+ endif
+ let s:done_bundles .= name . "\n"
+ let list = []
+ for dir in pathogen#split(&rtp)
+ if dir =~# '\<after$'
+ let list += filter(pathogen#glob_directories(substitute(dir,'after$',name,'').sep.'*[^~]'.sep.'after'), '!pathogen#is_disabled(v:val[0:-7])') + [dir]
+ else
+ let list += [dir] + filter(pathogen#glob_directories(dir.sep.name.sep.'*[^~]'), '!pathogen#is_disabled(v:val)')
+ endif
+ endfor
+ let &rtp = pathogen#join(pathogen#uniq(list))
+ return 1
+endfunction
+
+let s:done_bundles = ''
+" }}}1
+
+" Invoke :helptags on all non-$VIM doc directories in runtimepath.
+function! pathogen#helptags() " {{{1
+ let sep = pathogen#separator()
+ for dir in pathogen#split(&rtp)
+ if (dir.sep)[0 : strlen($VIMRUNTIME)] !=# $VIMRUNTIME.sep && filewritable(dir.'/doc') == 2 && !empty(glob(dir.'/doc/*')) && (!filereadable(dir.'/doc/tags') || filewritable(dir.'/doc/tags'))
+ helptags `=dir.'/doc'`
+ endif
+ endfor
+endfunction " }}}1
+
+command! -bar Helptags :call pathogen#helptags()
+
+" vim:set ft=vim ts=8 sw=2 sts=2:
View
449 bundle/autocomplpop/autoload/acp.vim
@@ -0,0 +1,449 @@
+"=============================================================================
+" Copyright (c) 2007-2009 Takeshi NISHIDA
+"
+"=============================================================================
+" LOAD GUARD {{{1
+
+if exists('g:loaded_autoload_acp') || v:version < 702
+ finish
+endif
+let g:loaded_autoload_acp = 1
+
+" }}}1
+"=============================================================================
+" GLOBAL FUNCTIONS: {{{1
+
+"
+function acp#enable()
+ call acp#disable()
+
+ augroup AcpGlobalAutoCommand
+ autocmd!
+ autocmd InsertEnter * unlet! s:posLast s:lastUncompletable
+ autocmd InsertLeave * call s:finishPopup(1)
+ augroup END
+
+ if g:acp_mappingDriven
+ call s:mapForMappingDriven()
+ else
+ autocmd AcpGlobalAutoCommand CursorMovedI * call s:feedPopup()
+ endif
+
+ nnoremap <silent> i i<C-r>=<SID>feedPopup()<CR>
+ nnoremap <silent> a a<C-r>=<SID>feedPopup()<CR>
+ nnoremap <silent> R R<C-r>=<SID>feedPopup()<CR>
+endfunction
+
+"
+function acp#disable()
+ call s:unmapForMappingDriven()
+ augroup AcpGlobalAutoCommand
+ autocmd!
+ augroup END
+ nnoremap i <Nop> | nunmap i
+ nnoremap a <Nop> | nunmap a
+ nnoremap R <Nop> | nunmap R
+endfunction
+
+"
+function acp#lock()
+ let s:lockCount += 1
+endfunction
+
+"
+function acp#unlock()
+ let s:lockCount -= 1
+ if s:lockCount < 0
+ let s:lockCount = 0
+ throw "AutoComplPop: not locked"
+ endif
+endfunction
+
+"
+function acp#meetsForSnipmate(context)
+ if g:acp_behaviorSnipmateLength < 0
+ return 0
+ endif
+ let matches = matchlist(a:context, '\(^\|\s\|\<\)\(\u\{' .
+ \ g:acp_behaviorSnipmateLength . ',}\)$')
+ return !empty(matches) && !empty(s:getMatchingSnipItems(matches[2]))
+endfunction
+
+"
+function acp#meetsForKeyword(context)
+ if g:acp_behaviorKeywordLength < 0
+ return 0
+ endif
+ let matches = matchlist(a:context, '\(\k\{' . g:acp_behaviorKeywordLength . ',}\)$')
+ if empty(matches)
+ return 0
+ endif
+ for ignore in g:acp_behaviorKeywordIgnores
+ if stridx(ignore, matches[1]) == 0
+ return 0
+ endif
+ endfor
+ return 1
+endfunction
+
+"
+function acp#meetsForFile(context)
+ if g:acp_behaviorFileLength < 0
+ return 0
+ endif
+ if has('win32') || has('win64')
+ let separator = '[/\\]'
+ else
+ let separator = '\/'
+ endif
+ if a:context !~ '\f' . separator . '\f\{' . g:acp_behaviorFileLength . ',}$'
+ return 0
+ endif
+ return a:context !~ '[*/\\][/\\]\f*$\|[^[:print:]]\f*$'
+endfunction
+
+"
+function acp#meetsForRubyOmni(context)
+ if !has('ruby')
+ return 0
+ endif
+ if g:acp_behaviorRubyOmniMethodLength >= 0 &&
+ \ a:context =~ '[^. \t]\(\.\|::\)\k\{' .
+ \ g:acp_behaviorRubyOmniMethodLength . ',}$'
+ return 1
+ endif
+ if g:acp_behaviorRubyOmniSymbolLength >= 0 &&
+ \ a:context =~ '\(^\|[^:]\):\k\{' .
+ \ g:acp_behaviorRubyOmniSymbolLength . ',}$'
+ return 1
+ endif
+ return 0
+endfunction
+
+"
+"function acp#meetsForActionScriptOmni(context)
+ "return g:acp_behaviorPythonOmniLength >= 0 &&
+ "\ a:context =~ '[^. \t]\(\.\|:\)\k\{' . g:acp_behaviorPythonOmniLength . ',}$'
+"endfunction
+
+"
+function acp#meetsForJavaScriptOmni(context)
+ return g:acp_behaviorPythonOmniLength >= 0 &&
+ \ a:context =~ '\k\.\k\{' . g:acp_behaviorPythonOmniLength . ',}$'
+endfunction
+
+"
+function acp#meetsForPythonOmni(context)
+ return has('python') && g:acp_behaviorPythonOmniLength >= 0 &&
+ \ a:context =~ '\k\.\k\{' . g:acp_behaviorPythonOmniLength . ',}$'
+endfunction
+
+"
+function acp#meetsForPhpOmni(context)
+ return g:acp_behaviorPhpOmniLength >= 0 &&
+ \ a:context =~ '\w->\k\{' . g:acp_behaviorPhpOmniLength . ',}$'
+endfunction
+
+"
+function acp#meetsForPerlOmni(context)
+ return g:acp_behaviorPerlOmniLength >= 0 &&
+ \ a:context =~ '\w->\k\{' . g:acp_behaviorPerlOmniLength . ',}$'
+endfunction
+
+"
+function acp#meetsForXmlOmni(context)
+ return g:acp_behaviorXmlOmniLength >= 0 &&
+ \ a:context =~ '\(<\|<\/\|<[^>]\+ \|<[^>]\+=\"\)\k\{' .
+ \ g:acp_behaviorXmlOmniLength . ',}$'
+endfunction
+
+"
+function acp#meetsForHtmlOmni(context)
+ return g:acp_behaviorHtmlOmniLength >= 0 &&
+ \ a:context =~ '\(<\|<\/\|<[^>]\+ \|<[^>]\+=\"\)\k\{' .
+ \ g:acp_behaviorHtmlOmniLength . ',}$'
+endfunction
+
+"
+function acp#meetsForCssOmni(context)
+ if g:acp_behaviorCssOmniPropertyLength >= 0 &&
+ \ a:context =~ '\(^\s\|[;{]\)\s*\k\{' .
+ \ g:acp_behaviorCssOmniPropertyLength . ',}$'
+ return 1
+ endif
+ if g:acp_behaviorCssOmniValueLength >= 0 &&
+ \ a:context =~ '[:@!]\s*\k\{' .
+ \ g:acp_behaviorCssOmniValueLength . ',}$'
+ return 1
+ endif
+ return 0
+endfunction
+
+"
+function acp#completeSnipmate(findstart, base)
+ if a:findstart
+ let s:posSnipmateCompletion = len(matchstr(s:getCurrentText(), '.*\U'))
+ return s:posSnipmateCompletion
+ endif
+ let lenBase = len(a:base)
+ let items = filter(GetSnipsInCurrentScope(),
+ \ 'strpart(v:key, 0, lenBase) ==? a:base')
+ return map(sort(items(items)), 's:makeSnipmateItem(v:val[0], v:val[1])')
+endfunction
+
+"
+function acp#onPopupCloseSnipmate()
+ let word = s:getCurrentText()[s:posSnipmateCompletion :]
+ for trigger in keys(GetSnipsInCurrentScope())
+ if word ==# trigger
+ call feedkeys("\<C-r>=TriggerSnippet()\<CR>", "n")
+ return 0
+ endif
+ endfor
+ return 1
+endfunction
+
+"
+function acp#onPopupPost()
+ " to clear <C-r>= expression on command-line
+ echo ''
+ if pumvisible()
+ inoremap <silent> <expr> <C-h> acp#onBs()
+ inoremap <silent> <expr> <BS> acp#onBs()
+ " a command to restore to original text and select the first match
+ return (s:behavsCurrent[s:iBehavs].command =~# "\<C-p>" ? "\<C-n>\<Up>"
+ \ : "\<C-p>\<Down>")
+ endif
+ let s:iBehavs += 1
+ if len(s:behavsCurrent) > s:iBehavs
+ call s:setCompletefunc()
+ return printf("\<C-e>%s\<C-r>=acp#onPopupPost()\<CR>",
+ \ s:behavsCurrent[s:iBehavs].command)
+ else
+ let s:lastUncompletable = {
+ \ 'word': s:getCurrentWord(),
+ \ 'commands': map(copy(s:behavsCurrent), 'v:val.command')[1:],
+ \ }
+ call s:finishPopup(0)
+ return "\<C-e>"
+ endif
+endfunction
+
+"
+function acp#onBs()
+ " using "matchstr" and not "strpart" in order to handle multi-byte
+ " characters
+ if call(s:behavsCurrent[s:iBehavs].meets,
+ \ [matchstr(s:getCurrentText(), '.*\ze.')])
+ return "\<BS>"
+ endif
+ return "\<C-e>\<BS>"
+endfunction
+
+" }}}1
+"=============================================================================
+" LOCAL FUNCTIONS: {{{1
+
+"
+function s:mapForMappingDriven()
+ call s:unmapForMappingDriven()
+ let s:keysMappingDriven = [
+ \ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
+ \ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ \ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+ \ 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+ \ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+ \ '-', '_', '~', '^', '.', ',', ':', '!', '#', '=', '%', '$', '@', '<', '>', '/', '\',
+ \ '<Space>', '<C-h>', '<BS>', ]
+ for key in s:keysMappingDriven
+ execute printf('inoremap <silent> %s %s<C-r>=<SID>feedPopup()<CR>',
+ \ key, key)
+ endfor
+endfunction
+
+"
+function s:unmapForMappingDriven()
+ if !exists('s:keysMappingDriven')
+ return
+ endif
+ for key in s:keysMappingDriven
+ execute 'iunmap ' . key
+ endfor
+ let s:keysMappingDriven = []
+endfunction
+
+"
+function s:setTempOption(group, name, value)
+ call extend(s:tempOptionSet[a:group], { a:name : eval('&' . a:name) }, 'keep')
+ execute printf('let &%s = a:value', a:name)
+endfunction
+
+"
+function s:restoreTempOptions(group)
+ for [name, value] in items(s:tempOptionSet[a:group])
+ execute printf('let &%s = value', name)
+ endfor
+ let s:tempOptionSet[a:group] = {}
+endfunction
+
+"
+function s:getCurrentWord()
+ return matchstr(s:getCurrentText(), '\k*$')
+endfunction
+
+"
+function s:getCurrentText()
+ return strpart(getline('.'), 0, col('.') - 1)
+endfunction
+
+"
+function s:getPostText()
+ return strpart(getline('.'), col('.') - 1)
+endfunction
+
+"
+function s:isModifiedSinceLastCall()
+ if exists('s:posLast')
+ let posPrev = s:posLast
+ let nLinesPrev = s:nLinesLast
+ let textPrev = s:textLast
+ endif
+ let s:posLast = getpos('.')
+ let s:nLinesLast = line('$')
+ let s:textLast = getline('.')
+ if !exists('posPrev')
+ return 1
+ elseif posPrev[1] != s:posLast[1] || nLinesPrev != s:nLinesLast
+ return (posPrev[1] - s:posLast[1] == nLinesPrev - s:nLinesLast)
+ elseif textPrev ==# s:textLast
+ return 0
+ elseif posPrev[2] > s:posLast[2]
+ return 1
+ elseif has('gui_running') && has('multi_byte')
+ " NOTE: auto-popup causes a strange behavior when IME/XIM is working
+ return posPrev[2] + 1 == s:posLast[2]
+ endif
+ return posPrev[2] != s:posLast[2]
+endfunction
+
+"
+function s:makeCurrentBehaviorSet()
+ let modified = s:isModifiedSinceLastCall()
+ if exists('s:behavsCurrent[s:iBehavs].repeat') && s:behavsCurrent[s:iBehavs].repeat
+ let behavs = [ s:behavsCurrent[s:iBehavs] ]
+ elseif exists('s:behavsCurrent[s:iBehavs]')
+ return []
+ elseif modified
+ let behavs = copy(exists('g:acp_behavior[&filetype]')
+ \ ? g:acp_behavior[&filetype]
+ \ : g:acp_behavior['*'])
+ else
+ return []
+ endif
+ let text = s:getCurrentText()
+ call filter(behavs, 'call(v:val.meets, [text])')
+ let s:iBehavs = 0
+ if exists('s:lastUncompletable') &&
+ \ stridx(s:getCurrentWord(), s:lastUncompletable.word) == 0 &&
+ \ map(copy(behavs), 'v:val.command') ==# s:lastUncompletable.commands
+ let behavs = []
+ else
+ unlet! s:lastUncompletable
+ endif
+ return behavs
+endfunction
+
+"
+function s:feedPopup()
+ " NOTE: CursorMovedI is not triggered while the popup menu is visible. And
+ " it will be triggered when popup menu is disappeared.
+ if s:lockCount > 0 || pumvisible() || &paste
+ return ''
+ endif
+ if exists('s:behavsCurrent[s:iBehavs].onPopupClose')
+ if !call(s:behavsCurrent[s:iBehavs].onPopupClose, [])
+ call s:finishPopup(1)
+ return ''
+ endif
+ endif
+ let s:behavsCurrent = s:makeCurrentBehaviorSet()
+ if empty(s:behavsCurrent)
+ call s:finishPopup(1)
+ return ''
+ endif
+ " In case of dividing words by symbols (e.g. "for(int", "ab==cd") while a
+ " popup menu is visible, another popup is not available unless input <C-e>
+ " or try popup once. So first completion is duplicated.
+ call insert(s:behavsCurrent, s:behavsCurrent[s:iBehavs])
+ call s:setTempOption(s:GROUP0, 'spell', 0)
+ call s:setTempOption(s:GROUP0, 'completeopt', 'menuone' . (g:acp_completeoptPreview ? ',preview' : ''))
+ call s:setTempOption(s:GROUP0, 'complete', g:acp_completeOption)
+ call s:setTempOption(s:GROUP0, 'ignorecase', g:acp_ignorecaseOption)
+ " NOTE: With CursorMovedI driven, Set 'lazyredraw' to avoid flickering.
+ " With Mapping driven, set 'nolazyredraw' to make a popup menu visible.
+ call s:setTempOption(s:GROUP0, 'lazyredraw', !g:acp_mappingDriven)
+ " NOTE: 'textwidth' must be restored after <C-e>.
+ call s:setTempOption(s:GROUP1, 'textwidth', 0)
+ call s:setCompletefunc()
+ call feedkeys(s:behavsCurrent[s:iBehavs].command . "\<C-r>=acp#onPopupPost()\<CR>", 'n')
+ return '' " this function is called by <C-r>=
+endfunction
+
+"
+function s:finishPopup(fGroup1)
+ inoremap <C-h> <Nop> | iunmap <C-h>
+ inoremap <BS> <Nop> | iunmap <BS>
+ let s:behavsCurrent = []
+ call s:restoreTempOptions(s:GROUP0)
+ if a:fGroup1
+ call s:restoreTempOptions(s:GROUP1)
+ endif
+endfunction
+
+"
+function s:setCompletefunc()
+ if exists('s:behavsCurrent[s:iBehavs].completefunc')
+ call s:setTempOption(0, 'completefunc', s:behavsCurrent[s:iBehavs].completefunc)
+ endif
+endfunction
+
+"
+function s:makeSnipmateItem(key, snip)
+ if type(a:snip) == type([])
+ let descriptions = map(copy(a:snip), 'v:val[0]')
+ let snipFormatted = '[MULTI] ' . join(descriptions, ', ')
+ else
+ let snipFormatted = substitute(a:snip, '\(\n\|\s\)\+', ' ', 'g')
+ endif
+ return {
+ \ 'word': a:key,
+ \ 'menu': strpart(snipFormatted, 0, 80),
+ \ }
+endfunction
+
+"
+function s:getMatchingSnipItems(base)
+ let key = a:base . "\n"
+ if !exists('s:snipItems[key]')
+ let s:snipItems[key] = items(GetSnipsInCurrentScope())
+ call filter(s:snipItems[key], 'strpart(v:val[0], 0, len(a:base)) ==? a:base')
+ call map(s:snipItems[key], 's:makeSnipmateItem(v:val[0], v:val[1])')
+ endif
+ return s:snipItems[key]
+endfunction
+
+" }}}1
+"=============================================================================
+" INITIALIZATION {{{1
+
+let s:GROUP0 = 0
+let s:GROUP1 = 1
+let s:lockCount = 0
+let s:behavsCurrent = []
+let s:iBehavs = 0
+let s:tempOptionSet = [{}, {}]
+let s:snipItems = {}
+
+" }}}1
+"=============================================================================
+" vim: set fdm=marker:
View
298 bundle/autocomplpop/doc/acp.jax
@@ -0,0 +1,298 @@
+*acp.txt* 補完メニューの自動ポップアップ
+
+ Copyright (c) 2007-2009 Takeshi NISHIDA
+
+AutoComplPop *autocomplpop* *acp*
+
+概要 |acp-introduction|
+インストール |acp-installation|
+使い方 |acp-usage|
+コマンド |acp-commands|
+オプション |acp-options|
+SPECIAL THANKS |acp-thanks|
+CHANGELOG |acp-changelog|
+あばうと |acp-about|
+
+
+==============================================================================
+概要 *acp-introduction*
+
+このプラグインは、インサートモードで文字を入力したりカーソルを動かしたときに補
+完メニューを自動的に開くようにします。しかし、続けて文字を入力するのを妨げたり
+はしません。
+
+
+==============================================================================
+インストール *acp-installation*
+
+ZIPファイルをランタイムディレクトリに展開します。
+
+以下のようにファイルが配置されるはずです。
+>
+ <your runtime directory>/plugin/acp.vim
+ <your runtime directory>/doc/acp.txt
+ ...
+<
+もしランタイムディレクトリが他のプラグインとごた混ぜになるのが嫌なら、ファイル
+を新規ディレクトリに配置し、そのディレクトリのパスを 'runtimepath' に追加して
+ください。アンインストールも楽になります。
+
+その後 FuzzyFinder のヘルプを有効にするためにタグファイルを更新してください。
+詳しくは|add-local-help|を参照してください。
+
+
+==============================================================================
+使い方 *acp-usage*
+
+このプラグインがインストールされていれば、自動ポップアップは vim の開始時から
+有効になります。
+
+カーソル直前のテキストに応じて、利用する補完の種類を切り替えます。デフォルトの
+補完動作は次の通りです:
+
+ 補完モード filetype カーソル直前のテキスト ~
+ キーワード補完 * 2文字のキーワード文字
+ ファイル名補完 * ファイル名文字 + パスセパレータ
+ + 0文字以上のファイル名文字
+ オムニ補完 ruby ".", "::" or 単語を構成する文字以外 + ":"
+ オムニ補完 python "."
+ オムニ補完 xml "<", "</" or ("<" + ">"以外の文字列 + " ")
+ オムニ補完 html/xhtml "<", "</" or ("<" + ">"以外の文字列 + " ")
+ オムニ補完 css (":", ";", "{", "^", "@", or "!")
+ + 0個または1個のスペース
+
+さらに、設定を行うことで、ユーザー定義補完と snipMate トリガー補完
+(|acp-snipMate|) を自動ポップアップさせることができます。
+
+これらの補完動作はカスタマイズ可能です。
+
+ *acp-snipMate*
+snipMate トリガー補完 ~
+
+snipMate トリガー補完では、snipMate プラグイン
+(http://www.vim.org/scripts/script.php?script_id=2540) が提供するスニペットの
+トリガーを補完してそれを展開することができます。
+
+この自動ポップアップを有効にするには、次の関数を plugin/snipMate.vim に追加す
+る必要があります:
+>
+ fun! GetSnipsInCurrentScope()
+ let snips = {}
+ for scope in [bufnr('%')] + split(&ft, '\.') + ['_']
+ call extend(snips, get(s:snippets, scope, {}), 'keep')
+ call extend(snips, get(s:multi_snips, scope, {}), 'keep')
+ endfor
+ return snips
+ endf
+<
+そして|g:acp_behaviorSnipmateLength|オプションを 1 にしてください。
+
+この自動ポップアップには制限があり、カーソル直前の単語は大文字英字だけで構成さ
+れていなければなりません。
+
+ *acp-perl-omni*
+Perl オムニ補完 ~
+
+AutoComplPop は perl-completion.vim
+(http://www.vim.org/scripts/script.php?script_id=2852) をサポートしています。
+
+この自動ポップアップを有効にするには、|g:acp_behaviorPerlOmniLength|オプション
+を 0 以上にしてください。
+
+
+==============================================================================
+コマンド *acp-commands*
+
+ *:AcpEnable*
+:AcpEnable
+ 自動ポップアップを有効にします。
+
+ *:AcpDisable*
+:AcpDisable
+ 自動ポップアップを無効にします。
+
+ *:AcpLock*
+:AcpLock
+ 自動ポップアップを一時的に停止します。
+
+ 別のスクリプトへの干渉を回避する目的なら、このコマンドと|:AcpUnlock|
+ を利用することを、|:AcpDisable|と|:AcpEnable| を利用するよりも推奨しま
+ す。
+
+ *:AcpUnlock*
+:AcpUnlock
+ |:AcpLock| で停止された自動ポップアップを再開します。
+
+
+==============================================================================
+オプション *acp-options*
+
+ *g:acp_enableAtStartup* >
+ let g:acp_enableAtStartup = 1
+<
+ 真なら vim 開始時から自動ポップアップが有効になります。
+
+ *g:acp_mappingDriven* >
+ let g:acp_mappingDriven = 0
+<
+ 真なら|CursorMovedI|イベントではなくキーマッピングで自動ポップアップを
+ 行うようにします。カーソルを移動するたびに補完が行われることで重いなど
+ の不都合がある場合に利用してください。ただし他のプラグインとの相性問題
+ や日本語入力での不具合が発生する可能性があります。(逆も然り。)
+
+ *g:acp_ignorecaseOption* >
+ let g:acp_ignorecaseOption = 1
+<
+ 自動ポップアップ時に、'ignorecase' に一時的に設定する値
+
+ *g:acp_completeOption* >
+ let g:acp_completeOption = '.,w,b,k'
+<
+ 自動ポップアップ時に、'complete' に一時的に設定する値
+
+ *g:acp_completeoptPreview* >
+ let g:acp_completeoptPreview = 0
+<
+ 真なら自動ポップアップ時に、 'completeopt' へ "preview" を追加します。
+
+ *g:acp_behaviorUserDefinedFunction* >
+ let g:acp_behaviorUserDefinedFunction = ''
+<
+ ユーザー定義補完の|g:acp_behavior-completefunc|。空ならこの補完は行わ
+ れません。。
+
+ *g:acp_behaviorUserDefinedMeets* >
+ let g:acp_behaviorUserDefinedMeets = ''
+<
+ ユーザー定義補完の|g:acp_behavior-meets|。空ならこの補完は行われません
+ 。
+
+ *g:acp_behaviorSnipmateLength* >
+ let g:acp_behaviorSnipmateLength = -1
+<
+ snipMate トリガー補完の自動ポップアップを行うのに必要なカーソルの直前
+ のパターン。
+
+ *g:acp_behaviorKeywordCommand* >
+ let g:acp_behaviorKeywordCommand = "\<C-n>"
+<
+ キーワード補完のコマンド。このオプションには普通 "\<C-n>" か "\<C-p>"
+ を設定します。
+
+ *g:acp_behaviorKeywordLength* >
+ let g:acp_behaviorKeywordLength = 2
+<
+ キーワード補完の自動ポップアップを行うのに必要なカーソルの直前のキーワ
+ ード文字数。負数ならこの補完は行われません。
+
+ *g:acp_behaviorKeywordIgnores* >
+ let g:acp_behaviorKeywordIgnores = []
+<
+ 文字列のリスト。カーソル直前の単語がこれらの内いずれかの先頭部分にマッ
+ チする場合、この補完は行われません。
+
+ 例えば、 "get" で始まる補完キーワードが多過ぎて、"g", "ge", "get" を入
+ 力したときの自動ポップアップがレスポンスの低下を引き起こしている場合、
+ このオプションに ["get"] を設定することでそれを回避することができます。
+
+ *g:acp_behaviorFileLength* >
+ let g:acp_behaviorFileLength = 0
+<
+ ファイル名補完の自動ポップアップを行うのに必要なカーソルの直前のキーワ
+ ード文字数。負数ならこの補完は行われません。
+
+ *g:acp_behaviorRubyOmniMethodLength* >
+ let g:acp_behaviorRubyOmniMethodLength = 0
+<
+ メソッド補完のための、Ruby オムニ補完の自動ポップアップを行うのに必要
+ なカーソルの直前のキーワード文字数。負数ならこの補完は行われません。
+
+ *g:acp_behaviorRubyOmniSymbolLength* >
+ let g:acp_behaviorRubyOmniSymbolLength = 1
+<
+ シンボル補完のための、Ruby オムニ補完の自動ポップアップを行うのに必要
+ なカーソルの直前のキーワード文字数。負数ならこの補完は行われません。
+
+ *g:acp_behaviorPythonOmniLength* >
+ let g:acp_behaviorPythonOmniLength = 0
+<
+ Python オムニ補完の自動ポップアップを行うのに必要なカーソルの直前のキ
+ ーワード文字数。負数ならこの補完は行われません。
+
+ *g:acp_behaviorPerlOmniLength* >
+ let g:acp_behaviorPerlOmniLength = -1
+<
+ Perl オムニ補完の自動ポップアップを行うのに必要なカーソルの直前のキー
+ ワード文字数。負数ならこの補完は行われません。
+
+ See also: |acp-perl-omni|
+
+ *g:acp_behaviorXmlOmniLength* >
+ let g:acp_behaviorXmlOmniLength = 0
+<
+ XML オムニ補完の自動ポップアップを行うのに必要なカーソルの直前のキーワ
+ ード文字数。負数ならこの補完は行われません。
+
+ *g:acp_behaviorHtmlOmniLength* >
+ let g:acp_behaviorHtmlOmniLength = 0
+<
+ HTML オムニ補完の自動ポップアップを行うのに必要なカーソルの直前のキー
+ ワード文字数。負数ならこの補完は行われません。
+
+ *g:acp_behaviorCssOmniPropertyLength* >
+ let g:acp_behaviorCssOmniPropertyLength = 1
+<
+ プロパティ補完のための、CSS オムニ補完の自動ポップアップを行うのに必要
+ なカーソルの直前のキーワード文字数。負数ならこの補完は行われません。
+
+ *g:acp_behaviorCssOmniValueLength* >
+ let g:acp_behaviorCssOmniValueLength = 0
+<
+ 値補完のための、CSS オムニ補完の自動ポップアップを行うのに必要なカーソ
+ ルの直前のキーワード文字数。負数ならこの補完は行われません。
+
+ *g:acp_behavior* >
+ let g:acp_behavior = {}
+<
+
+ これは内部仕様がわかっている人向けのオプションで、他のオプションでの設
+ 定より優先されます。
+
+ |Dictionary|型で、キーはファイルタイプに対応します。 '*' はデフォルト
+ を表します。値はリスト型です。補完候補が得られるまでリストの先頭アイテ
+ ムから順に評価します。各要素は|Dictionary|で詳細は次の通り:
+
+ "command": *g:acp_behavior-command*
+ 補完メニューをポップアップするためのコマンド。
+
+ "completefunc": *g:acp_behavior-completefunc*
+ 'completefunc' に設定する関数。 "command" が "<C-x><C-u>" のときだけ
+ 意味があります。
+
+ "meets": *g:acp_behavior-meets*
+ この補完を行うかどうかを判断する関数の名前。この関数はカーソル直前の
+ テキストを引数に取り、補完を行うなら非 0 の値を返します。
+
+ "onPopupClose": *g:acp_behavior-onPopupClose*
+ この補完のポップアップメニューが閉じられたときに呼ばれる関数の名前。
+ この関数が 0 を返した場合、続いて行われる予定の補完は抑制されます。
+
+ "repeat": *g:acp_behavior-repeat*
+ 真なら最後の補完が自動的に繰り返されます。
+
+
+==============================================================================
+あばうと *acp-about* *acp-contact* *acp-author*
+
+作者: Takeshi NISHIDA <ns9tks@DELETE-ME.gmail.com>
+ライセンス: MIT Licence
+URL: http://www.vim.org/scripts/script.php?script_id=1879
+ http://bitbucket.org/ns9tks/vim-autocomplpop/
+
+バグや要望など ~
+
+こちらへどうぞ: http://bitbucket.org/ns9tks/vim-autocomplpop/issues/
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
+
View
512 bundle/autocomplpop/doc/acp.txt
@@ -0,0 +1,512 @@
+*acp.txt* Automatically opens popup menu for completions.
+
+ Copyright (c) 2007-2009 Takeshi NISHIDA
+
+AutoComplPop *autocomplpop* *acp*
+
+INTRODUCTION |acp-introduction|
+INSTALLATION |acp-installation|
+USAGE |acp-usage|
+COMMANDS |acp-commands|
+OPTIONS |acp-options|
+SPECIAL THANKS |acp-thanks|
+CHANGELOG |acp-changelog|
+ABOUT |acp-about|
+
+
+==============================================================================
+INTRODUCTION *acp-introduction*
+
+With this plugin, your vim comes to automatically opens popup menu for
+completions when you enter characters or move the cursor in Insert mode. It
+won't prevent you continuing entering characters.
+
+
+==============================================================================
+INSTALLATION *acp-installation*
+
+Put all files into your runtime directory. If you have the zip file, extract
+it to your runtime directory.
+
+You should place the files as follows:
+>
+ <your runtime directory>/plugin/acp.vim
+ <your runtime directory>/doc/acp.txt
+ ...
+<
+If you disgust to jumble up this plugin and other plugins in your runtime
+directory, put the files into new directory and just add the directory path to
+'runtimepath'. It's easy to uninstall the plugin.
+
+And then update your help tags files to enable fuzzyfinder help. See
+|add-local-help| for details.
+
+
+==============================================================================
+USAGE *acp-usage*
+
+Once this plugin is installed, auto-popup is enabled at startup by default.
+
+Which completion method is used depends on the text before the cursor. The
+default behavior is as follows:
+
+ kind filetype text before the cursor ~
+ Keyword * two keyword characters
+ Filename * a filename character + a path separator
+ + 0 or more filename character
+ Omni ruby ".", "::" or non-word character + ":"
+ (|+ruby| required.)
+ Omni python "." (|+python| required.)
+ Omni xml "<", "</" or ("<" + non-">" characters + " ")
+ Omni html/xhtml "<", "</" or ("<" + non-">" characters + " ")
+ Omni css (":", ";", "{", "^", "@", or "!")
+ + 0 or 1 space
+
+Also, you can make user-defined completion and snipMate's trigger completion
+(|acp-snipMate|) auto-popup if the options are set.
+
+These behavior are customizable.
+
+ *acp-snipMate*
+snipMate's Trigger Completion ~
+
+snipMate's trigger completion enables you to complete a snippet trigger
+provided by snipMate plugin
+(http://www.vim.org/scripts/script.php?script_id=2540) and expand it.
+
+
+To enable auto-popup for this completion, add following function to
+plugin/snipMate.vim:
+>
+ fun! GetSnipsInCurrentScope()
+ let snips = {}
+ for scope in [bufnr('%')] + split(&ft, '\.') + ['_']
+ call extend(snips, get(s:snippets, scope, {}), 'keep')
+ call extend(snips, get(s:multi_snips, scope, {}), 'keep')
+ endfor
+ return snips
+ endf
+<
+And set |g:acp_behaviorSnipmateLength| option to 1.
+
+There is the restriction on this auto-popup, that the word before cursor must
+consist only of uppercase characters.
+
+ *acp-perl-omni*
+Perl Omni-Completion ~
+
+AutoComplPop supports perl-completion.vim
+(http://www.vim.org/scripts/script.php?script_id=2852).
+
+To enable auto-popup for this completion, set |g:acp_behaviorPerlOmniLength|
+option to 0 or more.
+
+
+==============================================================================
+COMMANDS *acp-commands*
+
+ *:AcpEnable*
+:AcpEnable
+ enables auto-popup.
+
+ *:AcpDisable*
+:AcpDisable
+ disables auto-popup.
+
+ *:AcpLock*
+:AcpLock
+ suspends auto-popup temporarily.
+
+ For the purpose of avoiding interruption to another script, it is
+ recommended to insert this command and |:AcpUnlock| than |:AcpDisable|
+ and |:AcpEnable| .
+
+ *:AcpUnlock*
+:AcpUnlock
+ resumes auto-popup suspended by |:AcpLock| .
+
+
+==============================================================================
+OPTIONS *acp-options*
+
+ *g:acp_enableAtStartup* >
+ let g:acp_enableAtStartup = 1
+<
+ If non-zero, auto-popup is enabled at startup.
+
+ *g:acp_mappingDriven* >
+ let g:acp_mappingDriven = 0
+<
+ If non-zero, auto-popup is triggered by key mappings instead of
+ |CursorMovedI| event. This is useful to avoid auto-popup by moving
+ cursor in Insert mode.
+
+ *g:acp_ignorecaseOption* >
+ let g:acp_ignorecaseOption = 1
+<
+ Value set to 'ignorecase' temporarily when auto-popup.
+
+ *g:acp_completeOption* >
+ let g:acp_completeOption = '.,w,b,k'
+<
+ Value set to 'complete' temporarily when auto-popup.
+
+ *g:acp_completeoptPreview* >
+ let g:acp_completeoptPreview = 0
+<
+ If non-zero, "preview" is added to 'completeopt' when auto-popup.
+
+ *g:acp_behaviorUserDefinedFunction* >
+ let g:acp_behaviorUserDefinedFunction = ''
+<
+ |g:acp_behavior-completefunc| for user-defined completion. If empty,
+ this completion will be never attempted.
+
+ *g:acp_behaviorUserDefinedMeets* >
+ let g:acp_behaviorUserDefinedMeets = ''
+<
+ |g:acp_behavior-meets| for user-defined completion. If empty, this
+ completion will be never attempted.
+
+ *g:acp_behaviorSnipmateLength* >
+ let g:acp_behaviorSnipmateLength = -1
+<
+ Pattern before the cursor, which are needed to attempt
+ snipMate-trigger completion.
+
+ *g:acp_behaviorKeywordCommand* >
+ let g:acp_behaviorKeywordCommand = "\<C-n>"
+<
+ Command for keyword completion. This option is usually set "\<C-n>" or
+ "\<C-p>".
+
+ *g:acp_behaviorKeywordLength* >
+ let g:acp_behaviorKeywordLength = 2
+<
+ Length of keyword characters before the cursor, which are needed to
+ attempt keyword completion. If negative value, this completion will be
+ never attempted.
+
+ *g:acp_behaviorKeywordIgnores* >
+ let g:acp_behaviorKeywordIgnores = []
+<
+ List of string. If a word before the cursor matches to the front part
+ of one of them, keyword completion won't be attempted.
+
+ E.g., when there are too many keywords beginning with "get" for the
+ completion and auto-popup by entering "g", "ge", or "get" causes
+ response degradation, set ["get"] to this option and avoid it.
+
+ *g:acp_behaviorFileLength* >
+ let g:acp_behaviorFileLength = 0
+<
+ Length of filename characters before the cursor, which are needed to
+ attempt filename completion. If negative value, this completion will
+ be never attempted.
+
+ *g:acp_behaviorRubyOmniMethodLength* >
+ let g:acp_behaviorRubyOmniMethodLength = 0
+<
+ Length of keyword characters before the cursor, which are needed to
+ attempt ruby omni-completion for methods. If negative value, this
+ completion will be never attempted.
+
+ *g:acp_behaviorRubyOmniSymbolLength* >
+ let g:acp_behaviorRubyOmniSymbolLength = 1
+<
+ Length of keyword characters before the cursor, which are needed to
+ attempt ruby omni-completion for symbols. If negative value, this
+ completion will be never attempted.
+
+ *g:acp_behaviorPythonOmniLength* >
+ let g:acp_behaviorPythonOmniLength = 0
+<
+ Length of keyword characters before the cursor, which are needed to
+ attempt python omni-completion. If negative value, this completion
+ will be never attempted.
+
+ *g:acp_behaviorPerlOmniLength* >
+ let g:acp_behaviorPerlOmniLength = -1
+<
+ Length of keyword characters before the cursor, which are needed to
+ attempt perl omni-completion. If negative value, this completion will
+ be never attempted.
+
+ See also: |acp-perl-omni|
+
+ *g:acp_behaviorXmlOmniLength* >
+ let g:acp_behaviorXmlOmniLength = 0
+<
+ Length of keyword characters before the cursor, which are needed to
+ attempt XML omni-completion. If negative value, this completion will
+ be never attempted.
+
+ *g:acp_behaviorHtmlOmniLength* >
+ let g:acp_behaviorHtmlOmniLength = 0
+<
+ Length of keyword characters before the cursor, which are needed to
+ attempt HTML omni-completion. If negative value, this completion will
+ be never attempted.
+
+ *g:acp_behaviorCssOmniPropertyLength* >
+ let g:acp_behaviorCssOmniPropertyLength = 1
+<
+ Length of keyword characters before the cursor, which are needed to
+ attempt CSS omni-completion for properties. If negative value, this
+ completion will be never attempted.
+
+ *g:acp_behaviorCssOmniValueLength* >
+ let g:acp_behaviorCssOmniValueLength = 0
+<
+ Length of keyword characters before the cursor, which are needed to
+ attempt CSS omni-completion for values. If negative value, this
+ completion will be never attempted.
+
+ *g:acp_behavior* >
+ let g:acp_behavior = {}
+<
+ This option is for advanced users. This setting overrides other
+ behavior options. This is a |Dictionary|. Each key corresponds to a
+ filetype. '*' is default. Each value is a list. These are attempted in
+ sequence until completion item is found. Each element is a
+ |Dictionary| which has following items:
+
+ "command": *g:acp_behavior-command*
+ Command to be fed to open popup menu for completions.
+
+ "completefunc": *g:acp_behavior-completefunc*
+ 'completefunc' will be set to this user-provided function during the
+ completion. Only makes sense when "command" is "<C-x><C-u>".
+
+ "meets": *g:acp_behavior-meets*
+ Name of the function which dicides whether or not to attempt this
+ completion. It will be attempted if this function returns non-zero.
+ This function takes a text before the cursor.
+
+ "onPopupClose": *g:acp_behavior-onPopupClose*
+ Name of the function which is called when popup menu for this
+ completion is closed. Following completions will be suppressed if
+ this function returns zero.
+
+ "repeat": *g:acp_behavior-repeat*
+ If non-zero, the last completion is automatically repeated.
+
+
+==============================================================================
+SPECIAL THANKS *acp-thanks*
+
+- Daniel Schierbeck
+- Ingo Karkat
+
+
+==============================================================================
+CHANGELOG *acp-changelog*
+
+2.14.1
+ - Changed the way of auto-popup for avoiding an issue about filename
+ completion.
+ - Fixed a bug that popup menu was opened twice when auto-popup was done.
+
+2.14
+ - Added the support for perl-completion.vim.
+
+2.13
+ - Changed to sort snipMate's triggers.
+ - Fixed a bug that a wasted character was inserted after snipMate's trigger
+ completion.
+
+2.12.1
+ - Changed to avoid a strange behavior with Microsoft IME.
+
+2.12
+ - Added g:acp_behaviorKeywordIgnores option.
+ - Added g:acp_behaviorUserDefinedMeets option and removed
+ g:acp_behaviorUserDefinedPattern.
+ - Changed to do auto-popup only when a buffer is modified.
+ - Changed the structure of g:acp_behavior option.
+ - Changed to reflect a change of behavior options (named g:acp_behavior*)
+ any time it is done.
+ - Fixed a bug that completions after omni completions or snipMate's trigger
+ completion were never attempted when no candidate for the former
+ completions was found.
+
+2.11.1
+ - Fixed a bug that a snipMate's trigger could not be expanded when it was
+ completed.
+
+2.11
+ - Implemented experimental feature which is snipMate's trigger completion.
+
+2.10
+ - Improved the response by changing not to attempt any completion when
+ keyword characters are entered after a word which has been found that it
+ has no completion candidate at the last attempt of completions.
+ - Improved the response by changing to close popup menu when <BS> was
+ pressed and the text before the cursor would not match with the pattern of
+ current behavior.
+
+2.9
+ - Changed default behavior to support XML omni completion.
+ - Changed default value of g:acp_behaviorKeywordCommand option.
+ The option with "\<C-p>" cause a problem which inserts a match without
+ <CR> when 'dictionary' has been set and keyword completion is done.
+ - Changed to show error message when incompatible with a installed vim.
+
+2.8.1
+ - Fixed a bug which inserted a selected match to the next line when
+ auto-wrapping (enabled with 'formatoptions') was performed.
+
+2.8
+ - Added g:acp_behaviorUserDefinedFunction option and
+ g:acp_behaviorUserDefinedPattern option for users who want to make custom
+ completion auto-popup.
+ - Fixed a bug that setting 'spell' on a new buffer made typing go crazy.
+
+2.7
+ - Changed naming conventions for filenames, functions, commands, and options
+ and thus renamed them.
+ - Added g:acp_behaviorKeywordCommand option. If you prefer the previous
+ behavior for keyword completion, set this option "\<C-n>".
+ - Changed default value of g:acp_ignorecaseOption option.
+
+ The following were done by Ingo Karkat:
+
+ - ENH: Added support for setting a user-provided 'completefunc' during the
+ completion, configurable via g:acp_behavior.
+ - BUG: When the configured completion is <C-p> or <C-x><C-p>, the command to
+ restore the original text (in on_popup_post()) must be reverted, too.
+ - BUG: When using a custom completion function (<C-x><C-u>) that also uses
+ an s:...() function name, the s:GetSidPrefix() function dynamically
+ determines the wrong SID. Now calling s:DetermineSidPrefix() once during
+ sourcing and caching the value in s:SID.
+ - BUG: Should not use custom defined <C-X><C-...> completion mappings. Now
+ consistently using unmapped completion commands everywhere. (Beforehand,
+ s:PopupFeeder.feed() used mappings via feedkeys(..., 'm'), but
+ s:PopupFeeder.on_popup_post() did not due to its invocation via
+ :map-expr.)
+
+2.6:
+ - Improved the behavior of omni completion for HTML/XHTML.
+
+2.5:
+ - Added some options to customize behavior easily:
+ g:AutoComplPop_BehaviorKeywordLength
+ g:AutoComplPop_BehaviorFileLength
+ g:AutoComplPop_BehaviorRubyOmniMethodLength
+ g:AutoComplPop_BehaviorRubyOmniSymbolLength
+ g:AutoComplPop_BehaviorPythonOmniLength
+ g:AutoComplPop_BehaviorHtmlOmniLength
+ g:AutoComplPop_BehaviorCssOmniPropertyLength
+ g:AutoComplPop_BehaviorCssOmniValueLength
+
+2.4:
+ - Added g:AutoComplPop_MappingDriven option.
+
+2.3.1:
+ - Changed to set 'lazyredraw' while a popup menu is visible to avoid
+ flickering.
+ - Changed a behavior for CSS.
+ - Added support for GetLatestVimScripts.
+
+2.3:
+ - Added a behavior for Python to support omni completion.
+ - Added a behavior for CSS to support omni completion.
+
+2.2:
+ - Changed not to work when 'paste' option is set.
+ - Fixed AutoComplPopEnable command and AutoComplPopDisable command to
+ map/unmap "i" and "R".
+
+2.1:
+ - Fixed the problem caused by "." command in Normal mode.
+ - Changed to map "i" and "R" to feed completion command after starting
+ Insert mode.
+ - Avoided the problem caused by Windows IME.
+
+2.0:
+ - Changed to use CursorMovedI event to feed a completion command instead of
+ key mapping. Now the auto-popup is triggered by moving the cursor.
+ - Changed to feed completion command after starting Insert mode.
+ - Removed g:AutoComplPop_MapList option.
+
+1.7:
+ - Added behaviors for HTML/XHTML. Now supports the omni completion for
+ HTML/XHTML.
+ - Changed not to show expressions for CTRL-R =.
+ - Changed not to set 'nolazyredraw' while a popup menu is visible.
+
+1.6.1:
+ - Changed not to trigger the filename completion by a text which has
+ multi-byte characters.
+
+1.6:
+ - Redesigned g:AutoComplPop_Behavior option.
+ - Changed default value of g:AutoComplPop_CompleteOption option.
+ - Changed default value of g:AutoComplPop_MapList option.
+
+1.5:
+ - Implemented continuous-completion for the filename completion. And added
+ new option to g:AutoComplPop_Behavior.
+
+1.4:
+ - Fixed the bug that the auto-popup was not suspended in fuzzyfinder.
+ - Fixed the bug that an error has occurred with Ruby-omni-completion unless
+ Ruby interface.
+
+1.3:
+ - Supported Ruby-omni-completion by default.
+ - Supported filename completion by default.
+ - Added g:AutoComplPop_Behavior option.
+ - Added g:AutoComplPop_CompleteoptPreview option.
+ - Removed g:AutoComplPop_MinLength option.
+ - Removed g:AutoComplPop_MaxLength option.
+ - Removed g:AutoComplPop_PopupCmd option.
+
+1.2:
+ - Fixed bugs related to 'completeopt'.
+
+1.1:
+ - Added g:AutoComplPop_IgnoreCaseOption option.
+ - Added g:AutoComplPop_NotEnableAtStartup option.
+ - Removed g:AutoComplPop_LoadAndEnable option.
+1.0:
+ - g:AutoComplPop_LoadAndEnable option for a startup activation is added.
+ - AutoComplPopLock command and AutoComplPopUnlock command are added to
+ suspend and resume.
+ - 'completeopt' and 'complete' options are changed temporarily while
+ completing by this script.
+
+0.4:
+ - The first match are selected when the popup menu is Opened. You can insert
+ the first match with CTRL-Y.
+
+0.3:
+ - Fixed the problem that the original text is not restored if 'longest' is
+ not set in 'completeopt'. Now the plugin works whether or not 'longest' is
+ set in 'completeopt', and also 'menuone'.
+
+0.2:
+ - When completion matches are not found, insert CTRL-E to stop completion.
+ - Clear the echo area.
+ - Fixed the problem in case of dividing words by symbols, popup menu is
+ not opened.
+
+0.1:
+ - First release.
+
+
+==============================================================================
+ABOUT *acp-about* *acp-contact* *acp-author*
+
+Author: Takeshi NISHIDA <ns9tks@DELETE-ME.gmail.com>
+Licence: MIT Licence
+URL: http://www.vim.org/scripts/script.php?script_id=1879
+ http://bitbucket.org/ns9tks/vim-autocomplpop/
+
+Bugs/Issues/Suggestions/Improvements ~
+
+Please submit to http://bitbucket.org/ns9tks/vim-autocomplpop/issues/ .
+
+==============================================================================
+ vim:tw=78:ts=8:ft=help:norl:
+
View
45 bundle/autocomplpop/doc/tags
@@ -0,0 +1,45 @@
+:AcpDisable acp.txt /*:AcpDisable*
+:AcpEnable acp.txt /*:AcpEnable*
+:AcpLock acp.txt /*:AcpLock*
+:AcpUnlock acp.txt /*:AcpUnlock*
+acp acp.txt /*acp*
+acp-about acp.txt /*acp-about*
+acp-author acp.txt /*acp-author*
+acp-changelog acp.txt /*acp-changelog*
+acp-commands acp.txt /*acp-commands*
+acp-contact acp.txt /*acp-contact*
+acp-installation acp.txt /*acp-installation*
+acp-introduction acp.txt /*acp-introduction*
+acp-options acp.txt /*acp-options*
+acp-perl-omni acp.txt /*acp-perl-omni*
+acp-snipMate acp.txt /*acp-snipMate*
+acp-thanks acp.txt /*acp-thanks*
+acp-usage acp.txt /*acp-usage*
+acp.txt acp.txt /*acp.txt*
+autocomplpop acp.txt /*autocomplpop*
+g:acp_behavior acp.txt /*g:acp_behavior*
+g:acp_behavior-command acp.txt /*g:acp_behavior-command*
+g:acp_behavior-completefunc acp.txt /*g:acp_behavior-completefunc*
+g:acp_behavior-meets acp.txt /*g:acp_behavior-meets*
+g:acp_behavior-onPopupClose acp.txt /*g:acp_behavior-onPopupClose*
+g:acp_behavior-repeat acp.txt /*g:acp_behavior-repeat*
+g:acp_behaviorCssOmniPropertyLength acp.txt /*g:acp_behaviorCssOmniPropertyLength*
+g:acp_behaviorCssOmniValueLength acp.txt /*g:acp_behaviorCssOmniValueLength*
+g:acp_behaviorFileLength acp.txt /*g:acp_behaviorFileLength*
+g:acp_behaviorHtmlOmniLength acp.txt /*g:acp_behaviorHtmlOmniLength*
+g:acp_behaviorKeywordCommand acp.txt /*g:acp_behaviorKeywordCommand*
+g:acp_behaviorKeywordIgnores acp.txt /*g:acp_behaviorKeywordIgnores*
+g:acp_behaviorKeywordLength acp.txt /*g:acp_behaviorKeywordLength*
+g:acp_behaviorPerlOmniLength acp.txt /*g:acp_behaviorPerlOmniLength*
+g:acp_behaviorPythonOmniLength acp.txt /*g:acp_behaviorPythonOmniLength*
+g:acp_behaviorRubyOmniMethodLength acp.txt /*g:acp_behaviorRubyOmniMethodLength*
+g:acp_behaviorRubyOmniSymbolLength acp.txt /*g:acp_behaviorRubyOmniSymbolLength*
+g:acp_behaviorSnipmateLength acp.txt /*g:acp_behaviorSnipmateLength*
+g:acp_behaviorUserDefinedFunction acp.txt /*g:acp_behaviorUserDefinedFunction*
+g:acp_behaviorUserDefinedMeets acp.txt /*g:acp_behaviorUserDefinedMeets*
+g:acp_behaviorXmlOmniLength acp.txt /*g:acp_behaviorXmlOmniLength*
+g:acp_completeOption acp.txt /*g:acp_completeOption*
+g:acp_completeoptPreview acp.txt /*g:acp_completeoptPreview*
+g:acp_enableAtStartup acp.txt /*g:acp_enableAtStartup*
+g:acp_ignorecaseOption acp.txt /*g:acp_ignorecaseOption*
+g:acp_mappingDriven acp.txt /*g:acp_mappingDriven*
View
44 bundle/autocomplpop/doc/tags-ja
@@ -0,0 +1,44 @@
+!_TAG_FILE_ENCODING utf-8 //
+:AcpDisable acp.jax /*:AcpDisable*
+:AcpEnable acp.jax /*:AcpEnable*
+:AcpLock acp.jax /*:AcpLock*
+:AcpUnlock acp.jax /*:AcpUnlock*
+acp acp.jax /*acp*
+acp-about acp.jax /*acp-about*
+acp-author acp.jax /*acp-author*
+acp-commands acp.jax /*acp-commands*
+acp-contact acp.jax /*acp-contact*
+acp-installation acp.jax /*acp-installation*
+acp-introduction acp.jax /*acp-introduction*
+acp-options acp.jax /*acp-options*
+acp-perl-omni acp.jax /*acp-perl-omni*
+acp-snipMate acp.jax /*acp-snipMate*
+acp-usage acp.jax /*acp-usage*
+acp.txt acp.jax /*acp.txt*
+autocomplpop acp.jax /*autocomplpop*
+g:acp_behavior acp.jax /*g:acp_behavior*
+g:acp_behavior-command acp.jax /*g:acp_behavior-command*
+g:acp_behavior-completefunc acp.jax /*g:acp_behavior-completefunc*
+g:acp_behavior-meets acp.jax /*g:acp_behavior-meets*
+g:acp_behavior-onPopupClose acp.jax /*g:acp_behavior-onPopupClose*
+g:acp_behavior-repeat acp.jax /*g:acp_behavior-repeat*
+g:acp_behaviorCssOmniPropertyLength acp.jax /*g:acp_behaviorCssOmniPropertyLength*
+g:acp_behaviorCssOmniValueLength acp.jax /*g:acp_behaviorCssOmniValueLength*
+g:acp_behaviorFileLength acp.jax /*g:acp_behaviorFileLength*
+g:acp_behaviorHtmlOmniLength acp.jax /*g:acp_behaviorHtmlOmniLength*
+g:acp_behaviorKeywordCommand acp.jax /*g:acp_behaviorKeywordCommand*
+g:acp_behaviorKeywordIgnores acp.jax /*g:acp_behaviorKeywordIgnores*
+g:acp_behaviorKeywordLength acp.jax /*g:acp_behaviorKeywordLength*
+g:acp_behaviorPerlOmniLength acp.jax /*g:acp_behaviorPerlOmniLength*
+g:acp_behaviorPythonOmniLength acp.jax /*g:acp_behaviorPythonOmniLength*
+g:acp_behaviorRubyOmniMethodLength acp.jax /*g:acp_behaviorRubyOmniMethodLength*
+g:acp_behaviorRubyOmniSymbolLength acp.jax /*g:acp_behaviorRubyOmniSymbolLength*
+g:acp_behaviorSnipmateLength acp.jax /*g:acp_behaviorSnipmateLength*
+g:acp_behaviorUserDefinedFunction acp.jax /*g:acp_behaviorUserDefinedFunction*
+g:acp_behaviorUserDefinedMeets acp.jax /*g:acp_behaviorUserDefinedMeets*
+g:acp_behaviorXmlOmniLength acp.jax /*g:acp_behaviorXmlOmniLength*
+g:acp_completeOption acp.jax /*g:acp_completeOption*
+g:acp_completeoptPreview acp.jax /*g:acp_completeoptPreview*
+g:acp_enableAtStartup acp.jax /*g:acp_enableAtStartup*
+g:acp_ignorecaseOption acp.jax /*g:acp_ignorecaseOption*
+g:acp_mappingDriven acp.jax /*g:acp_mappingDriven*
View
184 bundle/autocomplpop/plugin/acp.vim
@@ -0,0 +1,184 @@
+"=============================================================================
+" Copyright (c) 2007-2009 Takeshi NISHIDA
+"
+" GetLatestVimScripts: 1879 1 :AutoInstall: AutoComplPop
+"=============================================================================
+" LOAD GUARD {{{1
+
+if exists('g:loaded_acp')
+ finish
+elseif v:version < 702
+ echoerr 'AutoComplPop does not support this version of vim (' . v:version . ').'
+ finish
+endif
+let g:loaded_acp = 1
+
+" }}}1
+"=============================================================================
+" FUNCTION: {{{1
+
+"
+function s:defineOption(name, default)
+ if !exists(a:name)
+ let {a:name} = a:default
+ endif
+endfunction
+
+"
+function s:makeDefaultBehavior()
+ let behavs = {
+ \ '*' : [],
+ \ 'ruby' : [],
+ \ 'python' : [],
+ \ 'javascript' : [],
+ \ 'php' : [],
+ \ 'perl' : [],
+ \ 'xml' : [],
+ \ 'html' : [],
+ \ 'xhtml' : [],
+ \ 'css' : [],
+ \ }
+ "---------------------------------------------------------------------------
+ if !empty(g:acp_behaviorUserDefinedFunction) &&
+ \ !empty(g:acp_behaviorUserDefinedMeets)
+ for key in keys(behavs)
+ call add(behavs[key], {
+ \ 'command' : "\<C-x>\<C-u>",
+ \ 'completefunc' : g:acp_behaviorUserDefinedFunction,
+ \ 'meets' : g:acp_behaviorUserDefinedMeets,
+ \ 'repeat' : 0,
+ \ })
+ endfor
+ endif
+ "---------------------------------------------------------------------------
+ for key in keys(behavs)
+ call add(behavs[key], {
+ \ 'command' : "\<C-x>\<C-u>",
+ \ 'completefunc' : 'acp#completeSnipmate',
+ \ 'meets' : 'acp#meetsForSnipmate',
+ \ 'onPopupClose' : 'acp#onPopupCloseSnipmate',
+ \ 'repeat' : 0,
+ \ })
+ endfor
+ "---------------------------------------------------------------------------
+ for key in keys(behavs)
+ call add(behavs[key], {
+ \ 'command' : g:acp_behaviorKeywordCommand,
+ \ 'meets' : 'acp#meetsForKeyword',
+ \ 'repeat' : 0,
+ \ })
+ endfor
+ "---------------------------------------------------------------------------
+ for key in keys(behavs)
+ call add(behavs[key], {
+ \ 'command' : "\<C-x>\<C-f>",
+ \ 'meets' : 'acp#meetsForFile',
+ \ 'repeat' : 1,
+ \ })
+ endfor
+ "---------------------------------------------------------------------------
+ call add(behavs.ruby, {
+ \ 'command' : "\<C-x>\<C-o>",
+ \ 'meets' : 'acp#meetsForRubyOmni',
+ \ 'repeat' : 0,
+ \ })
+ "---------------------------------------------------------------------------
+ call add(behavs.python, {
+ \ 'command' : "\<C-x>\<C-o>",
+ \ 'meets' : 'acp#meetsForPythonOmni',
+ \ 'repeat' : 0,
+ \ })
+ "---------------------------------------------------------------------------
+ call add(behavs.javascript, {
+ \ 'command' : "\<C-x>\<C-o>",
+ \ 'meets' : 'acp#meetsForJavaScriptOmni',
+ \ 'repeat' : 0,
+ \ })
+ "---------------------------------------------------------------------------
+ call add(behavs.perl, {
+ \ 'command' : "\<C-x>\<C-o>",
+ \ 'meets' : 'acp#meetsForPerlOmni',
+ \ 'repeat' : 0,
+ \ })
+ "---------------------------------------------------------------------------
+ call add(behavs.php, {
+ \ 'command' : "\<C-x>\<C-o>",
+ \ 'meets' : 'acp#meetsForPerlOmni',
+ \ 'repeat' : 0,
+ \ })
+ "---------------------------------------------------------------------------
+ call add(behavs.xml, {
+ \ 'command' : "\<C-x>\<C-o>",
+ \ 'meets' : 'acp#meetsForXmlOmni',
+ \ 'repeat' : 1,
+ \ })
+ "---------------------------------------------------------------------------
+ call add(behavs.html, {
+ \ 'command' : "\<C-x>\<C-o>",
+ \ 'meets' : 'acp#meetsForHtmlOmni',
+ \ 'repeat' : 1,
+ \ })
+ "---------------------------------------------------------------------------
+ call add(behavs.xhtml, {
+ \ 'command' : "\<C-x>\<C-o>",
+ \ 'meets' : 'acp#meetsForHtmlOmni',
+ \ 'repeat' : 1,
+ \ })
+ "---------------------------------------------------------------------------
+ call add(behavs.css, {
+ \ 'command' : "\<C-x>\<C-o>",
+ \ 'meets' : 'acp#meetsForCssOmni',
+ \ 'repeat' : 0,
+ \ })
+ "---------------------------------------------------------------------------
+ return behavs
+endfunction
+
+" }}}1
+"=============================================================================
+" INITIALIZATION {{{1
+
+"-----------------------------------------------------------------------------
+call s:defineOption('g:acp_enableAtStartup', 1)
+call s:defineOption('g:acp_mappingDriven', 0)
+call s:defineOption('g:acp_ignorecaseOption', 1)
+call s:defineOption('g:acp_completeOption', '.,w,b,k')
+call s:defineOption('g:acp_completeoptPreview', 0)
+call s:defineOption('g:acp_behaviorUserDefinedFunction', '')
+call s:defineOption('g:acp_behaviorUserDefinedMeets', '')
+call s:defineOption('g:acp_behaviorSnipmateLength', -1)
+call s:defineOption('g:acp_behaviorKeywordCommand', "\<C-n>")
+call s:defineOption('g:acp_behaviorKeywordLength', 2)
+call s:defineOption('g:acp_behaviorKeywordIgnores', [])
+call s:defineOption('g:acp_behaviorFileLength', 0)
+call s:defineOption('g:acp_behaviorRubyOmniMethodLength', 0)
+call s:defineOption('g:acp_behaviorRubyOmniSymbolLength', 1)
+call s:defineOption('g:acp_behaviorPythonOmniLength', 0)
+call s:defineOption('g:acp_behaviorPerlOmniLength', -1)
+call s:defineOption('g:acp_behaviorXmlOmniLength', 0)
+call s:defineOption('g:acp_behaviorHtmlOmniLength', 0)
+call s:defineOption('g:acp_behaviorCssOmniPropertyLength', 1)
+call s:defineOption('g:acp_behaviorCssOmniValueLength', 0)
+call s:defineOption('g:acp_behavior', {})
+"-----------------------------------------------------------------------------
+call extend(g:acp_behavior, s:makeDefaultBehavior(), 'keep')
+"-----------------------------------------------------------------------------
+command! -bar -narg=0 AcpEnable call acp#enable()
+command! -bar -narg=0 AcpDisable call acp#disable()
+command! -bar -narg=0 AcpLock call acp#lock()
+command! -bar -narg=0 AcpUnlock call acp#unlock()
+"-----------------------------------------------------------------------------
+" legacy commands
+command! -bar -narg=0 AutoComplPopEnable AcpEnable
+command! -bar -narg=0 AutoComplPopDisable AcpDisable
+command! -bar -narg=0 AutoComplPopLock AcpLock
+command! -bar -narg=0 AutoComplPopUnlock AcpUnlock
+"-----------------------------------------------------------------------------
+if g:acp_enableAtStartup
+ AcpEnable
+endif
+"-----------------------------------------------------------------------------
+
+" }}}1
+"=============================================================================
+" vim: set fdm=marker:
View
1 bundle/commentary/.gitignore
@@ -0,0 +1 @@
+/doc/tags
View
61 bundle/commentary/README.markdown
@@ -0,0 +1,61 @@
+commentary.vim
+==============
+
+Comment stuff out. Use `\\\` to comment out a line (takes a count),
+`\\` to comment out the target of a motion (for example, `\\ap` to
+comment out a paragraph), and `\\` in visual mode to comment out the
+selection. That's it.
+
+Install [repeat.vim](https://github.com/tpope/vim-repeat) to enable
+repeating with `.` the line commenting map `\\\`.
+
+I wrote this because 5 years after Vim added support for mapping an
+operator, I still couldn't find a commenting plugin that leveraged that
+feature (I overlooked
+[tcomment.vim](https://github.com/tomtom/tcomment_vim)). Striving for
+minimalism, it weighs in at less than 50 lines of code.
+
+Oh, and it uncomments, too.
+
+Installation
+------------
+
+If you don't have a preferred installation method, I recommend
+installing [pathogen.vim](https://github.com/tpope/vim-pathogen), and
+then simply copy and paste:
+
+ cd ~/.vim/bundle
+ git clone git://github.com/tpope/vim-commentary.git
+
+Once help tags have been generated, you can view the manual with
+`:help commentary`.
+
+FAQ
+---
+
+> My favorite file type isn't supported!
+
+Relax! You just have to adjust `'commentstring'`:
+
+ autocmd FileType apache set commentstring=#\ %s
+
+Contributing
+------------
+
+See the contribution guidelines for
+[pathogen.vim](https://github.com/tpope/vim-pathogen#readme).
+
+Self-Promotion
+--------------
+
+Like commentary.vim? Follow the repository on
+[GitHub](https://github.com/tpope/vim-commentary) and vote for it on
+[vim.org](http://www.vim.org/scripts/script.php?script_id=3695). And if
+you're feeling especially charitable, follow [tpope](http://tpo.pe/) on
+[Twitter](http://twitter.com/tpope) and
+[GitHub](https://github.com/tpope).
+
+License
+-------
+
+Distributable under the same terms as Vim itself. See `:help license`.
View
18 bundle/commentary/doc/commentary.txt
@@ -0,0 +1,18 @@
+*commentary.txt* Comment stuff out
+
+Author: Tim Pope <http://tpo.pe/>
+License: Same terms as Vim itself (see |license|)
+
+Comment stuff out. Then uncomment it later. Relies on 'commentstring' to be
+correctly set.
+
+ *\\*
+\\{motion} Comment or uncomment lines that {motion} moves over.
+
+ *\\\*
+\\\ Comment or uncomment [count] lines.
+
+ *v_\\*
+{Visual}\\ Comment or uncomment the highlighted lines.
+
+ vim:tw=78:et:ft=help:norl:
View
59 bundle/commentary/plugin/commentary.vim
@@ -0,0 +1,59 @@
+" commentary.vim - Comment stuff out
+" Maintainer: Tim Pope <http://tpo.pe/>
+" Version: 1.1
+" GetLatestVimScripts: 3695 1 :AutoInstall: commentary.vim
+
+if exists("g:loaded_commentary") || &cp || v:version < 700
+ finish
+endif
+let g:loaded_commentary = 1
+
+function! s:go(type) abort
+ if a:type =~ '^\d\+$'
+ let [lnum1, lnum2] = [line("."), line(".") + a:type - 1]
+ elseif a:type =~ '^.$'
+ let [lnum1, lnum2] = [line("'<"), line("'>")]
+ else
+ let [lnum1, lnum2] = [line("'["), line("']")]
+ endif
+
+ let [l, r] = split(substitute(substitute(&commentstring,'\S\zs%s',' %s',''),'%s\ze\S','%s ',''),'%s',1)
+ let uncomment = 2
+ for lnum in range(lnum1,lnum2)
+ let line = matchstr(getline(lnum),'\S.*\s\@<!')
+ if line != '' && (stridx(line,l) || line[strlen(line)-strlen(r) : -1] != r)
+ let uncomment = 0
+ endif
+ endfor
+
+ for lnum in range(lnum1,lnum2)
+ let line = getline(lnum)
+ if strlen(r) > 2 && l.r !~# '\\'
+ let line = substitute(line,
+ \'\M'.r[0:-2].'\zs\d\*\ze'.r[-1:-1].'\|'.l[0].'\zs\d\*\ze'.l[1:-1],
+ \'\=substitute(submatch(0)+1-uncomment,"^0$\\|^-\\d*$","","")','g')
+ endif
+ if uncomment
+ let line = substitute(line,'\S.*\s\@<!','\=submatch(0)[strlen(l):-strlen(r)-1]','')
+ else
+ let line = substitute(line,'^\%('.matchstr(getline(lnum1),'^\s*').'\|\s*\)\zs.*\S\@<=','\=l.submatch(0).r','')
+ endif
+ call setline(lnum,line)
+ endfor
+
+ if a:type =~ '^\d\+$'
+ silent! call repeat#set('\\\',a:type)
+ endif
+endfunction
+
+xnoremap <silent> <Plug>Commentary :<C-U>call <SID>go(visualmode())<CR>
+nnoremap <silent> <Plug>Commentary :<C-U>set opfunc=<SID>go<CR>g@
+nnoremap <silent> <Plug>CommentaryLine :<C-U>call <SID>go(v:count1)<CR>
+
+if maparg('\\') ==# ''
+ xmap \\ <Plug>Commentary
+ nmap \\ <Plug>Commentary
+ nmap \\\ <Plug>CommentaryLine
+endif
+
+" vim:set sw=2 sts=2:
View
8 bundle/ctrlp/.gitignore
@@ -0,0 +1,8 @@
+.hgignore
+*.markdown
+*.zip
+wiki.md
+note.txt
+tags
+.hg/*
+tmp/*
View
1,926 bundle/ctrlp/autoload/ctrlp.vim
@@ -0,0 +1,1926 @@
+" =============================================================================
+" File: autoload/ctrlp.vim
+" Description: Fuzzy file, buffer, mru, tag, etc finder.
+" Author: Kien Nguyen <github.com/kien>
+" Version: 1.78
+" =============================================================================
+
+" ** Static variables {{{1
+fu! s:ignore() "{{{2
+ let igdirs = [
+ \ '\.git$',
+ \ '\.hg$',
+ \ '\.svn$',
+ \ '_darcs$',
+ \ '\.bzr$',
+ \ '\.cdv$',
+ \ '\~\.dep$',
+ \ '\~\.dot$',
+ \ '\~\.nib$',
+ \ '\~\.plst$',
+ \ '\.pc$',
+ \ '_MTN$',
+ \ '<blib$',
+ \ '<CVS$',
+ \ '<RCS$',
+ \ '<SCCS$',
+ \ '_sgbak$',
+ \ '<autom4te\.cache$',
+ \ '<cover_db$',
+ \ '_build$',
+ \ ]
+ let igfiles = [
+ \ '\~$',
+ \ '#.+#$',
+ \ '[._].*\.swp$',
+ \ 'core\.\d+$',
+ \ '\.exe$',
+ \ '\.so$',
+ \ '\.bak$',
+ \ '\.png$',
+ \ '\.jpg$',
+ \ '\.gif$',
+ \ '\.zip$',
+ \ '\.rar$',
+ \ '\.tar\.gz$',
+ \ ]
+ retu {
+ \ 'dir': '\v'.join(igdirs, '|'),
+ \ 'file': '\v'.join(igfiles, '|'),
+ \ }
+endf "}}}2
+" Options
+let [s:pref, s:opts, s:new_opts] = ['g:ctrlp_', {
+ \ 'arg_map': ['s:argmap', 0],
+ \ 'buffer_func': ['s:buffunc', {}],
+ \ 'by_filename': ['s:byfname', 0],
+ \ 'custom_ignore': ['s:usrign', s:ignore()],
+ \ 'default_input': ['s:deftxt', 0],
+ \ 'dont_split': ['s:nosplit', 'netrw'],
+ \ 'dotfiles': ['s:dotfiles', 1],
+ \ 'extensions': ['s:extensions', []],
+ \ 'follow_symlinks': ['s:folsym', 0],
+ \ 'highlight_match': ['s:mathi', [1, 'CtrlPMatch']],
+ \ 'jump_to_buffer': ['s:jmptobuf', 2],
+ \ 'lazy_update': ['s:lazy', 0],
+ \ 'match_func': ['s:matcher', {}],
+ \ 'match_window_bottom': ['s:mwbottom', 1],
+ \ 'match_window_reversed': ['s:mwreverse', 1],
+ \ 'max_depth': ['s:maxdepth', 40],
+ \ 'max_files': ['s:maxfiles', 10000],
+ \ 'max_height': ['s:mxheight', 10],
+ \ 'max_history': ['s:maxhst', exists('+hi') ? &hi : 20],
+ \ 'mruf_default_order': ['s:mrudef', 0],
+ \ 'open_multi': ['s:opmul', '1v'],
+ \ 'open_new_file': ['s:newfop', 'v'],
+ \ 'prompt_mappings': ['s:urprtmaps', 0],
+ \ 'regexp_search': ['s:regexp', 0],
+ \ 'root_markers': ['s:rmarkers', []],
+ \ 'split_window': ['s:splitwin', 0],
+ \ 'status_func': ['s:status', {}],
+ \ 'tabpage_position': ['s:tabpage', 'ac'],
+ \ 'use_caching': ['s:caching', 1],
+ \ 'use_migemo': ['s:migemo', 0],
+ \ 'user_command': ['s:usrcmd', ''],
+ \ 'working_path_mode': ['s:pathmode', 2],
+ \ }, {
+ \ 'open_multiple_files': 's:opmul',
+ \ 'regexp': 's:regexp',
+ \ 'reuse_window': 's:nosplit',
+ \ 'switch_buffer': 's:jmptobuf',
+ \ }]
+
+" Global options
+let s:glbs = { 'magic': 1, 'to': 1, 'tm': 0, 'sb': 1, 'hls': 0, 'im': 0,
+ \ 'report': 9999, 'sc': 0, 'ss': 0, 'siso': 0, 'mfd': 200, 'mouse': 'n',
+ \ 'gcr': 'a:blinkon0', 'ic': 1, 'lmap': '', 'mousef': 0, 'imd': 1 }
+
+" Keymaps
+let [s:lcmap, s:prtmaps] = ['nn <buffer> <silent>', {
+ \ 'PrtBS()': ['<bs>', '<c-]>'],
+ \ 'PrtDelete()': ['<del>'],
+ \ 'PrtDeleteWord()': ['<c-w>'],
+ \ 'PrtClear()': ['<c-u>'],
+ \ 'PrtSelectMove("j")': ['<c-j>', '<down>'],
+ \ 'PrtSelectMove("k")': ['<c-k>', '<up>'],
+ \ 'PrtSelectMove("t")': ['<Home>', '<kHome>'],
+ \ 'PrtSelectMove("b")': ['<End>', '<kEnd>'],
+ \ 'PrtSelectMove("u")': ['<PageUp>', '<kPageUp>'],
+ \ 'PrtSelectMove("d")': ['<PageDown>', '<kPageDown>'],
+ \ 'PrtHistory(-1)': ['<c-n>'],
+ \ 'PrtHistory(1)': ['<c-p>'],
+ \ 'AcceptSelection("e")': ['<cr>', '<2-LeftMouse>'],
+ \ 'AcceptSelection("h")': ['<c-x>', '<c-cr>', '<c-s>'],
+ \ 'AcceptSelection("t")': ['<c-t>'],
+ \ 'AcceptSelection("v")': ['<c-v>', '<RightMouse>'],
+ \ 'ToggleFocus()': ['<s-tab>'],
+ \ 'ToggleRegex()': ['<c-r>'],
+ \ 'ToggleByFname()': ['<c-d>'],
+ \ 'ToggleType(1)': ['<c-f>', '<c-up>'],
+ \ 'ToggleType(-1)': ['<c-b>', '<c-down>'],
+ \ 'PrtExpandDir()': ['<tab>'],
+ \ 'PrtInsert("c")': ['<MiddleMouse>', '<insert>'],
+ \ 'PrtInsert()': ['<c-\>'],
+ \ 'PrtCurStart()': ['<c-a>'],
+ \ 'PrtCurEnd()': ['<c-e>'],
+ \ 'PrtCurLeft()': ['<c-h>', '<left>', '<c-^>'],
+ \ 'PrtCurRight()': ['<c-l>', '<right>'],
+ \ 'PrtClearCache()': ['<F5>'],
+ \ 'PrtDeleteEnt()': ['<F7>'],
+ \ 'CreateNewFile()': ['<c-y>'],
+ \ 'MarkToOpen()': ['<c-z>'],
+ \ 'OpenMulti()': ['<c-o>'],
+ \ 'PrtExit()': ['<esc>', '<c-c>', '<c-g>'],
+ \ }]
+
+if !has('gui_running') && ( has('win32') || has('win64') )
+ cal add(s:prtmaps['PrtBS()'], remove(s:prtmaps['PrtCurLeft()'], 0))
+en
+
+let s:lash = ctrlp#utils#lash()
+
+let s:compare_lim = 3000
+
+let s:ficounts = {}
+
+" Regexp
+let s:fpats = {
+ \ '^\(\\|\)\|\(\\|\)$': '\\|',
+ \ '^\\\(zs\|ze\|<\|>\)': '^\\\(zs\|ze\|<\|>\)',
+ \ '^\S\*$': '\*',
+ \ '^\S\\?$': '\\?',
+ \ }
+
+" Specials
+let s:prtunmaps = [
+ \ 'PrtBS()',
+ \ 'PrtDelete()',
+ \ 'PrtDeleteWord()',
+ \ 'PrtClear()',
+ \ 'PrtCurStart()',
+ \ 'PrtCurEnd()',
+ \ 'PrtCurLeft()',
+ \ 'PrtCurRight()',
+ \ 'PrtHistory(-1)',
+ \ 'PrtHistory(1)',
+ \ 'PrtInsert("c")',
+ \ 'PrtInsert()',
+ \ ]
+
+" Keypad
+let s:kprange = {
+ \ 'Plus': '+',
+ \ 'Minus': '-',
+ \ 'Divide': '/',
+ \ 'Multiply': '*',
+ \ 'Point': '.',
+ \ }
+
+" Highlight groups
+let s:hlgrps = {
+ \ 'NoEntries': 'Error',
+ \ 'Mode1': 'Character',
+ \ 'Mode2': 'LineNr',
+ \ 'Stats': 'Function',
+ \ 'Match': 'Identifier',
+ \ 'PrtBase': 'Comment',
+ \ 'PrtText': 'Normal',
+ \ 'PrtCursor': 'Constant',
+ \ }
+
+fu! s:opts() "{{{2
+ " Options
+ unl! s:usrign s:usrcmd s:urprtmaps
+ for each in ['byfname', 'regexp', 'extensions'] | if exists('s:'.each)
+ let {each} = s:{each}
+ en | endfo
+ for [ke, va] in items(s:opts)
+ let {va[0]} = exists(s:pref.ke) ? {s:pref.ke} : va[1]
+ endfo
+ unl va
+ for [ke, va] in items(s:new_opts)
+ let {va} = {exists(s:pref.ke) ? s:pref.ke : va}
+ endfo
+ for each in ['byfname', 'regexp'] | if exists(each)
+ let s:{each} = {each}
+ en | endfo
+ if !exists('g:ctrlp_newcache') | let g:ctrlp_newcache = 0 | en
+ let s:maxdepth = min([s:maxdepth, 100])
+ let s:mxheight = max([s:mxheight, 1])
+ let s:glob = s:dotfiles ? '.*\|*' : '*'
+ let s:igntype = empty(s:usrign) ? -1 : type(s:usrign)
+ if s:lazy
+ cal extend(s:glbs, { 'ut': ( s:lazy > 1 ? s:lazy : 250 ) })
+ en
+ " Extensions
+ if !( exists('extensions') && extensions == s:extensions )
+ for each in s:extensions
+ exe 'ru autoload/ctrlp/'.each.'.vim'
+ endfo
+ en
+ " Keymaps
+ if type(s:urprtmaps) == 4
+ cal extend(s:prtmaps, s:urprtmaps)
+ en
+endf
+"}}}1
+" * Open & Close {{{1
+fu! s:Open()
+ let s:ermsg = v:errmsg
+ cal s:log(1)
+ cal s:getenv()
+ cal s:execextvar('enter')
+ sil! exe 'keepa' ( s:mwbottom ? 'bo' : 'to' ) '1new ControlP'
+ cal s:buffunc(1)
+ let [s:bufnr, s:prompt, s:winw] = [bufnr('%'), ['', '', ''], winwidth(0)]
+ abc <buffer>
+ if !exists('s:hstry')
+ let hst = filereadable(s:gethistloc()[1]) ? s:gethistdata() : ['']
+ let s:hstry = empty(hst) || !s:maxhst ? [''] : hst
+ en
+ for [ke, va] in items(s:glbs) | if exists('+'.ke)
+ sil! exe 'let s:glb_'.ke.' = &'.ke.' | let &'.ke.' = '.string(va)
+ en | endfo
+ if s:opmul != '0' && has('signs')
+ sign define ctrlpmark text=+> texthl=Search
+ en
+ cal s:setupblank()
+endf
+
+fu! s:Close()
+ cal s:buffunc(0)
+ try | bun!
+ cat | clo! | endt
+ cal s:unmarksigns()
+ for key in keys(s:glbs) | if exists('+'.key)
+ sil! exe 'let &'.key.' = s:glb_'.key
+ en | endfo
+ if exists('s:glb_acd') | let &acd = s:glb_acd | en
+ let g:ctrlp_lines = []
+ if s:winres[1] >= &lines && s:winres[2] == winnr('$')
+ exe s:winres[0]
+ en
+ unl! s:focus s:hisidx s:hstgot s:marked s:statypes s:cline s:init s:savestr
+ \ s:mrbs
+ cal ctrlp#recordhist()
+ cal s:execextvar('exit')
+ cal s:log(0)
+ let v:errmsg = s:ermsg
+ ec
+endf
+" * Clear caches {{{1
+fu! ctrlp#clr(...)
+ let [s:matches, g:ctrlp_new{ a:0 ? a:1 : 'cache' }] = [1, 1]
+endf
+
+fu! ctrlp#clra()
+ let cache_dir = ctrlp#utils#cachedir()
+ if isdirectory(cache_dir)
+ let cache_files = split(s:glbpath(cache_dir, '**', 1), "\n")
+ let eval = '!isdirectory(v:val) && fnamemodify(v:val, ":t") !~'
+ \ . ' ''\v^<cache>[.a-z]+$|\.log$'''
+ sil! cal map(filter(cache_files, eval), 'delete(v:val)')
+ en
+ cal ctrlp#clr()
+endf
+
+fu! ctrlp#reset()
+ cal s:opts()
+ cal s:autocmds()
+ cal ctrlp#utils#opts()
+ cal s:execextvar('opts')
+endf
+" * Files {{{1
+fu! ctrlp#files()
+ let cafile = ctrlp#utils#cachefile()
+ if g:ctrlp_newcache || !filereadable(cafile) || s:nocache()
+ let [lscmd, s:initcwd, g:ctrlp_allfiles] = [s:lsCmd(), s:dyncwd, []]
+ " Get the list of files
+ if empty(lscmd)
+ cal s:GlobPath(s:dyncwd, 0)
+ el
+ sil! cal ctrlp#progress('Indexing...')
+ try | cal s:UserCmd(lscmd)
+ cat | retu [] | endt
+ en
+ " Remove base directory
+ cal ctrlp#rmbasedir(g:ctrlp_allfiles)
+ if len(g:ctrlp_allfiles) <= s:compare_lim
+ cal sort(g:ctrlp_allfiles, 'ctrlp#complen')
+ en
+ cal s:writecache(cafile)
+ el
+ if !( exists('s:initcwd') && s:initcwd == s:dyncwd )
+ let s:initcwd = s:dyncwd
+ let g:ctrlp_allfiles = ctrlp#utils#readfile(cafile)
+ en
+ en
+ cal extend(s:ficounts, { s:dyncwd : len(g:ctrlp_allfiles) })
+ retu g:ctrlp_allfiles
+endf
+
+fu! s:GlobPath(dirs, depth)
+ let entries = split(globpath(a:dirs, s:glob), "\n")
+ let [dnf, depth] = [ctrlp#dirnfile(entries), a:depth + 1]
+ cal extend(g:ctrlp_allfiles, dnf[1])
+ if !empty(dnf[0]) && !s:maxf(len(g:ctrlp_allfiles)) && depth <= s:maxdepth
+ sil! cal ctrlp#progress(len(g:ctrlp_allfiles), 1)
+ cal s:GlobPath(join(dnf[0], ','), depth)
+ en
+endf
+
+fu! s:UserCmd(lscmd)
+ let [path, lscmd] = [s:dyncwd, a:lscmd]
+ if exists('+ssl') && &ssl
+