From 769ce97fb48a641efc7f5fc690fff118c6039472 Mon Sep 17 00:00:00 2001 From: Yida Zhang Date: Sat, 30 Mar 2024 23:50:39 -0400 Subject: [PATCH 1/4] fix TextYankPost event --- lua/nvim-tree/actions/fs/copy-paste.lua | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lua/nvim-tree/actions/fs/copy-paste.lua b/lua/nvim-tree/actions/fs/copy-paste.lua index efb2b1ef16a..1166dbe98ae 100644 --- a/lua/nvim-tree/actions/fs/copy-paste.lua +++ b/lua/nvim-tree/actions/fs/copy-paste.lua @@ -276,17 +276,22 @@ end ---@param content string local function copy_to_clipboard(content) local clipboard_name + local reg if M.config.actions.use_system_clipboard == true then - vim.fn.setreg("+", content) - vim.fn.setreg('"', content) clipboard_name = "system" + reg = '+' else - vim.fn.setreg('"', content) - vim.fn.setreg("1", content) clipboard_name = "neovim" + reg = '1' end - vim.api.nvim_exec_autocmds("TextYankPost", {}) + local temp_buf = vim.api.nvim_create_buf(false, true) + vim.api.nvim_buf_set_text(temp_buf, 0, 0, 0, 0, { content }) + vim.api.nvim_buf_call(temp_buf, function () + vim.cmd(string.format('normal! "%dy$', reg)) + end) + vim.api.nvim_buf_delete(temp_buf, {}) + notify.info(string.format("Copied %s to %s clipboard!", content, clipboard_name)) end From 5ec530b5cd0f8f1930b7be00d59e70da4cb470d3 Mon Sep 17 00:00:00 2001 From: Yida Zhang Date: Sun, 31 Mar 2024 00:56:54 -0400 Subject: [PATCH 2/4] Update lua/nvim-tree/actions/fs/copy-paste.lua Co-authored-by: Alexander Courtis --- lua/nvim-tree/actions/fs/copy-paste.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/nvim-tree/actions/fs/copy-paste.lua b/lua/nvim-tree/actions/fs/copy-paste.lua index 1166dbe98ae..69663f418ef 100644 --- a/lua/nvim-tree/actions/fs/copy-paste.lua +++ b/lua/nvim-tree/actions/fs/copy-paste.lua @@ -285,6 +285,8 @@ local function copy_to_clipboard(content) reg = '1' end + -- manually firing TextYankPost does not set vim.v.event + -- workaround: create a scratch buffer with the clipboard contents and send a yank command local temp_buf = vim.api.nvim_create_buf(false, true) vim.api.nvim_buf_set_text(temp_buf, 0, 0, 0, 0, { content }) vim.api.nvim_buf_call(temp_buf, function () From 719626aed7b1a47aef6dbffbfa4e446b8a3ed63e Mon Sep 17 00:00:00 2001 From: Yida Zhang Date: Sun, 31 Mar 2024 01:03:08 -0400 Subject: [PATCH 3/4] fix format string --- lua/nvim-tree/actions/fs/copy-paste.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/nvim-tree/actions/fs/copy-paste.lua b/lua/nvim-tree/actions/fs/copy-paste.lua index 69663f418ef..f2114f82591 100644 --- a/lua/nvim-tree/actions/fs/copy-paste.lua +++ b/lua/nvim-tree/actions/fs/copy-paste.lua @@ -290,7 +290,7 @@ local function copy_to_clipboard(content) local temp_buf = vim.api.nvim_create_buf(false, true) vim.api.nvim_buf_set_text(temp_buf, 0, 0, 0, 0, { content }) vim.api.nvim_buf_call(temp_buf, function () - vim.cmd(string.format('normal! "%dy$', reg)) + vim.cmd(string.format('normal! "%sy$', reg)) end) vim.api.nvim_buf_delete(temp_buf, {}) From 6ff3a76b94e9d408404083041754aa787d06ad5f Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Sun, 31 Mar 2024 17:23:36 +1100 Subject: [PATCH 4/4] style --- lua/nvim-tree/actions/fs/copy-paste.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lua/nvim-tree/actions/fs/copy-paste.lua b/lua/nvim-tree/actions/fs/copy-paste.lua index f2114f82591..b87d28f1b5e 100644 --- a/lua/nvim-tree/actions/fs/copy-paste.lua +++ b/lua/nvim-tree/actions/fs/copy-paste.lua @@ -279,17 +279,17 @@ local function copy_to_clipboard(content) local reg if M.config.actions.use_system_clipboard == true then clipboard_name = "system" - reg = '+' + reg = "+" else clipboard_name = "neovim" - reg = '1' + reg = "1" end -- manually firing TextYankPost does not set vim.v.event -- workaround: create a scratch buffer with the clipboard contents and send a yank command local temp_buf = vim.api.nvim_create_buf(false, true) vim.api.nvim_buf_set_text(temp_buf, 0, 0, 0, 0, { content }) - vim.api.nvim_buf_call(temp_buf, function () + vim.api.nvim_buf_call(temp_buf, function() vim.cmd(string.format('normal! "%sy$', reg)) end) vim.api.nvim_buf_delete(temp_buf, {})