aboutsummaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authormattn <mattn.jp@gmail.com>2012-03-19 22:46:35 +0900
committermattn <mattn.jp@gmail.com>2012-03-19 22:47:33 +0900
commit8bf9089fcc271fa7ed7aad85e0db8ae6f39ce491 (patch)
tree5cc0a0702a5daf510c14418664679b5b976058f4 /autoload
parenta4f410db29235ba73357db60a9b560e6e68820bc (diff)
downloadvim-sonictemplate-8bf9089fcc271fa7ed7aad85e0db8ae6f39ce491.tar.gz
vim-sonictemplate-8bf9089fcc271fa7ed7aad85e0db8ae6f39ce491.tar.bz2
vim-sonictemplate-8bf9089fcc271fa7ed7aad85e0db8ae6f39ce491.zip
foldopen.
Diffstat (limited to 'autoload')
-rw-r--r--autoload/sonictemplate.vim32
1 files changed, 21 insertions, 11 deletions
diff --git a/autoload/sonictemplate.vim b/autoload/sonictemplate.vim
index 730d318..3608d2b 100644
--- a/autoload/sonictemplate.vim
+++ b/autoload/sonictemplate.vim
@@ -1,7 +1,7 @@
"=============================================================================
" sonictemplate.vim
" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
-" Last Change: 08-Nov-2011.
+" Last Change: 19-Mar-2012.
let s:save_cpo = &cpo
set cpo&vim
@@ -21,27 +21,35 @@ function! sonictemplate#select(mode) abort
endfunction
function! sonictemplate#complete(lead, cmdline, curpos) abort
- if search('[^ \t]', 'wn')
- return map(split(globpath(join([s:tmpldir, &ft], '/'), 'snip-' . a:lead . '*.*'), "\n"), 'fnamemodify(v:val, ":t:r")[5:]')
- else
- return map(split(globpath(join([s:tmpldir, &ft], '/'), 'base-' . a:lead . '*.*'), "\n"), 'fnamemodify(v:val, ":t:r")[5:]')
+ let ft = &ft
+ let candidate = map(split(globpath(join([s:tmpldir, ft], '/'), (search('[^ \t]', 'wn') ? 'snip-' : 'base-') . a:lead . '*.*'), "\n"), 'fnamemodify(v:val, ":t:r")[5:]')
+ if len(candidate) == 0
+ let ft = tolower(synIDattr(synID(line("."), col("."), 1), "name"))
+ if len(ft) > 0
+ let candidate = map(split(globpath(join([s:tmpldir, ft], '/'), (search('[^ \t]', 'wn') ? 'snip-' : 'base-') . a:lead . '*.*'), "\n"), 'fnamemodify(v:val, ":t:r")[5:]')
+ endif
endif
+ return candidate
endfunction
function! sonictemplate#apply(name, mode) abort
+ let name = matchstr(a:name, '\S\+')
let buffer_is_not_empty = search('[^ \t]', 'wn')
- if search('[^ \t]', 'wn')
- let fs = split(globpath(join([s:tmpldir, &ft], '/'), 'snip-' . a:name . '.*'), "\n")
- else
- let fs = split(globpath(join([s:tmpldir, &ft], '/'), 'base-' . a:name . '.*'), "\n")
+ let ft = &ft
+ let fs = split(globpath(join([s:tmpldir, ft], '/'), (search('[^ \t]', 'wn') ? 'snip-' : 'base-') . name . '.*'), "\n")
+ if len(fs) == 0
+ let ft = tolower(synIDattr(synID(line("."), col("."), 1), "name"))
+ if len(ft) > 0
+ let fs = split(globpath(join([s:tmpldir, ft], '/'), (search('[^ \t]', 'wn') ? 'snip-' : 'base-') . name . '.*'), "\n")
+ endif
endif
if len(fs) == 0
- echomsg 'Template '.a:name.' is not exists.'
+ echomsg 'Template '.name.' is not exists.'
return
endif
let f = fs[0]
if !filereadable(f)
- echomsg 'Template '.a:name.' is not exists.'
+ echomsg 'Template '.name.' is not exists.'
return
endif
let c = join(readfile(f, "b"), "\n")
@@ -91,9 +99,11 @@ function! sonictemplate#apply(name, mode) abort
if stridx(c, '{{_cursor_}}') != -1
if a:mode == 'n'
silent! call search('\zs{{_cursor_}}', 'w')
+ silent! foldopen
silent! exe "normal ".repeat("x", 12)
else
silent! call search('{{_cursor_}}\zs', 'w')
+ silent! foldopen
call feedkeys(repeat("\<bs>", 12))
endif
endif