emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r101965: Merge changes made in Gnus t


From: Katsumi Yamaoka
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r101965: Merge changes made in Gnus trunk.
Date: Thu, 14 Oct 2010 22:39:54 +0000
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 101965
author: Gnus developers
committer: Katsumi Yamaoka <address@hidden>
branch nick: trunk
timestamp: Thu 2010-10-14 22:39:54 +0000
message:
  Merge changes made in Gnus trunk.
  
  shr.el: Fix defcustom type (char -> character).
  nnimap.el (nnimap-open-connection): Remove %s from openssl incantation, which 
is no longer valid.
  gnus-sum.el (gnus-summary-refer-thread): Implement a version that uses 
*-request-thread.
  gnus-int.el (gnus-request-thread): New back end function.
  nnimap.el (nnimap-request-thread): New back end function.
  shr.el: Indent.
  gnus-art.el, shr.el: Have shr switch buffer truncation on if there are big 
tables.
  (nnimap-open-connection): Message when opening connection for debugging 
purposes.
modified:
  lisp/gnus/ChangeLog
  lisp/gnus/gnus-art.el
  lisp/gnus/gnus-int.el
  lisp/gnus/gnus-sum.el
  lisp/gnus/nnimap.el
  lisp/gnus/shr.el
=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog       2010-10-14 14:32:27 +0000
+++ b/lisp/gnus/ChangeLog       2010-10-14 22:39:54 +0000
@@ -1,5 +1,31 @@
 2010-10-14  Lars Magne Ingebrigtsen  <address@hidden>
 
+       * nnimap.el (nnimap-open-connection): Message when opening connection
+       for debugging purposes.
+
+       * gnus-art.el (gnus-article-setup-buffer): Set article mode truncation
+       on every setup buffer call to allow this to change from article to
+       article.
+
+       * shr.el (shr-tag-table): Experimental feature: Truncate lines in
+       buffers where we have a wide table.
+
+2010-10-14  Andrew Cohen  <address@hidden>
+
+       * gnus-sum.el (gnus-summary-refer-thread): Implement a version that
+       uses *-request-thread.
+
+2010-10-14  Lars Magne Ingebrigtsen  <address@hidden>
+
+       * nnimap.el (nnimap-open-connection): Remove %s from openssl
+       incantation, which is no longer valid.
+
+2010-10-14  Julien Danjou  <address@hidden>
+
+       * shr.el: Fix defcustom type (char -> character).
+
+2010-10-14  Lars Magne Ingebrigtsen  <address@hidden>
+
        * nnimap.el (nnimap-open-connection): tls-program should be a list of
        programs.
 

=== modified file 'lisp/gnus/gnus-art.el'
--- a/lisp/gnus/gnus-art.el     2010-10-11 23:29:33 +0000
+++ b/lisp/gnus/gnus-art.el     2010-10-14 22:39:54 +0000
@@ -4474,7 +4474,6 @@
   ;; face.
   (set (make-local-variable 'nobreak-char-display) nil)
   (setq cursor-in-non-selected-windows nil)
-  (setq truncate-lines gnus-article-truncate-lines)
   (gnus-set-default-directory)
   (buffer-disable-undo)
   (setq buffer-read-only t
@@ -4534,9 +4533,11 @@
          (setq gnus-button-marker-list nil)
          (unless (eq major-mode 'gnus-article-mode)
            (gnus-article-mode))
+         (setq truncate-lines gnus-article-truncate-lines)
          (current-buffer))
       (with-current-buffer (gnus-get-buffer-create name)
        (gnus-article-mode)
+       (setq truncate-lines gnus-article-truncate-lines)
        (make-local-variable 'gnus-summary-buffer)
        (setq gnus-summary-buffer
              (gnus-summary-buffer-name gnus-newsgroup-name))

=== modified file 'lisp/gnus/gnus-int.el'
--- a/lisp/gnus/gnus-int.el     2010-10-11 10:03:07 +0000
+++ b/lisp/gnus/gnus-int.el     2010-10-14 22:39:54 +0000
@@ -504,6 +504,12 @@
             article (gnus-group-real-name group)
             (nth 1 gnus-command-method) buffer)))
 
+(defun gnus-request-thread (id)
+  "Request the thread containing the article specified by Message-ID id."
+  (let ((gnus-command-method (gnus-find-method-for-group gnus-newsgroup-name)))
+    (funcall (gnus-get-function gnus-command-method 'request-thread)
+            id)))
+
 (defun gnus-request-head (article group)
   "Request the head of ARTICLE in GROUP."
   (let* ((gnus-command-method (gnus-find-method-for-group group))

=== modified file 'lisp/gnus/gnus-sum.el'
--- a/lisp/gnus/gnus-sum.el     2010-10-12 14:17:15 +0000
+++ b/lisp/gnus/gnus-sum.el     2010-10-14 22:39:54 +0000
@@ -8824,31 +8824,35 @@
 
 (defun gnus-summary-refer-thread (&optional limit)
   "Fetch all articles in the current thread.
-If LIMIT (the numerical prefix), fetch that many old headers instead
-of what's specified by the `gnus-refer-thread-limit' variable."
+If no backend-specific 'request-thread function is available
+fetch LIMIT (the numerical prefix) old headers. If LIMIT is nil
+fetch what's specified by the `gnus-refer-thread-limit'
+variable."
   (interactive "P")
   (let ((id (mail-header-id (gnus-summary-article-header)))
        (limit (if limit (prefix-numeric-value limit)
                 gnus-refer-thread-limit)))
-    (unless (eq gnus-fetch-old-headers 'invisible)
-      (gnus-message 5 "Fetching headers for %s..." gnus-newsgroup-name)
-      ;; Retrieve the headers and read them in.
-      (if (eq (if (numberp limit)
-                 (gnus-retrieve-headers
-                  (list (min
-                         (+ (mail-header-number
-                             (gnus-summary-article-header))
-                            limit)
-                         gnus-newsgroup-end))
-                  gnus-newsgroup-name (* limit 2))
-               ;; gnus-refer-thread-limit is t, i.e. fetch _all_
-               ;; headers.
-               (gnus-retrieve-headers (list gnus-newsgroup-end)
-                                      gnus-newsgroup-name limit))
-             'nov)
-         (gnus-build-all-threads)
-       (error "Can't fetch thread from back ends that don't support NOV"))
-      (gnus-message 5 "Fetching headers for %s...done" gnus-newsgroup-name))
+    (if  (gnus-check-backend-function 'request-thread gnus-newsgroup-name)
+       (gnus-request-thread id)
+      (unless (eq gnus-fetch-old-headers 'invisible)
+       (gnus-message 5 "Fetching headers for %s..." gnus-newsgroup-name)
+       ;;      Retrieve the headers and read them in.
+       (if (numberp limit)
+           (gnus-retrieve-headers
+            (list (min
+                   (+ (mail-header-number
+                       (gnus-summary-article-header))
+                      limit)
+                   gnus-newsgroup-end))
+            gnus-newsgroup-name (* limit 2))
+         ;; gnus-refer-thread-limit is t, i.e. fetch _all_
+         ;; headers.
+         (gnus-retrieve-headers (list gnus-newsgroup-end)
+                                gnus-newsgroup-name limit)
+         (gnus-message 5 "Fetching headers for %s...done"
+                       gnus-newsgroup-name))))
+    (when (eq gnus-headers-retrieved-by 'nov)
+      (gnus-build-all-threads))
     (gnus-summary-limit-include-thread id)))
 
 (defun gnus-summary-refer-article (message-id)

=== modified file 'lisp/gnus/nnimap.el'
--- a/lisp/gnus/nnimap.el       2010-10-14 10:16:59 +0000
+++ b/lisp/gnus/nnimap.el       2010-10-14 22:39:54 +0000
@@ -304,6 +304,7 @@
               ((or (eq nnimap-stream 'network)
                    (and (eq nnimap-stream 'starttls)
                         (fboundp 'open-gnutls-stream)))
+               (message "Opening connection to %s..." nnimap-address)
                (open-network-stream
                 "*nnimap*" (current-buffer) nnimap-address
                 (setq port
@@ -313,18 +314,22 @@
                             "143"))))
                '("143" "imap"))
               ((eq nnimap-stream 'shell)
+               (message "Opening connection to %s via shell..." nnimap-address)
                (nnimap-open-shell-stream
                 "*nnimap*" (current-buffer) nnimap-address
                 (setq port (or nnimap-server-port "imap")))
                '("imap"))
               ((eq nnimap-stream 'starttls)
+               (message "Opening connection to %s via starttls..."
+                        nnimap-address)
                (let ((tls-program
-                      '("openssl s_client %s -connect %h:%p -no_ssl2 -ign_eof 
-starttls imap")))
+                      '("openssl s_client -connect %h:%p -no_ssl2 -ign_eof 
-starttls imap")))
                  (open-tls-stream
                   "*nnimap*" (current-buffer) nnimap-address
                   (setq port (or nnimap-server-port "imap"))))
                '("imap"))
               ((memq nnimap-stream '(ssl tls))
+               (message "Opening connection to %s via tls..." nnimap-address)
                (funcall (if (fboundp 'open-gnutls-stream)
                             'open-gnutls-stream
                           'open-tls-stream)
@@ -1311,6 +1316,25 @@
   (setq nnimap-status-string "Read-only server")
   nil)
 
+(deffoo nnimap-request-thread (id)
+    (let* ((refs (split-string
+              (or (mail-header-references (gnus-summary-article-header))
+                  "")))
+          (cmd (let ((value
+                      (format
+                       "(OR HEADER REFERENCES %s HEADER Message-Id %s)"
+                       id id)))
+                 (dolist (refid refs value)
+                   (setq value (format
+                                "(OR (OR HEADER Message-Id %s HEADER 
REFERENCES %s) %s)"
+                                refid refid value)))))
+          (result
+           (with-current-buffer (nnimap-buffer)
+             (nnimap-command  "UID SEARCH %s" cmd))))
+      (gnus-fetch-headers (and (car result)
+          (delete 0 (mapcar #'string-to-number
+                            (cdr (assoc "SEARCH" (cdr result)))))))))
+
 (defun nnimap-possibly-change-group (group server)
   (let ((open-result t))
     (when (and server

=== modified file 'lisp/gnus/shr.el'
--- a/lisp/gnus/shr.el  2010-10-14 13:55:30 +0000
+++ b/lisp/gnus/shr.el  2010-10-14 22:39:54 +0000
@@ -56,17 +56,17 @@
 (defcustom shr-table-line ?-
   "Character used to draw table line."
   :group 'shr
-  :type 'char)
+  :type 'character)
 
 (defcustom shr-table-corner ?+
   "Character used to draw table corner."
   :group 'shr
-  :type 'char)
+  :type 'character)
 
 (defcustom shr-hr-line ?-
   "Character used to draw hr line."
   :group 'shr
-  :type 'char)
+  :type 'character)
 
 (defcustom shr-width fill-column
   "Frame width to use for rendering."
@@ -404,14 +404,17 @@
             (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))))))))))))
+            (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]"))
@@ -537,6 +540,11 @@
         ;; unbreakable text).
         (sketch (shr-make-table cont suggested-widths))
         (sketch-widths (shr-table-widths sketch suggested-widths)))
+    ;; This probably won't work very well.
+    (when (> (1+ (loop for width across sketch-widths
+                      summing (1+ width)))
+            (frame-width))
+      (setq truncate-lines t))
     ;; Then render the table again with these new "hard" widths.
     (shr-insert-table (shr-make-table cont sketch-widths t) sketch-widths))
   ;; Finally, insert all the images after the table.  The Emacs buffer


reply via email to

[Prev in Thread] Current Thread [Next in Thread]