aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGnus developers2012-12-25 22:12:59 +0000
committerKatsumi Yamaoka2012-12-25 22:12:59 +0000
commitcc21c2356dbbf361a288cdb061f2f708b5392b93 (patch)
tree390ffda804c01eacd9bf770e323adf4b8d0e0f32
parentf1665bdc87db38350a9fb0b497d2b14afbfa7140 (diff)
downloademacs-cc21c2356dbbf361a288cdb061f2f708b5392b93.tar.gz
emacs-cc21c2356dbbf361a288cdb061f2f708b5392b93.zip
Merge changes made in Gnus master
2012-12-25 Lars Ingebrigtsen <larsi@gnus.org> * gnus-sum.el (gnus-set-global-variables): Don't copy over the summary buffer to the article buffer here, because that clobbers multiple article buffers. * gnus-art.el (gnus-article-setup-buffer): Make sure that the article buffer always points to the right summary buffer. 2012-12-25 John Wiegley <jwiegley@gmail.com> * auth-source.el (auth-source-netrc-parse): Allow using "password" as the password (bug#12097). 2012-12-25 Lars Ingebrigtsen <larsi@gnus.org> * shr.el (shr-tag-a): Don't tagify <A> elements that don't have HREFs (bug#13263). * gnus-salt.el (gnus-highlight-selected-tree): Check whether the Tree buffer exists before using it (bug#12475). * gnus-agent.el (gnus-agent-fetch-articles): Don't fetch articles from offline groups (bug#11937). * message.el (message-yank-original): When using customize to set the value of `message-cite-style', the variable it set to a symbol that's the name of the variable, which must then be dereferenced (bug#12616). 2012-09-13 Wolfgang Jenkner <wjenkner@inode.at> * lisp/gnus-spec.el (gnus-face-face-function): Initialize the value of the `face' property with a list whose car is the face specified in the format string and whose cdr is (nil). * lisp/gnus-util.el (gnus-put-text-property-excluding-characters-with-faces): Change accordingly. (gnus-get-text-property-excluding-characters-with-faces): New function. * lisp/gnus-sum.el (gnus-summary-highlight-line): * lisp/gnus-salt.el (gnus-tree-highlight-node): * lisp/gnus-group.el (gnus-group-highlight-line): Use it.
-rw-r--r--lisp/gnus/ChangeLog50
-rw-r--r--lisp/gnus/auth-source.el2
-rw-r--r--lisp/gnus/gnus-agent.el3
-rw-r--r--lisp/gnus/gnus-art.el23
-rw-r--r--lisp/gnus/gnus-group.el2
-rw-r--r--lisp/gnus/gnus-salt.el54
-rw-r--r--lisp/gnus/gnus-spec.el9
-rw-r--r--lisp/gnus/gnus-sum.el13
-rw-r--r--lisp/gnus/gnus-util.el33
-rw-r--r--lisp/gnus/message.el4
-rw-r--r--lisp/gnus/shr.el3
11 files changed, 128 insertions, 68 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index a1a64cc80cb..2916b40df29 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,5 +1,47 @@
12012-12-25 Lars Ingebrigtsen <larsi@gnus.org> 12012-12-25 Lars Ingebrigtsen <larsi@gnus.org>
2 2
3 * gnus-sum.el (gnus-set-global-variables): Don't copy over the summary
4 buffer to the article buffer here, because that clobbers multiple
5 article buffers.
6
7 * gnus-art.el (gnus-article-setup-buffer): Make sure that the article
8 buffer always points to the right summary buffer.
9
102012-12-25 John Wiegley <jwiegley@gmail.com>
11
12 * auth-source.el (auth-source-netrc-parse): Allow using "password" as
13 the password (bug#12097).
14
152012-12-25 Lars Ingebrigtsen <larsi@gnus.org>
16
17 * shr.el (shr-tag-a): Don't tagify <A> elements that don't have HREFs
18 (bug#13263).
19
20 * gnus-salt.el (gnus-highlight-selected-tree): Check whether the Tree
21 buffer exists before using it (bug#12475).
22
23 * gnus-agent.el (gnus-agent-fetch-articles): Don't fetch articles from
24 offline groups (bug#11937).
25
26 * message.el (message-yank-original): When using customize to set the
27 value of `message-cite-style', the variable it set to a symbol that's
28 the name of the variable, which must then be dereferenced (bug#12616).
29
302012-12-25 Wolfgang Jenkner <wjenkner@inode.at>
31
32 * lisp/gnus-spec.el (gnus-face-face-function): Initialize the value of
33 the `face' property with a list whose car is the face specified in the
34 format string and whose cdr is (nil).
35 * lisp/gnus-util.el
36 (gnus-put-text-property-excluding-characters-with-faces): Change
37 accordingly.
38 (gnus-get-text-property-excluding-characters-with-faces): New function.
39 * lisp/gnus-sum.el (gnus-summary-highlight-line):
40 * lisp/gnus-salt.el (gnus-tree-highlight-node):
41 * lisp/gnus-group.el (gnus-group-highlight-line): Use it.
42
432012-12-25 Lars Ingebrigtsen <larsi@gnus.org>
44
3 * nnimap.el (nnimap-authenticator): Expand to allow specifying the 45 * nnimap.el (nnimap-authenticator): Expand to allow specifying the
4 login methods. 46 login methods.
5 (nnimap-login): Respect the `nnimap-authenticator' variable. 47 (nnimap-login): Respect the `nnimap-authenticator' variable.
@@ -8,7 +50,7 @@
8 mark state when moving articles. Otherwise unticked articles will get 50 mark state when moving articles. Otherwise unticked articles will get
9 their ticks back after moving. 51 their ticks back after moving.
10 52
112012-12-24 Lars Ingebrigtsen <larsi@gnus.org> 532012-12-25 Lars Ingebrigtsen <larsi@gnus.org>
12 54
13 * gnus-srvr.el (gnus-browse-delete-group): Fix syntax error. 55 * gnus-srvr.el (gnus-browse-delete-group): Fix syntax error.
14 56
@@ -26,11 +68,11 @@
26 to nil to allow re-selecting groups that gain articles. 68 to nil to allow re-selecting groups that gain articles.
27 (gnus-bug-group-download-format-alist): Update the URL. 69 (gnus-bug-group-download-format-alist): Update the URL.
28 70
292012-12-23 Andreas Schwab <schwab@suse.de> 712012-12-25 Andreas Schwab <schwab@suse.de>
30 72
31 * shr.el (shr-tag-em): Render em as italic, not bold. 73 * shr.el (shr-tag-em): Render em as italic, not bold.
32 74
332012-12-23 Lars Ingebrigtsen <larsi@gnus.org> 752012-12-25 Lars Ingebrigtsen <larsi@gnus.org>
34 76
35 * gnus-int.el (gnus-backend-trace): Factor out into its own function 77 * gnus-int.el (gnus-backend-trace): Factor out into its own function
36 for reuse. 78 for reuse.
@@ -38,7 +80,7 @@
38 (gnus-finish-retrieve-group-infos): Add backend tracing. 80 (gnus-finish-retrieve-group-infos): Add backend tracing.
39 (gnus-backend-trace): Also note the elapsed seconds. 81 (gnus-backend-trace): Also note the elapsed seconds.
40 82
412012-12-22 Philipp Haselwarter <philipp@haselwarter.org> 832012-12-25 Philipp Haselwarter <philipp@haselwarter.org>
42 84
43 * gnus-sync.el (gnus-sync-file-encrypt-to, gnus-sync-save): Set 85 * gnus-sync.el (gnus-sync-file-encrypt-to, gnus-sync-save): Set
44 epa-file-encrypt-to from variable to avoid querying. 86 epa-file-encrypt-to from variable to avoid querying.
diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el
index 4c5e5ffadce..b5b0c773e90 100644
--- a/lisp/gnus/auth-source.el
+++ b/lisp/gnus/auth-source.el
@@ -1008,7 +1008,7 @@ Note that the MAX parameter is used so we can exit the parse early."
1008 (while (and (zerop (forward-line 1)) 1008 (while (and (zerop (forward-line 1))
1009 (looking-at "$"))) 1009 (looking-at "$")))
1010 (narrow-to-region (point) (point))) 1010 (narrow-to-region (point) (point)))
1011 ((member elem tokens) 1011 ((and (member elem tokens) (null pair))
1012 ;; Tokens that don't have a following value are ignored, 1012 ;; Tokens that don't have a following value are ignored,
1013 ;; except "default". 1013 ;; except "default".
1014 (when (and pair (or (cdr pair) 1014 (when (and pair (or (cdr pair)
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 60d6102f7c0..297c6540347 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -1489,7 +1489,8 @@ downloaded into the agent."
1489 1489
1490(defun gnus-agent-fetch-articles (group articles) 1490(defun gnus-agent-fetch-articles (group articles)
1491 "Fetch ARTICLES from GROUP and put them into the Agent." 1491 "Fetch ARTICLES from GROUP and put them into the Agent."
1492 (when articles 1492 (when (and articles
1493 (gnus-online (gnus-group-method group)))
1493 (gnus-agent-load-alist group) 1494 (gnus-agent-load-alist group)
1494 (let* ((alist gnus-agent-article-alist) 1495 (let* ((alist gnus-agent-article-alist)
1495 (headers (if (< (length articles) 2) nil gnus-newsgroup-headers)) 1496 (headers (if (< (length articles) 2) nil gnus-newsgroup-headers))
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 43c8ca78601..53e3d67161f 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -4539,18 +4539,17 @@ commands:
4539 (gnus-article-mode)) 4539 (gnus-article-mode))
4540 (setq truncate-lines gnus-article-truncate-lines) 4540 (setq truncate-lines gnus-article-truncate-lines)
4541 (current-buffer)) 4541 (current-buffer))
4542 (with-current-buffer (gnus-get-buffer-create name) 4542 (let ((summary gnus-summary-buffer))
4543 (gnus-article-mode) 4543 (with-current-buffer (gnus-get-buffer-create name)
4544 (setq truncate-lines gnus-article-truncate-lines) 4544 (gnus-article-mode)
4545 (make-local-variable 'gnus-summary-buffer) 4545 (setq truncate-lines gnus-article-truncate-lines)
4546 (setq gnus-summary-buffer 4546 (set (make-local-variable 'gnus-summary-buffer) summary)
4547 (gnus-summary-buffer-name gnus-newsgroup-name)) 4547 (gnus-summary-set-local-parameters gnus-newsgroup-name)
4548 (gnus-summary-set-local-parameters gnus-newsgroup-name) 4548 (when article-lapsed-timer
4549 (when article-lapsed-timer 4549 (gnus-stop-date-timer))
4550 (gnus-stop-date-timer)) 4550 (when gnus-article-update-date-headers
4551 (when gnus-article-update-date-headers 4551 (gnus-start-date-timer gnus-article-update-date-headers))
4552 (gnus-start-date-timer gnus-article-update-date-headers)) 4552 (current-buffer))))))
4553 (current-buffer)))))
4554 4553
4555(defun gnus-article-stop-animations () 4554(defun gnus-article-stop-animations ()
4556 (dolist (timer (and (boundp 'timer-list) 4555 (dolist (timer (and (boundp 'timer-list)
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 2fc87f097f9..80183c263db 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -1667,7 +1667,7 @@ and ends at END."
1667 (let ((face (cdar (gnus-group-update-eval-form 1667 (let ((face (cdar (gnus-group-update-eval-form
1668 group 1668 group
1669 gnus-group-highlight)))) 1669 gnus-group-highlight))))
1670 (unless (eq face (get-text-property beg 'face)) 1670 (unless (eq face (gnus-get-text-property-excluding-characters-with-faces beg 'face))
1671 (let ((inhibit-read-only t)) 1671 (let ((inhibit-read-only t))
1672 (gnus-put-text-property-excluding-characters-with-faces 1672 (gnus-put-text-property-excluding-characters-with-faces
1673 beg end 'face 1673 beg end 'face
diff --git a/lisp/gnus/gnus-salt.el b/lisp/gnus/gnus-salt.el
index 760a7a0942e..cb4101b5806 100644
--- a/lisp/gnus/gnus-salt.el
+++ b/lisp/gnus/gnus-salt.el
@@ -659,7 +659,7 @@ Two predefined functions are available:
659 (while (and list 659 (while (and list
660 (not (eval (caar list)))) 660 (not (eval (caar list))))
661 (setq list (cdr list))))) 661 (setq list (cdr list)))))
662 (unless (eq (setq face (cdar list)) (get-text-property beg 'face)) 662 (unless (eq (setq face (cdar list)) (gnus-get-text-property-excluding-characters-with-faces beg 'face))
663 (gnus-put-text-property-excluding-characters-with-faces 663 (gnus-put-text-property-excluding-characters-with-faces
664 beg end 'face 664 beg end 'face
665 (if (boundp face) (symbol-value face) face))))) 665 (if (boundp face) (symbol-value face) face)))))
@@ -828,31 +828,33 @@ Two predefined functions are available:
828 828
829(defun gnus-highlight-selected-tree (article) 829(defun gnus-highlight-selected-tree (article)
830 "Highlight the selected article in the tree." 830 "Highlight the selected article in the tree."
831 (let ((buf (current-buffer)) 831 (when (buffer-live-p gnus-tree-buffer)
832 region) 832 (let ((buf (current-buffer))
833 (set-buffer gnus-tree-buffer) 833 region)
834 (when (setq region (gnus-tree-article-region article)) 834 (set-buffer gnus-tree-buffer)
835 (when (or (not gnus-selected-tree-overlay) 835 (when (setq region (gnus-tree-article-region article))
836 (gnus-extent-detached-p gnus-selected-tree-overlay)) 836 (when (or (not gnus-selected-tree-overlay)
837 ;; Create a new overlay. 837 (gnus-extent-detached-p gnus-selected-tree-overlay))
838 (gnus-overlay-put 838 ;; Create a new overlay.
839 (setq gnus-selected-tree-overlay 839 (gnus-overlay-put
840 (gnus-make-overlay (point-min) (1+ (point-min)))) 840 (setq gnus-selected-tree-overlay
841 'face gnus-selected-tree-face)) 841 (gnus-make-overlay (point-min) (1+ (point-min))))
842 ;; Move the overlay to the article. 842 'face gnus-selected-tree-face))
843 (gnus-move-overlay 843 ;; Move the overlay to the article.
844 gnus-selected-tree-overlay (goto-char (car region)) (cdr region)) 844 (gnus-move-overlay
845 (gnus-tree-minimize) 845 gnus-selected-tree-overlay (goto-char (car region)) (cdr region))
846 (gnus-tree-recenter) 846 (gnus-tree-minimize)
847 (let ((selected (selected-window))) 847 (gnus-tree-recenter)
848 (when (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t) 848 (let ((selected (selected-window)))
849 (select-window (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t)) 849 (when (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t)
850 (gnus-horizontal-recenter) 850 (select-window
851 (select-window selected)))) 851 (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t))
852;; If we remove this save-excursion, it updates the wrong mode lines?!? 852 (gnus-horizontal-recenter)
853 (with-current-buffer gnus-tree-buffer 853 (select-window selected))))
854 (gnus-set-mode-line 'tree)) 854 ;; If we remove this save-excursion, it updates the wrong mode lines?!?
855 (set-buffer buf))) 855 (with-current-buffer gnus-tree-buffer
856 (gnus-set-mode-line 'tree))
857 (set-buffer buf))))
856 858
857(defun gnus-tree-highlight-article (article face) 859(defun gnus-tree-highlight-article (article face)
858 (with-current-buffer (gnus-get-tree-buffer) 860 (with-current-buffer (gnus-get-tree-buffer)
diff --git a/lisp/gnus/gnus-spec.el b/lisp/gnus/gnus-spec.el
index f40177d5c60..22d4627bf28 100644
--- a/lisp/gnus/gnus-spec.el
+++ b/lisp/gnus/gnus-spec.el
@@ -265,7 +265,14 @@ Return a list of updated types."
265(defun gnus-face-face-function (form type) 265(defun gnus-face-face-function (form type)
266 `(gnus-add-text-properties 266 `(gnus-add-text-properties
267 (point) (progn ,@form (point)) 267 (point) (progn ,@form (point))
268 '(gnus-face t face ,(symbol-value (intern (format "gnus-face-%d" type)))))) 268 (cons 'face
269 (cons
270 ;; Delay consing the value of the `face' property until
271 ;; `gnus-add-text-properties' runs, since it will be modified
272 ;; by `gnus-put-text-property-excluding-characters-with-faces'.
273 (list ',(symbol-value (intern (format "gnus-face-%d" type))) nil)
274 ;; Redundant now, but still convenient.
275 '(gnus-face t)))))
269 276
270(defun gnus-balloon-face-function (form type) 277(defun gnus-balloon-face-function (form type)
271 `(gnus-put-text-property 278 `(gnus-put-text-property
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 7c3bf9f02a8..429dd555258 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -3493,8 +3493,8 @@ If the setup was successful, non-nil is returned."
3493 (set-buffer buffer) 3493 (set-buffer buffer)
3494 (setq gnus-summary-buffer (current-buffer)) 3494 (setq gnus-summary-buffer (current-buffer))
3495 (not gnus-newsgroup-prepared)) 3495 (not gnus-newsgroup-prepared))
3496 ;; Fix by Sudish Joseph <joseph@cis.ohio-state.edu> 3496 (set-buffer (gnus-get-buffer-create buffer))
3497 (setq gnus-summary-buffer (set-buffer (gnus-get-buffer-create buffer))) 3497 (setq gnus-summary-buffer (current-buffer))
3498 (gnus-summary-mode group) 3498 (gnus-summary-mode group)
3499 (when (gnus-group-quit-config group) 3499 (when (gnus-group-quit-config group)
3500 (set (make-local-variable 'gnus-single-article-buffer) nil)) 3500 (set (make-local-variable 'gnus-single-article-buffer) nil))
@@ -3552,11 +3552,7 @@ buffer that was in action when the last article was fetched."
3552 (if (consp (car locals)) 3552 (if (consp (car locals))
3553 (set (caar locals) (pop vlist)) 3553 (set (caar locals) (pop vlist))
3554 (set (car locals) (pop vlist))) 3554 (set (car locals) (pop vlist)))
3555 (setq locals (cdr locals)))) 3555 (setq locals (cdr locals))))))))
3556 ;; The article buffer also has local variables.
3557 (when (gnus-buffer-live-p gnus-article-buffer)
3558 (set-buffer gnus-article-buffer)
3559 (setq gnus-summary-buffer summary))))))
3560 3556
3561(defun gnus-summary-article-unread-p (article) 3557(defun gnus-summary-article-unread-p (article)
3562 "Say whether ARTICLE is unread or not." 3558 "Say whether ARTICLE is unread or not."
@@ -7874,7 +7870,6 @@ If STOP is non-nil, just stop when reaching the end of the message.
7874 7870
7875Also see the variable `gnus-article-skip-boring'." 7871Also see the variable `gnus-article-skip-boring'."
7876 (interactive "P") 7872 (interactive "P")
7877 (setq gnus-summary-buffer (current-buffer))
7878 (gnus-set-global-variables) 7873 (gnus-set-global-variables)
7879 (let ((article (gnus-summary-article-number)) 7874 (let ((article (gnus-summary-article-number))
7880 (article-window (get-buffer-window gnus-article-buffer t)) 7875 (article-window (get-buffer-window gnus-article-buffer t))
@@ -12524,7 +12519,7 @@ If REVERSE, save parts that do not match TYPE."
12524 (memq article gnus-newsgroup-undownloaded) 12519 (memq article gnus-newsgroup-undownloaded)
12525 (not (memq article gnus-newsgroup-cached))))) 12520 (not (memq article gnus-newsgroup-cached)))))
12526 (let ((face (funcall (gnus-summary-highlight-line-0)))) 12521 (let ((face (funcall (gnus-summary-highlight-line-0))))
12527 (unless (eq face (get-text-property beg 'face)) 12522 (unless (eq face (gnus-get-text-property-excluding-characters-with-faces beg 'face))
12528 (gnus-put-text-property-excluding-characters-with-faces 12523 (gnus-put-text-property-excluding-characters-with-faces
12529 beg (point-at-eol) 'face 12524 beg (point-at-eol) 'face
12530 (setq face (if (boundp face) (symbol-value face) face))) 12525 (setq face (if (boundp face) (symbol-value face) face)))
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 7b1e2b5c792..1c22bdfd2c1 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -866,18 +866,29 @@ If there's no subdirectory, delete DIRECTORY as well."
866 (setq beg (point))) 866 (setq beg (point)))
867 (gnus-overlay-put (gnus-make-overlay beg (point)) prop val))))) 867 (gnus-overlay-put (gnus-make-overlay beg (point)) prop val)))))
868 868
869(defun gnus-put-text-property-excluding-characters-with-faces (beg end 869(defun gnus-put-text-property-excluding-characters-with-faces (beg end prop val)
870 prop val) 870 "The same as `put-text-property', except where `gnus-face' is set.
871 "The same as `put-text-property', but don't put props on characters with the `gnus-face' property." 871If so, and PROP is `face', set the second element of its value to VAL.
872 (let ((b beg)) 872Otherwise, do nothing."
873 (while (/= b end) 873 (while (< beg end)
874 (when (get-text-property b 'gnus-face) 874 ;; Property values are compared with `eq'.
875 (setq b (next-single-property-change b 'gnus-face nil end))) 875 (let ((stop (next-single-property-change beg 'face nil end)))
876 (when (/= b end) 876 (if (get-text-property beg 'gnus-face)
877 (when (eq prop 'face)
878 (setcar (cdr (get-text-property beg 'face)) val))
877 (inline 879 (inline
878 (gnus-put-text-property 880 (gnus-put-text-property beg stop prop val)))
879 b (setq b (next-single-property-change b 'gnus-face nil end)) 881 (setq beg stop))))
880 prop val)))))) 882
883(defun gnus-get-text-property-excluding-characters-with-faces (pos prop)
884 "The same as `get-text-property', except where `gnus-face' is set.
885If so, and PROP is `face', return the second element of its value.
886Otherwise, return the value."
887 (let ((val (get-text-property pos prop)))
888 (if (and (get-text-property pos 'gnus-face)
889 (eq prop 'face))
890 (cadr val)
891 (get-text-property pos prop))))
881 892
882(defmacro gnus-faces-at (position) 893(defmacro gnus-faces-at (position)
883 "Return a list of faces at POSITION." 894 "Return a list of faces at POSITION."
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 24159d4c2a3..2995daa2702 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -3814,7 +3814,9 @@ prefix, and don't delete any headers."
3814 (interactive "P") 3814 (interactive "P")
3815 ;; eval the let forms contained in message-cite-style 3815 ;; eval the let forms contained in message-cite-style
3816 (eval 3816 (eval
3817 `(let ,message-cite-style 3817 `(let ,(if (symbolp message-cite-style)
3818 (symbol-value message-cite-style)
3819 message-cite-style)
3818 (message--yank-original-internal ',arg)))) 3820 (message--yank-original-internal ',arg))))
3819 3821
3820(defun message-yank-buffer (buffer) 3822(defun message-yank-buffer (buffer)
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el
index 322c1d5d081..2ccbbc1001e 100644
--- a/lisp/gnus/shr.el
+++ b/lisp/gnus/shr.el
@@ -931,7 +931,8 @@ ones, in case fg and bg are nil."
931 (start (point)) 931 (start (point))
932 shr-start) 932 shr-start)
933 (shr-generic cont) 933 (shr-generic cont)
934 (shr-urlify (or shr-start start) (shr-expand-url url) title))) 934 (when url
935 (shr-urlify (or shr-start start) (shr-expand-url url) title))))
935 936
936(defun shr-tag-object (cont) 937(defun shr-tag-object (cont)
937 (let ((start (point)) 938 (let ((start (point))