diff --git a/plug.vim b/plug.vim index c420b1d..38f9c6b 100644 --- a/plug.vim +++ b/plug.vim @@ -179,13 +179,32 @@ function! plug#end() syntax on endfunction -function! s:rtp(spec) - let rtp = s:dirpath(a:spec.dir . get(a:spec, 'rtp', '')) - if s:is_win - let rtp = substitute(rtp, '\\*$', '', '') - endif - return rtp -endfunction +if s:is_win + function! s:rtp(spec) + let rtp = s:dirpath(a:spec.dir . get(a:spec, 'rtp', '')) + return substitute(rtp, '\\*$', '', '') + endfunction + + function! s:path(path) + return substitute(substitute(a:path, '/', '\', 'g'), '[/\\]*$', '', '') + endfunction + + function! s:dirpath(path) + return s:path(a:path) . '\' + endfunction +else + function! s:rtp(spec) + return s:dirpath(a:spec.dir . get(a:spec, 'rtp', '')) + endfunction + + function! s:path(path) + return substitute(a:path, '[/\\]*$', '', '') + endfunction + + function! s:dirpath(path) + return s:path(a:path) . '/' + endfunction +endif function! s:esc(path) return substitute(a:path, ' ', '\\ ', 'g') @@ -258,6 +277,9 @@ function! s:add(...) return endif + let name = substitute(split(plugin, '/')[-1], '\.git$', '', '') + if !force && has_key(g:plugs, name) | return | endif + if plugin =~ ':' let uri = plugin else @@ -267,9 +289,6 @@ function! s:add(...) let uri = 'https://git:@github.com/' . plugin . '.git' endif - let name = substitute(split(plugin, '/')[-1], '\.git$', '', '') - if !force && has_key(g:plugs, name) | return | endif - let dir = s:dirpath( fnamemodify(join([g:plug_home, name], '/'), ':p') ) let spec = extend(opts, { 'dir': dir, 'uri': uri }) let g:plugs[name] = spec @@ -648,20 +667,6 @@ function! s:update_parallel(pull, todo, threads) EOF endfunction -function! s:path(path) - return substitute(s:is_win ? substitute(a:path, '/', '\', 'g') : a:path, - \ '[/\\]*$', '', '') -endfunction - -function! s:dirpath(path) - let path = s:path(a:path) - if s:is_win - return path !~ '\\$' ? path.'\' : path - else - return path !~ '/$' ? path.'/' : path - endif -endfunction - function! s:shellesc(arg) return '"'.substitute(a:arg, '"', '\\"', 'g').'"' endfunction