[mew-dist 27609] Re: Punycode

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2007年 4月 13日 (金) 10:47:57 JST


From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [mew-dist 27606] Re: Punycode
Message-ID: <20070413.085410.09358134.kazu at example.com>
Date: Fri, 13 Apr 2007 08:54:10 +0900 (JST)

> 今の実装だと IDN を含む URL はしょうがないです。
> ただ、バグで普通の URL もそうなっていましたので、
> なしました。
> 
> 現在 IDN に関しても overlay を使わない実装を検討しています。
> # encoder も書かないといけないんですが
> それが実現すると、IDN も普通の URL と同じように扱えるようになるはずです。

overlay を使っている間の対応ですが、overlay に 'evaporate と付け
ておかないと、message buffer に overlay が生き残って具合が悪いで
す。現状では、次のメールを表示したときに、message buffer の一番
先頭に http:// 東京大学.jp/ が表示されていると思います。

From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [mew-dist 27607] Re: Punycode
Message-ID: <20070413.085602.192472195.kazu at example.com>
Date: Fri, 13 Apr 2007 08:56:02 +0900 (JST)

> > この「UTF-16のサポート」というのは、Emacs21+Mule-UCSでは駄目ということ
> > なんでしょうか。
> 
> UCS パッケージは、もう使っていないので、よく分かりません。

Punycode は、今ばぁ〜とみただけなのですが、UTF-16 って big
endian に BOM 無し、でよいのですよね?というのが前提条件ですが、
付属のパッチで OK だと思います。

P.S.
Mule-ja ML に書いたことがありますが、Emacs-22 + Mule-UCS で
'utf-16 という coding-system を使うとエラーになるので、以下のパッ
チのようになっています。

-- 
白井秀行 (mailto:shirai at example.com)
-------------- next part --------------
Index: mew-bq.el
===================================================================
RCS file: /cvsroot/shirai/mew/mew/mew-bq.el,v
retrieving revision 1.47
diff -u -r1.47 mew-bq.el
--- mew-bq.el	2007/04/13 01:10:58	1.47
+++ mew-bq.el	2007/04/13 01:46:03
@@ -1000,10 +1000,14 @@
 	  base)))))
 
 (defun mew-puny-decode (input)
-  (when (coding-system-p 'utf-16)
-    (condition-case nil
-	(mew-cs-decode-string (mew-puny-decode1 input) 'utf-16)
-      (error nil))))
+  (let ((utf16 (or (and (coding-system-p 'utf-16-be-no-signature)
+ 			'utf-16-be-no-signature)
+ 		   (and (coding-system-p 'utf-16be)
+ 			'utf-16be))))
+    (when utf16
+      (condition-case nil
+	  (mew-cs-decode-string (mew-puny-decode1 input) utf16)
+	(error nil)))))
 
 (defun mew-puny-decode1 (input)
   (let* ((base 36) (tmin 1) (tmax 26)
Index: mew-mime.el
===================================================================
RCS file: /cvsroot/shirai/mew/mew/mew-mime.el,v
retrieving revision 1.88
diff -u -r1.88 mew-mime.el
--- mew-mime.el	2007/04/13 01:10:58	1.88
+++ mew-mime.el	2007/04/13 01:46:03
@@ -187,7 +187,8 @@
 	      (put-text-property 0 (length idn) 'mouse-face mew-highlight-url-mouse-face idn)
 	      (setq ovl (make-overlay beg end))
 	      (overlay-put ovl 'invisible t)
-	      (overlay-put ovl 'before-string idn))
+	      (overlay-put ovl 'before-string idn)
+	      (overlay-put ovl 'evaporate t))
 	    (setq beg end))))
       ;; Page breaks
       (when mew-break-pages


Mew-dist メーリングリストの案内