summaryrefslogtreecommitdiff
path: root/lisp/select.el
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2003-06-17 10:54:39 +0000
committerKenichi Handa <handa@m17n.org>2003-06-17 10:54:39 +0000
commitf147fd76db3f412d36c2d764dcce44c91b307ca8 (patch)
tree214c5ce91d2329dadbb0c2b4990075f1fe84d744 /lisp/select.el
parent0c6db68bc0f044e1e8b4b3a05cc08a4715350ada (diff)
downloademacs-f147fd76db3f412d36c2d764dcce44c91b307ca8.tar.gz
(x-get-selection): If the string returned by
x-get-selection-internal has text property `foreign-selection', decode it while preserving that property.
Diffstat (limited to 'lisp/select.el')
-rw-r--r--lisp/select.el13
1 files changed, 12 insertions, 1 deletions
diff --git a/lisp/select.el b/lisp/select.el
index 618e10f4021..f679b27805a 100644
--- a/lisp/select.el
+++ b/lisp/select.el
@@ -38,7 +38,18 @@ how to convert the data.
TYPE may be `SECONDARY' or `CLIPBOARD', in addition to `PRIMARY'.
DATA-TYPE is usually `STRING', but can also be one of the symbols
in `selection-converter-alist', which see."
- (x-get-selection-internal (or type 'PRIMARY) (or data-type 'STRING)))
+ (let ((data (x-get-selection-internal (or type 'PRIMARY)
+ (or data-type 'STRING)))
+ coding)
+ (when (and (stringp data)
+ (setq data-type (get-text-property 0 'foreign-selection data)))
+ (setq coding (if (eq data-type 'UTF8_STRING)
+ 'utf-8
+ (or next-selection-coding-system
+ selection-coding-system))
+ data (decode-coding-string data coding))
+ (put-text-property 0 (length data) 'foreign-selection data-type data))
+ data))
(defun x-get-clipboard ()
"Return text pasted to the clipboard."