Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
home
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Murukesh Mohanan
home
Commits
72367329
Commit
72367329
authored
Nov 10, 2016
by
Murukesh Mohanan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
version check for CentOS 7.2
parent
ceb3de8b
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
176 additions
and
86 deletions
+176
-86
.vim/autoload/plug.vim
.vim/autoload/plug.vim
+172
-85
.vim/vimrc
.vim/vimrc
+4
-1
No files found.
.vim/autoload/plug.vim
View file @
72367329
...
@@ -98,6 +98,7 @@ let s:plug_buf = get(s:, 'plug_buf', -1)
...
@@ -98,6 +98,7 @@ let s:plug_buf = get(s:, 'plug_buf', -1)
let
s:mac_gui
=
has
(
'gui_macvim'
)
&& has
(
'gui_running'
)
let
s:mac_gui
=
has
(
'gui_macvim'
)
&& has
(
'gui_running'
)
let
s:is_win
=
has
(
'win32'
)
||
has
(
'win64'
)
let
s:is_win
=
has
(
'win32'
)
||
has
(
'win64'
)
let
s:nvim
=
has
(
'nvim'
)
&& exists
(
'*jobwait'
)
&&
!
s:is_win
let
s:nvim
=
has
(
'nvim'
)
&& exists
(
'*jobwait'
)
&&
!
s:is_win
let
s:vim8
=
has
(
'patch-8.0.0039'
)
&& exists
(
'*job_start'
)
let
s:me
=
resolve
(
expand
(
'<sfile>:p'
))
let
s:me
=
resolve
(
expand
(
'<sfile>:p'
))
let
s:base_spec
=
{
'branch'
:
'master'
,
'frozen'
:
0
}
let
s:base_spec
=
{
'branch'
:
'master'
,
'frozen'
:
0
}
let
s:TYPE
=
{
let
s:TYPE
=
{
...
@@ -202,7 +203,9 @@ function! plug#end()
...
@@ -202,7 +203,9 @@ function! plug#end()
endif
endif
let
lod
=
{
'ft'
:
{},
'map'
:
{},
'cmd'
:
{}
}
let
lod
=
{
'ft'
:
{},
'map'
:
{},
'cmd'
:
{}
}
if
exists
(
'g:did_load_filetypes'
)
filetype
off
filetype
off
endif
for
name
in
g:plugs_order
for
name
in
g:plugs_order
if
!
has_key
(
g:plugs
,
name
)
if
!
has_key
(
g:plugs
,
name
)
continue
continue
...
@@ -256,8 +259,8 @@ function! plug#end()
...
@@ -256,8 +259,8 @@ function! plug#end()
for
[
mode
,
map_prefix
,
key_prefix
]
in
for
[
mode
,
map_prefix
,
key_prefix
]
in
\
[[
'i'
,
'<C-O>'
,
''
],
[
'n'
,
''
,
''
],
[
'v'
,
''
,
'gv'
],
[
'o'
,
''
,
''
]]
\
[[
'i'
,
'<C-O>'
,
''
],
[
'n'
,
''
,
''
],
[
'v'
,
''
,
'gv'
],
[
'o'
,
''
,
''
]]
execute printf
(
execute printf
(
\
'%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %s, "%s")<CR>'
,
\
'%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %s,
%s,
"%s")<CR>'
,
\
mode
,
map
,
map_prefix
,
string
(
map
),
string
(
names
),
key_prefix
)
\
mode
,
map
,
map_prefix
,
string
(
map
),
string
(
names
),
mode
!=
'i'
,
key_prefix
)
endfor
endfor
endfor
endfor
...
@@ -309,7 +312,7 @@ endfunction
...
@@ -309,7 +312,7 @@ endfunction
function
!
s:git_version_requirement
(...)
function
!
s:git_version_requirement
(...)
if
!
exists
(
's:git_version'
)
if
!
exists
(
's:git_version'
)
let
s:git_version
=
map
(
split
(
split
(
s:system
(
'git --version'
))[
-1
],
'\.'
),
'str2nr(v:val)'
)
let
s:git_version
=
map
(
split
(
split
(
s:system
(
'git --version'
))[
2
],
'\.'
),
'str2nr(v:val)'
)
endif
endif
return
s:version_requirement
(
s:git_version
,
a:000
)
return
s:version_requirement
(
s:git_version
,
a:000
)
endfunction
endfunction
...
@@ -398,7 +401,7 @@ function! s:reorg_rtp()
...
@@ -398,7 +401,7 @@ function! s:reorg_rtp()
let
s:middle
=
get
(
s
:,
'middle'
,
&rtp
)
let
s:middle
=
get
(
s
:,
'middle'
,
&rtp
)
let
rtps
=
map
(
s:loaded_names
(),
's:rtp(g:plugs[v:val])'
)
let
rtps
=
map
(
s:loaded_names
(),
's:rtp(g:plugs[v:val])'
)
let
afters
=
filter
(
map
(
copy
(
rtps
),
'globpath(v:val, "after")'
),
'
isdirector
y(v:val)'
)
let
afters
=
filter
(
map
(
copy
(
rtps
),
'globpath(v:val, "after")'
),
'
!empt
y(v:val)'
)
let
rtp
=
join
(
map
(
rtps
,
'escape(v:val, ",")'
),
','
)
let
rtp
=
join
(
map
(
rtps
,
'escape(v:val, ",")'
),
','
)
\
.
','
.
s:middle
.
','
\
.
','
.
s:middle
.
','
\
.
join
(
map
(
afters
,
'escape(v:val, ",")'
),
','
)
\
.
join
(
map
(
afters
,
'escape(v:val, ",")'
),
','
)
...
@@ -497,7 +500,7 @@ function! s:lod_cmd(cmd, bang, l1, l2, args, names)
...
@@ -497,7 +500,7 @@ function! s:lod_cmd(cmd, bang, l1, l2, args, names)
execute printf
(
'%s%s%s %s'
,
(
a:l1
==
a:l2
?
''
:
(
a:l1
.
','
.
a:l2
)),
a:cmd
,
a:bang
,
a:args
)
execute printf
(
'%s%s%s %s'
,
(
a:l1
==
a:l2
?
''
:
(
a:l1
.
','
.
a:l2
)),
a:cmd
,
a:bang
,
a:args
)
endfunction
endfunction
function
!
s:lod_map
(
map
,
names
,
prefix
)
function
!
s:lod_map
(
map
,
names
,
with_prefix
,
prefix
)
call
s:lod
(
a:names
,
[
'ftdetect'
,
'after/ftdetect'
,
'plugin'
,
'after/plugin'
])
call
s:lod
(
a:names
,
[
'ftdetect'
,
'after/ftdetect'
,
'plugin'
,
'after/plugin'
])
call
s:dobufread
(
a:names
)
call
s:dobufread
(
a:names
)
let
extra
=
''
let
extra
=
''
...
@@ -508,14 +511,19 @@ function! s:lod_map(map, names, prefix)
...
@@ -508,14 +511,19 @@ function! s:lod_map(map, names, prefix)
endif
endif
let
extra
.=
nr2char
(
c
)
let
extra
.=
nr2char
(
c
)
endwhile
endwhile
if
v
:
count
call
feedkeys
(
v
:
count
,
'n'
)
if
a:with_prefix
endif
let
prefix
=
v
:
count ?
v
:
count
:
''
call
feedkeys
(
'"'
.
v
:
register
,
'n'
)
let
prefix
.=
'"'
.
v
:
register
.
a:prefix
if
mode
(
1
)
==
'no'
if
mode
(
1
)
==
'no'
call
feedkeys
(
v
:
operator
)
if
v
:
operator
==
'c'
let
prefix
=
"\<esc>"
.
prefix
endif
let
prefix
.=
v
:
operator
endif
endif
call
feedkeys
(
a:prefix
.
substitute
(
a:map
,
'^<Plug>'
,
"\<Plug>"
,
''
)
.
extra
)
call
feedkeys
(
prefix
,
'n'
)
endif
call
feedkeys
(
substitute
(
a:map
,
'^<Plug>'
,
"\<Plug>"
,
''
)
.
extra
)
endfunction
endfunction
function
!
plug#
(
repo
,
...)
function
!
plug#
(
repo
,
...)
...
@@ -568,8 +576,7 @@ function! s:infer_properties(name, repo)
...
@@ -568,8 +576,7 @@ function! s:infer_properties(name, repo)
let
fmt
=
get
(
g
:,
'plug_url_format'
,
'https://git::@github.com/%s.git'
)
let
fmt
=
get
(
g
:,
'plug_url_format'
,
'https://git::@github.com/%s.git'
)
let
uri
=
printf
(
fmt
,
repo
)
let
uri
=
printf
(
fmt
,
repo
)
endif
endif
let
dir
=
s:dirpath
(
fnamemodify
(
join
([
g:plug_home
,
a:name
],
'/'
),
':p'
)
)
return
{
'dir'
:
s:dirpath
(
g:plug_home
.
'/'
.
a:name
),
'uri'
:
uri
}
return
{
'dir'
:
dir
,
'uri'
:
uri
}
endif
endif
endfunction
endfunction
...
@@ -723,10 +730,14 @@ function! s:prepare(...)
...
@@ -723,10 +730,14 @@ function! s:prepare(...)
call
s:job_abort
()
call
s:job_abort
()
if
s:switch_in
()
if
s:switch_in
()
normal
q
if
b:plug_preview
==
1
pc
endif
endif
enew
else
call
s:new_window
()
call
s:new_window
()
endif
nnoremap
<
silent
>
<
buffer
>
q
:
if
b:plug_preview
==
1
<
bar
>
pc
<
bar
>
endif
<
bar
>
bd
<
cr
>
nnoremap
<
silent
>
<
buffer
>
q
:
if
b:plug_preview
==
1
<
bar
>
pc
<
bar
>
endif
<
bar
>
bd
<
cr
>
if
a:0
==
0
if
a:0
==
0
call
s:finish_bindings
()
call
s:finish_bindings
()
...
@@ -739,7 +750,7 @@ function! s:prepare(...)
...
@@ -739,7 +750,7 @@ function! s:prepare(...)
for
k
in
[
'<cr>'
,
'L'
,
'o'
,
'X'
,
'd'
,
'dd'
]
for
k
in
[
'<cr>'
,
'L'
,
'o'
,
'X'
,
'd'
,
'dd'
]
execute
'silent! unmap <buffer>'
k
execute
'silent! unmap <buffer>'
k
endfor
endfor
setlocal
buftype
=
nofile bufhidden
=
wipe nobuflisted
noswapfile
nowrap cursorline modifiable
setlocal
buftype
=
nofile bufhidden
=
wipe nobuflisted no
list
no
swapfile
nowrap cursorline modifiable
setf
vim
-
plug
setf
vim
-
plug
if
exists
(
'g:syntax_on'
)
if
exists
(
'g:syntax_on'
)
call
s:syntax
()
call
s:syntax
()
...
@@ -806,7 +817,15 @@ function! s:do(pull, force, todo)
...
@@ -806,7 +817,15 @@ function! s:do(pull, force, todo)
if
type
==
s:TYPE
.
string
if
type
==
s:TYPE
.
string
if
spec
.
do
[
0
]
==
':'
if
spec
.
do
[
0
]
==
':'
call
s:load_plugin
(
spec
)
call
s:load_plugin
(
spec
)
try
execute spec
.
do
[
1
:]
execute spec
.
do
[
1
:]
catch
let
error
=
v
:
exception
endtry
if
!
s:plug_window_exists
()
cd
-
throw
'Warning: vim-plug was terminated by the post-update hook of '
.
name
endif
else
else
let
error
=
s:bang
(
spec
.
do
)
let
error
=
s:bang
(
spec
.
do
)
endif
endif
...
@@ -933,8 +952,9 @@ function! s:update_impl(pull, force, args) abort
...
@@ -933,8 +952,9 @@ function! s:update_impl(pull, force, args) abort
call
s:warn
(
'echom'
,
'[vim-plug] Update Neovim for parallel installer'
)
call
s:warn
(
'echom'
,
'[vim-plug] Update Neovim for parallel installer'
)
endif
endif
let
python
=
(
has
(
'python'
)
||
has
(
'python3'
))
&&
(!
s:nvim
||
has
(
'vim_starting'
))
let
use_job
=
s:nvim
||
s:vim8
let
ruby
=
has
(
'ruby'
)
&&
!
s:nvim
&&
(
v
:
version
>=
703
||
v
:
version
==
702
&& has
(
'patch374'
))
&&
!(
s:is_win
&& has
(
'gui_running'
))
&&
s:check_ruby
()
let
python
=
(
has
(
'python'
)
||
has
(
'python3'
))
&&
!
use_job
let
ruby
=
has
(
'ruby'
)
&&
!
use_job &&
(
v
:
version
>=
703
||
v
:
version
==
702
&& has
(
'patch374'
))
&&
!(
s:is_win
&& has
(
'gui_running'
))
&&
s:check_ruby
()
let
s:update
=
{
let
s:update
=
{
\
'start'
:
reltime
(),
\
'start'
:
reltime
(),
...
@@ -944,7 +964,7 @@ function! s:update_impl(pull, force, args) abort
...
@@ -944,7 +964,7 @@ function! s:update_impl(pull, force, args) abort
\
'pull'
:
a:pull
,
\
'pull'
:
a:pull
,
\
'force'
:
a:force
,
\
'force'
:
a:force
,
\
'new'
:
{},
\
'new'
:
{},
\
'threads'
:
(
python
||
ruby
||
s:nvim
)
? min
([
len
(
todo
),
threads
])
:
1
,
\
'threads'
:
(
python
||
ruby
||
use_job
)
? min
([
len
(
todo
),
threads
])
:
1
,
\
'bar'
:
''
,
\
'bar'
:
''
,
\
'fin'
:
0
\
'fin'
:
0
\
}
\
}
...
@@ -958,7 +978,7 @@ function! s:update_impl(pull, force, args) abort
...
@@ -958,7 +978,7 @@ function! s:update_impl(pull, force, args) abort
\
'--depth 1'
.
(
s:git_version_requirement
(
1
,
7
,
10
)
?
' --no-single-branch'
:
''
)
:
''
\
'--depth 1'
.
(
s:git_version_requirement
(
1
,
7
,
10
)
?
' --no-single-branch'
:
''
)
:
''
" Python version requirement (>= 2.7)
" Python version requirement (>= 2.7)
if
python &&
!
has
(
'python3'
)
&&
!
ruby
&&
!
s:nvim
&&
s:update
.
threads
>
1
if
python &&
!
has
(
'python3'
)
&&
!
ruby
&&
!
use_job
&&
s:update
.
threads
>
1
redir
=>
pyv
redir
=>
pyv
silent
python import platform; print platform
.
python_version
()
silent
python import platform; print platform
.
python_version
()
redir
END
redir
END
...
@@ -999,6 +1019,12 @@ function! s:update_impl(pull, force, args) abort
...
@@ -999,6 +1019,12 @@ function! s:update_impl(pull, force, args) abort
endtry
endtry
else
else
call
s:update_vim
()
call
s:update_vim
()
while
use_job && has
(
'vim_starting'
)
sleep
100
m
if
s:update
.
fin
break
endif
endwhile
endif
endif
endfunction
endfunction
...
@@ -1014,7 +1040,7 @@ function! s:update_finish()
...
@@ -1014,7 +1040,7 @@ function! s:update_finish()
if
s:switch_in
()
if
s:switch_in
()
call
append
(
3
,
'- Updating ...'
)
|
4
call
append
(
3
,
'- Updating ...'
)
|
4
for
[
name
,
spec
]
in
items
(
filter
(
copy
(
s:update
.
all
),
'index(s:update.errors, v:key) < 0 && (s:update.force || s:update.pull || has_key(s:update.new, v:key))'
))
for
[
name
,
spec
]
in
items
(
filter
(
copy
(
s:update
.
all
),
'index(s:update.errors, v:key) < 0 && (s:update.force || s:update.pull || has_key(s:update.new, v:key))'
))
let
pos
=
s:logpos
(
name
)
let
[
pos
,
_
]
=
s:logpos
(
name
)
if
!
pos
if
!
pos
continue
continue
endif
endif
...
@@ -1056,7 +1082,13 @@ function! s:update_finish()
...
@@ -1056,7 +1082,13 @@ function! s:update_finish()
redraw
redraw
endfor
endfor
silent
4
d
_
silent
4
d
_
try
call
s:do
(
s:update
.
pull
,
s:update
.
force
,
filter
(
copy
(
s:update
.
all
),
'index(s:update.errors, v:key) < 0 && has_key(v:val, "do")'
))
call
s:do
(
s:update
.
pull
,
s:update
.
force
,
filter
(
copy
(
s:update
.
all
),
'index(s:update.errors, v:key) < 0 && has_key(v:val, "do")'
))
catch
call
s:warn
(
'echom'
,
v
:
exception
)
call
s:warn
(
'echo'
,
''
)
return
endtry
call
s:finish
(
s:update
.
pull
)
call
s:finish
(
s:update
.
pull
)
call
setline
(
1
,
'Updated. Elapsed time: '
.
split
(
reltimestr
(
reltime
(
s:update
.
start
)))[
0
]
.
' sec.'
)
call
setline
(
1
,
'Updated. Elapsed time: '
.
split
(
reltimestr
(
reltime
(
s:update
.
start
)))[
0
]
.
' sec.'
)
call
s:switch_out
(
'normal! gg'
)
call
s:switch_out
(
'normal! gg'
)
...
@@ -1064,12 +1096,16 @@ function! s:update_finish()
...
@@ -1064,12 +1096,16 @@ function! s:update_finish()
endfunction
endfunction
function
!
s:job_abort
()
function
!
s:job_abort
()
if
!
s:nvim
||
!
exists
(
's:jobs'
)
if
(!
s:nvim
&&
!
s:vim8
)
||
!
exists
(
's:jobs'
)
return
return
endif
endif
for
[
name
,
j
]
in
items
(
s:jobs
)
for
[
name
,
j
]
in
items
(
s:jobs
)
if
s:nvim
silent
!
call
jobstop
(
j
.
jobid
)
silent
!
call
jobstop
(
j
.
jobid
)
elseif
s:vim8
silent
!
call
job_stop
(
j
.
jobid
)
endif
if
j
.
new
if
j
.
new
call
s:system
(
'rm -rf '
.
s:shellesc
(
g:plugs
[
name
].
dir
))
call
s:system
(
'rm -rf '
.
s:shellesc
(
g:plugs
[
name
].
dir
))
endif
endif
...
@@ -1077,59 +1113,88 @@ function! s:job_abort()
...
@@ -1077,59 +1113,88 @@ function! s:job_abort()
let
s:jobs
=
{}
let
s:jobs
=
{}
endfunction
endfunction
" When a:event == 'stdout', data = list of strings
function
!
s:last_non_empty_line
(
lines
)
" When a:event == 'exit', data = returncode
let
len
=
len
(
a:lines
)
function
!
s:job_handler
(
job_id
,
data
,
event
)
abort
for
idx
in
range
(
len
)
if
!
s:plug_window_exists
()
" plug window closed
let
line
=
a:lines
[
len
-
idx
-1
]
return
s:job_abort
()
if
!
empty
(
line
)
return
line
endif
endif
endfor
return
''
endfunction
if
a:event
==
'stdout'
function
!
s:job_out_cb
(
self
,
data
)
abort
let
complete
=
empty
(
a:data
[
-1
])
let
self
=
a:self
let
lines
=
map
(
filter
(
a:data
,
'len(v:val) > 0'
),
'split(v:val, "[\r\n]")[-1]'
)
let
data
=
remove
(
self
.
lines
,
-1
)
.
a:data
let
lines
=
map
(
split
(
data
,
"\n"
,
1
),
'split(v:val, "\r", 1)[-1]'
)
call
extend
(
self
.
lines
,
lines
)
call
extend
(
self
.
lines
,
lines
)
let
self
.
result
=
join
(
self
.
lines
,
"\n"
)
if
!
complete
call
remove
(
self
.
lines
,
-1
)
endif
" To reduce the number of buffer updates
" To reduce the number of buffer updates
let
self
.
tick
=
get
(
self
,
'tick'
,
-1
)
+
1
let
self
.
tick
=
get
(
self
,
'tick'
,
-1
)
+
1
if
self
.
tick % len
(
s:jobs
)
==
0
if
!
self
.
running
||
self
.
tick % len
(
s:jobs
)
==
0
call
s:log
(
self
.
new
?
'+'
:
'*'
,
self
.
name
,
self
.
result
)
let
bullet
=
self
.
running ?
(
self
.
new
?
'+'
:
'*'
)
:
(
self
.
error ?
'x'
:
'-'
)
let
result
=
self
.
error ?
join
(
self
.
lines
,
"\n"
)
:
s:last_non_empty_line
(
self
.
lines
)
call
s:log
(
bullet
,
self
.
name
,
result
)
endif
endif
elseif
a:event
==
'exit'
endfunction
let
self
.
running
=
0
if
a:data
!=
0
function
!
s:job_exit_cb
(
self
,
data
)
abort
let
self
.
error
=
1
let
a:self
.
running
=
0
endif
let
a:self
.
error
=
a:data
!=
0
call
s:reap
(
self
.
name
)
call
s:reap
(
a:
self
.
name
)
call
s:tick
()
call
s:tick
()
endfunction
function
!
s:job_cb
(
fn
,
job
,
ch
,
data
)
if
!
s:plug_window_exists
()
" plug window closed
return
s:job_abort
()
endif
endif
call
call
(
a:fn
,
[
a:job
,
a:data
])
endfunction
function
!
s:nvim_cb
(
job_id
,
data
,
event
)
abort
return
a:event
==
'stdout'
?
\
s:job_cb
(
's:job_out_cb'
,
self
,
0
,
join
(
a:data
,
"\n"
))
:
\
s:job_cb
(
's:job_exit_cb'
,
self
,
0
,
a:data
)
endfunction
endfunction
function
!
s:spawn
(
name
,
cmd
,
opts
)
function
!
s:spawn
(
name
,
cmd
,
opts
)
let
job
=
{
'name'
:
a:name
,
'running'
:
1
,
'error'
:
0
,
'lines'
:
[],
'result'
:
''
,
let
job
=
{
'name'
:
a:name
,
'running'
:
1
,
'error'
:
0
,
'lines'
:
[
''
],
\
'new'
:
get
(
a:opts
,
'new'
,
0
),
\
'new'
:
get
(
a:opts
,
'new'
,
0
)
}
\
'on_stdout'
:
function
(
's:job_handler'
),
\
'on_exit'
:
function
(
's:job_handler'
),
\
}
let
s:jobs
[
a:name
]
=
job
let
s:jobs
[
a:name
]
=
job
let
argv
=
add
(
s:is_win
?
[
'cmd'
,
'/c'
]
:
[
'sh'
,
'-c'
],
\
has_key
(
a:opts
,
'dir'
)
?
s:with_cd
(
a:cmd
,
a:opts
.
dir
)
:
a:cmd
)
if
s:nvim
if
s:nvim
let
argv
=
[
'sh'
,
'-c'
,
call
extend
(
job
,
{
\
(
has_key
(
a:opts
,
'dir'
)
?
s:with_cd
(
a:cmd
,
a:opts
.
dir
)
:
a:cmd
)
]
\
'on_stdout'
:
function
(
's:nvim_cb'
),
\
'on_exit'
:
function
(
's:nvim_cb'
),
\
})
let
jid
=
jobstart
(
argv
,
job
)
let
jid
=
jobstart
(
argv
,
job
)
if
jid
>
0
if
jid
>
0
let
job
.
jobid
=
jid
let
job
.
jobid
=
jid
else
else
let
job
.
running
=
0
let
job
.
running
=
0
let
job
.
error
=
1
let
job
.
error
=
1
let
job
.
result
=
jid
<
0
?
'sh is not executable'
:
let
job
.
lines
=
[
jid
<
0
? argv
[
0
].
' is not executable'
:
\
'Invalid arguments (or job table is full)'
\
'Invalid arguments (or job table is full)'
]
endif
elseif
s:vim8
let
jid
=
job_start
(
argv
,
{
\
'out_cb'
:
function
(
's:job_cb'
,
[
's:job_out_cb'
,
job
]),
\
'exit_cb'
:
function
(
's:job_cb'
,
[
's:job_exit_cb'
,
job
]),
\
'out_mode'
:
'raw'
\
})
if
job_status
(
jid
)
==
'run'
let
job
.
jobid
=
jid
else
let
job
.
running
=
0
let
job
.
error
=
1
let
job
.
lines
=
[
'Failed to start job'
]
endif
endif
else
else
let
params
=
has_key
(
a:opts
,
'dir'
)
?
[
a:cmd
,
a:opts
.
dir
]
:
[
a:cmd
]
let
params
=
has_key
(
a:opts
,
'dir'
)
?
[
a:cmd
,
a:opts
.
dir
]
:
[
a:cmd
]
let
job
.
result
=
call
(
's:system'
,
params
)
let
job
.
lines
=
s:lines
(
call
(
's:system'
,
params
)
)
let
job
.
error
=
v
:
shell_error
!=
0
let
job
.
error
=
v
:
shell_error
!=
0
let
job
.
running
=
0
let
job
.
running
=
0
endif
endif
...
@@ -1144,7 +1209,9 @@ function! s:reap(name)
...
@@ -1144,7 +1209,9 @@ function! s:reap(name)
endif
endif
let
s:update
.
bar
.=
job
.
error ?
'x'
:
'='
let
s:update
.
bar
.=
job
.
error ?
'x'
:
'='
call
s:log
(
job
.
error ?
'x'
:
'-'
,
a:name
,
empty
(
job
.
result
)
?
'OK'
:
job
.
result
)
let
bullet
=
job
.
error ?
'x'
:
'-'
let
result
=
job
.
error ?
join
(
job
.
lines
,
"\n"
)
:
s:last_non_empty_line
(
job
.
lines
)
call
s:log
(
bullet
,
a:name
,
empty
(
result
)
?
'OK'
:
result
)
call
s:bar
()
call
s:bar
()
call
remove
(
s:jobs
,
a:name
)
call
remove
(
s:jobs
,
a:name
)
...
@@ -1163,23 +1230,31 @@ endfunction
...
@@ -1163,23 +1230,31 @@ endfunction
function
!
s:logpos
(
name
)
function
!
s:logpos
(
name
)
for
i
in
range
(
4
,
line
(
'$'
))
for
i
in
range
(
4
,
line
(
'$'
))
if
getline
(
i
)
=~
#
'^[-+x*] '
.
a:name
.
':'
if
getline
(
i
)
=~
#
'^[-+x*] '
.
a:name
.
':'
return
i
for
j
in
range
(
i
+
1
,
line
(
'$'
))
if
getline
(
j
)
!~
'^ '
return
[
i
,
j
-
1
]
endif
endif
endfor
endfor
return
[
i
,
i
]
endif
endfor
return
[
0
,
0
]
endfunction
endfunction
function
!
s:log
(
bullet
,
name
,
lines
)
function
!
s:log
(
bullet
,
name
,
lines
)
if
s:switch_in
()
if
s:switch_in
()
let
pos
=
s:logpos
(
a:name
)
let
[
b
,
e
]
=
s:logpos
(
a:name
)
if
pos
>
0
if
b
>
0
silent
execute p
os
'd _'
silent
execute p
rintf
(
'%d,%d d _'
,
b
,
e
)
if
pos
>
winheight
(
'.'
)
if
b
>
winheight
(
'.'
)
let
pos
=
4
let
b
=
4
endif
endif
else
else
let
pos
=
4
let
b
=
4
endif
endif
call
append
(
pos
-
1
,
s:format_message
(
a:bullet
,
a:name
,
a:lines
))
" FIXME For some reason, nomodifiable is set after :d in vim8
setlocal
modifiable
call
append
(
b
-
1
,
s:format_message
(
a:bullet
,
a:name
,
a:lines
))
call
s:switch_out
()
call
s:switch_out
()
endif
endif
endfunction
endfunction
...
@@ -1193,12 +1268,12 @@ endfunction
...
@@ -1193,12 +1268,12 @@ endfunction
function
!
s:tick
()
function
!
s:tick
()
let
pull
=
s:update
.
pull
let
pull
=
s:update
.
pull
let
prog
=
s:progress_opt
(
s:nvim
)
let
prog
=
s:progress_opt
(
s:nvim
||
s:vim8
)
while
1
" Without TCO
,
Vim stack
is
bound
to
explode
while
1
" Without TCO
,
Vim stack
is
bound
to
explode
if
empty
(
s:update
.
todo
)
if
empty
(
s:update
.
todo
)
if
empty
(
s:jobs
)
&&
!
s:update
.
fin
if
empty
(
s:jobs
)
&&
!
s:update
.
fin
let
s:update
.
fin
=
1
call
s:update_finish
()
call
s:update_finish
()
let
s:update
.
fin
=
1
endif
endif
return
return
endif
endif
...
@@ -1218,10 +1293,10 @@ while 1 " Without TCO, Vim stack is bound to explode
...
@@ -1218,10 +1293,10 @@ while 1 " Without TCO, Vim stack is bound to explode
let
fetch_opt
=
(
has_tag &&
!
empty
(
globpath
(
spec
.
dir
,
'.git/shallow'
)))
?
'--depth 99999999'
:
''
let
fetch_opt
=
(
has_tag &&
!
empty
(
globpath
(
spec
.
dir
,
'.git/shallow'
)))
?
'--depth 99999999'
:
''
call
s:spawn
(
name
,
printf
(
'git fetch %s %s 2>&1'
,
fetch_opt
,
prog
),
{
'dir'
:
spec
.
dir
})
call
s:spawn
(
name
,
printf
(
'git fetch %s %s 2>&1'
,
fetch_opt
,
prog
),
{
'dir'
:
spec
.
dir
})
else
else
let
s:jobs
[
name
]
=
{
'running'
:
0
,
'
result'
:
'Already installed'
,
'error'
:
0
}
let
s:jobs
[
name
]
=
{
'running'
:
0
,
'
lines'
:
[
'Already installed'
]
,
'error'
:
0
}
endif
endif
else
else
let
s:jobs
[
name
]
=
{
'running'
:
0
,
'
result'
:
error
,
'error'
:
1
}
let
s:jobs
[
name
]
=
{
'running'
:
0
,
'
lines'
:
s:lines
(
error
)
,
'error'
:
1
}
endif
endif
else
else
call
s:spawn
(
name
,
call
s:spawn
(
name
,
...
@@ -1507,10 +1582,12 @@ class Plugin(object):
...
@@ -1507,10 +1582,12 @@ class Plugin(object):
return
result
[
-1
]
return
result
[
-1
]
def
update
(
self
):
def
update
(
self
):
match
=
re
.
compile
(
r
'git::?@'
)
actual_uri
=
self
.
repo_uri
()
actual_uri
=
re
.
sub
(
match
,
''
,
self
.
repo_uri
())
expect_uri
=
self
.
args
[
'uri'
]
expect_uri
=
re
.
sub
(
match
,
''
,
self
.
args
[
'uri'
])
regex
=
re
.
compile
(
r
'^(?:\w+://)?(?:[^@/]*@)?([^:/]*(?::[0-9]*)?)[:/](.*?)(?:\.git)?/?$'
)
if
actual_uri
!=
expect_uri
:
ma
=
regex
.
match
(
actual_uri
)
mb
=
regex
.
match
(
expect_uri
)
if
ma
is
None or mb
is
None or
ma
.
groups
()
!=
mb
.
groups
():
msg
=
[
''
,
msg
=
[
''
,
'Invalid URI: {0}'
.
format
(
actual_uri
),
'Invalid URI: {0}'
.
format
(
actual_uri
),
'Expected {0}'
.
format
(
expect_uri
),
'Expected {0}'
.
format
(
expect_uri
),
...
@@ -1669,6 +1746,11 @@ function! s:update_ruby()
...
@@ -1669,6 +1746,11 @@ function! s:update_ruby()
end
end
end
end
def compare_git_uri
a
,
b
regex
=
%
r
{
^
(
?
:
\
w
+:
//
)
?
(
?
:[
^@
/]*@)?([^:/
]
*
(
?
::[
0-9
]
*
)
?
)[:
/](.*?)(?:\.git)?/
?$
}
regex
.
match
(
a
).
to_a
.
drop
(
1
)
==
regex
.
match
(
b
).
to_a
.
drop
(
1
)
end
require
'thread'
require
'thread'
require
'fileutils'
require
'fileutils'
require
'timeout'
require
'timeout'
...
@@ -1770,9 +1852,8 @@ function! s:update_ruby()
...
@@ -1770,9 +1852,8 @@ function! s:update_ruby()
main
=
Thread
.
current
main
=
Thread
.
current
threads
=
[]
threads
=
[]
watcher
=
Thread
.
new
{
watcher
=
Thread
.
new
{
while
VIM
::
evaluate
(
'getchar(1)'
)
require
'io/console'
#
>=
Ruby
1
.
9
sleep
0
.
1
nil until IO
.
console
.
getch
==
3
.
chr
end
mtx
.
synchronize
do
mtx
.
synchronize
do
running
=
false
running
=
false
threads
.
each
{
|
t
|
t
.
raise Interrupt
}
threads
.
each
{
|
t
|
t
.
raise Interrupt
}
...
@@ -1810,7 +1891,7 @@ function! s:update_ruby()
...
@@ -1810,7 +1891,7 @@ function! s:update_ruby()
else
else
[
false
,
[
data
.
chomp
,
"PlugClean required."
].
join
(
$/
)]
[
false
,
[
data
.
chomp
,
"PlugClean required."
].
join
(
$/
)]
end
end
elsif
current_uri
.
sub
(
/git::?@/
,
''
)
!=
uri
.
sub
(
/git::?@/
,
''
)
elsif
!
compare_git_uri
(
current_uri
,
uri
)
[
false
,
[
"Invalid URI: #{current_uri}"
,
[
false
,
[
"Invalid URI: #{current_uri}"
,
"Expected: #{uri}",
"Expected: #{uri}",
"PlugClean required."].join($/)]
"PlugClean required."].join($/)]
...
@@ -1856,9 +1937,15 @@ function! s:progress_bar(line, bar, total)
...
@@ -1856,9 +1937,15 @@ function! s:progress_bar(line, bar, total)
endfunction
endfunction
function
!
s:compare_git_uri
(
a
,
b
)
function
!
s:compare_git_uri
(
a
,
b
)
let
a
=
substitute
(
a:a
,
'git:\{1,2}@'
,
''
,
''
)
" See `git help clone'
let
b
=
substitute
(
a:b
,
'git:\{1,2}@'
,
''
,
''
)
" https:// [user@] github.com[:port] / junegunn/vim-plug [.git]
return
a
==
#
b
" [git@] github.com[:port] : junegunn/vim-plug [.git]
" file:// / junegunn/vim-plug [/]
" / junegunn/vim-plug [/]
let
pat
=
'^\%(\w\+://\)\='
.
'\%([^@/]*@\)\='
.
'\([^:/]*\%(:[0-9]*\)\=\)'
.
'[:/]'
.
'\(.\{-}\)'
.
'\%(\.git\)\=/\?$'
let
ma
=
matchlist
(
a:a
,
pat
)
let
mb
=
matchlist
(
a:b
,
pat
)
return
ma
[
1
:
2
]
==
# mb
[
1
:
2
]
endfunction
endfunction
function
!
s:format_message
(
bullet
,
name
,
message
)
function
!
s:format_message
(
bullet
,
name
,
message
)
...
...
.vim/vimrc
View file @
72367329
...
@@ -244,7 +244,10 @@ autocmd BufNewFile * nested call FindInPath(expand('<afile>'))
...
@@ -244,7 +244,10 @@ autocmd BufNewFile * nested call FindInPath(expand('<afile>'))
" From http://vi.stackexchange.com/questions/2358/
" From http://vi.stackexchange.com/questions/2358/
autocmd FileType * exec("setlocal dictionary+=".$HOME."/.vim/dictionary/".expand('<amatch>'))
autocmd FileType * exec("setlocal dictionary+=".$HOME."/.vim/dictionary/".expand('<amatch>'))
set completeopt+=menuone,noinsert
set completeopt+=menuone
if has('patch-7.4-775')
set completeopt+=noinsert
endif
set complete+=k
set complete+=k
runtime local/$CONFLOCAL.vim
runtime local/$CONFLOCAL.vim
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment