| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We currently enable the OSC 52 clipboard provider by setting g:clipboard
when a list of conditions are met, one of which is that $SSH_TTY must be
set. We include this condition because often OSC 52 is not the best
clipboard provider, so if there are "local" providers available Nvim
should prefer those over OSC 52.
However, if no other providers are available, Nvim should use OSC 52
even when $SSH_TTY is not set. When a user is in an SSH session then the
checks for the other clipboard providers will still (typically) fail, so
OSC 52 continues to be enabled by default in SSH sessions.
This is marked as a breaking change because there are some cases where
OSC 52 wasn't enabled before and is now (or vice versa).
|
| |
|
|
|
|
|
| |
Problem:
tmux clipboard not used when tmux is a daemon and $TMUX is empty.
Solution:
If `tmux list-buffers` succeeds, use tmux clipboard.
|
| | |
|
| |
|
|
|
|
|
|
| |
Setting `vim.g.clipboard = false` will use the builtin clipboard
providers.
Closes https://github.com/neovim/neovim/issues/27698.
Co-authored-by: Gregory Anders <greg@gpanders.com>
|
| |
|
| |
Fix #25466
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
If clipboard job exits by signal, the exit code is >=128:
https://github.com/neovim/neovim/commit/939d9053bdf2f56286640c581eb4e2ff5a856540
xclip 0.13 often exits with code 143, which spams unhelpful messages:
clipboard: error invoking xclip: Waiting for selection requests,
Control-C to quit Waiting for selection request number 1
Solution:
Don't show a warning if the clipboard tool exit code is >=128.
Fixes: #7054
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
"tmux 3.2a" (output from "tmux -V") is not parsed easily.
Solution:
With `strict=false`, discard everything before the first digit.
- rename Semver => Version
- rename vim.version.version() => vim.version._version()
- rename matches() => has()
- remove `opts` from cmp()
|
| | |
|
| |
|
|
| |
Building tmux from source uses a 'next-' prefix, so account for that.
Also handle failures to match more gracefully.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
xclip is not actively maintained compared to xsel, and it has a bug:
$ touch a
$ xsel -ib < a
$ xsel -ob
$ xclip -o -selection clipboard
Error: target STRING not available
Years ago, the situation was reversed.
We originally preferred xsel 46bd3c0f77f282b93ca1307c011562243c394306
but then swapped to xclip 799d9c32157c841c3b8d355fa98a5ace435eef07
to work around https://github.com/neovim/neovim/issues/7237#issuecomment-443440633
Solution:
Prefer xsel again.
close #20862
ref #9302
ref https://github.com/astrand/xclip/issues/38
|
| |
|
|
|
|
| |
Since version 3.2 tmux has had the ability to read/write buffer contents
from/to the system clipboard, if the underlying terminal emulator
supports it. Enable this feature when we can detect that tmux supports
it.
|
| |
|
| |
fixes #14967
|
| |
|
| |
Context: https://github.com/neovim/neovim/pull/14848#discussion_r663203173
|
| |
|
|
|
|
|
|
|
|
|
| |
Block copy and paste from system-clipboard currently breaks formatting.
This fixes it.
The bug occurs because system-clipboard doesn't contain information
about what mode the copy was made.
Simple solution to this is we keep a cache of copy we last made along
with mode information. If system-clipboard returns the cache we apply
the mode information that we know about that cache.
|
| |
|
|
| |
Termux - Android terminal emulator
Link - https://termux.com/
|
| |
|
| |
Fixes #13189
|
| |
|
| |
fixes #12768
|
| |
|
|
|
|
|
|
|
| |
(#12124)
On some versions of Windows, WSL is unable to execute symbolic links to
Windows executables (microsoft/WSL#3999). As a workaround for that problem
this changes to use resolve() on WSL if win32yank was a symbolic link.
fixes #12113.
|
| |
|
|
|
| |
stderr is needed to get error messages in case of failure, and
job handler expects it to be open.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
test_registers.vim can fail even if a clipboard manager is running.
If a clipboard manager is not running, this test always fails with xclip.
Use xsel as a workaround.
https://github.com/astrand/xclip/issues/20 suggests closing stdout
when sending input via stdin.
Environment
- Ubuntu Xenial
- Vim 7.4 (any app with broken clipboard code will do)
- Neovim nightly
Steps to reproduce:
0. Start the clipboard manager.
1. Open a file in Vim on Linux.
Vim should have +clipboard enabled.
'set clipboard='
2. Yank some text to the clipboard register.
3. Quit Vim.
4. Run 'cd /path/to/neovim/repo/'
5. Run 'make oldtest'.
Do not run any individual tests.
They likely pass with or without this fix.
Before fix: test_registers.vim can fail.
After fix: test_registers.vim always passes.
Close https://github.com/neovim/neovim/issues/7958
https://wiki.ubuntu.com/ClipboardPersistence#The_state_of_things
|
| |
|
|
|
| |
Fixes regression due to signal being reported with exit status.
ref #10573 939d9053bdf2f56
ref https://github.com/neovim/neovim/issues/7054#issuecomment-520282429
|
| |
|
|
|
| |
Value of 1 cannot be used, because users might set that in their vimrc
to _disable_ a provider, which would confuse :checkhealth and has().
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
`wl-copy` by default tries to determine the mime type of a copied bit of
text. From the [readme](https://github.com/bugaevc/wl-clipboard):
> wl-copy automatically infers the type of the copied content by running
> xdg-mime(1) on it.
So copying a Ruby script from Nvim may store it in the Wayland clipboard
as mime-type `application/x-ruby`.
This is a small reproduction without Nvim:
$ cat test.rb
#!/usr/bin/env ruby
puts 'hello world'
$ cat test.rb | wl-copy
$ wl-paste --list-types
application/x-ruby
This commit fixes that by telling wl-copy that all text copied from
Nvim has the mime type `text/plain`.
$ cat test.rb | wl-copy --type text/plain
$ wl-paste --list-types
text/plain;charset=utf-8
|
| |
|
| |
Avoids ~30-60 ms startup cost for users of clipboard=unnamed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR #9304 added support for functions in clipboard providers. As part of
the PR I meant to move two checks in the provider code out of an if
statement into separate statements and adding additional checks for
g:clipboard attributes - as it turns out the code is wrong and it does
not implement additional checks while it adds two conditions that make
very little sense
type(g:clipboard['copy']) #isnot# v:t_func
what would make sense would be something along the lines of
type(g:clipboard['copy']['+']) #isnot# v:t_func
but might not be what we want either, so I'm reverting this.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Up to now g:clipboard["copy"] only supported string values invoked as
system commands.
This commit enables the use of VimL functions instead. The function
signatures are the same as in provider/clipboard.vim. A clipboard
provider is expected to store and return a list of lines (i.e. the text)
and a register type (as seen in setreg()).
cache_enabled is ignored if "copy" is provided by a VimL function.
|
| |
|
|
|
|
|
|
|
|
|
| |
The order was swapped in #4150 to prefer `xsel` but there wasn't a clear
explanation. Meanwhile, `xsel` has been neglected upstream.
Let's trying preferring `xclip` again, we've had a few reports of
problems with `xsel`.
closes #7237
ref #5853
ref #7449
|
| |
|
| |
Win32 allows omitting the `.exe` extension, but WSL does not.
|
| |
|
| |
Fixes #9213
|
| |
|
| |
`pbcopy` writes to the clipboard, it should not be used to sanity-check the clipboard.
|
| |
|
|
|
|
|
|
| |
On some versions of macOS, pbcopy doesn't work in tmux <2.6
https://superuser.com/q/231130
Fallback to tmux in that case.
Add a healthcheck for this scenario.
|
| | |
|
| |
|
|
|
|
|
| |
This change exposed a memory issue with buffered channels, possibly
involving GC. Revert until it has been fixed.
This reverts commit 0de019b6a65c6dd5141b7e002343df3689065ce7.
|
| | |
|
| |
|
|
|
|
|
|
| |
- Show hint only once per session.
- provider#clipboard#Call(): prevent recursion
- provider#clear_stderr(): use has_key(), because :silent! is still
captured by :redir.
closes #7184
|
| |
|
|
| |
Also fix `:help foo` highlighting in health.vim
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
redir_write():
- This is a "batch" operation which was not yet covered by
start_batch_changes()
adjust_clipboard_name():
- msg() and friends during :redir will, of course, cause redir_write()
to try to capture that message, which causes recursion.
- EMSG() here is trouble: if it interrupts :redir it is a mess.
Rather than deal with the mess, show a non-error message.
closes #7182
closes #7184
closes #7183
ref #6048
ref #7032
|
| |
|
|
| |
Closes #7054
|
| |
|
|
| |
Closes #7039
|
| |
|
|
|
|
| |
TODO: handle errors in the `get`. systemlist() should take an
options dictionary like jobstart(), which may specify a stderr handler.
References #6565
|
| | |
|
| |
|
|
| |
Closes #6029
|
| | |
|
| | |
|
| | |
|
| |
|
| |
Fixes #5926.
|
| |
|
|
|
|
| |
Old versions of `xsel` do not support some required features.
Fall back to `xclip` then.
Closes #5853
|
| | |
|