@@ -81,12 +81,22 @@ function! pathogen#glob_directories(pattern) abort " {{{1
8181 return filter (pathogen#glob (a: pattern ),' isdirectory(v:val)' )
8282endfunction " }}}1
8383
84- " Prepend all subdirectories of path to the rtp, and append all after
84+ " Checks if a bundle is 'disabled'. A bundle is considered 'disabled' if
85+ " its 'basename()' is included in g:pathogen_disabled[]'.
86+ function ! pathogen#is_disabled (path ) " {{{1
87+ if ! exists (" g:pathogen_disabled" )
88+ return 0
89+ endif
90+ let sep = pathogen#separator ()
91+ return index (g: pathogen_disabled , strpart (a: path , strridx (a: path , sep)+ 1 )) != -1
92+ endfunction " }}}1
93+
94+ " Prepend all subdirectories of path to the rtp, and append all 'after'
8595" directories in those subdirectories.
8696function ! pathogen#runtime_prepend_subdirectories (path ) " {{{1
8797 let sep = pathogen#separator ()
88- let before = pathogen#glob_directories (a: path .sep." *[^~]" )
89- let after = pathogen#glob_directories (a: path .sep." *[^~]" .sep." after" )
98+ let before = filter ( pathogen#glob_directories (a: path .sep." *[^~]" ), ' !pathogen#is_disabled(v:val) ' )
99+ let after = filter ( pathogen#glob_directories (a: path .sep." *[^~]" .sep." after" ), ' !pathogen#is_disabled(v:val) ' )
90100 let rtp = pathogen#split (&rtp )
91101 let path = expand (a: path )
92102 call filter (rtp ,' v:val[0:strlen(path)-1] !=# path' )
@@ -108,9 +118,9 @@ function! pathogen#runtime_append_all_bundles(...) " {{{1
108118 let list = []
109119 for dir in pathogen#split (&rtp )
110120 if dir = ~# ' \<after$'
111- let list += pathogen#glob_directories (substitute (dir ,' after$' ,name,' ' ).sep.' *[^~]' .sep.' after' ) + [dir ]
121+ let list += filter ( pathogen#glob_directories (substitute (dir ,' after$' ,name,' ' ).sep.' *[^~]' .sep.' after' ), ' !pathogen#is_bundle_disabled(v:val) ' ) + [dir ]
112122 else
113- let list += [dir ] + pathogen#glob_directories (dir .sep.name.sep.' *[^~]' )
123+ let list += [dir ] + filter ( pathogen#glob_directories (dir .sep.name.sep.' *[^~]' ), ' !pathogen#is_disabled(v:val) ' )
114124 endif
115125 endfor
116126 let &rtp = pathogen#join (pathogen#uniq (list ))
0 commit comments