changeset 110764:e015fb08f891

shr.el (shr-encode-url-chars): New function.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Tue, 05 Oct 2010 00:44:05 +0000
parents 0fe64d68a522
children 0333270eb3dc
files lisp/gnus/ChangeLog lisp/gnus/shr.el
diffstat 2 files changed, 26 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog	Mon Oct 04 22:26:51 2010 +0000
+++ b/lisp/gnus/ChangeLog	Tue Oct 05 00:44:05 2010 +0000
@@ -1,3 +1,9 @@
+2010-10-05  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* shr.el (shr-encode-url-chars): New function, that's an alias to
+	browse-url-url-encode-chars or a copy of it.
+	(shr-tag-img): Use it.
+
 2010-10-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
 	* shr.el (shr-tag-blockquote): Ensure paragraph after quote, too.
--- a/lisp/gnus/shr.el	Mon Oct 04 22:26:51 2010 +0000
+++ b/lisp/gnus/shr.el	Tue Oct 05 00:44:05 2010 +0000
@@ -191,6 +191,25 @@
 	(copy-region-as-kill (point-min) (point-max))
 	(message "Copied %s" url))))))
 
+(eval-and-compile
+  (defalias 'shr-encode-url-chars
+    ;; Neither Emacs 22 nor XEmacs provides this function.
+    (if (fboundp 'browse-url-url-encode-chars)
+	'browse-url-url-encode-chars
+      (lambda (text chars)
+	"URL-encode the chars in TEXT that match CHARS.
+CHARS is a regexp-like character alternative (e.g., \"[)$]\")."
+	(let ((encoded-text (copy-sequence text))
+	      (s 0))
+	  (while (setq s (string-match chars encoded-text s))
+	    (setq encoded-text
+		  (replace-match (format "%%%x"
+					 (string-to-char
+					  (match-string 0 encoded-text)))
+				 t t encoded-text)
+		  s (1+ s)))
+	  encoded-text)))))
+
 (defun shr-tag-img (cont)
   (when (and (> (current-column) 0)
 	     (not (eq shr-state 'image)))
@@ -204,7 +223,7 @@
        ((and shr-blocked-images
 	     (string-match shr-blocked-images url))
 	(insert alt))
-       ((url-is-cached (browse-url-url-encode-chars url "[&)$ ]"))
+       ((url-is-cached (shr-encode-url-chars url "[&)$ ]"))
 	(shr-put-image (shr-get-image-data url) (point) alt))
        (t
 	(insert alt)