Просмотр исходного кода

Fix #184 - Avoid duplicate entries in g:plugs_order

Junegunn Choi 11 лет назад
Родитель
Сommit
a34b745a21
2 измененных файлов с 17 добавлено и 1 удалено
  1. 3 1
      plug.vim
  2. 14 0
      test/regressions.vader

+ 3 - 1
plug.vim

@@ -427,8 +427,10 @@ function! s:add(repo, ...)
     let name = fnamemodify(repo, ':t:s?\.git$??')
     let spec = extend(s:infer_properties(name, repo),
                     \ a:0 == 1 ? s:parse_options(a:1) : s:base_spec)
+    if !has_key(g:plugs, name)
+      call add(g:plugs_order, name)
+    endif
     let g:plugs[name] = spec
-    let g:plugs_order += [name]
     let s:loaded[name] = 0
   catch
     return s:err(v:exception)

+ 14 - 0
test/regressions.vader

@@ -226,3 +226,17 @@ Execute (#154: Spaces in &rtp should not be escaped):
   Log &rtp
   Assert stridx(&rtp, 'plug it/seoul256 vim') >= 0
 
+**********************************************************************
+Execute (#184: Duplicate entries in &rtp):
+  call plug#begin('$TMPDIR/plugged')
+  Plug 'plugin1'
+    \| Plug 'plugin0'
+
+  Plug 'plugin2'
+    \| Plug 'plugin0'
+    \| Plug 'plugin1'
+  call plug#end()
+
+  Log &rtp
+  AssertEqual 3, len(uniq(filter(split(&rtp, ','), 'stridx(v:val, "plugged") >= 0')))
+