diff lisp/term/mac-win.el @ 83386:db4e74787e6f

Merged from miles@gnu.org--gnu-2005 (patch 133-141, 596-609) Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-596 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-597 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-598 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-599 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-600 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-601 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-602 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-603 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-604 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-605 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-606 Remove lisp/toolbar directory * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-607 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-608 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-609 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-133 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-134 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-135 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-136 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-137 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-138 Update from CVS: texi/gnus.texi (RSS): Fix key description. * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-139 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-140 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-141 Update from CVS: texi/gnus.texi (Document Server Internals): Addition. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-426
author Karoly Lorentey <lorentey@elte.hu>
date Wed, 19 Oct 2005 14:06:17 +0000
parents 2a679c81f552 bfc846e38bba
children 7d093d9d4479
line wrap: on
line diff
--- a/lisp/term/mac-win.el	Wed Oct 19 14:03:44 2005 +0000
+++ b/lisp/term/mac-win.el	Wed Oct 19 14:06:17 2005 +0000
@@ -54,8 +54,6 @@
 ;; -font		*font
 ;; -foreground		*foreground
 ;; -geometry		.geometry
-;; -i			.iconType
-;; -itype		.iconType
 ;; -iconic		.iconic
 ;; -name		.name
 ;; -reverse		*reverseVideo
@@ -1199,15 +1197,21 @@
     (when (and (stringp data)
 	       (setq data-type (get-text-property 0 'foreign-selection data)))
       (cond ((eq data-type 'public.utf16-plain-text)
-	     (let ((encoded (and (fboundp 'mac-code-convert-string)
-				 (mac-code-convert-string data
-							  'utf-16 coding))))
-	       (if encoded
-		   (let ((coding-save last-coding-system-used))
-		     (setq data (decode-coding-string encoded coding))
-		     (setq last-coding-system-used coding-save))
-		 (setq data
-		       (decode-coding-string data 'utf-16)))))
+	     (if (fboundp 'mac-code-convert-string)
+		 (let ((s (mac-code-convert-string data nil coding)))
+		   (if s
+		       (setq data (decode-coding-string s coding))
+		     (setq data
+			   ;; (decode-coding-string data 'utf-16) is
+			   ;; not correct because
+			   ;; public.utf16-plain-text is defined as
+			   ;; native byte order, no BOM.
+			   (decode-coding-string
+			    (mac-code-convert-string data nil 'utf-8)
+			    'utf-8))))
+	       ;; No `mac-code-convert-string' means non-Carbon, which
+	       ;; implies big endian.
+	       (setq data (decode-coding-string data 'utf-16be))))
 	    ((eq data-type 'com.apple.traditional-mac-plain-text)
 	     (setq data (decode-coding-string data coding)))
 	    ((eq data-type 'public.file-url)
@@ -1324,14 +1328,25 @@
 	  (remove-text-properties 0 (length str) '(composition nil) str)
 	  (cond
 	   ((eq type 'public.utf16-plain-text)
-	    (let (s)
-	      (when (and (fboundp 'mac-code-convert-string)
-			 (memq coding (find-coding-systems-string str)))
-		(setq coding (coding-system-change-eol-conversion coding 'mac))
-		(setq s (mac-code-convert-string
-			 (encode-coding-string str coding)
-			 coding 'utf-16)))
-	      (setq str (or s (encode-coding-string str 'utf-16-mac)))))
+	    (if (fboundp 'mac-code-convert-string)
+		(let (s)
+		  (when (memq coding (find-coding-systems-string str))
+		    (setq coding
+			  (coding-system-change-eol-conversion coding 'mac))
+		    (setq s (mac-code-convert-string
+			     (encode-coding-string str coding)
+			     coding nil)))
+		  (setq str (or s
+				;; (encode-coding-string str
+				;; 'utf-16-mac) is not correct because
+				;; public.utf16-plain-text is defined
+				;; as native byte order, no BOM.
+				(mac-code-convert-string
+				 (encode-coding-string str 'utf-8-mac)
+				 'utf-8 nil))))
+	      ;; No `mac-code-convert-string' means non-Carbon, which
+	      ;; implies big endian.
+	      (setq str (encode-coding-string str 'utf-16be-mac))))
 	   ((eq type 'com.apple.traditional-mac-plain-text)
 	    (let ((encodables (find-coding-systems-string str))
 		  (rest mac-script-code-coding-systems))