summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2011-01-24 04:10:19 +0000
committerKatsumi Yamaoka <yamaoka@jpl.org>2011-01-24 04:10:19 +0000
commitcb51ba085d2250e2487fbdc30edcb1f049d040d7 (patch)
tree4190b92176f75313f1b62ddfe1e3bcdc2747d2b6 /lisp
parentb711096ad269e09e750449db68ded5e6729c17c1 (diff)
downloademacs-cb51ba085d2250e2487fbdc30edcb1f049d040d7.tar.gz
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.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/gnus/ChangeLog28
-rw-r--r--lisp/gnus/gnus-art.el9
-rw-r--r--lisp/gnus/gnus-gravatar.el69
-rw-r--r--lisp/gnus/gravatar.el12
-rw-r--r--lisp/gnus/shr.el11
5 files changed, 88 insertions, 41 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 8bd8732ade4..9780b6f4c07 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -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.
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 430590d9abb..06817e941a0 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -6432,6 +6432,8 @@ not have a face in `gnus-article-boring-faces'."
(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 @@ not have a face in `gnus-article-boring-faces'."
(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
diff --git a/lisp/gnus/gnus-gravatar.el b/lisp/gnus/gnus-gravatar.el
index 53d1310a094..ae17d5b5abd 100644
--- a/lisp/gnus/gnus-gravatar.el
+++ b/lisp/gnus/gnus-gravatar.el
@@ -80,37 +80,44 @@ If nil, default to `gravatar-size'."
"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)
diff --git a/lisp/gnus/gravatar.el b/lisp/gnus/gravatar.el
index 158347fb004..cb857fca89b 100644
--- a/lisp/gnus/gravatar.el
+++ b/lisp/gnus/gravatar.el
@@ -108,9 +108,15 @@ If no image available, return 'error."
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)
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el
index 6e681d67365..75929b29e05 100644
--- a/lisp/gnus/shr.el
+++ b/lisp/gnus/shr.el
@@ -462,11 +462,12 @@ redirects somewhere else."
(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)