diff --git a/config/nvim/lua/config/options.lua b/config/nvim/lua/config/options.lua index 4caad53..12bc92a 100644 --- a/config/nvim/lua/config/options.lua +++ b/config/nvim/lua/config/options.lua @@ -64,14 +64,15 @@ opt.shortmess:append("c") -- script (rather than nvim's built-in raw-OSC-52-only provider) because -- reaching the real clipboard needs more than a raw OSC 52 write: it picks -- pbcopy/xclip/wl-copy when nvim is running locally, and when none of those --- are available (nvim on a remote host with no local display) sends OSC 52 --- both raw and wrapped for tmux's DCS passthrough, since it can't know how --- many local tmux hops are between it and the real terminal and tmux's own --- native OSC 52 forwarding isn't reliable. Works whether nvim is local or --- several ssh/tmux hops deep, on any machine sharing this dotfiles repo. --- Paste is intentionally left as a no-op: OSC 52 read support is --- inconsistent across terminals and can hang waiting for a reply, so use --- the terminal's own native paste (e.g. Ctrl-Shift-V) instead. +-- are available (nvim on a remote host with no local display) sends a +-- single plain OSC 52 write. Any tmux hops between here and the real +-- terminal relay that onward themselves via the pane-set-clipboard hook in +-- tmux.conf, so this works whether nvim is local or several ssh/tmux hops +-- deep, on any machine sharing this dotfiles repo, without needing to know +-- how many hops there are. Paste is intentionally left as a no-op: OSC 52 +-- read support is inconsistent across terminals and can hang waiting for a +-- reply, so use the terminal's own native paste (e.g. Ctrl-Shift-V) +-- instead. local clipboard_copy = vim.fn.expand("~/dotfiles/bin/clipboard-copy") vim.g.clipboard = { name = "clipboard-copy (copy-only)", diff --git a/config/tmux.conf b/config/tmux.conf index 5eb65c2..c34bc27 100644 --- a/config/tmux.conf +++ b/config/tmux.conf @@ -52,8 +52,10 @@ set-option -g -q mouse on bind y run 'tmux save-buffer - | $HOME/dotfiles/bin/clipboard-copy' bind C-y run 'tmux save-buffer - | $HOME/dotfiles/bin/clipboard-copy' -# Let OSC 52 escape sequences (e.g. nvim's clipboard writes) pass through -# this tmux to the real terminal, even when nested behind ssh/tmux layers. +# Let escape sequences a pane explicitly DCS-wraps for passthrough (e.g. +# sixel image data, see the iTerm2 terminal-features line below) reach the +# real terminal, even when nested behind ssh/tmux layers. Not used for the +# clipboard -- that has its own relay via the pane-set-clipboard hook above. # allow-passthrough was added in tmux 3.3; older tmux doesn't understand the # option, so only set it when the running tmux is new enough. if-shell "tmux -V | awk '{print $2}' | awk -F. '{if ($1*1000+$2 >= 3003) exit 0; else exit 1}'" 'set -g allow-passthrough on'