summaryrefslogtreecommitdiff
path: root/lisp/gnus/shr.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/gnus/shr.el')
-rw-r--r--lisp/gnus/shr.el21
1 files changed, 20 insertions, 1 deletions
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el
index 59d7b784a1f..e97ca1da47a 100644
--- a/lisp/gnus/shr.el
+++ b/lisp/gnus/shr.el
@@ -191,6 +191,25 @@ redirects somewhere else."
(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 @@ redirects somewhere else."
((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)