1
0
Fork 0
mirror of synced 2024-12-22 15:08:57 -05:00
ultimate-vim/sources_non_forked/vim-go/autoload/go/template.vim

54 lines
1.7 KiB
VimL
Raw Normal View History

2016-07-03 07:53:59 -04:00
let s:current_file = expand("<sfile>")
2016-12-27 09:46:49 -05:00
function! go#template#create() abort
let l:go_template_use_pkg = get(g:, 'go_template_use_pkg', 0)
2016-07-03 07:53:59 -04:00
let l:root_dir = fnamemodify(s:current_file, ':h:h:h')
let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '
let dir = getcwd()
2018-02-04 06:35:08 -05:00
let l:package_name = -1
2016-07-03 07:53:59 -04:00
2018-02-04 06:35:08 -05:00
if isdirectory(expand('%:p:h'))
execute cd . fnameescape(expand('%:p:h'))
let l:package_name = go#tool#PackageName()
endif
2016-07-03 07:53:59 -04:00
" if we can't figure out any package name(no Go files or non Go package
2016-12-27 09:46:49 -05:00
" files) from the directory create the template or use the cwd
" as the name
if l:package_name == -1 && l:go_template_use_pkg != 1
2017-07-06 08:57:35 -04:00
let l:filename = fnamemodify(expand("%"), ':t')
if l:filename =~ "_test.go$"
let l:template_file = get(g:, 'go_template_test_file', "hello_world_test.go")
else
let l:template_file = get(g:, 'go_template_file', "hello_world.go")
endif
2016-07-03 07:53:59 -04:00
let l:template_path = go#util#Join(l:root_dir, "templates", l:template_file)
2017-09-02 06:43:18 -04:00
silent exe '0r ' . fnameescape(l:template_path)
2016-12-27 09:46:49 -05:00
elseif l:package_name == -1 && l:go_template_use_pkg == 1
" cwd is now the dir of the package
let l:path = fnamemodify(getcwd(), ':t')
let l:content = printf("package %s", l:path)
call append(0, l:content)
2016-08-02 08:48:32 -04:00
else
2016-07-03 07:53:59 -04:00
let l:content = printf("package %s", l:package_name)
call append(0, l:content)
endif
2017-07-06 08:57:35 -04:00
$delete _
2016-07-03 07:53:59 -04:00
execute cd . fnameescape(dir)
endfunction
2016-12-27 09:46:49 -05:00
function! go#template#ToggleAutoCreate() abort
2016-08-02 08:48:32 -04:00
if get(g:, "go_template_autocreate", 1)
let g:go_template_autocreate = 0
call go#util#EchoProgress("auto template create disabled")
return
end
let g:go_template_autocreate = 1
call go#util#EchoProgress("auto template create enabled")
endfunction
2016-07-03 07:53:59 -04:00
" vim: sw=2 ts=2 et