diff --git a/autoload/magit/git.vim b/autoload/magit/git.vim index 27cd507af42279165205a6dc77f025c1360d633e..b8055b697fe2a0552ff149c0b22e27ee3860a182 100644 --- a/autoload/magit/git.vim +++ b/autoload/magit/git.vim @@ -271,10 +271,12 @@ function! magit#git#git_unapply(header, selection, mode) endtry endfunction -" magit#git#submodule_status: helper function to return the submodule status -" return submodule status -function! magit#git#submodule_status() - return magit#sys#system(g:magit_git_cmd . " submodule status") +" magit#git#submodule_list: helper function to return the submodule list +" return array of submodule names +function! magit#git#submodule_list() + return map(split(magit#sys#system( + \ g:magit_git_cmd . " ls-files --stage | \grep 160000 || true"), + \ "\n"), 'split(v:val)[3]') endfunction " magit#git#get_branch_name: get the branch name given a reference diff --git a/autoload/magit/utils.vim b/autoload/magit/utils.vim index 223d7dae6cd532f92d56e025cf24b7b5bbd5b0e9..237a5fc265ccacffbba44c28e546cd0a8e50306d 100644 --- a/autoload/magit/utils.vim +++ b/autoload/magit/utils.vim @@ -10,7 +10,7 @@ let s:submodule_list = [] " magit#utils#refresh_submodule_list: this function refresh the List s:submodule_list " magit#utils#is_submodule() is using s:submodule_list function! magit#utils#refresh_submodule_list() - let s:submodule_list = map(split(magit#git#submodule_status(), "\n"), 'split(v:val)[1]') + let s:submodule_list = magit#git#submodule_list() endfunction " magit#utils#is_submodule search if dirname is in s:submodule_list