Problem:
Because of -u NORC, vim-patch.sh would hang on my machine due to one of my
plugins (start package) waiting for prompt input.
Solution:
- Use -u NONE instead to disable all plugins.
- Also use -n to disable swapfiles. These changes only apply to the --headless
nvim instances used to process things.
This makes it possible to restore the working directory of :terminal
buffers when reading those buffers from a session file.
Fixes#11288
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
* scripts/vim-patch.sh: factor out _set_tokens_and_tags
This allows for caching `$tokens` and `$vim_commit_tags`, which will
become relevant with the next commit adding
`list_missing_previous_vimpatches_for_patch`.
The following script is cut out from vim-patch.sh:
```sh
#!/usr/bin/env bash
BASENAME=vim-patch.sh
printf "\nInstructions:
To port one of the above patches to Neovim, execute this script with the patch revision as argument and follow the instructions, e.g.
'%s -p v8.0.1234', or '%s -P v8.0.1234'
NOTE: Please port the _oldest_ patch if you possibly can.
You can use '%s -l path/to/file' to see what patches are missing for a file.
" "${BASENAME}" "${BASENAME}" "${BASENAME}"
```
The code itself should be correct, but shellcheck 0.7.0 says:
```
In /tmp/test.sh line 5:
printf "\nInstructions:
^-- SC2183: This format string has 2 variables, but is passed 3 arguments.
```
We also had a problem before that a `%s` was added, but the accompanying
argument to printf was forgotten. Using a heredoc is less error-prone, since we
insert variables directly.
Replace "src/nvim/" => "src/".
Replace ".*/.vim-src/" => "".
This allows to use tab completion based on existing files in Neovim's
source, or via .vim-src.
Previously you would have to typically remove the "nvim/" part manually
yourself.
Align matchit.vim with upstream Vim. We don't want to maintain a fork of
matchit.vim; our small changes should be sent to
https://github.com/chrisbra/matchit
* scripts/vim-patch.sh: fall back to "origin" for remote
Without this, it would fail e.g. with a locally cloned repo of Neovim.
* scripts/vim-patch.sh: assign_commit_details: handle tags [ci skip]
- Handle "v" prefix from Vim tags.
- Exit in case of error therein already.
* -l/-L: pass through git-log options [ci skip]
This allows for only listing missing patches for a given Vim file:
> scripts/vim-patch.sh -L src/edit.c
`vim-patch.sh -L`: down to ~0.5s from ~85s.
`vim-patch.sh -l`: down to ~6s from ~90s.
% diff old new:
193c193
< • v8.0.1366
---
> • v8.0.1367
354d353
< • v8.0.1738
This is due to duplicate tags for Vim commits
(https://github.com/vim/vim/issues/4510):
- vim/vim@1ad022a9b: tagged as v8.0.1367, v8.0.1366
- vim/vim@5d69da462: tagged as v8.0.1739, v8.0.1738