comparison vim/autoload/plug.vim @ 237:6f3eb83613bf

Update vimplug
author zegervdv <zegervdv@me.com>
date Mon, 09 Feb 2015 20:25:36 +0100
parents d29157c632c0
children 1d4692adfc1c
comparison
equal deleted inserted replaced
236:639222e1ab7b 237:6f3eb83613bf
734 endif 734 endif
735 call s:update_ruby() 735 call s:update_ruby()
736 catch 736 catch
737 let lines = getline(4, '$') 737 let lines = getline(4, '$')
738 let printed = {} 738 let printed = {}
739 silent 4,$d _ 739 silent! 4,$d _
740 for line in lines 740 for line in lines
741 let name = s:extract_name(line, '.', '') 741 let name = s:extract_name(line, '.', '')
742 if empty(name) || !has_key(printed, name) 742 if empty(name) || !has_key(printed, name)
743 call append('$', line) 743 call append('$', line)
744 if !empty(name) 744 if !empty(name)
775 autocmd! 775 autocmd!
776 augroup END 776 augroup END
777 for [name, j] in items(s:jobs) 777 for [name, j] in items(s:jobs)
778 silent! call jobstop(j.jobid) 778 silent! call jobstop(j.jobid)
779 if j.new 779 if j.new
780 call system('rm -rf ' . s:shellesc(g:plugs[name].dir)) 780 call s:system('rm -rf ' . s:shellesc(g:plugs[name].dir))
781 endif 781 endif
782 endfor 782 endfor
783 let s:jobs = {} 783 let s:jobs = {}
784 endfunction 784 endfunction
785 785
912 912
913 let name = keys(s:update.todo)[0] 913 let name = keys(s:update.todo)[0]
914 let spec = remove(s:update.todo, name) 914 let spec = remove(s:update.todo, name)
915 let pull = s:update.pull 915 let pull = s:update.pull
916 let new = !isdirectory(spec.dir) 916 let new = !isdirectory(spec.dir)
917 let prog = s:nvim ? '--progress' : ''
917 918
918 call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...') 919 call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...')
919 redraw 920 redraw
920 921
921 if !new 922 if !new
922 let [valid, msg] = s:git_valid(spec, 0) 923 let [valid, msg] = s:git_valid(spec, 0)
923 if valid 924 if valid
924 if pull 925 if pull
925 call s:spawn(name, 926 call s:spawn(name,
926 \ printf('(git fetch --progress 2>&1 && git checkout -q %s 2>&1 && git merge --ff-only origin/%s 2>&1 && git submodule update --init --recursive 2>&1)', 927 \ printf('(git fetch %s 2>&1 && git checkout -q %s 2>&1 && git merge --ff-only origin/%s 2>&1 && git submodule update --init --recursive 2>&1)',
927 \ s:shellesc(spec.branch), s:shellesc(spec.branch)), { 'dir': spec.dir }) 928 \ prog, s:shellesc(spec.branch), s:shellesc(spec.branch)), { 'dir': spec.dir })
928 else 929 else
929 let s:jobs[name] = { 'running': 0, 'result': 'Already installed', 'error': 0 } 930 let s:jobs[name] = { 'running': 0, 'result': 'Already installed', 'error': 0 }
930 endif 931 endif
931 else 932 else
932 let s:jobs[name] = { 'running': 0, 'result': msg, 'error': 1 } 933 let s:jobs[name] = { 'running': 0, 'result': msg, 'error': 1 }
933 endif 934 endif
934 else 935 else
935 call s:spawn(name, 936 call s:spawn(name,
936 \ printf('git clone --progress --recursive %s -b %s %s 2>&1', 937 \ printf('git clone %s --recursive %s -b %s %s 2>&1',
938 \ prog,
937 \ s:shellesc(spec.uri), 939 \ s:shellesc(spec.uri),
938 \ s:shellesc(spec.branch), 940 \ s:shellesc(spec.branch),
939 \ s:shellesc(s:trim(spec.dir))), { 'new': 1 }) 941 \ s:shellesc(s:trim(spec.dir))), { 'new': 1 })
940 endif 942 endif
941 943
1189 function! s:with_cd(cmd, dir) 1191 function! s:with_cd(cmd, dir)
1190 return (s:is_win ? 'cd /d ' : 'cd ').s:esc(a:dir).' && '.a:cmd 1192 return (s:is_win ? 'cd /d ' : 'cd ').s:esc(a:dir).' && '.a:cmd
1191 endfunction 1193 endfunction
1192 1194
1193 function! s:system(cmd, ...) 1195 function! s:system(cmd, ...)
1194 let cmd = a:0 > 0 ? s:with_cd(a:cmd, a:1) : a:cmd 1196 try
1195 return system(s:is_win ? '('.cmd.')' : cmd) 1197 let sh = &shell
1198 if !s:is_win
1199 set shell=sh
1200 endif
1201 let cmd = a:0 > 0 ? s:with_cd(a:cmd, a:1) : a:cmd
1202 return system(s:is_win ? '('.cmd.')' : cmd)
1203 finally
1204 let &shell = sh
1205 endtry
1196 endfunction 1206 endfunction
1197 1207
1198 function! s:system_chomp(...) 1208 function! s:system_chomp(...)
1199 let ret = call('s:system', a:000) 1209 let ret = call('s:system', a:000)
1200 return v:shell_error ? '' : substitute(ret, '\n$', '', '') 1210 return v:shell_error ? '' : substitute(ret, '\n$', '', '')
1250 redraw 1260 redraw
1251 endfor 1261 endfor
1252 1262
1253 let allowed = {} 1263 let allowed = {}
1254 for dir in dirs 1264 for dir in dirs
1265 let allowed[s:dirpath(fnamemodify(dir, ':h:h'))] = 1
1255 let allowed[dir] = 1 1266 let allowed[dir] = 1
1256 for child in s:glob_dir(dir) 1267 for child in s:glob_dir(dir)
1257 let allowed[child] = 1 1268 let allowed[child] = 1
1258 endfor 1269 endfor
1259 endfor 1270 endfor
1278 let yes = a:force || (input('Proceed? (y/N) ') =~? '^y') 1289 let yes = a:force || (input('Proceed? (y/N) ') =~? '^y')
1279 call inputrestore() 1290 call inputrestore()
1280 if yes 1291 if yes
1281 for dir in todo 1292 for dir in todo
1282 if isdirectory(dir) 1293 if isdirectory(dir)
1283 call system((s:is_win ? 'rmdir /S /Q ' : 'rm -rf ') . s:shellesc(dir)) 1294 call s:system((s:is_win ? 'rmdir /S /Q ' : 'rm -rf ') . s:shellesc(dir))
1284 endif 1295 endif
1285 endfor 1296 endfor
1286 call append(line('$'), 'Removed.') 1297 call append(line('$'), 'Removed.')
1287 else 1298 else
1288 call append(line('$'), 'Cancelled.') 1299 call append(line('$'), 'Cancelled.')
1295 let new = s:me . '.new' 1306 let new = s:me . '.new'
1296 echo 'Downloading '. s:plug_src 1307 echo 'Downloading '. s:plug_src
1297 redraw 1308 redraw
1298 try 1309 try
1299 if executable('curl') 1310 if executable('curl')
1300 let output = system(printf('curl -fLo %s %s', s:shellesc(new), s:plug_src)) 1311 let output = s:system(printf('curl -fLo %s %s', s:shellesc(new), s:plug_src))
1301 if v:shell_error 1312 if v:shell_error
1302 throw get(s:lines(output), -1, v:shell_error) 1313 throw get(s:lines(output), -1, v:shell_error)
1303 endif 1314 endif
1304 elseif has('ruby') 1315 elseif has('ruby')
1305 call s:upgrade_using_ruby(new) 1316 call s:upgrade_using_ruby(new)
1508 let [type, var, header] = s:is_win ? 1519 let [type, var, header] = s:is_win ?
1509 \ ['dosbatch', '%PLUG_HOME%', 1520 \ ['dosbatch', '%PLUG_HOME%',
1510 \ ['@echo off', ':: Generated by vim-plug', ':: '.strftime("%c"), '', 1521 \ ['@echo off', ':: Generated by vim-plug', ':: '.strftime("%c"), '',
1511 \ ':: Make sure to PlugUpdate first', '', 'set PLUG_HOME='.s:esc(home)]] : 1522 \ ':: Make sure to PlugUpdate first', '', 'set PLUG_HOME='.s:esc(home)]] :
1512 \ ['sh', '$PLUG_HOME', 1523 \ ['sh', '$PLUG_HOME',
1513 \ ['#!/bin/bash', '# Generated by vim-plug', '# '.strftime("%c"), '', 1524 \ ['#!/bin/sh', '# Generated by vim-plug', '# '.strftime("%c"), '',
1514 \ 'vim +PlugUpdate +qa', '', 'PLUG_HOME='.s:esc(home)]] 1525 \ 'vim +PlugUpdate +qa', '', 'PLUG_HOME='.s:esc(home)]]
1515 1526
1516 call s:prepare() 1527 call s:prepare()
1517 execute 'setf' type 1528 execute 'setf' type
1518 call append(0, header) 1529 call append(0, header)
1533 endfor 1544 endfor
1534 1545
1535 if a:0 > 0 1546 if a:0 > 0
1536 let fn = s:esc(expand(a:1)) 1547 let fn = s:esc(expand(a:1))
1537 call writefile(getline(1, '$'), fn) 1548 call writefile(getline(1, '$'), fn)
1538 if !s:is_win | call system('chmod +x ' . fn) | endif 1549 if !s:is_win | call s:system('chmod +x ' . fn) | endif
1539 echo 'Saved to '.a:1 1550 echo 'Saved to '.a:1
1540 silent execute 'e' fn 1551 silent execute 'e' fn
1541 endif 1552 endif
1542 endfunction 1553 endfunction
1543 1554