* select.el (xselect--encode-string): Always use utf-8 for TEXT on Nextstep.
authorChong Yidong <cyd@gnu.org>
Fri, 4 May 2012 10:23:00 +0000 (18:23 +0800)
committerChong Yidong <cyd@gnu.org>
Fri, 4 May 2012 10:23:00 +0000 (18:23 +0800)
lisp/ChangeLog
lisp/select.el

index ae273d9..dbbb2fb 100644 (file)
@@ -1,3 +1,8 @@
+2012-05-04  Chong Yidong  <cyd@gnu.org>
+
+       * select.el (xselect--encode-string): Always use utf-8 for TEXT on
+       Nextstep.
+
 2012-04-30  Eli Zaretskii  <eliz@gnu.org>
 
        * mail/rmail.el (rmail-yank-current-message): Use the encoding of
index 3948fcc..d3153a0 100644 (file)
@@ -228,24 +228,30 @@ two markers or an overlay.  Otherwise, it is nil."
          ;; But avoid modifying the string if it's a buffer name etc.
          (unless can-modify (setq str (substring str 0)))
          (remove-text-properties 0 (length str) '(composition nil) str)
-         ;; TEXT is a polymorphic target.  Select the actual type
-         ;; from `UTF8_STRING', `COMPOUND_TEXT', `STRING', and
-         ;; `C_STRING'.
-         (if (eq type 'TEXT)
-             (if (not (multibyte-string-p str))
-                 (setq type 'C_STRING)
-               (let (non-latin-1 non-unicode eight-bit)
-                 (mapc #'(lambda (x)
-                           (if (>= x #x100)
-                               (if (< x #x110000)
-                                   (setq non-latin-1 t)
-                                 (if (< x #x3FFF80)
-                                     (setq non-unicode t)
-                                   (setq eight-bit t)))))
-                       str)
-                 (setq type (if non-unicode 'COMPOUND_TEXT
-                              (if non-latin-1 'UTF8_STRING
-                                (if eight-bit 'C_STRING 'STRING)))))))
+         ;; For X selections, TEXT is a polymorphic target; choose
+         ;; the actual type from `UTF8_STRING', `COMPOUND_TEXT',
+         ;; `STRING', and `C_STRING'.  On Nextstep, always use UTF-8
+         ;; (see ns_string_to_pasteboard_internal in nsselect.m).
+         (when (eq type 'TEXT)
+           (cond
+            ((featurep 'ns)
+             (setq type 'UTF8_STRING))
+            ((not (multibyte-string-p str))
+             (setq type 'C_STRING))
+            (t
+             (let (non-latin-1 non-unicode eight-bit)
+               (mapc #'(lambda (x)
+                         (if (>= x #x100)
+                             (if (< x #x110000)
+                                 (setq non-latin-1 t)
+                               (if (< x #x3FFF80)
+                                   (setq non-unicode t)
+                                 (setq eight-bit t)))))
+                     str)
+               (setq type (if non-unicode 'COMPOUND_TEXT
+                            (if non-latin-1 'UTF8_STRING
+                              (if eight-bit 'C_STRING
+                                'STRING))))))))
          (cond
           ((eq type 'UTF8_STRING)
            (if (or (not coding)