From 53e18401e5c3fbbeef952f75b153d240921c1a4d Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 17 May 2019 11:01:20 +0300 Subject: [PATCH] Fix a recent commit in select.el * lisp/select.el (gui-get-selection): Revert a recent incorrect change. Add a comment explaining what we are trying to do with C_STRING and why. (xselect--encode-string): Add a comment explaining what we are trying to do with C_STRING and why. --- lisp/select.el | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lisp/select.el b/lisp/select.el index 3ea741d383e..af6bf467e4a 100644 --- a/lisp/select.el +++ b/lisp/select.el @@ -308,15 +308,12 @@ the formats available in the clipboard if TYPE is `CLIPBOARD'." ('STRING 'iso-8859-1) (_ (error "Unknown selection data type: %S" type)))))) - (setq data (cond - (coding - (decode-coding-string data coding)) - ;; The last two cases are only possible in the - ;; C_STRING case. - ((multibyte-string-p data) - data) - (t - (encode-coding-string data 'eight-bit))))) + (setq data (if coding (decode-coding-string data coding) + ;; This is for C_STRING case. + ;; We want to convert each non-ASCII byte to the + ;; corresponding eight-bit character, which has + ;; a codepoint >= #x3FFF00. + (string-to-multibyte data)))) (setq next-selection-coding-system nil) (put-text-property 0 (length data) 'foreign-selection data-type data)) data)) @@ -479,6 +476,9 @@ two markers or an overlay. Otherwise, it is nil." (setq str (encode-coding-string str coding))) ((eq type 'C_STRING) + ;; If STR is unibyte (the normal case), use it; otherwise + ;; we assume some of the characters are eight-bit, and + ;; take their lower 8 bits. (setq str (string-make-unibyte str))) (t -- 2.39.2