emacs-diffs
[Top][All Lists]
Advanced

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

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


From: Katsumi Yamaoka
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r101791: Merge changes made in Gnus trunk.
Date: Mon, 04 Oct 2010 22:26:51 +0000
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 101791
author: Gnus developers
committer: Katsumi Yamaoka <address@hidden>
branch nick: trunk
timestamp: Mon 2010-10-04 22:26:51 +0000
message:
  Merge changes made in Gnus trunk.
  
  shr.el: Implement table rendering.
  shr.el (shr-make-table): Tweak table generation.
  shr.el (shr-make-table): Fix typo.
  nnimap.el (nnimap-open-connection): Allow tls as a synonym for ssl.
  gnus-util.el (gnus-emacs-completing-read): Mapcar collection to list, for 
XEmacs.
  nnimap.el (nnimap-close-server): Implement.
  gnus-salt.el: Remove all gnus-carpal stuff -- it's not useful.
  nnir.el (nnir-run-imap): Remove spurious space in search string.
  message.el (message-idna-to-ascii-rhs-1): Don't bug out on addresses without 
@ signs.
  gnus-sum.el (gnus-widen-article-window): New variable.
  shr.el (browse-url): Required.
  shr.el (shr-ensure-paragraph): Don't insert a new newline after empty-ish 
lines.
  shr.el (shr-show-alt-text, shr-browse-image): New commands.
  gravatar.el (gravatar-retrieved): kill buffer when retrieved.
  shr.el (shr-browse-url, shr-copy-url): New commands.
  shr.el (shr-render-td): Protect against too-wide text.
  spam-report.el (spam-report-url-ping-plain): Don't query about killing the 
process.
  nnimap.el (nnimap-finish-retrieve-group-infos): Message while waiting for 
data.
  shr.el (shr-tag-blockquote): Ensure paragraph after quote, too.
  mml-smime.el: Fix gnus-completing-read usage.
  shr.el (shr-get-image-data): Ensure against the cache file missing.
  nnimap.el (nnimap-open-connection): Give an error if nnimap-stream is unknown.
modified:
  doc/misc/ChangeLog
  doc/misc/gnus-news.texi
  doc/misc/gnus.texi
  lisp/gnus/ChangeLog
  lisp/gnus/gnus-group.el
  lisp/gnus/gnus-salt.el
  lisp/gnus/gnus-srvr.el
  lisp/gnus/gnus-sum.el
  lisp/gnus/gnus-util.el
  lisp/gnus/gnus-win.el
  lisp/gnus/gnus.el
  lisp/gnus/gravatar.el
  lisp/gnus/message.el
  lisp/gnus/mml-smime.el
  lisp/gnus/nnimap.el
  lisp/gnus/nnir.el
  lisp/gnus/shr.el
  lisp/gnus/spam-report.el
=== modified file 'doc/misc/ChangeLog'
--- a/doc/misc/ChangeLog        2010-10-04 00:17:16 +0000
+++ b/doc/misc/ChangeLog        2010-10-04 22:26:51 +0000
@@ -1,3 +1,7 @@
+2010-10-04  Lars Magne Ingebrigtsen  <address@hidden>
+
+       * gnus.texi (Misc Article): Document gnus-widen-article-window.
+
 2010-10-03  Julien Danjou  <address@hidden>
 
        * emacs-mime.texi (Display Customization): Update

=== modified file 'doc/misc/gnus-news.texi'
--- a/doc/misc/gnus-news.texi   2010-09-26 23:01:31 +0000
+++ b/doc/misc/gnus-news.texi   2010-10-04 22:26:51 +0000
@@ -356,6 +356,8 @@
 
 @item NoCeM support has been removed.
 
address@hidden Carpal mode has been removed.
+
 @end itemize
 
 @end itemize

=== modified file 'doc/misc/gnus.texi'
--- a/doc/misc/gnus.texi        2010-10-03 00:33:27 +0000
+++ b/doc/misc/gnus.texi        2010-10-04 22:26:51 +0000
@@ -797,7 +797,6 @@
 * Compilation::                 How to speed Gnus up.
 * Mode Lines::                  Displaying information in the mode lines.
 * Highlighting and Menus::      Making buffers look all nice and cozy.
-* Buttons::                     Get tendinitis in ten easy steps!
 * Daemons::                     Gnus can do things behind your back.
 * Undo::                        Some actions can be undone.
 * Predicate Specifiers::        Specifying predicates.
@@ -12847,6 +12846,11 @@
 (This is the default.)  If @code{nil}, each group will have its own
 article buffer.
 
address@hidden gnus-widen-article-window
address@hidden gnus-widen-article-window
+If address@hidden, selecting the article buffer with the @kbd{h}
+command will ``widen'' the article window to take the entire frame.
+
 @vindex gnus-article-decode-hook
 @item gnus-article-decode-hook
 @cindex @acronym{MIME}
@@ -21717,7 +21721,6 @@
 * Compilation::                 How to speed Gnus up.
 * Mode Lines::                  Displaying information in the mode lines.
 * Highlighting and Menus::      Making buffers look all nice and cozy.
-* Buttons::                     Get tendinitis in ten easy steps!
 * Daemons::                     Gnus can do things behind your back.
 * Undo::                        Some actions can be undone.
 * Predicate Specifiers::        Specifying predicates.
@@ -22178,8 +22181,7 @@
 buffer should be given.  Here's an excerpt of this variable:
 
 @lisp
-((group (vertical 1.0 (group 1.0 point)
-                      (if gnus-carpal (group-carpal 4))))
+((group (vertical 1.0 (group 1.0 point)))
  (article (vertical 1.0 (summary 0.25 point)
                         (article 1.0))))
 @end lisp
@@ -22217,7 +22219,6 @@
 @lisp
 (article (vertical 1.0 (group 4)
                        (summary 0.25 point)
-                       (if gnus-carpal (summary-carpal 4))
                        (article 1.0)))
 @end lisp
 
@@ -22228,20 +22229,16 @@
 If the @dfn{split} looks like something that can be @code{eval}ed (to be
 precise---if the @code{car} of the split is a function or a subr), this
 split will be @code{eval}ed.  If the result is address@hidden, it will
-be used as a split.  This means that there will be three buffers if
address@hidden is @code{nil}, and four buffers if @code{gnus-carpal}
-is address@hidden
+be used as a split.
 
 Not complicated enough for you?  Well, try this on for size:
 
 @lisp
 (article (horizontal 1.0
              (vertical 0.5
-                 (group 1.0)
-                 (gnus-carpal 4))
+                 (group 1.0))
              (vertical 1.0
                  (summary 0.25 point)
-                 (summary-carpal 4)
                  (article 1.0))))
 @end lisp
 
@@ -22618,62 +22615,6 @@
 @end table
 
 
address@hidden Buttons
address@hidden Buttons
address@hidden buttons
address@hidden mouse
address@hidden click
-
-Those new-fangled @dfn{mouse} contraptions is very popular with the
-young, hep kids who don't want to learn the proper way to do things
-these days.  Why, I remember way back in the summer of '89, when I was
-using Emacs on a Tops 20 system.  Three hundred users on one single
-machine, and every user was running Simula compilers.  Bah!
-
-Right.
-
address@hidden gnus-carpal
-Well, you can make Gnus display bufferfuls of buttons you can click to
-do anything by setting @code{gnus-carpal} to @code{t}.  Pretty simple,
-really.  Tell the chiropractor I sent you.
-
-
address@hidden @code
-
address@hidden gnus-carpal-mode-hook
address@hidden gnus-carpal-mode-hook
-Hook run in all carpal mode buffers.
-
address@hidden gnus-carpal-button-face
address@hidden gnus-carpal-button-face
-Face used on buttons.
-
address@hidden gnus-carpal-header-face
address@hidden gnus-carpal-header-face
-Face used on carpal buffer headers.
-
address@hidden gnus-carpal-group-buffer-buttons
address@hidden gnus-carpal-group-buffer-buttons
-Buttons in the group buffer.
-
address@hidden gnus-carpal-summary-buffer-buttons
address@hidden gnus-carpal-summary-buffer-buttons
-Buttons in the summary buffer.
-
address@hidden gnus-carpal-server-buffer-buttons
address@hidden gnus-carpal-server-buffer-buttons
-Buttons in the server buffer.
-
address@hidden gnus-carpal-browse-buffer-buttons
address@hidden gnus-carpal-browse-buffer-buttons
-Buttons in the browse buffer.
address@hidden table
-
-All the @code{buttons} variables are lists.  The elements in these list
-are either cons cells where the @code{car} contains a text to be displayed and
-the @code{cdr} contains a function symbol, or a simple string.
-
-
 @node Daemons
 @section Daemons
 @cindex demons
@@ -26651,10 +26592,6 @@
 You can do lots of strange stuff with the Gnus window & frame
 configuration (@pxref{Window Layout}).
 
address@hidden
-You can click on buttons instead of using the keyboard
-(@pxref{Buttons}).
-
 @end itemize
 
 

=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog       2010-10-04 13:17:48 +0000
+++ b/lisp/gnus/ChangeLog       2010-10-04 22:26:51 +0000
@@ -1,11 +1,64 @@
 2010-10-04  Lars Magne Ingebrigtsen  <address@hidden>
 
+       * shr.el (shr-tag-blockquote): Ensure paragraph after quote, too.
+       (shr-get-image-data): Ensure against the cache file missing.
+
+       * nnimap.el (nnimap-finish-retrieve-group-infos): Message while waiting
+       for data.
+
+       * spam-report.el (spam-report-url-ping-plain): Don't query about
+       killing the process.
+
+       * shr.el (shr-render-td): Protect against too-wide text.
+
+2010-10-04  Julien Danjou  <address@hidden>
+
+       * mml-smime.el (mml-smime-openssl-encrypt-query): Fix choices.
+       (mml-smime-openssl-sign-query): Fix gnus-completing-read call.
+
+       * gravatar.el (gravatar-retrieved): Kill buffer when gravatar has been
+       retrieved.
+
+2010-10-04  Lars Magne Ingebrigtsen  <address@hidden>
+
+       * shr.el (browse-url): Required.
+       (shr-ensure-paragraph): Don't insert a new newline after empty-ish
+       lines.
+       (shr-show-alt-text, shr-browse-image): New commands.
+       (shr-browse-url, shr-copy-url): New commands.
+
+       * gnus-sum.el (gnus-widen-article-window): New variable.
+       (gnus-summary-select-article-buffer): Use it.
+
+       * message.el (message-idna-to-ascii-rhs-1): Don't bug out on addresses
+       without @ signs.
+
+2010-10-04  Michael Welsh Duggan  <address@hidden>  (tiny change)
+
+       * nnir.el (nnir-run-imap): Remove spurious space in search string.
+
+2010-10-04  Julien Danjou  <address@hidden>
+
+       * gnus-util.el (gnus-emacs-completing-read): Mapcar collection to list,
+       for XEmacs.
+
+2010-10-04  Lars Magne Ingebrigtsen  <address@hidden>
+
+       * gnus-salt.el: Remove all gnus-carpal stuff -- it's not useful.
+
+       * nnimap.el (nnimap-open-connection): Allow tls as a synonym for ssl.
+       (nnimap-close-server): Implement.
+
        * shr.el (shr-ensure-paragraph): Fix the non-empty line case.
        (shr-insert): Tweak line breaking.
        (shr-insert): Handle <pre> better.
        (shr-tag-li): Get <li> indentation right.
        (shr-tag-li): Get <li> indentation even righter.
        (shr-tag-blockquote): Ensure paragraph start.
+       (shr-make-table): Tweak table generation.
+       (shr-make-table): Fix typo.
+
+       * shr.el: Implement table rendering.
 
 2010-10-04  Julien Danjou  <address@hidden>
 
@@ -1458,8 +1511,6 @@
        * nnimap.el (nnimap-open-connection): If the user doesn't have a
        /etc/services, supply some sensible port defaults.
 
-       * dgnushack.el: Define netrc-credentials.
-
 2010-09-17  Julien Danjou  <address@hidden>
 
        * mm-decode.el (mm-text-html-renderer): Document gnus-article-html.

=== modified file 'lisp/gnus/gnus-group.el'
--- a/lisp/gnus/gnus-group.el   2010-10-01 23:08:25 +0000
+++ b/lisp/gnus/gnus-group.el   2010-10-04 22:26:51 +0000
@@ -1186,9 +1186,7 @@
 (defun gnus-group-setup-buffer ()
   (set-buffer (gnus-get-buffer-create gnus-group-buffer))
   (unless (eq major-mode 'gnus-group-mode)
-    (gnus-group-mode)
-    (when gnus-carpal
-      (gnus-carpal-setup-buffer 'group))))
+    (gnus-group-mode)))
 
 (defun gnus-group-name-charset (method group)
   (if (null method)

=== modified file 'lisp/gnus/gnus-salt.el'
--- a/lisp/gnus/gnus-salt.el    2010-09-02 00:55:51 +0000
+++ b/lisp/gnus/gnus-salt.el    2010-10-04 22:26:51 +0000
@@ -869,177 +869,6 @@
        (set-window-point
         (gnus-get-buffer-window (current-buffer) t) (cdr region))))))
 
-;;;
-;;; gnus-carpal
-;;;
-
-(defvar gnus-carpal-group-buffer-buttons
-  '(("next" . gnus-group-next-unread-group)
-    ("prev" . gnus-group-prev-unread-group)
-    ("read" . gnus-group-read-group)
-    ("select" . gnus-group-select-group)
-    ("catch-up" . gnus-group-catchup-current)
-    ("new-news" . gnus-group-get-new-news-this-group)
-    ("toggle-sub" . gnus-group-unsubscribe-current-group)
-    ("subscribe" . gnus-group-unsubscribe-group)
-    ("kill" . gnus-group-kill-group)
-    ("yank" . gnus-group-yank-group)
-    ("describe" . gnus-group-describe-group)
-    "list"
-    ("subscribed" . gnus-group-list-groups)
-    ("all" . gnus-group-list-all-groups)
-    ("killed" . gnus-group-list-killed)
-    ("zombies" . gnus-group-list-zombies)
-    ("matching" . gnus-group-list-matching)
-    ("post" . gnus-group-post-news)
-    ("mail" . gnus-group-mail)
-    ("local" . (lambda () (interactive) (gnus-group-news 0)))
-    ("rescan" . gnus-group-get-new-news)
-    ("browse-foreign" . gnus-group-browse-foreign)
-    ("exit" . gnus-group-exit)))
-
-(defvar gnus-carpal-summary-buffer-buttons
-  '("mark"
-    ("read" . gnus-summary-mark-as-read-forward)
-    ("tick" . gnus-summary-tick-article-forward)
-    ("clear" . gnus-summary-clear-mark-forward)
-    ("expirable" . gnus-summary-mark-as-expirable)
-    "move"
-    ("scroll" . gnus-summary-next-page)
-    ("next-unread" . gnus-summary-next-unread-article)
-    ("prev-unread" . gnus-summary-prev-unread-article)
-    ("first" . gnus-summary-first-unread-article)
-    ("best" . gnus-summary-best-unread-article)
-    "article"
-    ("headers" . gnus-summary-toggle-header)
-    ("uudecode" . gnus-uu-decode-uu)
-    ("enter-digest" . gnus-summary-enter-digest-group)
-    ("fetch-parent" . gnus-summary-refer-parent-article)
-    "mail"
-    ("move" . gnus-summary-move-article)
-    ("copy" . gnus-summary-copy-article)
-    ("respool" . gnus-summary-respool-article)
-    "threads"
-    ("lower" . gnus-summary-lower-thread)
-    ("kill" . gnus-summary-kill-thread)
-    "post"
-    ("post" . gnus-summary-post-news)
-    ("local" . gnus-summary-news-other-window)
-    ("mail" . gnus-summary-mail-other-window)
-    ("followup" . gnus-summary-followup-with-original)
-    ("reply" . gnus-summary-reply-with-original)
-    ("cancel" . gnus-summary-cancel-article)
-    "misc"
-    ("exit" . gnus-summary-exit)
-    ("fed-up" . gnus-summary-catchup-and-goto-next-group)))
-
-(defvar gnus-carpal-server-buffer-buttons
-  '(("add" . gnus-server-add-server)
-    ("browse" . gnus-server-browse-server)
-    ("list" . gnus-server-list-servers)
-    ("kill" . gnus-server-kill-server)
-    ("yank" . gnus-server-yank-server)
-    ("copy" . gnus-server-copy-server)
-    ("exit" . gnus-server-exit)))
-
-(defvar gnus-carpal-browse-buffer-buttons
-  '(("subscribe" . gnus-browse-unsubscribe-current-group)
-    ("exit" . gnus-browse-exit)))
-
-(defvar gnus-carpal-group-buffer "*Carpal Group*")
-(defvar gnus-carpal-summary-buffer "*Carpal Summary*")
-(defvar gnus-carpal-server-buffer "*Carpal Server*")
-(defvar gnus-carpal-browse-buffer "*Carpal Browse*")
-
-(defvar gnus-carpal-attached-buffer nil)
-
-(defvar gnus-carpal-mode-hook nil
-  "*Hook run in carpal mode buffers.")
-
-(defvar gnus-carpal-button-face 'bold
-  "*Face used on carpal buttons.")
-
-(defvar gnus-carpal-header-face 'bold-italic
-  "*Face used on carpal buffer headers.")
-
-(defvar gnus-carpal-mode-map nil)
-(put 'gnus-carpal-mode 'mode-class 'special)
-
-(if gnus-carpal-mode-map
-    nil
-  (setq gnus-carpal-mode-map (make-keymap))
-  (suppress-keymap gnus-carpal-mode-map)
-  (define-key gnus-carpal-mode-map " " 'gnus-carpal-select)
-  (define-key gnus-carpal-mode-map "\r" 'gnus-carpal-select)
-  (define-key gnus-carpal-mode-map gnus-mouse-2 'gnus-carpal-mouse-select))
-
-(defun gnus-carpal-mode ()
-  "Major mode for clicking buttons.
-
-All normal editing commands are switched off.
-\\<gnus-carpal-mode-map>
-The following commands are available:
-
-\\{gnus-carpal-mode-map}"
-  (interactive)
-  (kill-all-local-variables)
-  (setq mode-line-modified (cdr gnus-mode-line-modified))
-  (setq major-mode 'gnus-carpal-mode)
-  (setq mode-name "Gnus Carpal")
-  (setq mode-line-process nil)
-  (use-local-map gnus-carpal-mode-map)
-  (buffer-disable-undo)
-  (setq buffer-read-only t)
-  (make-local-variable 'gnus-carpal-attached-buffer)
-  (gnus-run-mode-hooks 'gnus-carpal-mode-hook))
-
-(defun gnus-carpal-setup-buffer (type)
-  (let ((buffer (symbol-value (intern (format "gnus-carpal-%s-buffer" type)))))
-    (if (get-buffer buffer)
-       ()
-      (with-current-buffer (gnus-get-buffer-create buffer)
-       (gnus-carpal-mode)
-       (setq gnus-carpal-attached-buffer
-             (intern (format "gnus-%s-buffer" type)))
-       (let ((buttons (symbol-value
-                       (intern (format "gnus-carpal-%s-buffer-buttons"
-                                       type))))
-             (buffer-read-only nil)
-             button)
-         (while buttons
-           (setq button (car buttons)
-                 buttons (cdr buttons))
-           (if (stringp button)
-               (set-text-properties
-                (point)
-                (prog2 (insert button) (point) (insert " "))
-                (list 'face gnus-carpal-header-face))
-             (set-text-properties
-              (point)
-              (prog2 (insert (car button)) (point) (insert " "))
-              (list 'gnus-callback (cdr button)
-                    'face gnus-carpal-button-face
-                    gnus-mouse-face-prop 'highlight))))
-         (let ((fill-column (- (window-width) 2)))
-           (fill-region (point-min) (point-max)))
-         (set-window-point (get-buffer-window (current-buffer))
-                           (point-min)))))))
-
-(defun gnus-carpal-select ()
-  "Select the button under point."
-  (interactive)
-  (let ((func (get-text-property (point) 'gnus-callback)))
-    (if (null func)
-       ()
-      (pop-to-buffer (symbol-value gnus-carpal-attached-buffer))
-      (call-interactively func))))
-
-(defun gnus-carpal-mouse-select (event)
-  "Select the button under the mouse pointer."
-  (interactive "e")
-  (mouse-set-point event)
-  (gnus-carpal-select))
-
 ;;; Allow redefinition of functions.
 (gnus-ems-redefine)
 

=== modified file 'lisp/gnus/gnus-srvr.el'
--- a/lisp/gnus/gnus-srvr.el    2010-09-30 08:39:23 +0000
+++ b/lisp/gnus/gnus-srvr.el    2010-10-04 22:26:51 +0000
@@ -301,9 +301,7 @@
   "Initialize the server buffer."
   (unless (get-buffer gnus-server-buffer)
     (with-current-buffer (gnus-get-buffer-create gnus-server-buffer)
-      (gnus-server-mode)
-      (when gnus-carpal
-       (gnus-carpal-setup-buffer 'server)))))
+      (gnus-server-mode))))
 
 (defun gnus-server-prepare ()
   (gnus-set-format 'server-mode)
@@ -806,8 +804,6 @@
            (funcall gnus-group-prepare-function
                     gnus-level-killed 'ignore 1 'ignore))
        (gnus-get-buffer-create gnus-browse-buffer)
-       (when gnus-carpal
-         (gnus-carpal-setup-buffer 'browse))
        (gnus-configure-windows 'browse)
        (buffer-disable-undo)
        (let ((buffer-read-only nil))

=== modified file 'lisp/gnus/gnus-sum.el'
--- a/lisp/gnus/gnus-sum.el     2010-10-04 00:17:16 +0000
+++ b/lisp/gnus/gnus-sum.el     2010-10-04 22:26:51 +0000
@@ -474,6 +474,12 @@
   :group 'gnus-article-various
   :type 'boolean)
 
+(defcustom gnus-widen-article-window nil
+  "If non-nil, selecting the article buffer will display only the article 
buffer."
+  :version "24.1"
+  :group 'gnus-article-various
+  :type 'boolean)
+
 (defcustom gnus-break-pages t
   "*If non-nil, do page breaking on articles.
 The page delimiter is specified by the `gnus-page-delimiter'
@@ -3493,8 +3499,6 @@
       ;; Fix by Sudish Joseph <address@hidden>
       (setq gnus-summary-buffer (set-buffer (gnus-get-buffer-create buffer)))
       (gnus-summary-mode group)
-      (when gnus-carpal
-       (gnus-carpal-setup-buffer 'summary))
       (when (gnus-group-quit-config group)
        (set (make-local-variable 'gnus-single-article-buffer) nil))
       (make-local-variable 'gnus-article-buffer)
@@ -6935,7 +6939,11 @@
       (error "There is no article buffer for this summary buffer")
     (unless (get-buffer-window gnus-article-buffer)
       (gnus-summary-show-article))
-    (gnus-configure-windows 'article t)
+    (gnus-configure-windows
+     (if gnus-widen-article-window
+        'only-article
+       'article)
+     t)
     (select-window (get-buffer-window gnus-article-buffer))))
 
 (defun gnus-summary-universal-argument (arg)

=== modified file 'lisp/gnus/gnus-util.el'
--- a/lisp/gnus/gnus-util.el    2010-10-04 00:17:16 +0000
+++ b/lisp/gnus/gnus-util.el    2010-10-04 22:26:51 +0000
@@ -1602,7 +1602,11 @@
                                           initial-input history def)
   "Call standard `completing-read-function'."
   (let ((completion-styles gnus-completion-styles))
-    (completing-read prompt collection nil require-match initial-input history 
def)))
+    (completing-read prompt
+                     ;; Old XEmacs (at least 21.4) expect an alist for
+                     ;; collection.
+                     (mapcar 'list collection)
+                     nil require-match initial-input history def)))
 
 (defun gnus-ido-completing-read (prompt collection &optional require-match
                                         initial-input history def)

=== modified file 'lisp/gnus/gnus-win.el'
--- a/lisp/gnus/gnus-win.el     2010-10-01 23:08:25 +0000
+++ b/lisp/gnus/gnus-win.el     2010-10-04 22:26:51 +0000
@@ -68,12 +68,10 @@
 (defvar gnus-buffer-configuration
   '((group
      (vertical 1.0
-              (group 1.0 point)
-              (if gnus-carpal '(group-carpal 4))))
+              (group 1.0 point)))
     (summary
      (vertical 1.0
-              (summary 1.0 point)
-              (if gnus-carpal '(summary-carpal 4))))
+              (summary 1.0 point)))
     (article
      (cond
       (gnus-use-trees
@@ -84,16 +82,13 @@
       (t
        '(vertical 1.0
                  (summary 0.25 point)
-                 (if gnus-carpal '(summary-carpal 4))
                  (article 1.0)))))
     (server
      (vertical 1.0
-              (server 1.0 point)
-              (if gnus-carpal '(server-carpal 2))))
+              (server 1.0 point)))
     (browse
      (vertical 1.0
-              (browse 1.0 point)
-              (if gnus-carpal '(browse-carpal 2))))
+              (browse 1.0 point)))
     (message
      (vertical 1.0
               (message 1.0 point)))
@@ -145,7 +140,6 @@
     (pipe
      (vertical 1.0
               (summary 0.25 point)
-              (if gnus-carpal '(summary-carpal 4))
               ("*Shell Command Output*" 1.0)))
     (bug
      (vertical 1.0
@@ -189,10 +183,6 @@
     (edit-group . gnus-group-edit-buffer)
     (edit-form . gnus-edit-form-buffer)
     (edit-server . gnus-server-edit-buffer)
-    (group-carpal . gnus-carpal-group-buffer)
-    (summary-carpal . gnus-carpal-summary-buffer)
-    (server-carpal . gnus-carpal-server-buffer)
-    (browse-carpal . gnus-carpal-browse-buffer)
     (edit-score . gnus-score-edit-buffer)
     (message . gnus-message-buffer)
     (mail . gnus-message-buffer)

=== modified file 'lisp/gnus/gnus.el'
--- a/lisp/gnus/gnus.el 2010-10-01 23:08:25 +0000
+++ b/lisp/gnus/gnus.el 2010-10-04 22:26:51 +0000
@@ -1626,11 +1626,6 @@
                (function-item mail-extract-address-components)
                (function :tag "Other")))
 
-(defcustom gnus-carpal nil
-  "*If non-nil, display clickable icons."
-  :group 'gnus-meta
-  :type 'boolean)
-
 (defcustom gnus-shell-command-separator ";"
   "String used to separate shell commands."
   :group 'gnus-files
@@ -2803,7 +2798,7 @@
       gnus-convert-image-to-gray-x-face gnus-convert-face-to-png
       gnus-face-from-file)
      ("gnus-salt" gnus-highlight-selected-tree gnus-possibly-generate-tree
-      gnus-tree-open gnus-tree-close gnus-carpal-setup-buffer)
+      gnus-tree-open gnus-tree-close)
      ("gnus-srvr" gnus-enter-server-buffer gnus-server-set-info
       gnus-server-server-name)
      ("gnus-srvr" gnus-browse-foreign-server)

=== modified file 'lisp/gnus/gravatar.el'
--- a/lisp/gnus/gravatar.el     2010-10-01 05:50:11 +0000
+++ b/lisp/gnus/gravatar.el     2010-10-04 22:26:51 +0000
@@ -125,7 +125,8 @@
   (if (plist-get status :error)
       ;; Error happened.
       (apply cb 'error cbargs)
-    (apply cb (gravatar-data->image) cbargs)))
+    (apply cb (gravatar-data->image) cbargs))
+  (kill-buffer (current-buffer)))
 
 (provide 'gravatar)
 

=== modified file 'lisp/gnus/message.el'
--- a/lisp/gnus/message.el      2010-10-01 23:08:25 +0000
+++ b/lisp/gnus/message.el      2010-10-04 22:26:51 +0000
@@ -5736,7 +5736,9 @@
                (mapcar (lambda (rhs) (or (cadr (split-string rhs "@")) ""))
                        (mapcar 'downcase
                                (mapcar
-                                'cadr
+                                (lambda (elem)
+                                  (or (cadr elem)
+                                      ""))
                                 (mail-extract-address-components field t))))))
        ;; Note that `rhs' will be "" if the address does not have
        ;; the domain part, i.e., if it is a local user's address.

=== modified file 'lisp/gnus/mml-smime.el'
--- a/lisp/gnus/mml-smime.el    2010-09-30 08:39:23 +0000
+++ b/lisp/gnus/mml-smime.el    2010-10-04 22:26:51 +0000
@@ -162,7 +162,7 @@
                (and from (smime-get-key-by-email from)))
              (smime-get-key-by-email
               (gnus-completing-read "Sign this part with what signature"
-                                     smime-keys nil nil
+                                     (mapcar 'car smime-keys) nil nil nil
                                      (and (listp (car-safe smime-keys))
                                           (caar smime-keys))))))))
 
@@ -221,7 +221,7 @@
     (while (not done)
       (ecase (read (gnus-completing-read
                    "Fetch certificate from"
-                   '(("dns") ("ldap") ("file")) t nil nil
+                   '("dns" "ldap" "file") t nil nil
                     "ldap"))
        (dns (setq certs (append certs
                                 (mml-smime-get-dns-cert))))

=== modified file 'lisp/gnus/nnimap.el'
--- a/lisp/gnus/nnimap.el       2010-10-01 23:08:25 +0000
+++ b/lisp/gnus/nnimap.el       2010-10-04 22:26:51 +0000
@@ -316,7 +316,7 @@
                   (setq port (or nnimap-server-port "imap"))
                   'starttls))
                '("imap"))
-              ((eq nnimap-stream 'ssl)
+              ((memq nnimap-stream '(ssl tls))
                (open-tls-stream
                 "*nnimap*" (current-buffer) nnimap-address
                 (setq port
@@ -324,7 +324,9 @@
                           (if (netrc-find-service-number "imaps")
                               "imaps"
                             "993"))))
-               '("143" "993" "imap" "imaps"))))
+               '("143" "993" "imap" "imaps"))
+              (t
+               (error "Unknown stream type: %s" nnimap-stream))))
             connection-result login-result credentials)
        (setf (nnimap-process nnimap-object)
              (get-buffer-process (current-buffer)))
@@ -424,7 +426,10 @@
     result))
 
 (deffoo nnimap-close-server (&optional server)
-  t)
+  (when (nnoo-change-server 'nnimap server nil)
+    (ignore-errors
+      (delete-process (get-buffer-process (nnimap-buffer))))
+    t))
 
 (deffoo nnimap-request-close ()
   t)
@@ -974,7 +979,7 @@
             (nnimap-possibly-change-group nil server))
     (with-current-buffer (nnimap-buffer)
       ;; Wait for the final data to trickle in.
-      (when (nnimap-wait-for-response (cadar sequences))
+      (when (nnimap-wait-for-response (cadar sequences) t)
        ;; Now we should have all the data we need, no matter whether
        ;; we're QRESYNCING, fetching all the flags from scratch, or
        ;; just fetching the last 100 flags per group.
@@ -1251,7 +1256,7 @@
                        (point-min))
                      t)))
       (when messagep
-       (message "Read %dKB" (/ (buffer-size) 1000)))
+       (message "nnimap read %dk" (/ (buffer-size) 1000)))
       (nnheader-accept-process-output process)
       (goto-char (point-max)))
     openp))

=== modified file 'lisp/gnus/nnir.el'
--- a/lisp/gnus/nnir.el 2010-10-01 00:25:50 +0000
+++ b/lisp/gnus/nnir.el 2010-10-04 22:26:51 +0000
@@ -985,7 +985,7 @@
              (message "Searching %s..." group)
              (let ((arts 0)
                    (result
-                    (nnimap-command "UID SEARCH  %s"
+                    (nnimap-command "UID SEARCH %s"
                                     (if (string= criteria "")
                                         qstring
                                       (nnir-imap-make-query criteria qstring)

=== modified file 'lisp/gnus/shr.el'
--- a/lisp/gnus/shr.el  2010-10-04 13:17:48 +0000
+++ b/lisp/gnus/shr.el  2010-10-04 22:26:51 +0000
@@ -30,6 +30,8 @@
 
 ;;; Code:
 
+(require 'browse-url)
+
 (defgroup shr nil
   "Simple HTML Renderer"
   :group 'mail)
@@ -57,6 +59,16 @@
 
 (defvar shr-width 70)
 
+(defvar shr-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "a" 'shr-show-alt-text)
+    (define-key map "i" 'shr-browse-image)
+    (define-key map "I" 'shr-insert-image)
+    (define-key map "u" 'shr-copy-url)
+    (define-key map "v" 'shr-browse-url)
+    (define-key map "\r" 'shr-browse-url)
+    map))
+
 (defun shr-transform-dom (dom)
   (let ((result (list (pop dom))))
     (dolist (arg (pop dom))
@@ -97,7 +109,9 @@
 (defun shr-ensure-paragraph ()
   (unless (bobp)
     (if (bolp)
-       (unless (eql (char-after (- (point) 2)) ?\n)
+       (unless (save-excursion
+                 (forward-line -1)
+                 (looking-at " *$"))
          (insert "\n"))
       (if (save-excursion
            (beginning-of-line)
@@ -129,17 +143,53 @@
 
 (defun shr-tag-a (cont)
   (let ((url (cdr (assq :href cont)))
+       (start (point))
        shr-start)
     (shr-generic cont)
     (widget-convert-button
-     'link shr-start (point)
-     :action 'shr-browse-url
-     :url url
-     :keymap widget-keymap
-     :help-echo url)))
-
-(defun shr-browse-url (widget &rest stuff)
-  (browse-url (widget-get widget :url)))
+     'link (or shr-start start) (point)
+     :help-echo url)
+    (put-text-property (or shr-start start) (point) 'keymap shr-map)
+    (put-text-property (or shr-start start) (point) 'shr-url url)))
+
+(defun shr-browse-url ()
+  "Browse the URL under point."
+  (interactive)
+  (let ((url (get-text-property (point) 'shr-url)))
+    (if (not url)
+       (message "No link under point")
+      (browse-url url))))
+
+(defun shr-copy-url ()
+  "Copy the URL under point to the kill ring.
+If called twice, then try to fetch the URL and see whether it
+redirects somewhere else."
+  (interactive)
+  (let ((url (get-text-property (point) 'shr-url)))
+    (cond
+     ((not url)
+      (message "No URL under point"))
+     ;; Resolve redirected URLs.
+     ((equal url (car kill-ring))
+      (url-retrieve
+       url
+       (lambda (a)
+        (when (and (consp a)
+                   (eq (car a) :redirect))
+          (with-temp-buffer
+            (insert (cadr a))
+            (goto-char (point-min))
+            ;; Remove common tracking junk from the URL.
+            (when (re-search-forward ".utm_.*" nil t)
+              (replace-match "" t t))
+            (message "Copied %s" (buffer-string))
+            (copy-region-as-kill (point-min) (point-max)))))))
+     ;; Copy the URL to the kill ring.
+     (t
+      (with-temp-buffer
+       (insert url)
+       (copy-region-as-kill (point-min) (point-max))
+       (message "Copied %s" url))))))
 
 (defun shr-tag-img (cont)
   (when (and (> (current-column) 0)
@@ -162,8 +212,28 @@
                      (list (current-buffer) start (point-marker))
                      t)))
       (insert " ")
+      (put-text-property start (point) 'keymap shr-map)
+      (put-text-property start (point) 'shr-alt alt)
+      (put-text-property start (point) 'shr-image url)
       (setq shr-state 'image))))
 
+(defun shr-show-alt-text ()
+  "Show the ALT text of the image under point."
+  (interactive)
+  (let ((text (get-text-property (point) 'shr-alt)))
+    (if (not text)
+       (message "No image under point")
+      (message "%s" text))))
+
+(defun shr-browse-image ()
+  "Browse the image under point."
+  (interactive)
+  (let ((url (get-text-property (point) 'shr-image)))
+    (if (not url)
+       (message "No image under point")
+      (message "Browsing %s..." url)
+      (browse-url url))))
+
 (defun shr-image-fetched (status buffer start end)
   (when (and (buffer-name buffer)
             (not (plist-get status :error)))
@@ -222,7 +292,8 @@
 (defun shr-tag-blockquote (cont)
   (shr-ensure-paragraph)
   (let ((shr-indentation (+ shr-indentation 4)))
-    (shr-generic cont)))
+    (shr-generic cont))
+  (shr-ensure-paragraph))
 
 (defun shr-ensure-newline ()
   (unless (zerop (current-column))
@@ -254,7 +325,7 @@
        (setq first nil)
        (when (and (bolp)
                   (> shr-indentation 0))
-         (insert (make-string shr-indentation ? )))
+         (shr-indent))
        ;; The shr-start is a special variable that is used to pass
        ;; upwards the first point in the buffer where the text really
        ;; starts.
@@ -267,15 +338,20 @@
        (insert " ")
        (setq shr-state 'space))))))
 
+(defun shr-indent ()
+  (insert (make-string shr-indentation ? )))
+
 (defun shr-get-image-data (url)
   "Get image data for URL.
 Return a string with image data."
   (with-temp-buffer
     (mm-disable-multibyte)
-    (url-cache-extract (url-cache-create-filename url))
-    (when (or (search-forward "\n\n" nil t)
-              (search-forward "\r\n\r\n" nil t))
-      (buffer-substring (point) (point-max)))))
+    (when (ignore-errors
+           (url-cache-extract (url-cache-create-filename url))
+           t)
+      (when (or (search-forward "\n\n" nil t)
+               (search-forward "\r\n\r\n" nil t))
+       (buffer-substring (point) (point-max))))))
 
 (defvar shr-list-mode nil)
 
@@ -328,6 +404,140 @@
   (apply #'shr-fontize-cont cont types)
   (shr-ensure-paragraph))
 
+(defun shr-tag-table (cont)
+  (shr-ensure-paragraph)
+  (setq cont (or (cdr (assq 'tbody cont))
+                cont))
+  (let* ((columns (shr-column-specs cont))
+        (suggested-widths (shr-pro-rate-columns columns))
+        (sketch (shr-make-table cont suggested-widths))
+        (sketch-widths (shr-table-widths sketch (length suggested-widths))))
+    (shr-insert-table (shr-make-table cont sketch-widths t) sketch-widths)))
+
+(defun shr-insert-table (table widths)
+  (shr-insert-table-ruler widths)
+  (dolist (row table)
+    (let ((start (point))
+         (height (let ((max 0))
+                   (dolist (column row)
+                     (setq max (max max (cadr column))))
+                   max)))
+      (dotimes (i height)
+       (shr-indent)
+       (insert "|\n"))
+      (dolist (column row)
+       (goto-char start)
+       (let ((lines (split-string (nth 2 column) "\n")))
+         (dolist (line lines)
+           (when (> (length line) 0)
+             (end-of-line)
+             (insert line "|")
+             (forward-line 1)))
+         ;; Add blank lines at padding at the bottom of the TD,
+         ;; possibly.
+         (dotimes (i (- height (length lines)))
+           (end-of-line)
+           (insert (make-string (length (car lines)) ? ) "|")
+           (forward-line 1)))))
+    (shr-insert-table-ruler widths)))
+
+(defun shr-insert-table-ruler (widths)
+  (shr-indent)
+  (insert "+")
+  (dotimes (i (length widths))
+    (insert (make-string (aref widths i) ?-) ?+))
+  (insert "\n"))
+
+(defun shr-table-widths (table length)
+  (let ((widths (make-vector length 0)))
+    (dolist (row table)
+      (let ((i 0))
+       (dolist (column row)
+         (aset widths i (max (aref widths i)
+                             (car column)))
+         (incf i))))
+    widths))
+
+(defun shr-make-table (cont widths &optional fill)
+  (let ((trs nil))
+    (dolist (row cont)
+      (when (eq (car row) 'tr)
+       (let ((i 0)
+             (tds nil))
+         (dolist (column (cdr row))
+           (when (memq (car column) '(td th))
+             (push (shr-render-td (cdr column) (aref widths i) fill)
+                   tds)
+             (setq i (1+ i))))
+         (push (nreverse tds) trs))))
+    (nreverse trs)))
+
+(defun shr-render-td (cont width fill)
+  (with-temp-buffer
+    (let ((shr-width width)
+         (shr-indentation 0))
+      (shr-generic cont))
+    (while (re-search-backward "\n *$" nil t)
+      (delete-region (match-beginning 0) (match-end 0)))
+    (goto-char (point-min))
+    (let ((max 0))
+      (while (not (eobp))
+       (end-of-line)
+       (setq max (max max (current-column)))
+       (forward-line 1))
+      (when fill
+       (goto-char (point-min))
+       (while (not (eobp))
+         (end-of-line)
+         (when (> (- width (current-column)) 0)
+           (insert (make-string (- width (current-column)) ? )))
+         (forward-line 1)))
+      (list max (count-lines (point-min) (point-max)) (buffer-string)))))
+
+(defun shr-pro-rate-columns (columns)
+  (let ((total-percentage 0)
+       (widths (make-vector (length columns) 0)))
+    (dotimes (i (length columns))
+      (incf total-percentage (aref columns i)))
+    (setq total-percentage (/ 1.0 total-percentage))
+    (dotimes (i (length columns))
+      (aset widths i (max (truncate (* (aref columns i)
+                                      total-percentage
+                                      shr-width))
+                         10)))
+    widths))
+
+;; Return a summary of the number and shape of the TDs in the table.
+(defun shr-column-specs (cont)
+  (let ((columns (make-vector (shr-max-columns cont) 1)))
+    (dolist (row cont)
+      (when (eq (car row) 'tr)
+       (let ((i 0))
+         (dolist (column (cdr row))
+           (when (memq (car column) '(td th))
+             (let ((width (cdr (assq :width (cdr column)))))
+               (when (and width
+                          (string-match "\\([0-9]+\\)%" width))
+                 (aset columns i
+                       (/ (string-to-number (match-string 1 width))
+                          100.0)))))
+           (setq i (1+ i))))))
+    columns))
+
+(defun shr-count (cont elem)
+  (let ((i 0))
+    (dolist (sub cont)
+      (when (eq (car sub) elem)
+       (setq i (1+ i))))
+    i))
+
+(defun shr-max-columns (cont)
+  (let ((max 0))
+    (dolist (row cont)
+      (when (eq (car row) 'tr)
+       (setq max (max max (shr-count (cdr row) 'td)))))
+    max))
+
 (provide 'shr)
 
 ;;; shr.el ends here

=== modified file 'lisp/gnus/spam-report.el'
--- a/lisp/gnus/spam-report.el  2010-09-18 10:02:19 +0000
+++ b/lisp/gnus/spam-report.el  2010-10-04 22:26:51 +0000
@@ -256,6 +256,7 @@
                 80))
          (error "Could not open connection to %s" host))
       (set-marker (process-mark tcp-connection) (point-min))
+      (gnus-set-process-query-on-exit-flag tcp-connection nil)
       (process-send-string
        tcp-connection
        (format "GET %s HTTP/1.1\nUser-Agent: %s\nHost: %s\n\n"


reply via email to

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