Some times tmux doesn't pass the clipboard information to the terminal
correctly. This is the case of mosh + tmux. The current clipboard
doesn't work properly in this case. However, when the tmux option
`allow-passthrough` is on, we can escape tmux and pass the OSC52 string
directly to the terminal.
In this patch, if helix detects that tmux `allow-passthrough` is on, it
will use the OSC52 clipboard provider and will escape tmux and pass the
OSC52 directly to the terminal.
Tested with mosh + tmux with the `allow-passthrough` option on.
We use `which::which` in many crates, so `which` was a separate
dependency across all of them. We can centralize `which` into the
stdx crate so it's easy for all crates to depend on it.
I also moved the rest of `helix-view/src/env.rs` into helix-stdx's
`env` module since it only contained a thin wrapper around `which`
and `std::env`.
* Fix test::print for Unicode
The print function was not generating correct translations when
the input has Unicode (non-ASCII) in it. This is due to its use of
String::len, which gives the length in bytes, not chars.
* Fix multi-code point auto pairs
The current code for auto pairs is counting offsets by summing the
length of the open and closing chars with char::len_utf8. Unfortunately,
this gives back bytes, and the offset needs to be in chars.
Additionally, it was discovered that there was a preexisting bug where
the selection was not computed correctly in the case that the cursor
was:
1. a single grapheme in width
2. this grapheme was more than one char
3. the direction of the cursor is backwards
4. a secondary range
In this case, the offset was not being added into the anchor. This was
fixed.
* migrate auto pairs tests to integration
* review comments
* feat(clipboard): reintroduce win32yank for wsl2 linux
* refactor(clipboard): adjust win32yank position to not interrupt wayland/x11
Co-authored-by: jiqb <gthbji@ml1.net>
This commit adds six new commands to interact with system clipboard:
- clipboard-yank
- clipboard-yank-join
- clipboard-paste-after
- clipboard-paste-before
- clipboard-paste-replace
- show-clipboard-provider
System clipboard provider is detected by checking a few environment
variables and executables. Currently only built-in detection is
supported.
`clipboard-yank` will only yank the "main" selection, which is currently the first
one. This will need to be revisited later.
Closes https://github.com/helix-editor/helix/issues/76