Update vim plug

This commit is contained in:
Danila Fedorin 2022-06-03 15:48:13 -07:00
parent 6c8524d0e7
commit cedb3a802a

View File

@ -116,6 +116,10 @@ let s:TYPE = {
let s:loaded = get(s:, 'loaded', {}) let s:loaded = get(s:, 'loaded', {})
let s:triggers = get(s:, 'triggers', {}) let s:triggers = get(s:, 'triggers', {})
function! s:is_powershell(shell)
return a:shell =~# 'powershell\(\.exe\)\?$' || a:shell =~# 'pwsh\(\.exe\)\?$'
endfunction
function! s:isabsolute(dir) abort function! s:isabsolute(dir) abort
return a:dir =~# '^/' || (has('win32') && a:dir =~? '^\%(\\\|[A-Z]:\)') return a:dir =~# '^/' || (has('win32') && a:dir =~? '^\%(\\\|[A-Z]:\)')
endfunction endfunction
@ -238,6 +242,8 @@ function! plug#begin(...)
let home = s:path(s:plug_fnamemodify(s:plug_expand(a:1), ':p')) let home = s:path(s:plug_fnamemodify(s:plug_expand(a:1), ':p'))
elseif exists('g:plug_home') elseif exists('g:plug_home')
let home = s:path(g:plug_home) let home = s:path(g:plug_home)
elseif has('nvim')
let home = stdpath('data') . '/plugged'
elseif !empty(&rtp) elseif !empty(&rtp)
let home = s:path(split(&rtp, ',')[0]) . '/plugged' let home = s:path(split(&rtp, ',')[0]) . '/plugged'
else else
@ -263,7 +269,7 @@ function! s:define_commands()
endif endif
if has('win32') if has('win32')
\ && &shellslash \ && &shellslash
\ && (&shell =~# 'cmd\(\.exe\)\?$' || &shell =~# 'powershell\(\.exe\)\?$') \ && (&shell =~# 'cmd\(\.exe\)\?$' || s:is_powershell(&shell))
return s:err('vim-plug does not support shell, ' . &shell . ', when shellslash is set.') return s:err('vim-plug does not support shell, ' . &shell . ', when shellslash is set.')
endif endif
if !has('nvim') if !has('nvim')
@ -346,7 +352,7 @@ function! plug#end()
endif endif
let lod = { 'ft': {}, 'map': {}, 'cmd': {} } let lod = { 'ft': {}, 'map': {}, 'cmd': {} }
if exists('g:did_load_filetypes') if get(g:, 'did_load_filetypes', 0)
filetype off filetype off
endif endif
for name in g:plugs_order for name in g:plugs_order
@ -401,7 +407,7 @@ function! plug#end()
for [map, names] in items(lod.map) for [map, names] in items(lod.map)
for [mode, map_prefix, key_prefix] in for [mode, map_prefix, key_prefix] in
\ [['i', '<C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']] \ [['i', '<C-\><C-O>', ''], ['n', '', ''], ['v', '', 'gv'], ['o', '', '']]
execute printf( execute printf(
\ '%snoremap <silent> %s %s:<C-U>call <SID>lod_map(%s, %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), mode != 'i', key_prefix) \ mode, map, map_prefix, string(map), string(names), mode != 'i', key_prefix)
@ -503,7 +509,7 @@ if s:is_win
let batchfile = s:plug_tempname().'.bat' let batchfile = s:plug_tempname().'.bat'
call writefile(s:wrap_cmds(a:cmd), batchfile) call writefile(s:wrap_cmds(a:cmd), batchfile)
let cmd = plug#shellescape(batchfile, {'shell': &shell, 'script': 0}) let cmd = plug#shellescape(batchfile, {'shell': &shell, 'script': 0})
if &shell =~# 'powershell\(\.exe\)\?$' if s:is_powershell(&shell)
let cmd = '& ' . cmd let cmd = '& ' . cmd
endif endif
return [batchfile, cmd] return [batchfile, cmd]
@ -935,7 +941,7 @@ function! s:prepare(...)
call s:new_window() call s:new_window()
endif endif
nnoremap <silent> <buffer> q :if b:plug_preview==1<bar>pc<bar>endif<bar>bd<cr> nnoremap <silent> <buffer> q :call <SID>close_pane()<cr>
if a:0 == 0 if a:0 == 0
call s:finish_bindings() call s:finish_bindings()
endif endif
@ -957,6 +963,15 @@ function! s:prepare(...)
endif endif
endfunction endfunction
function! s:close_pane()
if b:plug_preview == 1
pc
let b:plug_preview = -1
else
bd
endif
endfunction
function! s:assign_name() function! s:assign_name()
" Assign buffer name " Assign buffer name
let prefix = '[Plugins]' let prefix = '[Plugins]'
@ -975,7 +990,7 @@ function! s:chsh(swap)
set shell=sh set shell=sh
endif endif
if a:swap if a:swap
if &shell =~# 'powershell\(\.exe\)\?$' || &shell =~# 'pwsh$' if s:is_powershell(&shell)
let &shellredir = '2>&1 | Out-File -Encoding UTF8 %s' let &shellredir = '2>&1 | Out-File -Encoding UTF8 %s'
elseif &shell =~# 'sh' || &shell =~# 'cmd\(\.exe\)\?$' elseif &shell =~# 'sh' || &shell =~# 'cmd\(\.exe\)\?$'
set shellredir=>%s\ 2>&1 set shellredir=>%s\ 2>&1
@ -1195,7 +1210,8 @@ function! s:update_impl(pull, force, args) abort
normal! 2G normal! 2G
silent! redraw silent! redraw
let s:clone_opt = [] " Set remote name, overriding a possible user git config's clone.defaultRemoteName
let s:clone_opt = ['--origin', 'origin']
if get(g:, 'plug_shallow', 1) if get(g:, 'plug_shallow', 1)
call extend(s:clone_opt, ['--depth', '1']) call extend(s:clone_opt, ['--depth', '1'])
if s:git_version_requirement(1, 7, 10) if s:git_version_requirement(1, 7, 10)
@ -2216,7 +2232,7 @@ function! plug#shellescape(arg, ...)
let script = get(opts, 'script', 1) let script = get(opts, 'script', 1)
if shell =~# 'cmd\(\.exe\)\?$' if shell =~# 'cmd\(\.exe\)\?$'
return s:shellesc_cmd(a:arg, script) return s:shellesc_cmd(a:arg, script)
elseif shell =~# 'powershell\(\.exe\)\?$' || shell =~# 'pwsh$' elseif s:is_powershell(shell)
return s:shellesc_ps1(a:arg) return s:shellesc_ps1(a:arg)
endif endif
return s:shellesc_sh(a:arg) return s:shellesc_sh(a:arg)
@ -2268,7 +2284,7 @@ function! s:system(cmd, ...)
return system(a:cmd) return system(a:cmd)
endif endif
let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"shell": &shell, "script": 0})')) let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"shell": &shell, "script": 0})'))
if &shell =~# 'powershell\(\.exe\)\?$' if s:is_powershell(&shell)
let cmd = '& ' . cmd let cmd = '& ' . cmd
endif endif
else else
@ -2605,26 +2621,34 @@ function! s:preview_commit()
let sha = matchstr(getline('.'), '^ \X*\zs[0-9a-f]\{7,9}') let sha = matchstr(getline('.'), '^ \X*\zs[0-9a-f]\{7,9}')
if empty(sha) if empty(sha)
return let name = matchstr(getline('.'), '^- \zs[^:]*\ze:$')
if empty(name)
return
endif
let title = 'HEAD@{1}..'
let command = 'git diff --no-color HEAD@{1}'
else
let title = sha
let command = 'git show --no-color --pretty=medium '.sha
let name = s:find_name(line('.'))
endif endif
let name = s:find_name(line('.'))
if empty(name) || !has_key(g:plugs, name) || !isdirectory(g:plugs[name].dir) if empty(name) || !has_key(g:plugs, name) || !isdirectory(g:plugs[name].dir)
return return
endif endif
if exists('g:plug_pwindow') && !s:is_preview_window_open() if exists('g:plug_pwindow') && !s:is_preview_window_open()
execute g:plug_pwindow execute g:plug_pwindow
execute 'e' sha execute 'e' title
else else
execute 'pedit' sha execute 'pedit' title
wincmd P wincmd P
endif endif
setlocal previewwindow filetype=git buftype=nofile nobuflisted modifiable setlocal previewwindow filetype=git buftype=nofile bufhidden=wipe nobuflisted modifiable
let batchfile = '' let batchfile = ''
try try
let [sh, shellcmdflag, shrd] = s:chsh(1) let [sh, shellcmdflag, shrd] = s:chsh(1)
let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && git show --no-color --pretty=medium '.sha let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && '.command
if s:is_win if s:is_win
let [batchfile, cmd] = s:batchfile(cmd) let [batchfile, cmd] = s:batchfile(cmd)
endif endif
@ -2750,9 +2774,9 @@ function! s:snapshot(force, ...) abort
1 1
let anchor = line('$') - 3 let anchor = line('$') - 3
let names = sort(keys(filter(copy(g:plugs), let names = sort(keys(filter(copy(g:plugs),
\'has_key(v:val, "uri") && !has_key(v:val, "commit") && isdirectory(v:val.dir)'))) \'has_key(v:val, "uri") && isdirectory(v:val.dir)')))
for name in reverse(names) for name in reverse(names)
let sha = s:git_revision(g:plugs[name].dir) let sha = has_key(g:plugs[name], 'commit') ? g:plugs[name].commit : s:git_revision(g:plugs[name].dir)
if !empty(sha) if !empty(sha)
call append(anchor, printf("silent! let g:plugs['%s'].commit = '%s'", name, sha)) call append(anchor, printf("silent! let g:plugs['%s'].commit = '%s'", name, sha))
redraw redraw