From f01afd6c24289f0f3b3b0409baae7c266adfd43b Mon Sep 17 00:00:00 2001 From: Akib Azmain Turja Date: Sat, 6 May 2023 18:31:04 +0600 Subject: [PATCH] Fix middle-click yanking commands * eat.el (eat-mouse-yank-primary): Switch to the window where the event was initiated. * eat.el (eat-mouse-yank-secondary): Switch to the window where the event was initiated. Ensure that the secondary selection is non-empty before sending it. --- eat.el | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/eat.el b/eat.el index 652a272..8d2ded0 100644 --- a/eat.el +++ b/eat.el @@ -5103,16 +5103,28 @@ STRING and ARG are passed to `yank-pop', which see." (yank-from-kill-ring string arg) (buffer-string)))))) -(defun eat-mouse-yank-primary () - "Send the primary selection to the terminal." - (interactive) +(defun eat-mouse-yank-primary (&optional event) + "Send the primary selection to the terminal. + +EVENT is the mouse event." + (interactive "e") + (unless (windowp (posn-window (event-start event))) + (error "Position not in text area of window")) + (select-window (posn-window (event-start event))) (eat-send-string-as-yank eat--terminal (gui-get-primary-selection))) -(defun eat-mouse-yank-secondary () - "Send the secondary selection to the terminal." - (interactive) - (eat-send-string-as-yank - eat--terminal (gui-get-selection 'SECONDARY))) +(defun eat-mouse-yank-secondary (&optional event) + "Send the secondary selection to the terminal. + +EVENT is the mouse event." + (interactive "e") + (unless (windowp (posn-window (event-start event))) + (error "Position not in text area of window")) + (select-window (posn-window (event-start event))) + (let ((secondary (gui-get-selection 'SECONDARY))) + (if secondary + (eat-send-string-as-yank eat--terminal secondary) + (error "No secondary selection")))) (defun eat-xterm-paste (event) "Handle paste operation EVENT from XTerm."