]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge changes made in Gnus trunk.
authorGnus developers <ding@gnus.org>
Tue, 12 Oct 2010 22:18:24 +0000 (22:18 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Tue, 12 Oct 2010 22:18:24 +0000 (22:18 +0000)
gnus-gravatar.el (gnus-art): Required.
shr.el (shr-tag-img): Add align attribute support for <img>.
gnus-gravatar.el (gnus-gravatar-insert): Check if buffer is alive.
shr.el (shr-tag-img): Encode URL properly when retrieving.
shr.el (shr-get-image-data): Encode URL properly when fetching from cache.
shr.el (shr-tag-img): Use aligned-to spaces to align correctly images.
nnimap.el (nnimap-request-rename-group): Unselect by selecting a mailbox that doesn't exist.
rfc2231.el (rfc2231-parse-string): Ignore repeated parts.
gnus-gravatar.el (gnus-gravatar-too-ugly): Don't test if gnus-article-x-face-too-ugly is bound.

lisp/gnus/ChangeLog
lisp/gnus/ecomplete.el
lisp/gnus/gnus-gravatar.el
lisp/gnus/nnimap.el
lisp/gnus/rfc2231.el
lisp/gnus/shr.el

index 7898f380028ed0453db068513d08d57149a8f837..53da34ae6ceaeb2331b637735ee7f9c73047c5ec 100644 (file)
@@ -1,5 +1,30 @@
+2010-10-12  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus-gravatar.el (gnus-gravatar-too-ugly): Don't test if
+       gnus-article-x-face-too-ugly is bound.
+
 2010-10-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
+       * rfc2231.el (rfc2231-parse-string): Ignore repeated parts.
+
+       * nnimap.el (nnimap-request-rename-group): Unselect by selecting a
+       mailbox that doesn't exist.
+
+2010-10-12  Julien Danjou  <julien@danjou.info>
+
+       * shr.el (shr-tag-img): Encode URL properly when retrieving.
+       (shr-get-image-data): Encode URL properly when fetching from cache.
+       (shr-tag-img): Use aligned-to spaces to align correctly images.
+
+       * gnus-gravatar.el (gnus-gravatar-insert): Check if buffer is alive
+       before inserting the Gravatar.
+
+       * shr.el (shr-tag-img): Add align attribute support for <img>.
+
+2010-10-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-gravatar.el (gnus-art): Required.
+
        * gnus-sum.el (gnus-summary-mark-as-unread-forward)
        (gnus-summary-mark-as-unread-backward, gnus-summary-mark-as-unread):
        Remove long obsoleted functions.
index 1e9769f757d8dfbac3def0c37cb81aa2b198f4f0..33d2ddd6a7150c203b07d1aa14e392639a3b8466 100644 (file)
     (save-restriction
       (narrow-to-region (point) (point-at-eol))
       (while (not (eobp))
-       ;; Put the 'region face on any charactes on this line that
+       ;; Put the 'region face on any characters on this line that
        ;; aren't already highlighted.
        (unless (get-text-property (point) 'face)
          (put-text-property (point) (1+ (point)) 'face 'highlight))
index 9c1302743754a760bf69d94d4830c93072eda633..bcc097b7d0f60351a4191ec9970aaea6596c08e9 100644 (file)
@@ -25,6 +25,7 @@
 ;;; Code:
 
 (require 'gravatar)
+(require 'gnus-art)
 
 (defgroup gnus-gravatar nil
   "Gnus Gravatar."
@@ -42,8 +43,7 @@
   :version "24.1"
   :group 'gnus-gravatar)
 
-(defcustom gnus-gravatar-too-ugly (if (boundp 'gnus-article-x-face-too-ugly)
-                                     gnus-article-x-face-too-ugly)
+(defcustom gnus-gravatar-too-ugly gnus-article-x-face-too-ugly
   "Regexp matching posters whose avatar shouldn't be shown automatically."
   :type '(choice regexp (const nil))
   :version "24.1"
 Set image category to CATEGORY."
   (unless (eq gravatar 'error)
     (gnus-with-article-headers
-      (gnus-article-goto-header header)
-      (mail-header-narrow-to-field)
-      (let ((real-name (cdr address))
-            (mail-address (car address)))
-        (when (if real-name             ; have a realname, go for it!
-                  (and (search-forward real-name nil t)
-                       (search-backward real-name nil t))
-                (and (search-forward mail-address nil t)
-                     (search-backward mail-address nil t)))
-          (goto-char (1- (point)))
-          ;; 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 ((inhibit-read-only t)
-                  (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))))))))
+      ;; 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 (cdr address))
+              (mail-address (car address)))
+          (when (if real-name             ; have a realname, go for it!
+                    (and (search-forward real-name nil t)
+                         (search-backward real-name nil t))
+                  (and (search-forward mail-address nil t)
+                       (search-backward mail-address nil t)))
+            (goto-char (1- (point)))
+            ;; 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 ((inhibit-read-only t)
+                    (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)))))))))
 
 ;;;###autoload
 (defun gnus-treat-from-gravatar ()
index b58c7473d5174cd302e668616133d33fa16fcdf9..c6c8787a6c00dee5aa0a936d0d1b4f3f07d6556a 100644 (file)
@@ -673,8 +673,11 @@ textual parts.")
 (deffoo nnimap-request-rename-group (group new-name &optional server)
   (when (nnimap-possibly-change-group nil server)
     (with-current-buffer (nnimap-buffer)
-      ;; Make sure we don't have this group open read/write.
-      (nnimap-command "EXAMINE %S" (utf7-encode group 7))
+      ;; Make sure we don't have this group open read/write by asking
+      ;; to examine a mailbox that doesn't exist.  This seems to be
+      ;; the only way that allows us to reliably go back to unselected
+      ;; state on Courier.
+      (nnimap-command "EXAMINE DOES.NOT.EXIST")
       (setf (nnimap-group nnimap-object) nil)
       (car (nnimap-command "RENAME %S %S"
                           (utf7-encode group t) (utf7-encode new-name t))))))
index 7cb1740c635bfea3a2073a411d40408b0489924c..0b028a08b8330e7ad81d176bc7705187b25ce3f3 100644 (file)
@@ -185,11 +185,19 @@ must never cause a Lisp error."
                in (sort parameters (lambda (e1 e2)
                                      (< (or (caddr e1) 0)
                                         (or (caddr e2) 0))))
-               do (if (or (not (setq elem (assq attribute cparams)))
-                          (and (numberp part)
-                               (zerop part)))
-                      (push (list attribute value encoded) cparams)
-                    (setcar (cdr elem) (concat (cadr elem) value))))
+               do (cond
+                   ;; First part.
+                   ((or (not (setq elem (assq attribute cparams)))
+                        (and (numberp part)
+                             (zerop part)))
+                    (push (list attribute value encoded) cparams))
+                   ;; Repetition of a part; do nothing.
+                   ((and elem
+                         (null number))
+                    )
+                   ;; Concatenate continuation parts.
+                   (t
+                    (setcar (cdr elem) (concat (cadr elem) value)))))
          ;; Finally decode encoded values.
          (cons type (mapcar
                      (lambda (elem)
index 4031386368cedc8b16e657d5d8bf4de170cb8557..03c0ec84d5d6efa7a4de80c03ca3869985f4afec 100644 (file)
@@ -344,7 +344,7 @@ Return a string with image data."
   (with-temp-buffer
     (mm-disable-multibyte)
     (when (ignore-errors
-           (url-cache-extract (url-cache-create-filename url))
+           (url-cache-extract (url-cache-create-filename (shr-encode-url url)))
            t)
       (when (or (search-forward "\n\n" nil t)
                (search-forward "\r\n\r\n" nil t))
@@ -389,19 +389,40 @@ Return a string with image data."
     (put-text-property (or shr-start start) (point) 'keymap shr-map)
     (put-text-property (or shr-start start) (point) 'shr-url url)))
 
+(defun shr-encode-url (url)
+  "Encode URL."
+  (browse-url-url-encode-chars url "[)$ ]"))
+
 (defun shr-tag-img (cont)
   (when (and (> (current-column) 0)
             (not (eq shr-state 'image)))
     (insert "\n"))
-  (let ((start (point-marker)))
-    (let ((alt (cdr (assq :alt cont)))
-         (url (cdr (assq :src cont))))
+  (let ((alt (cdr (assq :alt cont)))
+        (url (cdr (assq :src cont)))
+        (width (cdr (assq :width cont))))
+    ;; Only respect align if width specified.
+    (when width
+      ;; Check that width is not larger than max width, otherwise ignore
+      ;; align
+      (let ((max-width (* fill-column (frame-char-width)))
+            (width (string-to-number width)))
+        (when (< width max-width)
+          (let ((align (cdr (assq :align cont))))
+            (cond ((string= align "right")
+                   (insert (propertize
+                            " " 'display
+                            `(space . (:align-to ,(list (- max-width width)))))))
+                  ((string= align "center")
+                   (insert (propertize
+                            " " 'display
+                            `(space . (:balign-to ,(list (- (/ max-width 2) width))))))))))))
+    (let ((start (point-marker)))
       (when (zerop (length alt))
-       (setq alt "[img]"))
+        (setq alt "[img]"))
       (cond
        ((and (not shr-inhibit-images)
-            (string-match "\\`cid:" url))
-       (let ((url (substring url (match-end 0)))
+             (string-match "\\`cid:" url))
+        (let ((url (substring url (match-end 0)))
              image)
          (if (or (not shr-content-function)
                  (not (setq image (funcall shr-content-function url))))
@@ -415,12 +436,12 @@ Return a string with image data."
          (if (> (length alt) 8)
              (shr-insert (substring alt 0 8))
            (shr-insert alt))))
-       ((url-is-cached (browse-url-url-encode-chars url "[&)$ ]"))
+       ((url-is-cached (shr-encode-url url))
        (shr-put-image (shr-get-image-data url) (point) alt))
        (t
        (insert alt)
        (ignore-errors
-         (url-retrieve url 'shr-image-fetched
+         (url-retrieve (shr-encode-url url) 'shr-image-fetched
                        (list (current-buffer) start (point-marker))
                        t))))
       (insert " ")