]> git.eshelyaron.com Git - emacs.git/commitdiff
Make `M-x clipboard-yank' work reliably
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 6 Jul 2021 17:25:41 +0000 (19:25 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 6 Jul 2021 17:25:41 +0000 (19:25 +0200)
* lisp/menu-bar.el (clipboard-yank): Make the command work
consistently (bug#27442).

* lisp/select.el (gui-selection-value): Try to explain why the
logic is the way it is.

lisp/menu-bar.el
lisp/select.el

index 739e751d8a40610446eb73f90ba9071f120c4f56..8def1575b24d7e905ea43ae48f1f06ff3213dec3 100644 (file)
 (defun clipboard-yank ()
   "Insert the clipboard contents, or the last stretch of killed text."
   (interactive "*")
-  (let ((select-enable-clipboard t))
+  (let ((select-enable-clipboard t)
+        ;; Ensure that we defeat the DWIM login in `gui-selection-value'.
+        (gui--last-selected-text-clipboard nil))
     (yank)))
 
 (defun clipboard-kill-ring-save (beg end &optional region)
index c39bc93deab9ea6b2d64aae3ee88f514dfac854f..eaa74cebd8015a65b36d49744e8ccb054f6bdfb2 100644 (file)
@@ -184,11 +184,17 @@ decoded.  If `gui-get-selection' signals an error, return nil."
   (let ((clip-text
          (when select-enable-clipboard
            (let ((text (gui--selection-value-internal 'CLIPBOARD)))
-             (if (string= text "") (setq text nil))
-
-             ;; Check the CLIPBOARD selection for 'newness', is it different
-             ;; from what we remembered them to be last time we did a
-             ;; cut/paste operation.
+             (when (string= text "")
+               (setq text nil))
+             ;; When `select-enable-clipboard' is non-nil,
+             ;; killing/copying text (with, say, `C-w') will push the
+             ;; text to the clipboard (and store it in
+             ;; `gui--last-selected-text-clipboard').  We check
+             ;; whether the text on the clipboard is identical to this
+             ;; text, and if so, we report that the clipboard is
+             ;; empty.  See (bug#27442) for further discussion about
+             ;; this DWIM action, and possible ways to make this check
+             ;; less fragile, if so desired.
              (prog1
                  (unless (equal text gui--last-selected-text-clipboard)
                    text)