Instead of deciding provider status in eval_has_provider, move the
decision to the provider Vim scripts.
Previously, provider loading worked as follows:
1. eval_has_provider() verified provider availability by searching for
the provider#providername#Call function and cached this verificaion as a static
variable for some providers
2. providers short-circuited on loading to prevent the definition of the
Call function (with the exception of the node provider that did not)
This commit changes the expected interface between nvim and its
providers to facilitate provider reloading, by splitting the
verification of the provider from the availability of the Call function.
eval_has_provider() now checks for a provider#providername#enabled
variable. It is up to the provider script to set this to 0 or 1
accordingly. eval_call_provider() remains unchanged.
All providers hosting a Call function were updated to respect this.
The clipboard provider now has a Reload function to reload the
provider.
This is clearer/more explicit and avoids potential mismatch between what unibilium thinks vs what Nvim thinks.
For reference: e3b16d6219/uniutil.c (L203-L211)
Patch 8.1.1379 includes a change to a test, added in Patch 8.1.0815.
Patch 8.1.0815 includes runtime doc changes to Blob.
Neovim does not support Blobs yet.
Problem: Warning for file no longer available is repeated every time Vim is
focused. (Brian Armstrong)
Solution: Only give the message once. (closesvim/vim#4748)
674e2bde6e
It should be done for timeouts only (-1, not != -1), but the job is
stopped via `:bwipeout!` already also in that case.
Fixes E900 with timing out tests:
"test_xxx.tlog" "test_xxx.tlog" [New] 183L, 13375C written
Error detected while processing function Main:
line 37:
E900: Invalid channel id================================================================================
Problem: unreliable types for complete function arguments
Solution: fix argument type for functions w/ unreliable type conversion(Ozaki Kiichi)
vim/vim#2993
Problem: Too many curly braces.
Solution: Remove curly braces where they are not needed. (Hirohito Higashi,
closesvim/vim#3982)
abab0b0fdd
Neovim code style requires the opposite.
Add curly braces to minimize lint errors when applying Vim patches.
Problem: When user tries to exit with CTRL-C message is confusing.
Solution: Only mention ":qa!" when there is a changed buffer. (closesvim/vim#4163)
a84a3dd663
vim-patch:8.1.1052: test for CTRL-C message sometimes fails
Problem: test for CTRL-C message sometimes fails
Solution: Make sure there are no changed buffers.
553e5a5c56
vim-patch:8.1.1053: warning for missing return statement
Problem: Warning for missing return statement. (Dominique Pelle)
Solution: Add return statement.
d6c3f1fa2b
vim-patch:8.0.1753: various warnings from a static analyser
Problem: Various warnings from a static analyser
Solution: Remove unneeded conditions.
1c17ffa461
- Check shada_pack_xx() result, abort on failure.
- Use xcalloc() to zero-initialize `wms`, fixes below ASAN failure.
ASAN failure (running vim_spec.lua in a loop):
../src/nvim/shada.c:1773:13: runtime error: load of value 224, which is not a valid value for type 'bool'
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../src/nvim/shada.c:1773:13
Adding an explicit check just before the ASAN failed line:
case kSDItemRegister: {
if (*((int *)(void *)&entry.data.reg.is_unnamed) != 1
&& *((int *)(void *)&entry.data.reg.is_unnamed) != 0) {
abort();
(gdb) p entry.data.reg
+p entry.data.reg
$5 = {name = 49 '1', type = kMTLineWise, contents = 0x60200000c250, is_unnamed = true, contents_size = 1, width = 0, additional_data = 0x0}
(gdb) p *((uint8_t *)(void *)&entry.data.reg.is_unnamed)
+p *((uint8_t *)(void *)&entry.data.reg.is_unnamed)
$7 = 2049