Skip to content

Commit

Permalink
Fix #175 implement the error check
Browse files Browse the repository at this point in the history
  • Loading branch information
Shougo committed Jan 4, 2017
1 parent b90b19b commit f5ecaea
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 7 deletions.
19 changes: 14 additions & 5 deletions autoload/dein/autoload.vim
Expand Up @@ -232,15 +232,24 @@ function! dein#autoload#_dummy_complete(arglead, cmdline, cursorpos) abort
endfunction endfunction


function! s:source_plugin(rtps, index, plugin, sourced) abort function! s:source_plugin(rtps, index, plugin, sourced) abort
if a:plugin.sourced if a:plugin.sourced || index(a:sourced, a:plugin) >= 0
return return
endif endif
let a:plugin.sourced = 1
call add(a:sourced, a:plugin)


" Load dependencies " Load dependencies
for name in get(a:plugin, 'depends', []) for name in get(a:plugin, 'depends', [])
if !has_key(g:dein#_plugins, name) if !has_key(g:dein#_plugins, name)
call dein#util#_error(printf('Plugin name "%s" is not found.', name)) call dein#util#_error(printf(
\ 'Plugin name "%s" is not found.', name))
return 1
endif

if !a:plugin.lazy && g:dein#_plugins[name].lazy
call dein#util#_error(printf(
\ 'Not lazy plugin "%s" depends lazy "%s" plugin.',
\ a:plugin.name, name))
return 1 return 1
endif endif


Expand All @@ -249,6 +258,8 @@ function! s:source_plugin(rtps, index, plugin, sourced) abort
endif endif
endfor endfor


let a:plugin.sourced = 1

for on_source in filter(dein#util#_get_lazy_plugins(), for on_source in filter(dein#util#_get_lazy_plugins(),
\ "index(get(v:val, 'on_source', []), a:plugin.name) >= 0") \ "index(get(v:val, 'on_source', []), a:plugin.name) >= 0")
if s:source_plugin(a:rtps, a:index, on_source, a:sourced) if s:source_plugin(a:rtps, a:index, on_source, a:sourced)
Expand Down Expand Up @@ -276,8 +287,6 @@ function! s:source_plugin(rtps, index, plugin, sourced) abort
call add(a:rtps, a:plugin.rtp.'/after') call add(a:rtps, a:plugin.rtp.'/after')
endif endif
endif endif

call add(a:sourced, a:plugin)
endfunction endfunction
function! s:reset_ftplugin() abort function! s:reset_ftplugin() abort
if exists('b:did_indent') || exists('b:did_ftplugin') if exists('b:did_indent') || exists('b:did_ftplugin')
Expand Down
16 changes: 14 additions & 2 deletions test/install.vim
Expand Up @@ -530,13 +530,25 @@ function! s:suite.depends_error_lazy() abort
call dein#begin(s:path) call dein#begin(s:path)


call dein#add('Shougo/neocomplete.vim', call dein#add('Shougo/neocomplete.vim',
\ { 'depends': 'vimfiler.vim', 'lazy': 1 }) \ { 'depends': 'vimfiler.vim' })


call s:assert.equals(s:dein_install(), 0) call s:assert.equals(s:dein_install(), 0)


call s:assert.equals(dein#end(), 0) call s:assert.equals(dein#end(), 0)


call s:assert.equals(dein#source(['neocomplete.vim']), 1) call s:assert.equals(dein#source(['neocomplete.vim']), 0)

call dein#begin(s:path)

call dein#add('Shougo/vimfiler.vim', { 'lazy': 1 })
call dein#add('Shougo/neocomplete.vim',
\ { 'depends': 'vimfiler.vim' })

call s:assert.equals(s:dein_install(), 0)

call s:assert.equals(dein#end(), 0)

call s:assert.equals(dein#source(['neocomplete.vim']), 0)
endfunction endfunction


function! s:suite.hooks() abort function! s:suite.hooks() abort
Expand Down

0 comments on commit f5ecaea

Please sign in to comment.