summaryrefslogtreecommitdiff
path: root/lisp/select.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2022-03-24 05:32:10 -0400
committerStefan Monnier <monnier@iro.umontreal.ca>2022-03-24 05:32:10 -0400
commit288ecdf90cb971a3871f7e99e3948176ae4f0e85 (patch)
treee1f8bee8d50fc1325231f190536bd6246ae2abd8 /lisp/select.el
parentf7a90cc85b470578133d6b143d2740995ad4496b (diff)
downloademacs-288ecdf90cb971a3871f7e99e3948176ae4f0e85.tar.gz
emacs-288ecdf90cb971a3871f7e99e3948176ae4f0e85.tar.bz2
emacs-288ecdf90cb971a3871f7e99e3948176ae4f0e85.zip
* lisp/select.el (xselect-convert-to-targets): Use `delete-dups` and `delq`
Diffstat (limited to 'lisp/select.el')
-rw-r--r--lisp/select.el31
1 files changed, 12 insertions, 19 deletions
diff --git a/lisp/select.el b/lisp/select.el
index 36452776e9a..90970f989a8 100644
--- a/lisp/select.el
+++ b/lisp/select.el
@@ -547,25 +547,18 @@ two markers or an overlay. Otherwise, it is nil."
(xselect--int-to-cons len))))
(defun xselect-convert-to-targets (selection _type value)
- ;; return a vector of atoms, but remove duplicates first.
- (let* ((all (cons 'TIMESTAMP
- (cons 'MULTIPLE
- (mapcar (lambda (conv)
- (if (or (not (consp (cdr conv)))
- (funcall (cadr conv) selection
- (car conv) value))
- (car conv)
- '_EMACS_INTERNAL))
- selection-converter-alist))))
- (rest all))
- (while rest
- (cond ((memq (car rest) (cdr rest))
- (setcdr rest (delq (car rest) (cdr rest))))
- ((eq (car (cdr rest)) '_EMACS_INTERNAL)
- (setcdr rest (cdr (cdr rest))))
- (t
- (setq rest (cdr rest)))))
- (apply 'vector all)))
+ ;; Return a vector of atoms, but remove duplicates first.
+ (apply #'vector
+ (delete-dups
+ `( TIMESTAMP MULTIPLE
+ . ,(delq '_EMACS_INTERNAL
+ (mapcar (lambda (conv)
+ (if (or (not (consp (cdr conv)))
+ (funcall (cadr conv) selection
+ (car conv) value))
+ (car conv)
+ '_EMACS_INTERNAL))
+ selection-converter-alist))))))
(defun xselect-convert-to-delete (selection _type _value)
(gui-backend-set-selection selection nil)