With the old behavior, if a GUI makes a blocking request that requires user
interaction (like nvim_input()), it would not get any screen updates.
The client, not nvim, should decide how to handle notifications during a
pending request. If an rplugin wants to avoid async calls while a sync call is
busy, it likely wants to avoid processing async calls while another async call
also is handled as well.
This may break the expectation of some existing rplugins. For compatibility,
remote/define.vim reimplements the old behavior. Clients can opt-out by
specifying `sync=urgent`.
- Legacy hosts should be updated to use `sync=urgent`. They could add a flag
indicating which async methods are always safe to call and which must wait
until the main loop returns.
- New hosts can expose the full asyncness, they don't need to offer both
behaviors.
ref #6532
ref #1398d83868fe90
Dispense with the FuncUndefined/CmdUndefined quasi-optimization.
If there are no rplugins, plugin/rplugin.vim takes less than 1ms.
Closes#5821Closes#6250
Helped-by: Qiming zhao <chemzqm@gmail.com>
`:CheckHealth nvim` would always report an outdated manifest if symlinks were
used, because the manifest file contains unresolved paths that get compared
against resolved paths.
Now we resolve paths before they get written to the manifest file.
:silent does not silence this message, even :redir does not consume it.
But execute() _does_ consume it, which interferes with the current
implementation of health.vim. It's prudent to avoid it in any case, even
if the implementation of health.vim changes in the future.
According to the vim helpfile:
> fnamemodify({fname}, {mods})
> ...
> Note: Environment variables don't work in {fname}, use
> expand() first then.
So this causes issues if your $MYVIMRC contains environment variables
(e.g. $XDG_CONFIG_HOME)
Before, running Nvim in a directory containing a Python module `neovim`,
or one that is imported by it or a plugin, will load that module and not
the system one. So Nvim might be tricked into running arbitrary scripts
from the current working directory.
Fixes#1665Fixes#2530
I could not find a reference to NVIM_PYTHON_PYTHON_LOG anywhere, and
python-client looks for NVIM_PYTHON_LOG_FILE.
~/.nvimlog appears to be hardcoded and enabled by default. This would
need to be adjusted when this changes.
Issue: #1537
Running the :UpdateRemotePlugins command will show an ugly, unhelpful
error when no plugins were found. This change has neovim print an error message
and does not attempt to start the python-client which requires at least one
plugin.