Previously, `:PlugDiff` would show every new commit to a plugin's git
repo. This makes sense for the general case, but makes less sense when a
plugin lives in a subdirectory of the repo (and is configured with the
'rtp' option). This makes it difficult to determine which commits relate
to the plugin and which are unrelated.
This changes `:PlugDiff` to filter out any commits outside of the 'rtp'
folder.
Some consequences:
* This does not change the `:PlugUpdate` UI. This means `:PlugUpdate`
may pull down non-plugin commits, display that it has updated the
plugin, and then `:PlugDiff` will show no updates (since such commits
fall out of the 'rtp' path).
* It also means there's no UI to revert non-plugin updates, as they
don't show up in `:PlugDiff`.
Git v2.8 introduced support for parallel fetching of submodules. This
can result in a substantial performance boost when performing a "git
submodule update" in a repository with many submodules, potentially
further magnified when updating submodules recursively.
This commit introduces a check on the Git version to see if it supports
parallel submodule fetching. If it does, we add the '--jobs=N' argument
to our call to "git submodule update", where N is g:plug_threads or the
vim-plug default of 16.
This allows you to override the default behavior of `o' or `<cr>'
binding in PlugDiff window.
e.g.
" Move to preview window
autocmd! FileType vim-plug nmap <buffer> o <plug>(plug-preview)<c-w>P
Close#749Close#768
`writefile()` always output LF without CR each lines.
But batch file on Windows needs CR and LF, at end of lines.
And if the path of home directory contains non-ASCII
characters like Japanese username (e.g. `C:\Users\太郎`),
batch file without CR can't be executed correctly.
Close#635Close#668Close#539
Use a temporary batchfile for :!, system(), and jobs and run it in cmd.exe.
This bypasses Vim/Neovim issues in Windows and reduces the need to set more options.
Also, s:shellesc_cmd works in a batchfile only.
Set shellredir for system() in Windows
$SHELL sets the default value of 'shell' (see :h 'shell').
This affects shellredir but cmd.exe requires '>%s 2>&1'.
When loading 'deoplete.nvim' for the 2nd time during InsertEnter
manually, the `s:dobufread` (or `s:lod` itself) prevents it to work
properly - likely because the plugin gets resourced.
Maybe there could be a way to force this (and reload plugins always),
but by default it seems to make sense to skip already loaded plugins.
Checking out a branch or tag may not succeed if there is a path entry
with the same name. This commit appends -- to git checkout commands to
clarify that we're not referring to a file or a directory.
Close#602
Installer is not synchronous when started on VimEnter since
has('vim_starting') returns 0 in that case. We needed a way to make the
installer synchronous.
Related: #574