From 8b504f2dd8a3646ea98e0cfbca9faf2de27231d2 Mon Sep 17 00:00:00 2001 From: Shougo Matsushita Date: Sun, 11 May 2014 17:56:27 +0900 Subject: [PATCH] Implement cache feature --- autoload/neosnippet/parser.vim | 12 +++++++++++- autoload/neosnippet/variables.vim | 11 +++++++++++ doc/neosnippet.txt | 7 +++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/autoload/neosnippet/parser.vim b/autoload/neosnippet/parser.vim index 9f34686..df67ca1 100644 --- a/autoload/neosnippet/parser.vim +++ b/autoload/neosnippet/parser.vim @@ -35,7 +35,17 @@ function! neosnippet#parser#_parse(snippet_file) "{{{ return {} endif - return s:parse(a:snippet_file) + let cache_dir = neosnippet#variables#data_dir() + if s:Cache.check_old_cache(cache_dir, a:snippet_file) + let snippets = s:parse(a:snippet_file) + if len(snippets) > 5 + call s:Cache.writefile(cache_dir, a:snippet_file, [string(snippets)]) + endif + else + sandbox let snippets = eval(s:Cache.readfile(cache_dir, a:snippet_file)[0]) + endif + + return snippets endfunction"}}} function! s:parse(snippet_file) "{{{ diff --git a/autoload/neosnippet/variables.vim b/autoload/neosnippet/variables.vim index 403c1d3..50a76f8 100644 --- a/autoload/neosnippet/variables.vim +++ b/autoload/neosnippet/variables.vim @@ -73,6 +73,17 @@ function! neosnippet#variables#runtime_dir() "{{{ return s:runtime_dir endfunction"}}} +function! neosnippet#variables#data_dir() "{{{ + let g:neosnippet#data_directory = + \ substitute(fnamemodify(get( + \ g:, 'neosnippet#data_directory', '~/.cache/neosnippet'), + \ ':p'), '\\', '/', 'g') + if !isdirectory(g:neosnippet#data_directory) + call mkdir(g:neosnippet#data_directory, 'p') + endif + + return g:neosnippet#data_directory +endfunction"}}} let &cpo = s:save_cpo unlet s:save_cpo diff --git a/doc/neosnippet.txt b/doc/neosnippet.txt index a42adee..9b37e83 100755 --- a/doc/neosnippet.txt +++ b/doc/neosnippet.txt @@ -230,6 +230,13 @@ g:neosnippet#scope_aliases let g:neosnippet#scope_aliases = {} let g:neosnippet#scope_aliases['ruby'] = 'ruby,ruby-rails' +g:neosnippet_data_directory *g:neosnippet_data_directory* + Specifies directory for neosnippet cache. If the directory + doesn't exist the directory will be automatically generated. + + Default value is expand('~/.cache/neosnippet'); the absolute + path of it. + ------------------------------------------------------------------------------ KEY MAPPINGS *neosnippet-key-mappings*