aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattn <mattn.jp@gmail.com>2013-05-08 22:23:38 +0900
committermattn <mattn.jp@gmail.com>2013-05-08 22:23:38 +0900
commit382dc59a19557fc13400af424a40de6f4fd7e1d3 (patch)
tree5f0cbc2b2bb14e56c67acd123411a9e3f0e4575f
parentf77b8ebe0659579f44a99a74dcb34c02d202b3ab (diff)
downloadvim-sonictemplate-382dc59a19557fc13400af424a40de6f4fd7e1d3.tar.gz
vim-sonictemplate-382dc59a19557fc13400af424a40de6f4fd7e1d3.tar.bz2
vim-sonictemplate-382dc59a19557fc13400af424a40de6f4fd7e1d3.zip
Store variables for each filetypes
-rw-r--r--autoload/sonictemplate.vim15
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')