(gnus-summary-wash-map): Bind "W i" to
authorSimon Josefsson <jas@extundo.com>
Sat, 15 Jan 2005 19:44:11 +0000 (19:44 +0000)
committerSimon Josefsson <jas@extundo.com>
Sat, 15 Jan 2005 19:44:11 +0000 (19:44 +0000)
gnus-summary-idna-message.
(gnus-summary-make-menu-bar): Add De-IDNA menu entry.
(gnus-summary-idna-message): New function.

lisp/ChangeLog
lisp/gnus-sum.el

index b3f7222..61bec35 100644 (file)
@@ -1,3 +1,10 @@
+2005-01-15  Simon Josefsson  <jas@extundo.com>
+
+       * gnus-sum.el (gnus-summary-wash-map): Bind "W i" to
+       gnus-summary-idna-message.
+       (gnus-summary-make-menu-bar): Add De-IDNA menu entry.
+       (gnus-summary-idna-message): New function.
+
 2005-01-13  Reiner Steib  <Reiner.Steib@gmx.de>
 
        * gnus-msg.el (gnus-confirm-mail-reply-to-news): Change default to
index 0608dff..c934ad9 100644 (file)
@@ -1,5 +1,5 @@
 ;;; gnus-sum.el --- summary mode commands for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -1945,7 +1945,8 @@ increase the score of each group you read."
   "v" gnus-summary-verbose-headers
   "a" gnus-article-strip-headers-in-body ;; mnemonic: wash archive
   "p" gnus-article-verify-x-pgp-sig
-  "d" gnus-article-treat-dumbquotes)
+  "d" gnus-article-treat-dumbquotes
+  "i" gnus-summary-idna-message)
 
 (gnus-define-keys (gnus-summary-wash-deuglify-map "Y" gnus-summary-wash-map)
   ;; mnemonic: deuglif*Y*
@@ -2268,6 +2269,7 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
              ["Rot 13" gnus-summary-caesar-message
               ,@(if (featurep 'xemacs) '(t)
                   '(:help "\"Caesar rotate\" article by 13"))]
+             ["De-IDNA" gnus-summary-idna-message t]
              ["Morse decode" gnus-summary-morse-message t]
              ["Unix pipe..." gnus-summary-pipe-message t]
              ["Add buttons" gnus-article-add-buttons t]
@@ -8952,6 +8954,23 @@ forward."
          (message-caesar-buffer-body arg)
          (set-window-start (get-buffer-window (current-buffer)) start))))))
 
+(defun gnus-summary-idna-message (&optional arg)
+  "Decode IDNA encoded domain names in the current articles.
+IDNA encoded domain names looks like `xn--bar'.  If a string
+remain unencoded after running this function, it is likely an
+invalid IDNA string (`xn--bar' is invalid)."
+  (interactive "P")
+  (gnus-summary-select-article)
+  (let ((mail-header-separator ""))
+    (gnus-eval-in-buffer-window gnus-article-buffer
+      (save-restriction
+       (widen)
+       (let ((start (window-start))
+             buffer-read-only)
+         (while (re-search-forward "\\(xn--[-0-9a-z]+\\)" nil t)
+           (replace-match (idna-to-unicode (match-string 1))))
+         (set-window-start (get-buffer-window (current-buffer)) start))))))
+
 (autoload 'unmorse-region "morse"
   "Convert morse coded text in region to ordinary ASCII text."
   t)