Mercurial > emacs
changeset 66107:bfc846e38bba
Apply 2005-10-09 change for term/x-win.el.
(x-get-selection, mac-select-convert-to-string): Convert from/to
UTF-16 clipboard data as in native byte order, no BOM.
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
---|---|
date | Sun, 16 Oct 2005 02:21:16 +0000 |
parents | 9b8e76617c8c |
children | f4ddfc71077d |
files | lisp/term/mac-win.el |
diffstat | 1 files changed, 34 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/term/mac-win.el Sun Oct 16 02:10:39 2005 +0000 +++ b/lisp/term/mac-win.el Sun Oct 16 02:21:16 2005 +0000 @@ -54,8 +54,6 @@ ;; -font *font ;; -foreground *foreground ;; -geometry .geometry -;; -i .iconType -;; -itype .iconType ;; -iconic .iconic ;; -name .name ;; -reverse *reverseVideo @@ -1198,15 +1196,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) @@ -1323,14 +1327,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))