Merge pull request #21651 from neovim/backport-21451-to-release-0.8

[Backport release-0.8] fix(clipboard): show provider warning when not during batch changes
This commit is contained in:
zeertzjq
2023-01-05 09:47:13 +08:00
committed by GitHub
2 changed files with 49 additions and 5 deletions

View File

@@ -6376,7 +6376,7 @@ static yankreg_T *adjust_clipboard_name(int *name, bool quiet, bool writing)
}
if (!eval_has_provider("clipboard")) {
if (batch_change_count == 1 && !quiet
if (batch_change_count <= 1 && !quiet
&& (!clipboard_didwarn || (explicit_cb_reg && !redirecting()))) {
clipboard_didwarn = true;
// Do NOT error (emsg()) here--if it interrupts :redir we get into

View File

@@ -106,8 +106,53 @@ describe('clipboard', function()
basic_register_test()
end)
it('`:redir @+>` with invalid g:clipboard shows exactly one error #7184',
function()
it('using "+ in Normal mode with invalid g:clipboard always shows error', function()
insert('a')
command("let g:clipboard = 'bogus'")
feed('"+yl')
screen:expect([[
^a |
{0:~ }|
{0:~ }|
clipboard: No provider. Try ":checkhealth" or ":h clipboard". |
]])
feed('"+p')
screen:expect([[
a^a |
{0:~ }|
{0:~ }|
clipboard: No provider. Try ":checkhealth" or ":h clipboard". |
]])
end)
it('using clipboard=unnamedplus with invalid g:clipboard shows error once', function()
insert('a')
command("let g:clipboard = 'bogus'")
command('set clipboard=unnamedplus')
feed('yl')
screen:expect([[
^a |
{0:~ }|
{0:~ }|
clipboard: No provider. Try ":checkhealth" or ":h clipboard". |
]])
feed(':<CR>')
screen:expect([[
^a |
{0:~ }|
{0:~ }|
: |
]])
feed('p')
screen:expect([[
a^a |
{0:~ }|
{0:~ }|
: |
]])
end)
it('`:redir @+>` with invalid g:clipboard shows exactly one error #7184', function()
command("let g:clipboard = 'bogus'")
feed_command('redir @+> | :silent echo system("cat CONTRIBUTING.md") | redir END')
screen:expect([[
@@ -118,8 +163,7 @@ describe('clipboard', function()
]])
end)
it('`:redir @+>|bogus_cmd|redir END` + invalid g:clipboard must not recurse #7184',
function()
it('`:redir @+>|bogus_cmd|redir END` + invalid g:clipboard must not recurse #7184', function()
command("let g:clipboard = 'bogus'")
feed_command('redir @+> | bogus_cmd | redir END')
screen:expect{grid=[[