Commit Graph

679 Commits

Author SHA1 Message Date
Jaehwang Jerry Jung 68488fd7a3 Fix unexpected cursor movement on on-demand imap loading (#1147)
`i_CTRL-O` may change the cursor position in an unexpected way.
For example, when `autoindent` is set, the user will expect that
`i  asdf<CR><C-O>` will place the cursor right below `a`.
However, `<C-O>` moves the cursor to the first column of line 2.

Expected:
```
  asdf
  █
```
Actual:
```
  asdf
█
```

Therefore, it's desirable to use `i_CTRL-\_CTRL-O`, the variant of
`i_CTRL-O` that does not move the cursor.
2021-12-06 14:26:19 +09:00
Junegunn Choi 93a115718f Migrate to GitHub Actions
Close #1128

TODO:
- Neovim stale/unstable
  - https://github.com/junegunn/vim-plug/runs/4422576984?check_suite_focus=true#step:3:238
- Vim 7.4
  - Ruby parallel installer
  - Python parallel installer
2021-12-05 23:42:23 +09:00
Gibson Fahnestock c9971346bb Set --origin=origin for git clone commands (#1117)
Otherwise if the user has set a `git config clone.defaultRemoteName
foo`, then vim-plug will fail to detect the latest upstream changes as
the remote will be incorrect, and will repeatedly state that the plugin
repo needs to be cleaned.
2021-08-31 17:14:37 +09:00
Matúš Ferech 66e038d443 Add --create-dirs option to flatpak installation instrictions (#1126) 2021-08-29 17:20:58 -04:00
Gerald fc2813ef44 Recognize pwsh(.exe) as PowerShell (#1090)
Fix #1065
2021-04-30 16:29:04 +09:00
Rosen Stoyanov cffcfe150b Add GV.vim-style q mapping (#827)
* Add GV.vim-style q mapping

* Fix test cases

Co-authored-by: Junegunn Choi <junegunn.c@gmail.com>
2021-02-08 16:23:21 +09:00
mattn 8b45742540 Disable credential.helper for git fetch (#1046) 2020-12-14 14:30:44 +09:00
Dylan 5430b6213a XDG_DATA_HOME respecting powershell script (#1042)
This version supports Powershell 5.1 (shipped in the latest install of Windows 10)
2020-12-03 22:46:45 +09:00
Junegunn Choi 2f4e28161e Set empty credential.helper only when git 2.0 or above is available
Fix #1031
2020-11-03 22:55:17 +09:00
Subhaditya Nath ab940f624a Fix syntax matches (#1028)
Previously, the highlight of the `------------` line below the `Last Update:`
changed from `plugH2` on the whole line to `plugDash` on the first `-`
when the cursor moved over it and went below it. This commit updates the
`syn match` commands a bit to correct that issue.

Close #1027
2020-10-23 00:05:18 +09:00
mattn c44422460e Disable credential-helper (#1026) 2020-10-20 20:48:58 +09:00
Junegunn Choi d16273e072 Code cleanup 2020-09-08 22:39:56 +09:00
mattn b17f477585 Reduce the number of git processes for faster operation (#937)
* Make git operation faster

When using many plugins, vim-plug may spawn many git processes for them.

* get revision
* get branch
* get remote.origin.url

This is too heavy. especially on Windows. This change get revision, branch,
remote origin url directly from .git directory.

This idea is borrowed from @k-takata's commit for minpac.

Executing external programs is slow especially on Windows.
Read the information directly from .git directory.

* Copied from devel branch of minpac

* Avoid errors

* Show errors

* Use empty()

* Use empty string instead of v:null

* Check spec.branch is empty

* Use branch

* Fix branch and revision

* Remove l: and use s:trim

* Fix and simplify s:git_get_remote_origin_url

* Do not cut off commit hash for correctness

Co-authored-by: Junegunn Choi <junegunn.c@gmail.com>
2020-09-08 22:13:21 +09:00
Junegunn Choi 4a3e85e878 Test Neovim on Bionic
https://github.com/neovim/neovim/pull/12802
2020-09-08 17:27:20 +09:00
Junegunn Choi a9bf5bd722 "non-master branch" -> "non-default branch" 2020-08-30 02:05:50 +09:00
Junegunn Choi e8892a9bef Update test cases 2020-08-30 02:05:50 +09:00
Junegunn Choi 49be3a8ca9 Use branch name of origin if not specified 2020-08-30 02:05:50 +09:00
Junegunn Choi 95ef5e8d5f PlugDiff should be able to find pending updates
# We need the name of the default branch of origin
  git checkout some-tag-or-commit
  git log ..origin/master
2020-08-30 02:05:50 +09:00
Junegunn Choi 6fa6475fee User-specified branch name should not be empty 2020-08-30 02:05:50 +09:00
Yasuhiro Matsumoto 588467903b Use branch 2020-08-30 02:05:50 +09:00
Yasuhiro Matsumoto 5706f70f8f Add missing function 2020-08-30 02:05:50 +09:00
Yasuhiro Matsumoto 4a3c5e7ac2 Support non-master default branch 2020-08-30 02:05:50 +09:00
David Barnett d53d5a976f Add |:Plug| tag in help docs (#951) 2020-08-29 10:43:05 +09:00
timm bangma 13ea184015 Update README.md (Powershell Install One-Liner) (#1003)
A tidy one liner for the powershell install command. 
Much like the unix one 😄
2020-08-08 18:25:59 -04:00
Raphael Martin Schindler 457bebcd30 Fix typos (#1001)
Add missing 'the' in some phrases and sentences.
Use "Easy", not "Easier", because there are no comparisons in the same sentence or phrase.
2020-08-02 11:52:56 -04:00
Jan Edmund Lazo b2133cf2ec Support Windows shell without extension (#997)
Close https://github.com/junegunn/vim-plug/issues/995

Vim supports omitting file extensions for its option.
I omitted the file extension in Neovim's documentation for powershell.
2020-07-20 07:59:29 -04:00
Jan Edmund Lazo c319036396 Fix #961 tests for Vim 7.4 (#990)
Use build stages to group related jobs (Vim, Neovim, Vim 7.4).
Use "silent" to avoid hit-enter prompt when redirecting output.
Always run async and sync tests to debug runtime errors. 
Vim 7.4.0052 (Ubuntu Trusty) does not allow dynamic keys in inline dictionary.

https://docs.travis-ci.com/user/build-stages/
2020-07-06 01:07:42 -04:00
Wolf Honore 3aa3b5a4e8 Report when PlugClean fails to remove a directory (#985) 2020-06-25 20:56:47 +09:00
Junegunn Choi 01aab60ade Fix PowerShell instruction for Neovim
Close #976
2020-06-08 23:48:55 +09:00
Jan Edmund Lazo 6583b99032 :Plug throws error for invalid option (#961)
":Plug" performs a quick type check for most options so that the user can check which plugin has invalid configuration on startup. This does not prevent errors, resulting from modiying "g:plugs" after running "plug#end()". Plugin repo is added to the error message for convenience. Most users should expect no noticeable difference in startup time.

Close: #930
Related: #936
2020-06-03 07:34:44 -04:00
Gianluca Recchia 71c41fccf5 Comply with the XDG protocol in the README (#966) 2020-05-06 19:57:50 +09:00
Stefano 8846bc6af1 Add Flatpak installation instructions to README.md (#846)
Tested with https://flathub.org/apps/details/io.neovim.nvim
2020-05-05 21:54:46 -04:00
Harshad Srinivasan 0862a76fdd Updated readme (#967)
Co-authored-by: Harshad Srinivasan <harshad.srinivasan@lmi3d.com>
2020-05-05 21:28:53 -04:00
Junegunn Choi 54d837fa54 Load plugin before running funcref hook
Fix #964
Fix https://github.com/junegunn/fzf.vim/issues/1008
2020-05-03 16:59:22 +09:00
Jan Edmund Lazo e718868e85 Use list type for command in s:spawn() (#959)
This allows Neovim to bypass the shell and run git directly.
Vim still needs the shell because of how commands are collapsed on Windows and because setting the job's working directory via "cwd" does not work.

Refactored s:clone_opt to a list to make this possible.
2020-04-11 10:49:47 -04:00
Jan Edmund Lazo 668bc0fd2a Support list type command for s:system to reduce batchfiles on Windows (#956)
* s:system supports list type for command

Objective is to reduce batchfiles on Windows.
List type gives more flexibility on s:system()
on how to pass the shell command to the builtin system().
If system() supports list type for command
and there is no working directory, run it directly on system().
Targets Neovim only.
Else, convert the list to an escaped command
so that the user's shell can execute it.
Neovim's system() does not support working directory system()
so consider refactoring s:system to use a synchronous job.

* Do not escape simple shell arguments

Regexp taken from vim-fugitive s:shellesc().

* Set shellredir on Windows

Prep to use list type for command  passed to s:system() within s:spawn()

* Internalize shellredir for s:spawn

s:spawn needs to redirect stderr to stdout for jobs callbacks
but s:system (for old Vim versions) sets shellredir if needed.

* Leverage job api for cwd and stderr

Vim/Neovim support stderr redirection and support error callbacks.
Vim 8 and Neovim can set a job's working directory via 'cwd' key
but it cannot be used as is on Vim because CI fails for the Vim release in Ubuntu Bionic and the latest Vim release.
2020-04-10 15:40:28 -04:00
Henré Botha c3b6b7c297 Clarify error message (#931)
The existing error message printed when plug#end() is called without
calling plug#begin() doesn't make the dependence on plug#begin()
obvious; I had to go digging in the vim-plug code to discover what I'd
done wrong. This attempts to clarify the error a bit, to make it more
obvious to a user.
2020-01-27 22:48:16 +09:00
Jan Edmund Lazo 2f5f74e5e6 Validate last buffer line of g:plug_window (#927)
Close #926

This fix shouldn't be necessary
because vim-plug's buffer should always have 4 lines
but a buffer can be modified in some cases
before nvim 0.4.0 and vim v8.1.1360.
2020-01-05 19:59:59 -05:00
Jan Edmund Lazo b2aa5724c0 Use iconv() only if +iconv is enabled. (#921)
TODO: Avoid iconv() for commands using ascii only.
2019-12-27 22:35:49 -05:00
Jan Edmund Lazo 359ce90b9b Encode batchfile in current codepage. (#913)
Changing chcp breaks cmd.exe if switching from multi-byte to 65001.
cmd.exe depends on codepage to parse batchfile
so batchfile cannot have unicode characters.
Target powershell if unicode support is required.

User should fix their terminal font to display unicode characters.
Terminal programs can only use Wide String APIs.
For Vim, this requires +multi_byte feature and `set encoding=utf-8`
in the user's vimrc.
Neovim always defaults to `set encoding=utf-8`.

https://dev.to/mattn/please-stop-hack-chcp-65001-27db
2019-12-11 08:28:49 -05:00
Jan Edmund Lazo e6ed2e5658 Do not show git signatures in diff window (#918)
git v2.10.0 adds "log.showSignature" config
so that "git log --show-signature" runs by default.
Changing the commit format via "--pretty" does not prevent the signature
from appearing.
Only "--no-show-signature" prevents this.

Close #728
2019-12-09 23:26:56 -05:00
Jan Edmund Lazo 897ce5e2fa Set/unset shellslash on jobstart (#917) 2019-12-07 01:05:57 -05:00
Jan Edmund Lazo d2f8ca2dbc Detect shellslash on Windows (#916)
Warn user if shellslash and shell are incompatible.

Set/unset shellslash for file functions on Windows. Based on https://github.com/junegunn/fzf/blob/16fc6862a89eef0f02d32ab8b365887522719da8/plugin/fzf.vim#L30-L107

Support shellescape for git-bash
Windows user may not set shellslash but wish to use git-bash.
This requires custom shellescape for sh,bash shells
because builtin shellescape() depends on shellslash.
Tested on Vim
2019-12-05 19:34:41 -05:00
Jan Edmund Lazo 93b702512d Fix shellescaping for git refs and batchfile on Windows (#909)
It was using s:esc() which escapes spaces with a backslash.
This does not work on Windows.

&shell could be escaped on because of spaces.
See patch-8.0.1455 and related 8.1.x patches that address this
for $SHELL on Unix and git-bash on Windows.

Related #852, #908 
Close #890
2019-12-01 21:01:17 -05:00
Jan Edmund Lazo 68fef9c2fd Delete batchfile only if it exists (#901)
Close #900
2019-11-03 21:10:37 -05:00
Daniel Hahler eee50c55bf Use s:path with s:rtp always (#694)
Having a trailing slash with &rtp entries is problematic when removing
them later: if loading on demand is used, s:reorg_rtp might fail to
remove the previous runtime paths.

Test case has been using maktaba (which triggers unsetting s:middle in
s:reorg_rtp), but because of the trailing slashes being used, the
previous rtp entries were not removed.
2019-10-20 21:52:29 -04:00
Jan Edmund Lazo 96046c01c3 Detect WSL (Neovim only) (#887)
`has('wsl')` works since Neovim v0.3.0 (https://github.com/neovim/neovim/commit/5d2dd2ebe28c31f223d77355a8f9d40adfb41c82)

Fix: https://github.com/junegunn/vim-plug/issues/821
2019-10-14 13:38:26 -04:00
Jan Edmund Lazo fcfd5b7e1f Use chcp only if sed is in PATH (#891)
chcp parsing is fragile because of the system locale. There's no convenient way to parse out the codepage value without regex just by relying on cmd.exe builtins and default binaries in PATH.

Vim can be used to parse chcp output but it requires an additional `system` per `s:system` and `chcp` can change within the same console so caching the value won't work on the terminal.

Powershell supports regex but it has a long startup even with `-NoProfile` so running it when `&shell` is not powershell slows down `:PlugInstall` more.
2019-10-14 07:55:41 -04:00
Jan Edmund Lazo 849b76be90 Fix chcp parsing for the current codepage (#888)
Relying on delimiters or token positions is fragile.
Last value of 'chcp' output is always a number.
2019-10-03 21:19:11 -04:00
Roman Frołow ff97806e50 Add path for Neovim on Windows (#789)
Neovim provides `stdpath` to abstract the directory paths that it uses based on the OS. It respects `XDG` specification on Linux and uses `%LOCALAPPDATA%` on Windows. 

1. Use `stdpath('data') . '/plugged'` for plugin directory.
2. Use `stdpath('config')` for user-config directory. This is `~/.config/nvim/` on Linux and `%LOCALAPPDATA%\nvim\` on Windows.
2019-09-28 20:30:50 -04:00