Mercurial > dotfiles.old
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 |