From bcfa9925a6e20dcc00ad7a18cb5b577dba018aca Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Fri, 2 Apr 2004 17:29:52 +0000 Subject: [PATCH] * x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use utf-16le on little endian machines and utf-16be otherwise. --- lisp/ChangeLog | 5 +++++ lisp/x-dnd.el | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 918c16382b2..cb1d8d0e4ae 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2004-04-02 Jan Dj,Ad(Brv + + * x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use + utf-16le on little endian machines and utf-16be otherwise. + 2004-04-02 David Kastrup * net/browse-url.el (browse-url-generic): Use call-process diff --git a/lisp/x-dnd.el b/lisp/x-dnd.el index 91ca053afa2..cdb0a63ace6 100644 --- a/lisp/x-dnd.el +++ b/lisp/x-dnd.el @@ -336,7 +336,12 @@ WINDOW is the window where the drop happened. ACTION is ignored. DATA is the moz-url, which is formatted as two strings separated by \r\n. The first string is the URL, the second string is the title of that URL. DATA is encoded in utf-16. Decode the URL and call `x-dnd-handle-uri-list'." - (let* ((string (decode-coding-string data 'utf-16le)) ;; ALWAYS LE??? + ;; Mozilla and applications based on it (Galeon for example) uses + ;; text/unicode, but it is impossible to tell if it is le or be. Use what + ;; the machine Emacs runs on use. This looses if dropping between machines + ;; with different endian, but it is the best we can do. + (let* ((coding (if (eq (byteorder) ?B) 'utf-16be 'utf-16le)) + (string (decode-coding-string data coding)) (strings (split-string string "[\r\n]" t)) ;; Can one drop more than one moz-url ?? Assume not. (url (car strings)) @@ -351,7 +356,9 @@ TEXT is the text as a string, WINDOW is the window where the drop happened." (defun x-dnd-insert-utf16-text (window action text) "Decode the UTF-16 text and insert it at point. TEXT is the text as a string, WINDOW is the window where the drop happened." - (x-dnd-insert-text window action (decode-coding-string text 'utf-16le))) + ;; See comment in x-dnd-handle-moz-url about coding. + (let ((coding (if (eq (byteorder) ?B) 'utf-16be 'utf-16le))) + (x-dnd-insert-text window action (decode-coding-string text coding)))) (defun x-dnd-insert-ctext (window action text) "Decode the compound text and insert it at point. -- 2.39.5