diff options
author | mattn <mattn.jp@gmail.com> | 2013-05-08 22:23:38 +0900 |
---|---|---|
committer | mattn <mattn.jp@gmail.com> | 2013-05-08 22:23:38 +0900 |
commit | 382dc59a19557fc13400af424a40de6f4fd7e1d3 (patch) | |
tree | 5f0cbc2b2bb14e56c67acd123411a9e3f0e4575f | |
parent | f77b8ebe0659579f44a99a74dcb34c02d202b3ab (diff) | |
download | vim-sonictemplate-382dc59a19557fc13400af424a40de6f4fd7e1d3.tar.gz vim-sonictemplate-382dc59a19557fc13400af424a40de6f4fd7e1d3.tar.bz2 vim-sonictemplate-382dc59a19557fc13400af424a40de6f4fd7e1d3.zip |
Store variables for each filetypes
-rw-r--r-- | autoload/sonictemplate.vim | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/autoload/sonictemplate.vim b/autoload/sonictemplate.vim index d340e8b..559d9ab 100644 --- a/autoload/sonictemplate.vim +++ b/autoload/sonictemplate.vim @@ -115,10 +115,14 @@ function! s:getopt(k) return b:sonictemplate[a:k] endfunction -let s:var = {} +let s:vars = {} function! sonictemplate#getvar(name) - return has_key(s:var, a:name) ? s:var[a:name] : '' + let ft = &ft != "" ? &ft : "_" + if !has_key(s:vars, ft) + return '' + endif + return has_key(s:vars[ft], a:name) ? s:vars[ft][a:name] : '' endfunction function! sonictemplate#apply(name, mode, ...) abort @@ -147,12 +151,13 @@ function! sonictemplate#apply(name, mode, ...) abort echomsg 'Template '.name.' is not exists.' return endif + let ft = &ft != "" ? &ft : "_" let c = join(readfile(f), "\n") let c = substitute(c, '{{_name_}}', expand('%:t:r:'), 'g') let tmp = c let mx = '{{_input_:\(.\{-}\)}}' if prefix == 'base-' - let s:var = {} + let s:vars[ft] = {} endif let vars = [] while 1 @@ -169,7 +174,7 @@ function! sonictemplate#apply(name, mode, ...) abort for var in vars let val = input(var . ":") let c = substitute(c, '\V{{\(_input_\|_var_\):'.var.'}}', '\=val', 'g') - let s:var[var] = val + let s:vars[ft][var] = val endfor let mx = '{{_define_:\([^:]\+\):\(.\{-}\)}}\s*' while 1 @@ -181,7 +186,7 @@ function! sonictemplate#apply(name, mode, ...) abort let val = eval(substitute(match, mx, '\2', 'ig')) let c = substitute(c, mx, '', 'g') let c = substitute(c, '\V{{_var_:'.var.'}}', '\=val', 'g') - let s:var[var] = val + let s:vars[ft][var] = val endwhile sandbox let c = substitute(c, '{{_if_:\(.\{-}\);\(.\{-}\)\(;\(.\{-}\)\)\{-}}}', '\=eval(submatch(1))?submatch(2):submatch(4)', 'g') sandbox let c = substitute(c, '{{_expr_:\(.\{-}\)}}', '\=eval(submatch(1))', 'g') |