changeset 112451:98ad7c9e56a3

gnus-html.el (gnus-html-image-fetched): Don't kill the temporary buffer after being called. It's apparently being killed by url.el, and killing it made point move to end-of-buffer in a random buffer. shr.el (shr-image-fetched): Ditto. shr.el (shr-image-fetched): Avoid having point move in the article buffer. gnus-html.el (gnus-html-image-fetched): Kill the buffer anyway, and fix the bug in url-http.el instead. shr.el (shr-image-fetched): Ditto. gravatar.el (gravatar-retrieve): Be silent when retrieving. gnus-gravatar.el (gnus-gravatar-insert): Don't move point around in the article buffer. (gnus-gravatar-insert): Use blank space from the current buffer to avoid breaking text properties. This makes X-Sent updating work again. gnus-art.el (gnus-article-read-summary-keys): Don't call disabled commands.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Mon, 24 Jan 2011 04:10:19 +0000
parents 5e6007430c1e
children b8a360ee54f1
files lisp/gnus/ChangeLog lisp/gnus/gnus-art.el lisp/gnus/gnus-gravatar.el lisp/gnus/gravatar.el lisp/gnus/shr.el
diffstat 5 files changed, 88 insertions(+), 41 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog	Sun Jan 23 18:20:34 2011 -0800
+++ b/lisp/gnus/ChangeLog	Mon Jan 24 04:10:19 2011 +0000
@@ -1,3 +1,31 @@
+2011-01-24  Lars Ingebrigtsen  <larsi@gnus.org>
+
+	* gnus-art.el (gnus-article-read-summary-keys): Don't call disabled
+	commands.
+
+	* gnus-gravatar.el (gnus-gravatar-insert): Don't move point around
+	in the article buffer.
+	(gnus-gravatar-insert): Use blank space from the current buffer to
+	avoid breaking text properties.  This makes X-Sent updating work again.
+
+	* gravatar.el (gravatar-retrieve): Be silent when retrieving.
+
+2011-01-23  Lars Ingebrigtsen  <larsi@gnus.org>
+
+	* gnus-html.el (gnus-html-image-fetched): Kill the buffer anyway, and
+	fix the bug in url-http.el instead.
+
+	* shr.el (shr-image-fetched): Ditto.
+
+	* shr.el (shr-image-fetched): Avoid having point move in the article
+	buffer.
+
+	* gnus-html.el (gnus-html-image-fetched): Don't kill the temporary
+	buffer after being called.  It's apparently being killed by url.el, and
+	killing it made point move to end-of-buffer in a random buffer.
+
+	* shr.el (shr-image-fetched): Ditto.
+
 2011-01-23  Julien Danjou  <julien@danjou.info>
 
 	* mm-decode.el (mm-inline-media-tests): Change text/org to text/x-org.
--- a/lisp/gnus/gnus-art.el	Sun Jan 23 18:20:34 2011 -0800
+++ b/lisp/gnus/gnus-art.el	Mon Jan 24 04:10:19 2011 +0000
@@ -6432,6 +6432,8 @@
 	    (ding)
 	  (unless (member keys nosave-in-article)
 	    (set-buffer gnus-article-current-summary))
+	  (when (get func 'disabled)
+	    (error "Function %s disabled" func))
 	  (call-interactively func)
 	  (setq new-sum-point (point)))
 	(when (member keys nosave-but-article)
@@ -6460,8 +6462,11 @@
 		 (select-window win))))
 	(setq in-buffer (current-buffer))
 	;; We disable the pick minor mode commands.
-	(if (and (setq func (let (gnus-pick-mode)
-			      (key-binding keys t)))
+	(setq func (let (gnus-pick-mode)
+		     (key-binding keys t)))
+	(when (get func 'disabled)
+	  (error "Function %s disabled" func))
+	(if (and func
 		 (functionp func)
 		 (condition-case code
 		     (progn
--- a/lisp/gnus/gnus-gravatar.el	Sun Jan 23 18:20:34 2011 -0800
+++ b/lisp/gnus/gnus-gravatar.el	Mon Jan 24 04:10:19 2011 +0000
@@ -80,37 +80,44 @@
   "Insert GRAVATAR for ADDRESS in HEADER in current article buffer.
 Set image category to CATEGORY."
   (unless (eq gravatar 'error)
-    (gnus-with-article-headers
-      ;; The buffer can be gone at this time
-      (when (buffer-live-p (current-buffer))
-        (gnus-article-goto-header header)
-        (mail-header-narrow-to-field)
-        (let ((real-name (car address))
-              (mail-address (cadr address)))
-          (when (if real-name
-		    (re-search-forward
-		     (concat (gnus-replace-in-string
-			      (regexp-quote real-name) "[\t ]+" "[\t\n ]+")
-			     "\\|"
-			     (regexp-quote mail-address))
-		     nil t)
-		  (search-forward mail-address nil t))
-	    (goto-char (1- (match-beginning 0)))
-            ;; If we're on the " quoting the name, go backward
-            (when (looking-at "[\"<]")
-              (goto-char (1- (point))))
-            ;; Do not do anything if there's already a gravatar. This can
-            ;; happens if the buffer has been regenerated in the mean time, for
-            ;; example we were fetching someaddress, and then we change to
-            ;; another mail with the same someaddress.
-            (unless (memq 'gnus-gravatar (text-properties-at (point)))
-              (let ((point (point)))
-                (unless (featurep 'xemacs)
-                  (setq gravatar (append gravatar gnus-gravatar-properties)))
-                (gnus-put-image gravatar nil category)
-                (put-text-property point (point) 'gnus-gravatar address)
-                (gnus-add-wash-type category)
-                (gnus-add-image category gravatar)))))))))
+    (with-current-buffer gnus-article-buffer
+      (let ((mark (point-marker))
+	    (inhibit-read-only t)
+	    (inhibit-point-motion-hooks t)
+	    (case-fold-search t))
+	(save-restriction
+	  (article-narrow-to-head)
+	  ;; The buffer can be gone at this time
+	  (when (buffer-live-p (current-buffer))
+	    (gnus-article-goto-header header)
+	    (mail-header-narrow-to-field)
+	    (let ((real-name (car address))
+		  (mail-address (cadr address)))
+	      (when (if real-name
+			(re-search-forward
+			 (concat (gnus-replace-in-string
+				  (regexp-quote real-name) "[\t ]+" "[\t\n ]+")
+				 "\\|"
+				 (regexp-quote mail-address))
+			 nil t)
+		      (search-forward mail-address nil t))
+		(goto-char (1- (match-beginning 0)))
+		;; If we're on the " quoting the name, go backward
+		(when (looking-at "[\"<]")
+		  (goto-char (1- (point))))
+		;; Do not do anything if there's already a gravatar. This can
+		;; happens if the buffer has been regenerated in the mean time, for
+		;; example we were fetching someaddress, and then we change to
+		;; another mail with the same someaddress.
+		(unless (memq 'gnus-gravatar (text-properties-at (point)))
+		  (let ((point (point)))
+		    (unless (featurep 'xemacs)
+		      (setq gravatar (append gravatar gnus-gravatar-properties)))
+		    (gnus-put-image gravatar (buffer-substring (point) (1+ point)) category)
+		    (put-text-property point (point) 'gnus-gravatar address)
+		    (gnus-add-wash-type category)
+		    (gnus-add-image category gravatar)))))))
+	(goto-char (marker-position mark))))))
 
 ;;;###autoload
 (defun gnus-treat-from-gravatar (&optional force)
--- a/lisp/gnus/gravatar.el	Sun Jan 23 18:20:34 2011 -0800
+++ b/lisp/gnus/gravatar.el	Mon Jan 24 04:10:19 2011 +0000
@@ -108,9 +108,15 @@
 You can provide a list of argument to pass to CB in CBARGS."
   (let ((url (gravatar-build-url mail-address)))
     (if (gravatar-cache-expired url)
-        (url-retrieve url
-                      'gravatar-retrieved
-                      (list cb (when cbargs cbargs)))
+	(let ((args (list url
+			  'gravatar-retrieved
+			  (list cb (when cbargs cbargs)))))
+	  (when (> (length (if (featurep 'xemacs)
+			       (cdr (split-string (function-arglist 'url-retrieve)))
+			     (help-function-arglist 'url-retrieve)))
+		   4)
+	    (setq args (nconc args (list t))))
+	  (apply #'url-retrieve args))
       (apply cb
                (with-temp-buffer
                  (mm-disable-multibyte)
--- a/lisp/gnus/shr.el	Sun Jan 23 18:20:34 2011 -0800
+++ b/lisp/gnus/shr.el	Mon Jan 24 04:10:19 2011 +0000
@@ -462,11 +462,12 @@
 	      (search-forward "\r\n\r\n" nil t))
       (let ((data (buffer-substring (point) (point-max))))
         (with-current-buffer buffer
-          (let ((alt (buffer-substring start end))
-		(inhibit-read-only t))
-	    (delete-region start end)
-	    (goto-char start)
-	    (shr-put-image data alt))))))
+	  (save-excursion
+	    (let ((alt (buffer-substring start end))
+		  (inhibit-read-only t))
+	      (delete-region start end)
+	      (goto-char start)
+	      (shr-put-image data alt)))))))
   (kill-buffer (current-buffer)))
 
 (defun shr-put-image (data alt)