aboutsummaryrefslogtreecommitdiff
path: root/runtime/autoload/provider/clipboard.vim
Commit message (Collapse)AuthorAge
* feat(clipboard)!: use OSC 52 as fallback clipboard provider (#31730)Gregory Anders2024-12-31
| | | | | | | | | | | | | | | 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).
* fix(clipboard): tmux clipboard depends on $TMUX #31268wzy2024-12-03
| | | | | | | Problem: tmux clipboard not used when tmux is a daemon and $TMUX is empty. Solution: If `tmux list-buffers` succeeds, use tmux clipboard.
* feat(clipboard): try cygutils, clip on Windows #30215wzy2024-09-02
|
* feat: allow opting in to builtin clipboard providers (#28083)dundargoc2024-03-28
| | | | | | | | 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(clipboard): don't pass --foreground to wl-copy (#25481)zeertzjq2023-10-03
| | | Fix #25466
* fix(clipboard): ignore exit caused by signal #23378Kai Ting2023-07-16
| | | | | | | | | | | | | 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
* feat(vim.version): more coercion with strict=falseJustin M. Keyes2023-03-20
| | | | | | | | | | | | | 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()
* feat(clipboard): added wayclip support (#21091)XDream82022-11-18
|
* fix(clipboard): update version regex pattern (#21012)Gregory Anders2022-11-09
| | | | Building tmux from source uses a 'next-' prefix, so account for that. Also handle failures to match more gracefully.
* fix(clipboard): prefer xsel #20918wzy2022-11-06
| | | | | | | | | | | | | | | | | | | | | | 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
* feat(clipboard): copy to system clipboard in tmux when supported (#20936)Gregory Anders2022-11-04
| | | | | | 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.
* fixup(clipboard): Fix error not properly handled #14984Shadman2021-07-11
| | | fixes #14967
* fixup(clipboard): Use case matching #14962Shadman2021-07-02
| | | Context: https://github.com/neovim/neovim/pull/14848#discussion_r663203173
* BugFix(clipboard): Fix block paste not working properlyshadmansaleh2021-07-01
| | | | | | | | | | | 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.
* added support for termux-clipboard : clipboard.vim (#14244)Aditya Alok2021-03-29
| | | | Termux - Android terminal emulator Link - https://termux.com/
* Fix clipboard provider detection (#13190)necabo2020-10-29
| | | Fixes #13189
* g:clipboard: allow command given as a list #12775DDoSolitary2020-09-01
| | | fixes #12768
* win,runtime: Fix problem when win32yank was a symbolic link in WSL [skip ci] ↵erw72020-04-15
| | | | | | | | | (#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.
* clipboard: do not close stderr together with stdout (fixup #11617)Björn Linse2020-01-02
| | | | | stderr is needed to get error messages in case of failure, and job handler expects it to be open.
* clipboard: close stdout when copying via xclip #11617Jan Edmund Lazo2020-01-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* clipboard: handle/avoid SIGTERM with previous owner #10765Daniel Hahler2019-08-14
| | | | | Fixes regression due to signal being reported with exit status. ref #10573 939d9053bdf2f56 ref https://github.com/neovim/neovim/issues/7054#issuecomment-520282429
* provider: g:loaded_xx_provider=2 means "enabled and working"Justin M. Keyes2019-08-04
| | | | | Value of 1 cannot be used, because users might set that in their vimrc to _disable_ a provider, which would confuse :checkhealth and has().
* provider: decide status by g:loaded_xx_providerJustin M. Keyes2019-08-04
|
* provider: let providers decide their statusRui Abreu Ferreira2019-08-04
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* clipboard: Always copy as plain text in Wayland #9737Tim Morgan2019-03-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | `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
* clipboard/macOS: assume that pbcopy works #9480Marco Hinz2019-01-10
| | | Avoids ~30-60 ms startup cost for users of clipboard=unnamed.
* clipboard: Revert unused check #9309@equalsraf2018-12-04
| | | | | | | | | | | | | | | | 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.
* clipboard: Support custom VimL functions #9304Rui Abreu Ferreira2018-12-03
| | | | | | | | | | | | 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.
* clipboard: Prefer xclip (#9302)Justin M. Keyes2018-12-01
| | | | | | | | | | | 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
* clipboard.vim: check for win32yank.exe #9263Bjorn Neergaard2018-11-21
| | | Win32 allows omitting the `.exe` extension, but WSL does not.
* clipboard: support Wayland (#9230)ainola2018-11-13
| | | Fixes #9213
* macOS: Use `pbpaste` to detect a working clipboard (#7983)Marco Hinz2018-02-08
| | | `pbcopy` writes to the clipboard, it should not be used to sanity-check the clipboard.
* clipboard: macOS: fallback to tmux if pbcopy is broken #7940Justin M. Keyes2018-01-31
| | | | | | | | 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.
* provider: delete vimL stderr collector, now that it exists builtinBjörn Linse2017-12-23
|
* Revert "provider: delete vimL stderr collector, now that it exists builtin"Björn Linse2017-11-27
| | | | | | | This change exposed a memory issue with buffered channels, possibly involving GC. Revert until it has been fixed. This reverts commit 0de019b6a65c6dd5141b7e002343df3689065ce7.
* provider: delete vimL stderr collector, now that it exists builtinBjörn Linse2017-11-26
|
* clipboard: disallow recursion; show hint only once (#7203)Justin M. Keyes2017-08-22
| | | | | | | | - 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
* clipboard: test g:clipboard validation, fix a bugJustin M. Keyes2017-08-20
| | | | Also fix `:help foo` highlighting in health.vim
* clipboard: avoid error flood during :redirJustin M. Keyes2017-08-20
| | | | | | | | | | | | | | | | | | 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
* provider: clipboard: Only report stderr if the job failedJames McCoy2017-07-24
| | | | Closes #7054
* provider/clipboard.vim: fix logic issue #7042Andy Russell2017-07-17
| | | | Closes #7039
* provider/clipboard.vim: capture/display errors (#6684)Andy Russell2017-07-15
| | | | | | TODO: handle errors in the `get`. systemlist() should take an options dictionary like jobstart(), which may specify a stderr handler. References #6565
* provider/clipboard.vim: Handle missing g:clipboard keysJustin M. Keyes2017-06-28
|
* provider/clipboard.vim: allow configuration #6030Justin M. Keyes2017-06-27
| | | | Closes #6029
* provider/clipboard: add tmux support (#6894)Xu Cheng2017-06-15
|
* health.vim: Set 'iskeyword' to that of ft=help.Justin M. Keyes2017-04-19
|
* Windows: Clipboard provider win32yankRui Abreu Ferreira2017-01-20
|
* clipboard: only check for pbcopy on macOS (#5927)Marco Hinz2017-01-11
| | | Fixes #5926.
* provider/clipboard.vim: fallback if xsel is broken (#5868)Justin M. Keyes2017-01-04
| | | | | | Old versions of `xsel` do not support some required features. Fall back to `xclip` then. Closes #5853
* clipboard: show error message only once and put in history (#5870)Marco Hinz2017-01-04
|