Mercurial > dotfiles.old
annotate vim/autoload/plug.vim @ 254:731b2964b8fd
Add mapping to compile latex
author | zegervdv <zegervdv@me.com> |
---|---|
date | Tue, 03 Mar 2015 21:10:25 +0100 |
parents | f0d3b37101c0 |
children |
rev | line source |
---|---|
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1 " vim-plug: Vim plugin manager |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2 " ============================ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
3 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
4 " Download plug.vim and put it in ~/.vim/autoload |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
5 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
6 " mkdir -p ~/.vim/autoload |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
7 " curl -fLo ~/.vim/autoload/plug.vim \ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
8 " https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
9 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
10 " Edit your .vimrc |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
11 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
12 " call plug#begin('~/.vim/plugged') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
13 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
14 " " Make sure you use single quotes |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
15 " Plug 'junegunn/seoul256.vim' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
16 " Plug 'junegunn/vim-easy-align' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
17 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
18 " " On-demand loading |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
19 " Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
20 " Plug 'tpope/vim-fireplace', { 'for': 'clojure' } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
21 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
22 " " Using git URL |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
23 " Plug 'https://github.com/junegunn/vim-github-dashboard.git' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
24 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
25 " " Plugin options |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
26 " Plug 'nsf/gocode', { 'tag': 'go.weekly.2012-03-13', 'rtp': 'vim' } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
27 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
28 " " Plugin outside ~/.vim/plugged with post-update hook |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
29 " Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': 'yes \| ./install' } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
30 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
31 " " Unmanaged plugin (manually installed and updated) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
32 " Plug '~/my-prototype-plugin' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
33 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
34 " call plug#end() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
35 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
36 " Then reload .vimrc and :PlugInstall to install plugins. |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
37 " Visit https://github.com/junegunn/vim-plug for more information. |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
38 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
39 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
40 " Copyright (c) 2014 Junegunn Choi |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
41 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
42 " MIT License |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
43 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
44 " Permission is hereby granted, free of charge, to any person obtaining |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
45 " a copy of this software and associated documentation files (the |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
46 " "Software"), to deal in the Software without restriction, including |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
47 " without limitation the rights to use, copy, modify, merge, publish, |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
48 " distribute, sublicense, and/or sell copies of the Software, and to |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
49 " permit persons to whom the Software is furnished to do so, subject to |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
50 " the following conditions: |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
51 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
52 " The above copyright notice and this permission notice shall be |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
53 " included in all copies or substantial portions of the Software. |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
54 " |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
55 " THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
56 " EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
57 " MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
58 " NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
59 " LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
60 " OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
61 " WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
62 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
63 if exists('g:loaded_plug') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
64 finish |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
65 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
66 let g:loaded_plug = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
67 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
68 let s:cpo_save = &cpo |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
69 set cpo&vim |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
70 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
71 let s:plug_src = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
72 let s:plug_tab = get(s:, 'plug_tab', -1) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
73 let s:plug_buf = get(s:, 'plug_buf', -1) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
74 let s:mac_gui = has('gui_macvim') && has('gui_running') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
75 let s:is_win = has('win32') || has('win64') |
247 | 76 let s:py2 = has('python') && !s:is_win |
242 | 77 let s:ruby = has('ruby') && (v:version >= 703 || v:version == 702 && has('patch374')) |
226 | 78 let s:nvim = has('nvim') && !s:is_win |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
79 let s:me = resolve(expand('<sfile>:p')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
80 let s:base_spec = { 'branch': 'master', 'frozen': 0 } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
81 let s:TYPE = { |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
82 \ 'string': type(''), |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
83 \ 'list': type([]), |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
84 \ 'dict': type({}), |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
85 \ 'funcref': type(function('call')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
86 \ } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
87 let s:loaded = get(s:, 'loaded', {}) |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
88 let s:triggers = get(s:, 'triggers', {}) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
89 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
90 function! plug#begin(...) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
91 if a:0 > 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
92 let s:plug_home_org = a:1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
93 let home = s:path(fnamemodify(expand(a:1), ':p')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
94 elseif exists('g:plug_home') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
95 let home = s:path(g:plug_home) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
96 elseif !empty(&rtp) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
97 let home = s:path(split(&rtp, ',')[0]) . '/plugged' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
98 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
99 return s:err('Unable to determine plug home. Try calling plug#begin() with a path argument.') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
100 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
101 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
102 let g:plug_home = home |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
103 let g:plugs = {} |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
104 let g:plugs_order = [] |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
105 let s:triggers = {} |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
106 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
107 call s:define_commands() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
108 return 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
109 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
110 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
111 function! s:define_commands() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
112 command! -nargs=+ -bar Plug call s:add(<args>) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
113 if !executable('git') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
114 return s:err('`git` executable not found. vim-plug requires git.') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
115 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
116 command! -nargs=* -bar -bang -complete=customlist,s:names PlugInstall call s:install('<bang>' == '!', [<f-args>]) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
117 command! -nargs=* -bar -bang -complete=customlist,s:names PlugUpdate call s:update('<bang>' == '!', [<f-args>]) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
118 command! -nargs=0 -bar -bang PlugClean call s:clean('<bang>' == '!') |
242 | 119 command! -nargs=0 -bar PlugUpgrade if s:upgrade() | execute 'source' s:esc(s:me) | endif |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
120 command! -nargs=0 -bar PlugStatus call s:status() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
121 command! -nargs=0 -bar PlugDiff call s:diff() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
122 command! -nargs=? -bar PlugSnapshot call s:snapshot(<f-args>) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
123 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
124 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
125 function! s:to_a(v) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
126 return type(a:v) == s:TYPE.list ? a:v : [a:v] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
127 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
128 |
197 | 129 function! s:to_s(v) |
130 return type(a:v) == s:TYPE.string ? a:v : join(a:v, "\n") . "\n" | |
131 endfunction | |
132 | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
133 function! s:source(from, ...) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
134 for pattern in a:000 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
135 for vim in s:lines(globpath(a:from, pattern)) |
242 | 136 execute 'source' s:esc(vim) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
137 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
138 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
139 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
140 |
226 | 141 function! s:assoc(dict, key, val) |
142 let a:dict[a:key] = add(get(a:dict, a:key, []), a:val) | |
143 endfunction | |
144 | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
145 function! plug#end() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
146 if !exists('g:plugs') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
147 return s:err('Call plug#begin() first') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
148 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
149 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
150 if exists('#PlugLOD') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
151 augroup PlugLOD |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
152 autocmd! |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
153 augroup END |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
154 augroup! PlugLOD |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
155 endif |
226 | 156 let lod = { 'ft': {}, 'map': {}, 'cmd': {} } |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
157 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
158 filetype off |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
159 for name in g:plugs_order |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
160 let plug = g:plugs[name] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
161 if get(s:loaded, name, 0) || !has_key(plug, 'on') && !has_key(plug, 'for') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
162 let s:loaded[name] = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
163 continue |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
164 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
165 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
166 if has_key(plug, 'on') |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
167 let s:triggers[name] = { 'map': [], 'cmd': [] } |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
168 for cmd in s:to_a(plug.on) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
169 if cmd =~ '^<Plug>.\+' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
170 if empty(mapcheck(cmd)) && empty(mapcheck(cmd, 'i')) |
226 | 171 call s:assoc(lod.map, cmd, name) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
172 endif |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
173 call add(s:triggers[name].map, cmd) |
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
174 elseif cmd =~ '^[A-Z]' |
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
175 if exists(':'.cmd) != 2 |
226 | 176 call s:assoc(lod.cmd, cmd, name) |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
177 endif |
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
178 call add(s:triggers[name].cmd, cmd) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
179 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
180 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
181 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
182 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
183 if has_key(plug, 'for') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
184 let types = s:to_a(plug.for) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
185 if !empty(types) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
186 call s:source(s:rtp(plug), 'ftdetect/**/*.vim', 'after/ftdetect/**/*.vim') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
187 endif |
226 | 188 for type in types |
189 call s:assoc(lod.ft, type, name) | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
190 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
191 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
192 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
193 |
226 | 194 for [cmd, names] in items(lod.cmd) |
195 execute printf( | |
196 \ 'command! -nargs=* -range -bang %s call s:lod_cmd(%s, "<bang>", <line1>, <line2>, <q-args>, %s)', | |
197 \ cmd, string(cmd), string(names)) | |
198 endfor | |
199 | |
200 for [map, names] in items(lod.map) | |
201 for [mode, map_prefix, key_prefix] in | |
202 \ [['i', '<C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']] | |
203 execute printf( | |
204 \ '%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %s, "%s")<CR>', | |
205 \ mode, map, map_prefix, string(map), string(names), key_prefix) | |
206 endfor | |
207 endfor | |
208 | |
209 for [ft, names] in items(lod.ft) | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
210 augroup PlugLOD |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
211 execute printf('autocmd FileType %s call <SID>lod_ft(%s, %s)', |
226 | 212 \ ft, string(ft), string(names)) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
213 augroup END |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
214 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
215 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
216 call s:reorg_rtp() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
217 filetype plugin indent on |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
218 if has('vim_starting') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
219 syntax enable |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
220 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
221 call s:reload() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
222 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
223 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
224 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
225 function! s:loaded_names() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
226 return filter(copy(g:plugs_order), 'get(s:loaded, v:val, 0)') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
227 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
228 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
229 function! s:reload() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
230 for name in s:loaded_names() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
231 call s:source(s:rtp(g:plugs[name]), 'plugin/**/*.vim', 'after/plugin/**/*.vim') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
232 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
233 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
234 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
235 function! s:trim(str) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
236 return substitute(a:str, '[\/]\+$', '', '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
237 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
238 |
247 | 239 function! s:version_requirement(val, min) |
240 for idx in range(0, len(a:min) - 1) | |
241 let v = get(a:val, idx, 0) | |
242 if v < a:min[idx] | return 0 | |
243 elseif v > a:min[idx] | return 1 | |
244 endif | |
245 endfor | |
246 return 1 | |
247 endfunction | |
248 | |
240 | 249 function! s:git_version_requirement(...) |
250 let s:git_version = get(s:, 'git_version', | |
251 \ map(split(split(s:system('git --version'))[-1], '\.'), 'str2nr(v:val)')) | |
247 | 252 return s:version_requirement(s:git_version, a:000) |
240 | 253 endfunction |
254 | |
255 function! s:progress_opt(base) | |
256 return a:base && !s:is_win && | |
257 \ s:git_version_requirement(1, 7, 1) ? '--progress' : '' | |
258 endfunction | |
259 | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
260 if s:is_win |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
261 function! s:rtp(spec) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
262 return s:path(a:spec.dir . get(a:spec, 'rtp', '')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
263 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
264 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
265 function! s:path(path) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
266 return s:trim(substitute(a:path, '/', '\', 'g')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
267 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
268 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
269 function! s:dirpath(path) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
270 return s:path(a:path) . '\' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
271 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
272 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
273 function! s:is_local_plug(repo) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
274 return a:repo =~? '^[a-z]:' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
275 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
276 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
277 function! s:rtp(spec) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
278 return s:dirpath(a:spec.dir . get(a:spec, 'rtp', '')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
279 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
280 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
281 function! s:path(path) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
282 return s:trim(a:path) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
283 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
284 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
285 function! s:dirpath(path) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
286 return substitute(a:path, '[/\\]*$', '/', '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
287 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
288 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
289 function! s:is_local_plug(repo) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
290 return a:repo[0] =~ '[/$~]' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
291 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
292 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
293 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
294 function! s:err(msg) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
295 echohl ErrorMsg |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
296 echom a:msg |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
297 echohl None |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
298 return 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
299 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
300 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
301 function! s:esc(path) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
302 return escape(a:path, ' ') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
303 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
304 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
305 function! s:escrtp(path) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
306 return escape(a:path, ' ,') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
307 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
308 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
309 function! s:remove_rtp() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
310 for name in s:loaded_names() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
311 let rtp = s:rtp(g:plugs[name]) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
312 execute 'set rtp-='.s:escrtp(rtp) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
313 let after = globpath(rtp, 'after') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
314 if isdirectory(after) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
315 execute 'set rtp-='.s:escrtp(after) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
316 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
317 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
318 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
319 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
320 function! s:reorg_rtp() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
321 if !empty(s:first_rtp) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
322 execute 'set rtp-='.s:first_rtp |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
323 execute 'set rtp-='.s:last_rtp |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
324 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
325 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
326 " &rtp is modified from outside |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
327 if exists('s:prtp') && s:prtp !=# &rtp |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
328 call s:remove_rtp() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
329 unlet! s:middle |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
330 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
331 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
332 let s:middle = get(s:, 'middle', &rtp) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
333 let rtps = map(s:loaded_names(), 's:rtp(g:plugs[v:val])') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
334 let afters = filter(map(copy(rtps), 'globpath(v:val, "after")'), 'isdirectory(v:val)') |
242 | 335 let rtp = join(map(rtps, 'escape(v:val, ",")'), ',') |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
336 \ . ','.s:middle.',' |
242 | 337 \ . join(map(afters, 'escape(v:val, ",")'), ',') |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
338 let &rtp = substitute(substitute(rtp, ',,*', ',', 'g'), '^,\|,$', '', 'g') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
339 let s:prtp = &rtp |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
340 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
341 if !empty(s:first_rtp) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
342 execute 'set rtp^='.s:first_rtp |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
343 execute 'set rtp+='.s:last_rtp |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
344 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
345 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
346 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
347 function! plug#load(...) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
348 if a:0 == 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
349 return s:err('Argument missing: plugin name(s) required') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
350 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
351 if !exists('g:plugs') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
352 return s:err('plug#begin was not called') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
353 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
354 let unknowns = filter(copy(a:000), '!has_key(g:plugs, v:val)') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
355 if !empty(unknowns) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
356 let s = len(unknowns) > 1 ? 's' : '' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
357 return s:err(printf('Unknown plugin%s: %s', s, join(unknowns, ', '))) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
358 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
359 for name in a:000 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
360 call s:lod([name], ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
361 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
362 doautocmd BufRead |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
363 return 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
364 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
365 |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
366 function! s:remove_triggers(name) |
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
367 if !has_key(s:triggers, a:name) |
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
368 return |
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
369 endif |
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
370 for cmd in s:triggers[a:name].cmd |
226 | 371 execute 'silent! delc' cmd |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
372 endfor |
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
373 for map in s:triggers[a:name].map |
226 | 374 execute 'silent! unmap' map |
375 execute 'silent! iunmap' map | |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
376 endfor |
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
377 call remove(s:triggers, a:name) |
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
378 endfunction |
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
379 |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
380 function! s:lod(names, types) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
381 for name in a:names |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
382 call s:remove_triggers(name) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
383 let s:loaded[name] = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
384 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
385 call s:reorg_rtp() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
386 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
387 for name in a:names |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
388 let rtp = s:rtp(g:plugs[name]) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
389 for dir in a:types |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
390 call s:source(rtp, dir.'/**/*.vim') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
391 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
392 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
393 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
394 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
395 function! s:lod_ft(pat, names) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
396 call s:lod(a:names, ['plugin', 'after/plugin']) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
397 execute 'autocmd! PlugLOD FileType' a:pat |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
398 doautocmd filetypeplugin FileType |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
399 doautocmd filetypeindent FileType |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
400 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
401 |
226 | 402 function! s:lod_cmd(cmd, bang, l1, l2, args, names) |
403 call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
404 execute printf('%s%s%s %s', (a:l1 == a:l2 ? '' : (a:l1.','.a:l2)), a:cmd, a:bang, a:args) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
405 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
406 |
226 | 407 function! s:lod_map(map, names, prefix) |
408 call s:lod(a:names, ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
409 let extra = '' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
410 while 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
411 let c = getchar(0) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
412 if c == 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
413 break |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
414 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
415 let extra .= nr2char(c) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
416 endwhile |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
417 call feedkeys(a:prefix . substitute(a:map, '^<Plug>', "\<Plug>", '') . extra) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
418 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
419 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
420 function! s:add(repo, ...) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
421 if a:0 > 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
422 return s:err('Invalid number of arguments (1..2)') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
423 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
424 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
425 try |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
426 let repo = s:trim(a:repo) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
427 let name = fnamemodify(repo, ':t:s?\.git$??') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
428 let spec = extend(s:infer_properties(name, repo), |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
429 \ a:0 == 1 ? s:parse_options(a:1) : s:base_spec) |
252 | 430 if !has_key(g:plugs, name) |
431 call add(g:plugs_order, name) | |
432 endif | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
433 let g:plugs[name] = spec |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
434 let s:loaded[name] = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
435 catch |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
436 return s:err(v:exception) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
437 endtry |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
438 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
439 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
440 function! s:parse_options(arg) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
441 let opts = copy(s:base_spec) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
442 let type = type(a:arg) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
443 if type == s:TYPE.string |
247 | 444 let opts.tag = a:arg |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
445 elseif type == s:TYPE.dict |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
446 call extend(opts, a:arg) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
447 if has_key(opts, 'dir') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
448 let opts.dir = s:dirpath(expand(opts.dir)) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
449 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
450 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
451 throw 'Invalid argument type (expected: string or dictionary)' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
452 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
453 return opts |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
454 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
455 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
456 function! s:infer_properties(name, repo) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
457 let repo = a:repo |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
458 if s:is_local_plug(repo) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
459 return { 'dir': s:dirpath(expand(repo)) } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
460 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
461 if repo =~ ':' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
462 let uri = repo |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
463 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
464 if repo !~ '/' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
465 let repo = 'vim-scripts/'. repo |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
466 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
467 let fmt = get(g:, 'plug_url_format', 'https://git::@github.com/%s.git') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
468 let uri = printf(fmt, repo) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
469 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
470 let dir = s:dirpath( fnamemodify(join([g:plug_home, a:name], '/'), ':p') ) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
471 return { 'dir': dir, 'uri': uri } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
472 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
473 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
474 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
475 function! s:install(force, names) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
476 call s:update_impl(0, a:force, a:names) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
477 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
478 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
479 function! s:update(force, names) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
480 call s:update_impl(1, a:force, a:names) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
481 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
482 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
483 function! plug#helptags() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
484 if !exists('g:plugs') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
485 return s:err('plug#begin was not called') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
486 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
487 for spec in values(g:plugs) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
488 let docd = join([spec.dir, 'doc'], '/') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
489 if isdirectory(docd) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
490 silent! execute 'helptags' s:esc(docd) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
491 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
492 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
493 return 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
494 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
495 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
496 function! s:syntax() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
497 syntax clear |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
498 syntax region plug1 start=/\%1l/ end=/\%2l/ contains=plugNumber |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
499 syntax region plug2 start=/\%2l/ end=/\%3l/ contains=plugBracket,plugX |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
500 syn match plugNumber /[0-9]\+[0-9.]*/ contained |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
501 syn match plugBracket /[[\]]/ contained |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
502 syn match plugX /x/ contained |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
503 syn match plugDash /^-/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
504 syn match plugPlus /^+/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
505 syn match plugStar /^*/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
506 syn match plugMessage /\(^- \)\@<=.*/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
507 syn match plugName /\(^- \)\@<=[^ ]*:/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
508 syn match plugInstall /\(^+ \)\@<=[^:]*/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
509 syn match plugUpdate /\(^* \)\@<=[^:]*/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
510 syn match plugCommit /^ [0-9a-z]\{7} .*/ contains=plugRelDate,plugSha |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
511 syn match plugSha /\(^ \)\@<=[0-9a-z]\{7}/ contained |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
512 syn match plugRelDate /([^)]*)$/ contained |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
513 syn match plugNotLoaded /(not loaded)$/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
514 syn match plugError /^x.*/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
515 syn keyword Function PlugInstall PlugStatus PlugUpdate PlugClean |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
516 hi def link plug1 Title |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
517 hi def link plug2 Repeat |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
518 hi def link plugX Exception |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
519 hi def link plugBracket Structure |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
520 hi def link plugNumber Number |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
521 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
522 hi def link plugDash Special |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
523 hi def link plugPlus Constant |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
524 hi def link plugStar Boolean |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
525 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
526 hi def link plugMessage Function |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
527 hi def link plugName Label |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
528 hi def link plugInstall Function |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
529 hi def link plugUpdate Type |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
530 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
531 hi def link plugError Error |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
532 hi def link plugRelDate Comment |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
533 hi def link plugSha Identifier |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
534 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
535 hi def link plugNotLoaded Comment |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
536 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
537 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
538 function! s:lpad(str, len) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
539 return a:str . repeat(' ', a:len - len(a:str)) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
540 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
541 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
542 function! s:lines(msg) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
543 return split(a:msg, "[\r\n]") |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
544 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
545 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
546 function! s:lastline(msg) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
547 return get(s:lines(a:msg), -1, '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
548 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
549 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
550 function! s:new_window() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
551 execute get(g:, 'plug_window', 'vertical topleft new') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
552 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
553 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
554 function! s:plug_window_exists() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
555 let buflist = tabpagebuflist(s:plug_tab) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
556 return !empty(buflist) && index(buflist, s:plug_buf) >= 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
557 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
558 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
559 function! s:switch_in() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
560 if !s:plug_window_exists() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
561 return 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
562 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
563 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
564 if winbufnr(0) != s:plug_buf |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
565 let s:pos = [tabpagenr(), winnr(), winsaveview()] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
566 execute 'normal!' s:plug_tab.'gt' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
567 let winnr = bufwinnr(s:plug_buf) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
568 execute winnr.'wincmd w' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
569 call add(s:pos, winsaveview()) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
570 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
571 let s:pos = [winsaveview()] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
572 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
573 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
574 setlocal modifiable |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
575 return 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
576 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
577 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
578 function! s:switch_out(...) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
579 call winrestview(s:pos[-1]) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
580 setlocal nomodifiable |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
581 if a:0 > 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
582 execute a:1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
583 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
584 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
585 if len(s:pos) > 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
586 execute 'normal!' s:pos[0].'gt' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
587 execute s:pos[1] 'wincmd w' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
588 call winrestview(s:pos[2]) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
589 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
590 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
591 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
592 function! s:prepare() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
593 call s:job_abort() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
594 if s:switch_in() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
595 silent %d _ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
596 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
597 call s:new_window() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
598 nnoremap <silent> <buffer> q :if b:plug_preview==1<bar>pc<bar>endif<bar>echo<bar>q<cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
599 nnoremap <silent> <buffer> R :silent! call <SID>retry()<cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
600 nnoremap <silent> <buffer> D :PlugDiff<cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
601 nnoremap <silent> <buffer> S :PlugStatus<cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
602 nnoremap <silent> <buffer> U :call <SID>status_update()<cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
603 xnoremap <silent> <buffer> U :call <SID>status_update()<cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
604 nnoremap <silent> <buffer> ]] :silent! call <SID>section('')<cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
605 nnoremap <silent> <buffer> [[ :silent! call <SID>section('b')<cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
606 let b:plug_preview = -1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
607 let s:plug_tab = tabpagenr() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
608 let s:plug_buf = winbufnr(0) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
609 call s:assign_name() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
610 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
611 silent! unmap <buffer> <cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
612 silent! unmap <buffer> L |
247 | 613 silent! unmap <buffer> o |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
614 silent! unmap <buffer> X |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
615 setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap cursorline modifiable |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
616 setf vim-plug |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
617 call s:syntax() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
618 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
619 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
620 function! s:assign_name() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
621 " Assign buffer name |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
622 let prefix = '[Plugins]' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
623 let name = prefix |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
624 let idx = 2 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
625 while bufexists(name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
626 let name = printf('%s (%s)', prefix, idx) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
627 let idx = idx + 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
628 endwhile |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
629 silent! execute 'f' fnameescape(name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
630 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
631 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
632 function! s:do(pull, force, todo) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
633 for [name, spec] in items(a:todo) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
634 if !isdirectory(spec.dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
635 continue |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
636 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
637 let installed = has_key(s:update.new, name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
638 let updated = installed ? 0 : |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
639 \ (a:pull && !empty(s:system_chomp('git log --pretty=format:"%h" "HEAD...HEAD@{1}"', spec.dir))) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
640 if a:force || installed || updated |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
641 execute 'cd' s:esc(spec.dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
642 call append(3, '- Post-update hook for '. name .' ... ') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
643 let type = type(spec.do) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
644 if type == s:TYPE.string |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
645 try |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
646 " FIXME: Escaping is incomplete. We could use shellescape with eval, |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
647 " but it won't work on Windows. |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
648 let g:_plug_do = '!'.escape(spec.do, '#!%') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
649 execute "normal! :execute g:_plug_do\<cr>\<cr>" |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
650 finally |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
651 let result = v:shell_error ? ('Exit status: '.v:shell_error) : 'Done!' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
652 unlet g:_plug_do |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
653 endtry |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
654 elseif type == s:TYPE.funcref |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
655 try |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
656 let status = installed ? 'installed' : (updated ? 'updated' : 'unchanged') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
657 call spec.do({ 'name': name, 'status': status, 'force': a:force }) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
658 let result = 'Done!' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
659 catch |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
660 let result = 'Error: ' . v:exception |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
661 endtry |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
662 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
663 let result = 'Error: Invalid type!' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
664 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
665 call setline(4, getline(4) . result) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
666 cd - |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
667 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
668 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
669 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
670 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
671 function! s:finish(pull) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
672 let new_frozen = len(filter(keys(s:update.new), 'g:plugs[v:val].frozen')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
673 if new_frozen |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
674 let s = new_frozen > 1 ? 's' : '' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
675 call append(3, printf('- Installed %d frozen plugin%s', new_frozen, s)) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
676 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
677 call append(3, '- Finishing ... ') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
678 redraw |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
679 call plug#helptags() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
680 call plug#end() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
681 call setline(4, getline(4) . 'Done!') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
682 redraw |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
683 let msgs = [] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
684 if !empty(s:update.errors) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
685 call add(msgs, "Press 'R' to retry.") |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
686 endif |
207 | 687 if a:pull && len(s:update.new) < len(filter(getline(5, '$'), |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
688 \ "v:val =~ '^- ' && stridx(v:val, 'Already up-to-date') < 0")) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
689 call add(msgs, "Press 'D' to see the updated changes.") |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
690 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
691 echo join(msgs, ' ') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
692 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
693 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
694 function! s:retry() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
695 if empty(s:update.errors) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
696 return |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
697 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
698 call s:update_impl(s:update.pull, s:update.force, |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
699 \ extend(copy(s:update.errors), [s:update.threads])) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
700 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
701 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
702 function! s:is_managed(name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
703 return has_key(g:plugs[a:name], 'uri') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
704 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
705 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
706 function! s:names(...) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
707 return sort(filter(keys(g:plugs), 'stridx(v:val, a:1) == 0 && s:is_managed(v:val)')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
708 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
709 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
710 function! s:update_impl(pull, force, args) abort |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
711 let args = copy(a:args) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
712 let threads = (len(args) > 0 && args[-1] =~ '^[1-9][0-9]*$') ? |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
713 \ remove(args, -1) : get(g:, 'plug_threads', 16) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
714 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
715 let managed = filter(copy(g:plugs), 's:is_managed(v:key)') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
716 let todo = empty(args) ? filter(managed, '!v:val.frozen || !isdirectory(v:val.dir)') : |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
717 \ filter(managed, 'index(args, v:key) >= 0') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
718 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
719 if empty(todo) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
720 echohl WarningMsg |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
721 echo 'No plugin to '. (a:pull ? 'update' : 'install') . '.' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
722 echohl None |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
723 return |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
724 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
725 |
242 | 726 if !s:is_win && s:git_version_requirement(2, 3) |
727 let s:git_terminal_prompt = exists('$GIT_TERMINAL_PROMPT') ? $GIT_TERMINAL_PROMPT : '' | |
728 let $GIT_TERMINAL_PROMPT = 0 | |
729 for plug in values(todo) | |
730 let plug.uri = substitute(plug.uri, | |
731 \ '^https://git::@github\.com', 'https://github.com', '') | |
732 endfor | |
733 endif | |
734 | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
735 if !isdirectory(g:plug_home) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
736 try |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
737 call mkdir(g:plug_home, 'p') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
738 catch |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
739 return s:err(printf('Invalid plug directory: %s. '. |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
740 \ 'Try to call plug#begin with a valid directory', g:plug_home)) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
741 endtry |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
742 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
743 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
744 let s:update = { |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
745 \ 'start': reltime(), |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
746 \ 'all': todo, |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
747 \ 'todo': copy(todo), |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
748 \ 'errors': [], |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
749 \ 'pull': a:pull, |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
750 \ 'force': a:force, |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
751 \ 'new': {}, |
247 | 752 \ 'threads': (s:py2 || s:ruby || s:nvim) ? min([len(todo), threads]) : 1, |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
753 \ 'bar': '', |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
754 \ 'fin': 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
755 \ } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
756 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
757 call s:prepare() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
758 call append(0, ['', '']) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
759 normal! 2G |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
760 |
247 | 761 " Python version requirement (>= 2.7) |
762 if s:py2 && !s:ruby && !s:nvim && s:update.threads > 1 | |
763 redir => pyv | |
764 silent python import platform; print(platform.python_version()) | |
765 redir END | |
766 let s:py2 = s:version_requirement( | |
767 \ map(split(split(pyv)[0], '\.'), 'str2nr(v:val)'), [2, 7]) | |
768 endif | |
769 if (s:py2 || s:ruby) && !s:nvim && s:update.threads > 1 | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
770 try |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
771 let imd = &imd |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
772 if s:mac_gui |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
773 set noimd |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
774 endif |
247 | 775 if s:ruby |
776 call s:update_ruby() | |
777 else | |
778 call s:update_python() | |
779 endif | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
780 catch |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
781 let lines = getline(4, '$') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
782 let printed = {} |
237 | 783 silent! 4,$d _ |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
784 for line in lines |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
785 let name = s:extract_name(line, '.', '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
786 if empty(name) || !has_key(printed, name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
787 call append('$', line) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
788 if !empty(name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
789 let printed[name] = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
790 if line[0] == 'x' && index(s:update.errors, name) < 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
791 call add(s:update.errors, name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
792 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
793 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
794 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
795 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
796 finally |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
797 let &imd = imd |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
798 call s:update_finish() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
799 endtry |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
800 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
801 call s:update_vim() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
802 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
803 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
804 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
805 function! s:update_finish() |
242 | 806 if exists('s:git_terminal_prompt') |
807 let $GIT_TERMINAL_PROMPT = s:git_terminal_prompt | |
808 endif | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
809 if s:switch_in() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
810 call s:do(s:update.pull, s:update.force, filter(copy(s:update.all), 'has_key(v:val, "do")')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
811 call s:finish(s:update.pull) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
812 call setline(1, 'Updated. Elapsed time: ' . split(reltimestr(reltime(s:update.start)))[0] . ' sec.') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
813 call s:switch_out('normal! gg') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
814 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
815 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
816 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
817 function! s:job_abort() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
818 if !s:nvim || !exists('s:jobs') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
819 return |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
820 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
821 augroup PlugJobControl |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
822 autocmd! |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
823 augroup END |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
824 for [name, j] in items(s:jobs) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
825 silent! call jobstop(j.jobid) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
826 if j.new |
237 | 827 call s:system('rm -rf ' . s:shellesc(g:plugs[name].dir)) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
828 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
829 endfor |
213 | 830 let s:jobs = {} |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
831 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
832 |
213 | 833 function! s:job_handler(name) abort |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
834 if !s:plug_window_exists() " plug window closed |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
835 return s:job_abort() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
836 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
837 |
213 | 838 if !has_key(s:jobs, a:name) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
839 return |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
840 endif |
213 | 841 let job = s:jobs[a:name] |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
842 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
843 if v:job_data[1] == 'exit' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
844 let job.running = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
845 if s:lastline(job.result) ==# 'Error' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
846 let job.error = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
847 let job.result = substitute(job.result, "Error[\r\n]$", '', '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
848 endif |
213 | 849 call s:reap(a:name) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
850 call s:tick() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
851 else |
197 | 852 let job.result .= s:to_s(v:job_data[2]) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
853 " To reduce the number of buffer updates |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
854 let job.tick = get(job, 'tick', -1) + 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
855 if job.tick % len(s:jobs) == 0 |
213 | 856 call s:log(job.new ? '+' : '*', a:name, job.result) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
857 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
858 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
859 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
860 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
861 function! s:spawn(name, cmd, opts) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
862 let job = { 'running': 1, 'new': get(a:opts, 'new', 0), |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
863 \ 'error': 0, 'result': '' } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
864 let s:jobs[a:name] = job |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
865 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
866 if s:nvim |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
867 let x = jobstart(a:name, 'sh', ['-c', |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
868 \ (has_key(a:opts, 'dir') ? s:with_cd(a:cmd, a:opts.dir) : a:cmd) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
869 \ . ' || echo Error']) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
870 if x > 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
871 let job.jobid = x |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
872 augroup PlugJobControl |
213 | 873 execute 'autocmd JobActivity' a:name printf('call s:job_handler(%s)', string(a:name)) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
874 augroup END |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
875 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
876 let job.running = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
877 let job.error = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
878 let job.result = x < 0 ? 'sh is not executable' : |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
879 \ 'Invalid arguments (or job table is full)' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
880 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
881 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
882 let params = has_key(a:opts, 'dir') ? [a:cmd, a:opts.dir] : [a:cmd] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
883 let job.result = call('s:system', params) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
884 let job.error = v:shell_error != 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
885 let job.running = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
886 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
887 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
888 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
889 function! s:reap(name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
890 if s:nvim |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
891 silent! execute 'autocmd! PlugJobControl JobActivity' a:name |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
892 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
893 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
894 let job = s:jobs[a:name] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
895 if job.error |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
896 call add(s:update.errors, a:name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
897 elseif get(job, 'new', 0) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
898 let s:update.new[a:name] = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
899 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
900 let s:update.bar .= job.error ? 'x' : '=' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
901 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
902 call s:log(job.error ? 'x' : '-', a:name, job.result) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
903 call s:bar() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
904 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
905 call remove(s:jobs, a:name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
906 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
907 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
908 function! s:bar() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
909 if s:switch_in() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
910 let total = len(s:update.all) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
911 call setline(1, (s:update.pull ? 'Updating' : 'Installing'). |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
912 \ ' plugins ('.len(s:update.bar).'/'.total.')') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
913 call s:progress_bar(2, s:update.bar, total) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
914 call s:switch_out() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
915 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
916 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
917 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
918 function! s:logpos(name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
919 for i in range(1, line('$')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
920 if getline(i) =~# '^[-+x*] '.a:name.':' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
921 return i |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
922 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
923 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
924 return 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
925 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
926 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
927 function! s:log(bullet, name, lines) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
928 if s:switch_in() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
929 let pos = s:logpos(a:name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
930 if pos > 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
931 execute pos 'd _' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
932 if pos > winheight('.') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
933 let pos = 4 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
934 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
935 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
936 let pos = 4 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
937 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
938 call append(pos - 1, s:format_message(a:bullet, a:name, a:lines)) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
939 call s:switch_out() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
940 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
941 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
942 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
943 function! s:update_vim() |
213 | 944 let s:jobs = {} |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
945 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
946 call s:bar() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
947 call s:tick() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
948 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
949 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
950 function! s:tick() |
240 | 951 let pull = s:update.pull |
952 let prog = s:progress_opt(s:nvim) | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
953 while 1 " Without TCO, Vim stack is bound to explode |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
954 if empty(s:update.todo) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
955 if empty(s:jobs) && !s:update.fin |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
956 let s:update.fin = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
957 call s:update_finish() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
958 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
959 return |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
960 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
961 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
962 let name = keys(s:update.todo)[0] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
963 let spec = remove(s:update.todo, name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
964 let new = !isdirectory(spec.dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
965 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
966 call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
967 redraw |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
968 |
247 | 969 let checkout = s:shellesc(has_key(spec, 'tag') ? spec.tag : spec.branch) |
970 let merge = s:shellesc(has_key(spec, 'tag') ? spec.tag : 'origin/'.spec.branch) | |
971 | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
972 if !new |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
973 let [valid, msg] = s:git_valid(spec, 0) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
974 if valid |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
975 if pull |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
976 call s:spawn(name, |
247 | 977 \ printf('(git fetch %s 2>&1 && git checkout -q %s 2>&1 && git merge --ff-only %s 2>&1 && git submodule update --init --recursive 2>&1)', |
978 \ prog, checkout, merge), { 'dir': spec.dir }) | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
979 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
980 let s:jobs[name] = { 'running': 0, 'result': 'Already installed', 'error': 0 } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
981 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
982 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
983 let s:jobs[name] = { 'running': 0, 'result': msg, 'error': 1 } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
984 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
985 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
986 call s:spawn(name, |
237 | 987 \ printf('git clone %s --recursive %s -b %s %s 2>&1', |
988 \ prog, | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
989 \ s:shellesc(spec.uri), |
247 | 990 \ checkout, |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
991 \ s:shellesc(s:trim(spec.dir))), { 'new': 1 }) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
992 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
993 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
994 if !s:jobs[name].running |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
995 call s:reap(name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
996 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
997 if len(s:jobs) >= s:update.threads |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
998 break |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
999 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1000 endwhile |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1001 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1002 |
247 | 1003 function! s:update_python() |
1004 python << EOF | |
1005 """ Due to use of signals this function is POSIX only. """ | |
1006 import datetime | |
1007 import functools | |
1008 import os | |
1009 import Queue | |
1010 import random | |
1011 import re | |
1012 import shutil | |
1013 import signal | |
1014 import subprocess | |
1015 import tempfile | |
1016 import threading as thr | |
1017 import time | |
1018 import traceback | |
1019 import vim | |
1020 | |
1021 G_PULL = vim.eval('s:update.pull') == '1' | |
1022 G_RETRIES = int(vim.eval('get(g:, "plug_retries", 2)')) + 1 | |
1023 G_TIMEOUT = int(vim.eval('get(g:, "plug_timeout", 60)')) | |
1024 G_PROGRESS = vim.eval('s:progress_opt(1)') | |
1025 G_LOG_PROB = 1.0 / int(vim.eval('s:update.threads')) | |
1026 G_STOP = thr.Event() | |
1027 | |
1028 class CmdTimedOut(Exception): | |
1029 pass | |
1030 class CmdFailed(Exception): | |
1031 pass | |
1032 class InvalidURI(Exception): | |
1033 pass | |
1034 class Action(object): | |
1035 INSTALL, UPDATE, ERROR, DONE = ['+', '*', 'x', '-'] | |
1036 | |
1037 class GLog(object): | |
1038 ON = None | |
1039 LOGDIR = None | |
1040 @classmethod | |
1041 def write(cls, msg): | |
1042 if cls.ON is None: | |
1043 cls.ON = int(vim.eval('get(g:, "plug_log_on", 0)')) | |
1044 cls.LOGDIR = os.path.expanduser(vim.eval('get(g:, "plug_logs", "~/plug_logs")')) | |
1045 if cls.ON: | |
1046 if not os.path.exists(cls.LOGDIR): | |
1047 os.makedirs(cls.LOGDIR) | |
1048 cls._write(msg) | |
1049 @classmethod | |
1050 def _write(cls, msg): | |
1051 name = thr.current_thread().name | |
1052 fname = cls.LOGDIR + os.path.sep + name | |
1053 with open(fname, 'ab') as flog: | |
1054 ltime = datetime.datetime.now().strftime("%H:%M:%S.%f") | |
1055 msg = '[{},{}] {}{}'.format(name, ltime, msg, '\n') | |
1056 flog.write(msg) | |
1057 | |
1058 class Buffer(object): | |
1059 def __init__(self, lock, num_plugs): | |
1060 self.bar = '' | |
1061 self.event = 'Updating' if vim.eval('s:update.pull') == '1' else 'Installing' | |
1062 self.is_win = vim.eval('s:is_win') == '1' | |
1063 self.lock = lock | |
1064 self.maxy = int(vim.eval('winheight(".")')) | |
1065 self.num_plugs = num_plugs | |
1066 | |
1067 def _where(self, name): | |
1068 """ Find first line with name in current buffer. Return line num. """ | |
1069 found, lnum = False, 0 | |
1070 matcher = re.compile('^[-+x*] {}:'.format(name)) | |
1071 for line in vim.current.buffer: | |
1072 if matcher.search(line) is not None: | |
1073 found = True | |
1074 break | |
1075 lnum += 1 | |
1076 | |
1077 if not found: | |
1078 lnum = -1 | |
1079 return lnum | |
1080 | |
1081 def header(self): | |
1082 curbuf = vim.current.buffer | |
1083 curbuf[0] = self.event + ' plugins ({}/{})'.format(len(self.bar), self.num_plugs) | |
1084 | |
1085 num_spaces = self.num_plugs - len(self.bar) | |
1086 curbuf[1] = '[{}{}]'.format(self.bar, num_spaces * ' ') | |
1087 | |
1088 vim.command('normal! 2G') | |
1089 if not self.is_win: | |
1090 vim.command('redraw') | |
1091 | |
1092 def write(self, *args, **kwargs): | |
1093 with self.lock: | |
1094 self._write(*args, **kwargs) | |
1095 | |
1096 def _write(self, action, name, lines): | |
1097 first, rest = lines[0], lines[1:] | |
1098 msg = ['{} {}{}{}'.format(action, name, ': ' if first else '', first)] | |
1099 padded_rest = [' ' + line for line in rest] | |
1100 msg.extend(padded_rest) | |
1101 | |
1102 try: | |
1103 if action == Action.ERROR: | |
1104 self.bar += 'x' | |
1105 vim.command("call add(s:update.errors, '{}')".format(name)) | |
1106 elif action == Action.DONE: | |
1107 self.bar += '=' | |
1108 | |
1109 curbuf = vim.current.buffer | |
1110 lnum = self._where(name) | |
1111 if lnum != -1: # Found matching line num | |
1112 del curbuf[lnum] | |
1113 if lnum > self.maxy and action in {Action.INSTALL, Action.UPDATE}: | |
1114 lnum = 3 | |
1115 else: | |
1116 lnum = 3 | |
1117 curbuf.append(msg, lnum) | |
1118 | |
1119 self.header() | |
1120 except vim.error: | |
1121 GLog.write('Buffer Update FAILED.') | |
1122 | |
1123 class Command(object): | |
1124 def __init__(self, cmd, cmd_dir=None, timeout=60, ntries=3, cb=None, clean=None): | |
1125 self.cmd = cmd | |
1126 self.cmd_dir = cmd_dir | |
1127 self.timeout = timeout | |
1128 self.ntries = ntries | |
1129 self.callback = cb if cb else (lambda msg: None) | |
1130 self.clean = clean | |
1131 | |
1132 def attempt_cmd(self): | |
1133 """ Tries to run the command, returns result if no exceptions. """ | |
1134 attempt = 0 | |
1135 finished = False | |
1136 limit = self.timeout | |
1137 | |
1138 while not finished: | |
1139 try: | |
1140 attempt += 1 | |
1141 result = self.timeout_cmd() | |
1142 finished = True | |
1143 except CmdTimedOut: | |
1144 if attempt != self.ntries: | |
1145 for count in range(3, 0, -1): | |
1146 if G_STOP.is_set(): | |
1147 raise KeyboardInterrupt | |
1148 msg = 'Timeout. Will retry in {} second{} ...'.format( | |
1149 count, 's' if count != 1 else '') | |
1150 self.callback([msg]) | |
1151 time.sleep(1) | |
1152 self.timeout += limit | |
1153 self.callback(['Retrying ...']) | |
1154 else: | |
1155 raise | |
1156 | |
1157 return result | |
1158 | |
1159 def timeout_cmd(self): | |
1160 """ Execute a cmd & poll for callback. Returns list of output. | |
1161 Raises CmdFailed -> return code for Popen isn't 0 | |
1162 Raises CmdTimedOut -> command exceeded timeout without new output | |
1163 """ | |
1164 proc = None | |
1165 first_line = True | |
1166 try: | |
1167 tfile = tempfile.NamedTemporaryFile() | |
1168 proc = subprocess.Popen(self.cmd, cwd=self.cmd_dir, stdout=tfile, | |
1169 stderr=subprocess.STDOUT, shell=True, preexec_fn=os.setsid) | |
1170 while proc.poll() is None: | |
1171 # Yield this thread | |
1172 time.sleep(0.2) | |
1173 | |
1174 if G_STOP.is_set(): | |
1175 raise KeyboardInterrupt | |
1176 | |
1177 if first_line or random.random() < G_LOG_PROB: | |
1178 first_line = False | |
1179 line = nonblock_read(tfile.name) | |
1180 if line: | |
1181 self.callback([line]) | |
1182 | |
1183 time_diff = time.time() - os.path.getmtime(tfile.name) | |
1184 if time_diff > self.timeout: | |
1185 raise CmdTimedOut(['Timeout!']) | |
1186 | |
1187 tfile.seek(0) | |
1188 result = [line.rstrip() for line in tfile] | |
1189 | |
1190 if proc.returncode != 0: | |
1191 msg = [''] | |
1192 msg.extend(result) | |
1193 raise CmdFailed(msg) | |
1194 except: | |
1195 if proc and proc.poll() is None: | |
1196 os.killpg(proc.pid, signal.SIGTERM) | |
1197 if self.clean: | |
1198 self.clean() | |
1199 raise | |
1200 | |
1201 return result | |
1202 | |
1203 class Plugin(object): | |
1204 def __init__(self, name, args, buf, lock): | |
1205 self.name = name | |
1206 self.args = args | |
1207 self.buf = buf | |
1208 self.lock = lock | |
1209 tag = args.get('tag', 0) | |
1210 self.checkout = esc(tag if tag else args['branch']) | |
1211 self.merge = esc(tag if tag else 'origin/' + args['branch']) | |
1212 | |
1213 def manage(self): | |
1214 try: | |
1215 if os.path.exists(self.args['dir']): | |
1216 self.update() | |
1217 else: | |
1218 self.install() | |
1219 with self.lock: | |
1220 vim.command("let s:update.new['{}'] = 1".format(self.name)) | |
1221 except (CmdTimedOut, CmdFailed, InvalidURI) as exc: | |
1222 self.write(Action.ERROR, self.name, exc.message) | |
1223 except KeyboardInterrupt: | |
1224 G_STOP.set() | |
1225 self.write(Action.ERROR, self.name, ['Interrupted!']) | |
1226 except: | |
1227 # Any exception except those above print stack trace | |
1228 msg = 'Trace:\n{}'.format(traceback.format_exc().rstrip()) | |
1229 self.write(Action.ERROR, self.name, msg.split('\n')) | |
1230 raise | |
1231 | |
1232 def install(self): | |
1233 target = self.args['dir'] | |
1234 | |
1235 def clean(target): | |
1236 def _clean(): | |
1237 try: | |
1238 shutil.rmtree(target) | |
1239 except OSError: | |
1240 pass | |
1241 return _clean | |
1242 | |
1243 self.write(Action.INSTALL, self.name, ['Installing ...']) | |
1244 callback = functools.partial(self.buf.write, Action.INSTALL, self.name) | |
1245 cmd = 'git clone {} --recursive {} -b {} {} 2>&1'.format( | |
1246 G_PROGRESS, self.args['uri'], self.checkout, esc(target)) | |
1247 com = Command(cmd, None, G_TIMEOUT, G_RETRIES, callback, clean(target)) | |
1248 result = com.attempt_cmd() | |
1249 self.write(Action.DONE, self.name, result[-1:]) | |
1250 | |
1251 def update(self): | |
1252 match = re.compile(r'git::?@') | |
1253 actual_uri = re.sub(match, '', self.repo_uri()) | |
1254 expect_uri = re.sub(match, '', self.args['uri']) | |
1255 if actual_uri != expect_uri: | |
1256 msg = ['', | |
1257 'Invalid URI: {}'.format(actual_uri), | |
1258 'Expected {}'.format(expect_uri), | |
1259 'PlugClean required.'] | |
1260 raise InvalidURI(msg) | |
1261 | |
1262 if G_PULL: | |
1263 self.write(Action.UPDATE, self.name, ['Updating ...']) | |
1264 callback = functools.partial(self.buf.write, Action.UPDATE, self.name) | |
1265 cmds = ['git fetch {}'.format(G_PROGRESS), | |
1266 'git checkout -q {}'.format(self.checkout), | |
1267 'git merge --ff-only {}'.format(self.merge), | |
1268 'git submodule update --init --recursive'] | |
1269 cmd = ' 2>&1 && '.join(cmds) | |
1270 GLog.write(cmd) | |
1271 com = Command(cmd, self.args['dir'], G_TIMEOUT, G_RETRIES, callback) | |
1272 result = com.attempt_cmd() | |
1273 GLog.write(result) | |
1274 self.write(Action.DONE, self.name, result[-1:]) | |
1275 else: | |
1276 self.write(Action.DONE, self.name, ['Already installed']) | |
1277 | |
1278 def repo_uri(self): | |
1279 cmd = 'git rev-parse --abbrev-ref HEAD 2>&1 && git config remote.origin.url' | |
1280 command = Command(cmd, self.args['dir'], G_TIMEOUT, G_RETRIES) | |
1281 result = command.attempt_cmd() | |
1282 return result[-1] | |
1283 | |
1284 def write(self, action, name, msg): | |
1285 GLog.write('{} {}: {}'.format(action, name, '\n'.join(msg))) | |
1286 self.buf.write(action, name, msg) | |
1287 | |
1288 class PlugThread(thr.Thread): | |
1289 def __init__(self, tname, args): | |
1290 super(PlugThread, self).__init__() | |
1291 self.tname = tname | |
1292 self.args = args | |
1293 | |
1294 def run(self): | |
1295 thr.current_thread().name = self.tname | |
1296 work_q, lock, buf = self.args | |
1297 | |
1298 try: | |
1299 while not G_STOP.is_set(): | |
1300 name, args = work_q.get_nowait() | |
1301 GLog.write('{}: Dir {}'.format(name, args['dir'])) | |
1302 plug = Plugin(name, args, buf, lock) | |
1303 plug.manage() | |
1304 work_q.task_done() | |
1305 except Queue.Empty: | |
1306 GLog.write('Queue now empty.') | |
1307 | |
1308 class RefreshThread(thr.Thread): | |
1309 def __init__(self, lock): | |
1310 super(RefreshThread, self).__init__() | |
1311 self.lock = lock | |
1312 self.running = True | |
1313 | |
1314 def run(self): | |
1315 while self.running: | |
1316 with self.lock: | |
1317 vim.command('noautocmd normal! a') | |
1318 time.sleep(0.2) | |
1319 | |
1320 def stop(self): | |
1321 self.running = False | |
1322 | |
1323 def esc(name): | |
1324 return '"' + name.replace('"', '\"') + '"' | |
1325 | |
1326 def nonblock_read(fname): | |
1327 """ Read a file with nonblock flag. Return the last line. """ | |
1328 fread = os.open(fname, os.O_RDONLY | os.O_NONBLOCK) | |
1329 buf = os.read(fread, 100000) | |
1330 os.close(fread) | |
1331 | |
1332 line = buf.rstrip('\r\n') | |
1333 left = max(line.rfind('\r'), line.rfind('\n')) | |
1334 if left != -1: | |
1335 left += 1 | |
1336 line = line[left:] | |
1337 | |
1338 return line | |
1339 | |
1340 def main(): | |
1341 thr.current_thread().name = 'main' | |
1342 GLog.write('') | |
1343 if GLog.ON and os.path.exists(GLog.LOGDIR): | |
1344 shutil.rmtree(GLog.LOGDIR) | |
1345 | |
1346 threads = [] | |
1347 nthreads = int(vim.eval('s:update.threads')) | |
1348 plugs = vim.eval('s:update.todo') | |
1349 mac_gui = vim.eval('s:mac_gui') == '1' | |
1350 is_win = vim.eval('s:is_win') == '1' | |
1351 GLog.write('Plugs: {}'.format(plugs)) | |
1352 GLog.write('PULL: {}, WIN: {}, MAC: {}'.format(G_PULL, is_win, mac_gui)) | |
1353 GLog.write('Num Threads: {}'.format(nthreads)) | |
1354 | |
1355 lock = thr.Lock() | |
1356 buf = Buffer(lock, len(plugs)) | |
1357 work_q = Queue.Queue() | |
1358 for work in plugs.items(): | |
1359 work_q.put(work) | |
1360 | |
1361 GLog.write('Starting Threads') | |
1362 for num in range(nthreads): | |
1363 tname = 'PlugT-{0:02}'.format(num) | |
1364 thread = PlugThread(tname, (work_q, lock, buf)) | |
1365 thread.start() | |
1366 threads.append(thread) | |
1367 if mac_gui: | |
1368 rthread = RefreshThread(lock) | |
1369 rthread.start() | |
1370 | |
1371 GLog.write('Joining Live Threads') | |
1372 for thread in threads: | |
1373 thread.join() | |
1374 if mac_gui: | |
1375 rthread.stop() | |
1376 rthread.join() | |
1377 GLog.write('Cleanly Exited Main') | |
1378 | |
1379 main() | |
1380 EOF | |
1381 endfunction | |
1382 | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1383 function! s:update_ruby() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1384 ruby << EOF |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1385 module PlugStream |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1386 SEP = ["\r", "\n", nil] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1387 def get_line |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1388 buffer = '' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1389 loop do |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1390 char = readchar rescue return |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1391 if SEP.include? char.chr |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1392 buffer << $/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1393 break |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1394 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1395 buffer << char |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1396 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1397 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1398 buffer |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1399 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1400 end unless defined?(PlugStream) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1401 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1402 def esc arg |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1403 %["#{arg.gsub('"', '\"')}"] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1404 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1405 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1406 def killall pid |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1407 pids = [pid] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1408 unless `which pgrep 2> /dev/null`.empty? |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1409 children = pids |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1410 until children.empty? |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1411 children = children.map { |pid| |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1412 `pgrep -P #{pid}`.lines.map { |l| l.chomp } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1413 }.flatten |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1414 pids += children |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1415 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1416 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1417 pids.each { |pid| Process.kill 'TERM', pid.to_i rescue nil } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1418 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1419 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1420 require 'thread' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1421 require 'fileutils' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1422 require 'timeout' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1423 running = true |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1424 iswin = VIM::evaluate('s:is_win').to_i == 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1425 pull = VIM::evaluate('s:update.pull').to_i == 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1426 base = VIM::evaluate('g:plug_home') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1427 all = VIM::evaluate('s:update.todo') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1428 limit = VIM::evaluate('get(g:, "plug_timeout", 60)') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1429 tries = VIM::evaluate('get(g:, "plug_retries", 2)') + 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1430 nthr = VIM::evaluate('s:update.threads').to_i |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1431 maxy = VIM::evaluate('winheight(".")').to_i |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1432 cd = iswin ? 'cd /d' : 'cd' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1433 tot = VIM::evaluate('len(s:update.todo)') || 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1434 bar = '' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1435 skip = 'Already installed' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1436 mtx = Mutex.new |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1437 take1 = proc { mtx.synchronize { running && all.shift } } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1438 logh = proc { |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1439 cnt = bar.length |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1440 $curbuf[1] = "#{pull ? 'Updating' : 'Installing'} plugins (#{cnt}/#{tot})" |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1441 $curbuf[2] = '[' + bar.ljust(tot) + ']' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1442 VIM::command('normal! 2G') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1443 VIM::command('redraw') unless iswin |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1444 } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1445 where = proc { |name| (1..($curbuf.length)).find { |l| $curbuf[l] =~ /^[-+x*] #{name}:/ } } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1446 log = proc { |name, result, type| |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1447 mtx.synchronize do |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1448 ing = ![true, false].include?(type) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1449 bar += type ? '=' : 'x' unless ing |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1450 b = case type |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1451 when :install then '+' when :update then '*' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1452 when true, nil then '-' else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1453 VIM::command("call add(s:update.errors, '#{name}')") |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1454 'x' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1455 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1456 result = |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1457 if type || type.nil? |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1458 ["#{b} #{name}: #{result.lines.to_a.last}"] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1459 elsif result =~ /^Interrupted|^Timeout/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1460 ["#{b} #{name}: #{result}"] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1461 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1462 ["#{b} #{name}"] + result.lines.map { |l| " " << l } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1463 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1464 if lnum = where.call(name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1465 $curbuf.delete lnum |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1466 lnum = 4 if ing && lnum > maxy |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1467 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1468 result.each_with_index do |line, offset| |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1469 $curbuf.append((lnum || 4) - 1 + offset, line.gsub(/\e\[./, '').chomp) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1470 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1471 logh.call |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1472 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1473 } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1474 bt = proc { |cmd, name, type, cleanup| |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1475 tried = timeout = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1476 begin |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1477 tried += 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1478 timeout += limit |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1479 fd = nil |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1480 data = '' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1481 if iswin |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1482 Timeout::timeout(timeout) do |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1483 tmp = VIM::evaluate('tempname()') |
247 | 1484 system("(#{cmd}) > #{tmp}") |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1485 data = File.read(tmp).chomp |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1486 File.unlink tmp rescue nil |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1487 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1488 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1489 fd = IO.popen(cmd).extend(PlugStream) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1490 first_line = true |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1491 log_prob = 1.0 / nthr |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1492 while line = Timeout::timeout(timeout) { fd.get_line } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1493 data << line |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1494 log.call name, line.chomp, type if name && (first_line || rand < log_prob) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1495 first_line = false |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1496 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1497 fd.close |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1498 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1499 [$? == 0, data.chomp] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1500 rescue Timeout::Error, Interrupt => e |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1501 if fd && !fd.closed? |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1502 killall fd.pid |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1503 fd.close |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1504 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1505 cleanup.call if cleanup |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1506 if e.is_a?(Timeout::Error) && tried < tries |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1507 3.downto(1) do |countdown| |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1508 s = countdown > 1 ? 's' : '' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1509 log.call name, "Timeout. Will retry in #{countdown} second#{s} ...", type |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1510 sleep 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1511 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1512 log.call name, 'Retrying ...', type |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1513 retry |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1514 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1515 [false, e.is_a?(Interrupt) ? "Interrupted!" : "Timeout!"] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1516 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1517 } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1518 main = Thread.current |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1519 threads = [] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1520 watcher = Thread.new { |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1521 while VIM::evaluate('getchar(1)') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1522 sleep 0.1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1523 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1524 mtx.synchronize do |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1525 running = false |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1526 threads.each { |t| t.raise Interrupt } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1527 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1528 threads.each { |t| t.join rescue nil } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1529 main.kill |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1530 } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1531 refresh = Thread.new { |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1532 while true |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1533 mtx.synchronize do |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1534 break unless running |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1535 VIM::command('noautocmd normal! a') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1536 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1537 sleep 0.2 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1538 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1539 } if VIM::evaluate('s:mac_gui') == 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1540 |
240 | 1541 progress = VIM::evaluate('s:progress_opt(1)') |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1542 nthr.times do |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1543 mtx.synchronize do |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1544 threads << Thread.new { |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1545 while pair = take1.call |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1546 name = pair.first |
247 | 1547 dir, uri, branch, tag = pair.last.values_at *%w[dir uri branch tag] |
1548 checkout = esc(tag ? tag : branch) | |
1549 merge = esc(tag ? tag : "origin/#{branch}") | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1550 subm = "git submodule update --init --recursive 2>&1" |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1551 exists = File.directory? dir |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1552 ok, result = |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1553 if exists |
247 | 1554 dir = iswin ? dir : esc(dir) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1555 ret, data = bt.call "#{cd} #{dir} && git rev-parse --abbrev-ref HEAD 2>&1 && git config remote.origin.url", nil, nil, nil |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1556 current_uri = data.lines.to_a.last |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1557 if !ret |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1558 if data =~ /^Interrupted|^Timeout/ |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1559 [false, data] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1560 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1561 [false, [data.chomp, "PlugClean required."].join($/)] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1562 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1563 elsif current_uri.sub(/git::?@/, '') != uri.sub(/git::?@/, '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1564 [false, ["Invalid URI: #{current_uri}", |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1565 "Expected: #{uri}", |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1566 "PlugClean required."].join($/)] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1567 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1568 if pull |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1569 log.call name, 'Updating ...', :update |
247 | 1570 bt.call "#{cd} #{dir} && git fetch #{progress} 2>&1 && git checkout -q #{checkout} 2>&1 && git merge --ff-only #{merge} 2>&1 && #{subm}", name, :update, nil |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1571 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1572 [true, skip] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1573 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1574 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1575 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1576 d = esc dir.sub(%r{[\\/]+$}, '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1577 log.call name, 'Installing ...', :install |
247 | 1578 bt.call "git clone #{progress} --recursive #{uri} -b #{checkout} #{d} 2>&1", name, :install, proc { |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1579 FileUtils.rm_rf dir |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1580 } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1581 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1582 mtx.synchronize { VIM::command("let s:update.new['#{name}'] = 1") } if !exists && ok |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1583 log.call name, result, ok |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1584 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1585 } if running |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1586 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1587 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1588 threads.each { |t| t.join rescue nil } |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1589 logh.call |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1590 refresh.kill if refresh |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1591 watcher.kill |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1592 EOF |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1593 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1594 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1595 function! s:shellesc(arg) |
247 | 1596 return '"'.escape(a:arg, '"').'"' |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1597 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1598 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1599 function! s:glob_dir(path) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1600 return map(filter(s:lines(globpath(a:path, '**')), 'isdirectory(v:val)'), 's:dirpath(v:val)') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1601 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1602 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1603 function! s:progress_bar(line, bar, total) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1604 call setline(a:line, '[' . s:lpad(a:bar, a:total) . ']') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1605 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1606 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1607 function! s:compare_git_uri(a, b) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1608 let a = substitute(a:a, 'git:\{1,2}@', '', '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1609 let b = substitute(a:b, 'git:\{1,2}@', '', '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1610 return a ==# b |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1611 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1612 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1613 function! s:format_message(bullet, name, message) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1614 if a:bullet != 'x' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1615 return [printf('%s %s: %s', a:bullet, a:name, s:lastline(a:message))] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1616 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1617 let lines = map(s:lines(a:message), '" ".v:val') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1618 return extend([printf('x %s:', a:name)], lines) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1619 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1620 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1621 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1622 function! s:with_cd(cmd, dir) |
247 | 1623 return printf('cd%s %s && %s', s:is_win ? ' /d' : '', s:shellesc(a:dir), a:cmd) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1624 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1625 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1626 function! s:system(cmd, ...) |
237 | 1627 try |
1628 let sh = &shell | |
1629 if !s:is_win | |
1630 set shell=sh | |
1631 endif | |
1632 let cmd = a:0 > 0 ? s:with_cd(a:cmd, a:1) : a:cmd | |
1633 return system(s:is_win ? '('.cmd.')' : cmd) | |
1634 finally | |
1635 let &shell = sh | |
1636 endtry | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1637 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1638 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1639 function! s:system_chomp(...) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1640 let ret = call('s:system', a:000) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1641 return v:shell_error ? '' : substitute(ret, '\n$', '', '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1642 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1643 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1644 function! s:git_valid(spec, check_branch) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1645 let ret = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1646 let msg = 'OK' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1647 if isdirectory(a:spec.dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1648 let result = s:lines(s:system('git rev-parse --abbrev-ref HEAD 2>&1 && git config remote.origin.url', a:spec.dir)) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1649 let remote = result[-1] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1650 if v:shell_error |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1651 let msg = join([remote, 'PlugClean required.'], "\n") |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1652 let ret = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1653 elseif !s:compare_git_uri(remote, a:spec.uri) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1654 let msg = join(['Invalid URI: '.remote, |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1655 \ 'Expected: '.a:spec.uri, |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1656 \ 'PlugClean required.'], "\n") |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1657 let ret = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1658 elseif a:check_branch |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1659 let branch = result[0] |
247 | 1660 " Check tag |
1661 if has_key(a:spec, 'tag') | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1662 let tag = s:system_chomp('git describe --exact-match --tags HEAD 2>&1', a:spec.dir) |
247 | 1663 if a:spec.tag !=# tag |
1664 let msg = printf('Invalid tag: %s (expected: %s). Try PlugUpdate.', | |
1665 \ (empty(tag) ? 'N/A' : tag), a:spec.tag) | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1666 let ret = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1667 endif |
247 | 1668 " Check branch |
1669 elseif a:spec.branch !=# branch | |
1670 let msg = printf('Invalid branch: %s (expected: %s). Try PlugUpdate.', | |
1671 \ branch, a:spec.branch) | |
1672 let ret = 0 | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1673 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1674 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1675 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1676 let msg = 'Not found' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1677 let ret = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1678 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1679 return [ret, msg] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1680 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1681 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1682 function! s:clean(force) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1683 call s:prepare() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1684 call append(0, 'Searching for unused plugins in '.g:plug_home) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1685 call append(1, '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1686 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1687 " List of valid directories |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1688 let dirs = [] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1689 let [cnt, total] = [0, len(g:plugs)] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1690 for [name, spec] in items(g:plugs) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1691 if !s:is_managed(name) || s:git_valid(spec, 0)[0] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1692 call add(dirs, spec.dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1693 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1694 let cnt += 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1695 call s:progress_bar(2, repeat('=', cnt), total) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1696 normal! 2G |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1697 redraw |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1698 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1699 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1700 let allowed = {} |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1701 for dir in dirs |
237 | 1702 let allowed[s:dirpath(fnamemodify(dir, ':h:h'))] = 1 |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1703 let allowed[dir] = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1704 for child in s:glob_dir(dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1705 let allowed[child] = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1706 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1707 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1708 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1709 let todo = [] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1710 let found = sort(s:glob_dir(g:plug_home)) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1711 while !empty(found) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1712 let f = remove(found, 0) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1713 if !has_key(allowed, f) && isdirectory(f) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1714 call add(todo, f) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1715 call append(line('$'), '- ' . f) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1716 let found = filter(found, 'stridx(v:val, f) != 0') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1717 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1718 endwhile |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1719 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1720 normal! G |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1721 redraw |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1722 if empty(todo) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1723 call append(line('$'), 'Already clean.') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1724 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1725 call inputsave() |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
1726 let yes = a:force || (input('Proceed? (y/N) ') =~? '^y') |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1727 call inputrestore() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1728 if yes |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1729 for dir in todo |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1730 if isdirectory(dir) |
237 | 1731 call s:system((s:is_win ? 'rmdir /S /Q ' : 'rm -rf ') . s:shellesc(dir)) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1732 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1733 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1734 call append(line('$'), 'Removed.') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1735 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1736 call append(line('$'), 'Cancelled.') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1737 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1738 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1739 normal! G |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1740 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1741 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1742 function! s:upgrade() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1743 let new = s:me . '.new' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1744 echo 'Downloading '. s:plug_src |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1745 redraw |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1746 try |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1747 if executable('curl') |
237 | 1748 let output = s:system(printf('curl -fLo %s %s', s:shellesc(new), s:plug_src)) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1749 if v:shell_error |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1750 throw get(s:lines(output), -1, v:shell_error) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1751 endif |
240 | 1752 elseif s:ruby |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1753 call s:upgrade_using_ruby(new) |
247 | 1754 elseif s:py2 |
1755 call s:upgrade_using_python(new) | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1756 else |
247 | 1757 return s:err('Missing: curl executable, ruby support or python support') |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1758 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1759 catch |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1760 return s:err('Error upgrading vim-plug: '. v:exception) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1761 endtry |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1762 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1763 if readfile(s:me) ==# readfile(new) |
235 | 1764 echo 'vim-plug is already up-to-date' |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1765 silent! call delete(new) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1766 return 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1767 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1768 call rename(s:me, s:me . '.old') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1769 call rename(new, s:me) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1770 unlet g:loaded_plug |
235 | 1771 echo 'vim-plug has been upgraded' |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1772 return 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1773 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1774 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1775 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1776 function! s:upgrade_using_ruby(new) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1777 ruby << EOF |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1778 require 'open-uri' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1779 File.open(VIM::evaluate('a:new'), 'w') do |f| |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1780 f << open(VIM::evaluate('s:plug_src')).read |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1781 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1782 EOF |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1783 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1784 |
247 | 1785 function! s:upgrade_using_python(new) |
1786 python << EOF | |
1787 import urllib | |
1788 import vim | |
1789 psrc, dest = vim.eval('s:plug_src'), vim.eval('a:new') | |
1790 urllib.urlretrieve(psrc, dest) | |
1791 EOF | |
1792 endfunction | |
1793 | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1794 function! s:upgrade_specs() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1795 for spec in values(g:plugs) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1796 let spec.frozen = get(spec, 'frozen', 0) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1797 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1798 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1799 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1800 function! s:status() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1801 call s:prepare() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1802 call append(0, 'Checking plugins') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1803 call append(1, '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1804 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1805 let ecnt = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1806 let unloaded = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1807 let [cnt, total] = [0, len(g:plugs)] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1808 for [name, spec] in items(g:plugs) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1809 if has_key(spec, 'uri') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1810 if isdirectory(spec.dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1811 let [valid, msg] = s:git_valid(spec, 1) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1812 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1813 let [valid, msg] = [0, 'Not found. Try PlugInstall.'] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1814 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1815 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1816 if isdirectory(spec.dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1817 let [valid, msg] = [1, 'OK'] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1818 else |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1819 let [valid, msg] = [0, 'Not found.'] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1820 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1821 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1822 let cnt += 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1823 let ecnt += !valid |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1824 " `s:loaded` entry can be missing if PlugUpgraded |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1825 if valid && get(s:loaded, name, -1) == 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1826 let unloaded = 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1827 let msg .= ' (not loaded)' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1828 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1829 call s:progress_bar(2, repeat('=', cnt), total) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1830 call append(3, s:format_message(valid ? '-' : 'x', name, msg)) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1831 normal! 2G |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1832 redraw |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1833 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1834 call setline(1, 'Finished. '.ecnt.' error(s).') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1835 normal! gg |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1836 setlocal nomodifiable |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1837 if unloaded |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1838 echo "Press 'L' on each line to load plugin, or 'U' to update" |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1839 nnoremap <silent> <buffer> L :call <SID>status_load(line('.'))<cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1840 xnoremap <silent> <buffer> L :call <SID>status_load(line('.'))<cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1841 end |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1842 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1843 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1844 function! s:extract_name(str, prefix, suffix) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1845 return matchstr(a:str, '^'.a:prefix.' \zs[^:]\+\ze:.*'.a:suffix.'$') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1846 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1847 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1848 function! s:status_load(lnum) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1849 let line = getline(a:lnum) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1850 let name = s:extract_name(line, '-', '(not loaded)') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1851 if !empty(name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1852 call plug#load(name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1853 setlocal modifiable |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1854 call setline(a:lnum, substitute(line, ' (not loaded)$', '', '')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1855 setlocal nomodifiable |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1856 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1857 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1858 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1859 function! s:status_update() range |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1860 let lines = getline(a:firstline, a:lastline) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1861 let names = filter(map(lines, 's:extract_name(v:val, "[x-]", "")'), '!empty(v:val)') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1862 if !empty(names) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1863 echo |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1864 execute 'PlugUpdate' join(names) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1865 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1866 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1867 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1868 function! s:is_preview_window_open() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1869 silent! wincmd P |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1870 if &previewwindow |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1871 wincmd p |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1872 return 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1873 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1874 return 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1875 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1876 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1877 function! s:find_name(lnum) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1878 for lnum in reverse(range(1, a:lnum)) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1879 let line = getline(lnum) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1880 if empty(line) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1881 return '' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1882 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1883 let name = s:extract_name(line, '-', '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1884 if !empty(name) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1885 return name |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1886 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1887 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1888 return '' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1889 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1890 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1891 function! s:preview_commit() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1892 if b:plug_preview < 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1893 let b:plug_preview = !s:is_preview_window_open() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1894 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1895 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1896 let sha = matchstr(getline('.'), '\(^ \)\@<=[0-9a-z]\{7}') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1897 if empty(sha) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1898 return |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1899 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1900 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1901 let name = s:find_name(line('.')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1902 if empty(name) || !has_key(g:plugs, name) || !isdirectory(g:plugs[name].dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1903 return |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1904 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1905 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1906 execute 'pedit' sha |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1907 wincmd P |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1908 setlocal filetype=git buftype=nofile nobuflisted |
247 | 1909 execute 'silent read !cd' s:shellesc(g:plugs[name].dir) '&& git show' sha |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1910 normal! gg"_dd |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1911 wincmd p |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1912 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1913 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1914 function! s:section(flags) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1915 call search('\(^[x-] \)\@<=[^:]\+:', a:flags) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1916 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1917 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1918 function! s:diff() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1919 call s:prepare() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1920 call append(0, 'Collecting updated changes ...') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1921 normal! gg |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1922 redraw |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1923 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1924 let cnt = 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1925 for [k, v] in items(g:plugs) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1926 if !isdirectory(v.dir) || !s:is_managed(k) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1927 continue |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1928 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1929 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1930 let diff = s:system_chomp('git log --pretty=format:"%h %s (%cr)" "HEAD...HEAD@{1}"', v.dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1931 if !empty(diff) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1932 call append(1, '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1933 call append(2, '- '.k.':') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1934 call append(3, map(s:lines(diff), '" ". v:val')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1935 let cnt += 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1936 normal! gg |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1937 redraw |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1938 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1939 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1940 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1941 call setline(1, cnt == 0 ? 'No updates.' : 'Last update:') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1942 nnoremap <silent> <buffer> <cr> :silent! call <SID>preview_commit()<cr> |
247 | 1943 nnoremap <silent> <buffer> o :silent! call <SID>preview_commit()<cr> |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1944 nnoremap <silent> <buffer> X :call <SID>revert()<cr> |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1945 normal! gg |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1946 setlocal nomodifiable |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1947 if cnt > 0 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1948 echo "Press 'X' on each block to revert the update" |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1949 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1950 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1951 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1952 function! s:revert() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1953 let name = s:find_name(line('.')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1954 if empty(name) || !has_key(g:plugs, name) || |
216
d216f4d5508e
Setup latex compiler for dispatch
zegervdv <zegervdv@me.com>
parents:
213
diff
changeset
|
1955 \ input(printf('Revert the update of %s? (y/N) ', name)) !~? '^y' |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1956 return |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1957 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1958 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1959 call s:system('git reset --hard HEAD@{1} && git checkout '.s:esc(g:plugs[name].branch), g:plugs[name].dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1960 setlocal modifiable |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1961 normal! "_dap |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1962 setlocal nomodifiable |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1963 echo 'Reverted.' |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1964 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1965 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1966 function! s:snapshot(...) abort |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1967 let home = get(s:, 'plug_home_org', g:plug_home) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1968 let [type, var, header] = s:is_win ? |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1969 \ ['dosbatch', '%PLUG_HOME%', |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1970 \ ['@echo off', ':: Generated by vim-plug', ':: '.strftime("%c"), '', |
247 | 1971 \ ':: Make sure to PlugUpdate first', '', 'set PLUG_HOME='.home]] : |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1972 \ ['sh', '$PLUG_HOME', |
237 | 1973 \ ['#!/bin/sh', '# Generated by vim-plug', '# '.strftime("%c"), '', |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1974 \ 'vim +PlugUpdate +qa', '', 'PLUG_HOME='.s:esc(home)]] |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1975 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1976 call s:prepare() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1977 execute 'setf' type |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1978 call append(0, header) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1979 call append('$', '') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1980 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1981 redraw |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1982 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1983 let dirs = sort(map(values(filter(copy(g:plugs), |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1984 \'has_key(v:val, "uri") && isdirectory(v:val.dir)')), 'v:val.dir')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1985 let anchor = line('$') - 1 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1986 for dir in reverse(dirs) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1987 let sha = s:system_chomp('git rev-parse --short HEAD', dir) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1988 if !empty(sha) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1989 call append(anchor, printf('cd %s && git reset --hard %s', |
247 | 1990 \ substitute(dir, '^\V'.escape(g:plug_home, '\'), var, ''), sha)) |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1991 redraw |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1992 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1993 endfor |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1994 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1995 if a:0 > 0 |
242 | 1996 let fn = expand(a:1) |
1997 let fne = s:esc(fn) | |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
1998 call writefile(getline(1, '$'), fn) |
242 | 1999 if !s:is_win | call s:system('chmod +x ' . fne) | endif |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2000 echo 'Saved to '.a:1 |
242 | 2001 silent execute 'e' fne |
187
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2002 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2003 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2004 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2005 function! s:split_rtp() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2006 return split(&rtp, '\\\@<!,') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2007 endfunction |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2008 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2009 let s:first_rtp = s:escrtp(get(s:split_rtp(), 0, '')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2010 let s:last_rtp = s:escrtp(get(s:split_rtp(), -1, '')) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2011 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2012 if exists('g:plugs') |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2013 let g:plugs_order = get(g:, 'plugs_order', keys(g:plugs)) |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2014 call s:upgrade_specs() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2015 call s:define_commands() |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2016 endif |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2017 |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2018 let &cpo = s:cpo_save |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2019 unlet s:cpo_save |
e3639166a8ab
Remove pathogen in favour of Vim-plug
zegervdv <zegervdv@me.com>
parents:
diff
changeset
|
2020 |