Use the global caching option for extensions
This commit is contained in:
parent
5929844814
commit
cb86f0f386
@ -138,8 +138,9 @@ en
|
||||
|
||||
let s:lash = ctrlp#utils#lash()
|
||||
|
||||
" Limiters
|
||||
let [s:compare_lim, s:nocache_lim] = [3000, 4000]
|
||||
let s:compare_lim = 3000
|
||||
|
||||
let s:ficounts = {}
|
||||
|
||||
" Regexp
|
||||
let s:fpats = {
|
||||
@ -291,7 +292,7 @@ endf
|
||||
" * Files {{{1
|
||||
fu! ctrlp#files()
|
||||
let cafile = ctrlp#utils#cachefile()
|
||||
if g:ctrlp_newcache || !filereadable(cafile) || !s:caching
|
||||
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)
|
||||
@ -313,6 +314,7 @@ fu! ctrlp#files()
|
||||
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
|
||||
|
||||
@ -1765,14 +1767,16 @@ fu! s:mmode()
|
||||
endf
|
||||
" Cache {{{2
|
||||
fu! s:writecache(cache_file)
|
||||
let fwrite = len(g:ctrlp_allfiles) > s:nocache_lim
|
||||
if ( g:ctrlp_newcache || !filereadable(a:cache_file) ) && s:caching || fwrite
|
||||
if fwrite | let s:caching = 1 | en
|
||||
if ( g:ctrlp_newcache || !filereadable(a:cache_file) ) && !s:nocache()
|
||||
cal ctrlp#utils#writecache(g:ctrlp_allfiles)
|
||||
let g:ctrlp_newcache = 0
|
||||
en
|
||||
endf
|
||||
|
||||
fu! s:nocache()
|
||||
retu !s:caching || ( s:caching > 1 && get(s:ficounts, s:dyncwd) < s:caching )
|
||||
endf
|
||||
|
||||
fu! s:insertcache(str)
|
||||
let [data, g:ctrlp_newcache, str] = [g:ctrlp_allfiles, 1, a:str]
|
||||
if strlen(str) <= strlen(data[0])
|
||||
|
@ -10,12 +10,7 @@ if exists('g:loaded_ctrlp_dir') && g:loaded_ctrlp_dir
|
||||
en
|
||||
let [g:loaded_ctrlp_dir, g:ctrlp_newdir] = [1, 0]
|
||||
|
||||
let s:ars = [
|
||||
\ 's:maxdepth',
|
||||
\ 's:maxfiles',
|
||||
\ 's:compare_lim',
|
||||
\ 's:glob',
|
||||
\ ]
|
||||
let s:ars = ['s:maxdepth', 's:maxfiles', 's:compare_lim', 's:glob', 's:caching']
|
||||
|
||||
cal add(g:ctrlp_ext_vars, {
|
||||
\ 'init': 'ctrlp#dir#init('.join(s:ars, ', ').')',
|
||||
@ -27,6 +22,8 @@ cal add(g:ctrlp_ext_vars, {
|
||||
\ })
|
||||
|
||||
let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)
|
||||
|
||||
let s:dircounts = {}
|
||||
" Utilities {{{1
|
||||
fu! s:globdirs(dirs, depth)
|
||||
let entries = split(globpath(a:dirs, s:glob), "\n")
|
||||
@ -42,6 +39,10 @@ endf
|
||||
fu! s:max(len, max)
|
||||
retu a:max && a:len > a:max ? 1 : 0
|
||||
endf
|
||||
|
||||
fu! s:nocache()
|
||||
retu !s:caching || ( s:caching > 1 && get(s:dircounts, s:cwd) < s:caching )
|
||||
endf
|
||||
" Public {{{1
|
||||
fu! ctrlp#dir#init(...)
|
||||
let s:cwd = getcwd()
|
||||
@ -50,7 +51,7 @@ fu! ctrlp#dir#init(...)
|
||||
endfo
|
||||
let cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().'dir'
|
||||
let cafile = cadir.ctrlp#utils#lash().ctrlp#utils#cachefile('dir')
|
||||
if g:ctrlp_newdir || !filereadable(cafile)
|
||||
if g:ctrlp_newdir || s:nocache() || !filereadable(cafile)
|
||||
let [s:initcwd, g:ctrlp_alldirs] = [s:cwd, []]
|
||||
cal s:globdirs(s:cwd, 0)
|
||||
cal ctrlp#rmbasedir(g:ctrlp_alldirs)
|
||||
@ -65,6 +66,7 @@ fu! ctrlp#dir#init(...)
|
||||
let g:ctrlp_alldirs = ctrlp#utils#readfile(cafile)
|
||||
en
|
||||
en
|
||||
cal extend(s:dircounts, { s:cwd : len(g:ctrlp_alldirs) })
|
||||
retu g:ctrlp_alldirs
|
||||
endf
|
||||
|
||||
|
@ -11,7 +11,7 @@ en
|
||||
let [g:loaded_ctrlp_rtscript, g:ctrlp_newrts] = [1, 0]
|
||||
|
||||
cal add(g:ctrlp_ext_vars, {
|
||||
\ 'init': 'ctrlp#rtscript#init()',
|
||||
\ 'init': 'ctrlp#rtscript#init(s:caching)',
|
||||
\ 'accept': 'ctrlp#acceptfile',
|
||||
\ 'lname': 'runtime scripts',
|
||||
\ 'sname': 'rts',
|
||||
@ -20,9 +20,16 @@ cal add(g:ctrlp_ext_vars, {
|
||||
\ })
|
||||
|
||||
let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)
|
||||
|
||||
let s:filecounts = {}
|
||||
" Utilities {{{1
|
||||
fu! s:nocache()
|
||||
retu !s:caching || ( s:caching > 1 && get(s:filecounts, s:cwd) < s:caching )
|
||||
endf
|
||||
" Public {{{1
|
||||
fu! ctrlp#rtscript#init()
|
||||
if g:ctrlp_newrts
|
||||
fu! ctrlp#rtscript#init(caching)
|
||||
let [s:caching, s:cwd] = [a:caching, getcwd()]
|
||||
if g:ctrlp_newrts || s:nocache()
|
||||
\ || !( exists('g:ctrlp_rtscache') && g:ctrlp_rtscache[0] == &rtp )
|
||||
sil! cal ctrlp#progress('Indexing...')
|
||||
let entries = split(globpath(&rtp, '**/*.*'), "\n")
|
||||
@ -31,13 +38,13 @@ fu! ctrlp#rtscript#init()
|
||||
el
|
||||
let [entries, results] = g:ctrlp_rtscache[2:3]
|
||||
en
|
||||
let cwd = getcwd()
|
||||
if g:ctrlp_newrts
|
||||
\ || !( exists('g:ctrlp_rtscache') && g:ctrlp_rtscache[:1] == [&rtp, cwd] )
|
||||
if g:ctrlp_newrts || s:nocache()
|
||||
\ || !( exists('g:ctrlp_rtscache') && g:ctrlp_rtscache[:1] == [&rtp, s:cwd] )
|
||||
if !exists('echoed') | sil! cal ctrlp#progress('Processing...') | en
|
||||
let results = map(copy(entries), 'fnamemodify(v:val, '':.'')')
|
||||
en
|
||||
let [g:ctrlp_rtscache, g:ctrlp_newrts] = [[&rtp, cwd, entries, results], 0]
|
||||
let [g:ctrlp_rtscache, g:ctrlp_newrts] = [[&rtp, s:cwd, entries, results], 0]
|
||||
cal extend(s:filecounts, { s:cwd : len(results) })
|
||||
retu results
|
||||
endf
|
||||
|
||||
|
@ -164,10 +164,13 @@ Use this to set your own root markers in addition to the default ones (.git,
|
||||
<
|
||||
|
||||
*'g:ctrlp_use_caching'*
|
||||
Set this to 0 to disable per-session caching. When disabled, caching will still
|
||||
be enabled for directories that have more than 4000 files: >
|
||||
Enable/Disable per-session caching: >
|
||||
let g:ctrlp_use_caching = 1
|
||||
<
|
||||
0 - Disable caching.
|
||||
1 - Enable caching.
|
||||
n - When bigger than 1, disable caching and use the number as the limit to
|
||||
enable caching again.
|
||||
Note: you can quickly purge the cache by pressing <F5> while inside CtrlP.
|
||||
|
||||
*'g:ctrlp_clear_cache_on_exit'*
|
||||
|
Loading…
x
Reference in New Issue
Block a user