1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-24 07:20:37 +00:00

Avoid extraneous selection querying if we own the selection

* lisp/select.el (gui--selection-value-internal): Return nil if
`gui-backend-selection-owner-p' on window systems where it is
reliable.
This commit is contained in:
Po Lu 2022-02-01 02:03:05 +00:00
parent d6d73224a2
commit 16174d796f

View File

@ -168,20 +168,26 @@ text/plain\\;charset=utf-8)."
Call `gui-get-selection' with an appropriate DATA-TYPE argument
decided by `x-select-request-type'. The return value is already
decoded. If `gui-get-selection' signals an error, return nil."
(let ((request-type (if (memq window-system '(x pgtk))
(or x-select-request-type
'(UTF8_STRING COMPOUND_TEXT STRING text/plain\;charset=utf-8))
'STRING))
text)
(with-demoted-errors "gui-get-selection: %S"
(if (consp request-type)
(while (and request-type (not text))
(setq text (gui-get-selection type (car request-type)))
(setq request-type (cdr request-type)))
(setq text (gui-get-selection type request-type))))
(if text
(remove-text-properties 0 (length text) '(foreign-selection nil) text))
text))
;; The doc string of `interprogram-paste-function' says to return
;; nil if no other program has provided text to paste.
(unless (and (memq window-system '(x haiku))
;; gui-backend-selection-p might be unreliable on other
;; window systems.
(gui-backend-selection-owner-p type))
(let ((request-type (if (memq window-system '(x pgtk))
(or x-select-request-type
'(UTF8_STRING COMPOUND_TEXT STRING text/plain\;charset=utf-8))
'STRING))
text)
(with-demoted-errors "gui-get-selection: %S"
(if (consp request-type)
(while (and request-type (not text))
(setq text (gui-get-selection type (car request-type)))
(setq request-type (cdr request-type)))
(setq text (gui-get-selection type request-type))))
(if text
(remove-text-properties 0 (length text) '(foreign-selection nil) text))
text)))
(defun gui-selection-value ()
(let ((clip-text