]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge changes made in Gnus trunk.
authorGnus developers <ding@gnus.org>
Tue, 19 Jul 2011 22:19:06 +0000 (22:19 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Tue, 19 Jul 2011 22:19:06 +0000 (22:19 +0000)
gnus-group.el (gnus-group-read-ephemeral-group): Make sure we don't enter invalid buffer configurations into the quit form (bug#9107).
 (gnus-group-tool-bar-gnome): Replace connect/disconnect with unplugged/plugged.
gnus-sum.el (gnus-summary-refer-thread): When inserting new headers, keep track of which ones are unread (bug#9061).
gnus.el (gnus-refer-article-method): Allow entering any sexp (bug#9055).
gnus-art.el (gnus-article-show-images): Allow working if using w3m (bug#9041).
gnus-html.el (mm-util): Require (bug#9073).
gnus-sum.el (gnus-delete-duplicate-headers): New function.
 (gnus-summary-refer-thread): Use it to remove duplicates in the un-threaded view (bug#9053).
 (gnus-summary-insert-subject): Document USE-OLD-HEADER (bug#9070).
nnir.el (nnir-read-server-parm): Use default value from global variable.  Without this the default search engine parameters aren't used at all.
message.el (message-unique-id): Don't use the undocumented return value from (random t) (bug#9118).

lisp/gnus/ChangeLog
lisp/gnus/gnus-art.el
lisp/gnus/gnus-group.el
lisp/gnus/gnus-html.el
lisp/gnus/gnus-sum.el
lisp/gnus/gnus.el
lisp/gnus/message.el
lisp/gnus/nnir.el

index 32f5b702c6f4e313cc3299afe3abc76533d6285d..d18be47fb9de07ece5ad3cd04764760271ac99fc 100644 (file)
@@ -1,3 +1,37 @@
+2011-07-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-group.el (gnus-group-read-ephemeral-group): Make sure we don't
+       enter invalid buffer configurations into the quit form (bug#9107).
+       (gnus-group-tool-bar-gnome): Replace connect/disconnect with
+       unplugged/plugged.
+
+       * gnus-sum.el (gnus-summary-refer-thread): When inserting new headers,
+       keep track of which ones are unread (bug#9061).
+
+       * gnus.el (gnus-refer-article-method): Allow entering any sexp
+       (bug#9055).
+
+       * gnus-art.el (gnus-article-show-images): Allow working if using w3m
+       (bug#9041).
+
+       * gnus-html.el (mm-util): Require (bug#9073).
+
+       * gnus-sum.el (gnus-delete-duplicate-headers): New function.
+       (gnus-summary-refer-thread): Use it to remove duplicates in the
+       un-threaded view (bug#9053).
+       (gnus-summary-insert-subject): Document USE-OLD-HEADER (bug#9070).
+
+2011-07-07  Kan-Ru Chen  <kanru@kanru.info>
+
+       * nnir.el (nnir-read-server-parm): Use default value from global
+       variable.  Without this the default search engine parameters aren't
+       used at all.
+
+2011-07-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * message.el (message-unique-id): Don't use the undocumented return
+       value from (random t) (bug#9118).
+
 2011-07-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * message.el (message-auto-save-directory): If the ~/Mail directory
index 7255be416eb95ab91dfa38b570e0dbf4c0fad08b..c29000f4691e5d584af3f48a75dfa4f7f6e1fdea 100644 (file)
@@ -2267,6 +2267,8 @@ unfolded."
       (dolist (elem gnus-article-image-alist)
        (gnus-delete-images (car elem))))))
 
+(autoload 'w3m-toggle-inline-images "w3m")
+
 (defun gnus-article-show-images ()
   "Show any images that are in the HTML-rendered article buffer.
 This only works if the article in question is HTML."
@@ -2274,11 +2276,14 @@ This only works if the article in question is HTML."
   (gnus-with-article-buffer
     (save-restriction
       (widen)
-      (dolist (region (gnus-find-text-property-region (point-min) (point-max)
-                                                     'image-displayer))
-       (destructuring-bind (start end function) region
-         (funcall function (get-text-property start 'image-url)
-                  start end))))))
+      (if (eq mm-text-html-renderer 'w3m)
+         (let ((mm-inline-text-html-with-images nil))
+           (w3m-toggle-inline-images))
+       (dolist (region (gnus-find-text-property-region (point-min) (point-max)
+                                                       'image-displayer))
+         (destructuring-bind (start end function) region
+           (funcall function (get-text-property start 'image-url)
+                    start end)))))))
 
 (defun gnus-article-treat-fold-newsgroups ()
   "Unfold folded message headers.
index b4dca3e1fc4a9ecf983464f2ac901f58bdd9575c..2a31ccd34f0d0663f04f13716b3d83104a9be38d 100644 (file)
@@ -1008,10 +1008,10 @@ Pre-defined symbols include `gnus-group-tool-bar-gnome' and
   '((gnus-group-post-news "mail/compose")
     ;; Some useful agent icons?  I don't use the agent so agent users should
     ;; suggest useful commands:
-    (gnus-agent-toggle-plugged "disconnect" t
+    (gnus-agent-toggle-plugged "unplugged" t
                               :help "Gnus is currently unplugged.  Click to work online."
                               :visible (and gnus-agent (not gnus-plugged)))
-    (gnus-agent-toggle-plugged "connect" t
+    (gnus-agent-toggle-plugged "plugged" t
                               :help "Gnus is currently plugged.  Click to work offline."
                               :visible (and gnus-agent gnus-plugged))
     ;; FIXME: gnus-agent-toggle-plugged (in gnus-agent-group-make-menu-bar)
@@ -2298,11 +2298,14 @@ Return the name of the group if selection was successful."
      `(-1 nil (,group
               ,gnus-level-default-subscribed nil nil ,method
               ,(cons
-                (if quit-config
-                    (cons 'quit-config quit-config)
+                (cond
+                 (quit-config
+                  (cons 'quit-config quit-config))
+                 ((assq gnus-current-window-configuration
+                        gnus-buffer-configuration)
                   (cons 'quit-config
                         (cons gnus-summary-buffer
-                              gnus-current-window-configuration)))
+                              gnus-current-window-configuration))))
                 parameters)))
      gnus-newsrc-hashtb)
     (push method gnus-ephemeral-servers)
index 6ca3c8b7945d61f3e1ce2a2149f4c5f6f124e403..d3da6aab1b72053dcdcbd71034df649cc3ee4634 100644 (file)
@@ -38,6 +38,7 @@
 (require 'url-cache)
 (require 'xml)
 (require 'browse-url)
+(require 'mm-util)
 (eval-and-compile (unless (featurep 'xemacs) (require 'help-fns)))
 
 (defcustom gnus-html-image-cache-ttl (days-to-time 7)
index 5a817e121049afec499803430914a47fc86c0805..86ff0180f55f288d76cca4b21c30b6039e228d6b 100644 (file)
@@ -6562,7 +6562,10 @@ This is meant to be called in `gnus-article-internal-prepare-hook'."
 (defun gnus-summary-insert-subject (id &optional old-header use-old-header)
   "Find article ID and insert the summary line for that article.
 OLD-HEADER can either be a header or a line number to insert
-the subject line on."
+the subject line on.
+If USE-OLD-HEADER is non-nil, then OLD-HEADER should be a header,
+and OLD-HEADER will be used when the summary line is inserted,
+too, instead of trying to fetch new headers."
   (let* ((line (and (numberp old-header) old-header))
         (old-header (and (vectorp old-header) old-header))
         (header (cond ((and old-header use-old-header)
@@ -8950,6 +8953,21 @@ Return the number of articles fetched."
       (gnus-summary-position-point)
       n)))
 
+(defun gnus-delete-duplicate-headers (headers)
+  ;; First remove leading duplicates.
+  (while (and (> (length headers) 1)
+             (= (mail-header-number (car headers))
+                (mail-header-number (cadr headers))))
+    (pop headers))
+  ;; Then the rest.
+  (let ((result headers))
+    (while (> (length headers) 1)
+      (if (= (mail-header-number (car headers))
+            (mail-header-number (cadr headers)))
+         (setcdr headers (cddr headers))
+       (pop headers)))
+    result))
+
 (defun gnus-summary-refer-thread (&optional limit)
   "Fetch all articles in the current thread.
 If no backend-specific 'request-thread function is available
@@ -8964,29 +8982,36 @@ variable."
         (gnus-summary-ignore-duplicates t)
         (gnus-read-all-available-headers t)
         (limit (if limit (prefix-numeric-value limit)
-                 gnus-refer-thread-limit)))
+                 gnus-refer-thread-limit))
+        (new-headers
+         (if (gnus-check-backend-function
+              'request-thread gnus-newsgroup-name)
+             (gnus-request-thread header gnus-newsgroup-name)
+           (let* ((last (if (numberp limit)
+                            (min (+ (mail-header-number header)
+                                    limit)
+                                 gnus-newsgroup-highest)
+                          gnus-newsgroup-highest))
+                  (subject (gnus-simplify-subject
+                            (mail-header-subject header)))
+                  (refs (split-string (or (mail-header-references header)
+                                          "")))
+                  (gnus-parse-headers-hook
+                   (lambda () (goto-char (point-min))
+                     (keep-lines
+                      (regexp-opt (append refs (list id subject)))))))
+             (gnus-fetch-headers (list last) (if (numberp limit)
+                                                 (* 2 limit) limit) t)))))
+    (dolist (header new-headers)
+      (when (member (mail-header-number header) gnus-newsgroup-unselected)
+       (push (mail-header-number header) gnus-newsgroup-unreads)
+       (setq gnus-newsgroup-unselected
+             (delete (mail-header-number header) gnus-newsgroup-unselected))))
     (setq gnus-newsgroup-headers
-         (gnus-merge
-          'list gnus-newsgroup-headers
-          (if (gnus-check-backend-function
-               'request-thread gnus-newsgroup-name)
-              (gnus-request-thread header gnus-newsgroup-name)
-            (let* ((last (if (numberp limit)
-                             (min (+ (mail-header-number header)
-                                     limit)
-                                  gnus-newsgroup-highest)
-                           gnus-newsgroup-highest))
-                   (subject (gnus-simplify-subject
-                             (mail-header-subject header)))
-                   (refs (split-string (or (mail-header-references header)
-                                           "")))
-                   (gnus-parse-headers-hook
-                    (lambda () (goto-char (point-min))
-                      (keep-lines
-                       (regexp-opt (append refs (list id subject)))))))
-              (gnus-fetch-headers (list last) (if (numberp limit)
-                                                  (* 2 limit) limit) t)))
-          'gnus-article-sort-by-number))
+         (gnus-delete-duplicate-headers
+          (gnus-merge
+           'list gnus-newsgroup-headers new-headers
+           'gnus-article-sort-by-number)))
     (gnus-summary-limit-include-thread id)))
 
 (defun gnus-summary-refer-article (message-id)
index b66d5f22474100ce45be4a26246e5414ac416e84..7ff90f583cfc59b54f8791ee436261630844c3f4 100644 (file)
@@ -1435,6 +1435,7 @@ list, Gnus will try all the methods in the list until it finds a match."
                 (const current)
                 (const :tag "Google" (nnweb "refer" (nnweb-type google)))
                 gnus-select-method
+                sexp
                 (repeat :menu-tag "Try multiple"
                         :tag "Multiple"
                         :value (current (nnweb "refer" (nnweb-type google)))
index ff013e5b29143624cdeef2540c24648080257043..47c4de0aedc35655bf049906b8d31332721f26b1 100644 (file)
@@ -4785,7 +4785,9 @@ Do not use this for anything important, it is cryptographically weak."
   (require 'sha1)
   (let (sha1-maximum-internal-length)
     (sha1 (concat (message-unique-id)
-                 (format "%x%x%x" (random) (random t) (random))
+                 (format "%x%x%x" (random)
+                         (progn (random t) (random))
+                         (random))
                  (prin1-to-string (recent-keys))
                  (prin1-to-string (garbage-collect))))))
 
@@ -5488,10 +5490,12 @@ In posting styles use `(\"Expires\" (make-expires-date 30))'."
 ;; You might for example insert a "." somewhere (not next to another dot
 ;; or string boundary), or modify the "fsf" string.
 (defun message-unique-id ()
+  (random t)
   ;; Don't use microseconds from (current-time), they may be unsupported.
   ;; Instead we use this randomly inited counter.
   (setq message-unique-id-char
-       (% (1+ (or message-unique-id-char (logand (random t) (1- (lsh 1 20)))))
+       (% (1+ (or message-unique-id-char
+                  (logand (random most-positive-fixnum) (1- (lsh 1 20)))))
           ;; (current-time) returns 16-bit ints,
           ;; and 2^16*25 just fits into 4 digits i base 36.
           (* 25 25)))
index 8099cc2a7cc7b8237d40d39dfe85fcea0063d09e..3f140ef59d96fb209f3d7c4ffd28d34ed1092b98 100644 (file)
@@ -1640,6 +1640,7 @@ server is of form 'backend:name'."
   (let ((method (gnus-server-to-method server)))
     (cond ((and method (assq key (cddr method)))
           (nth 1 (assq key (cddr method))))
+         ((boundp key) (symbol-value key))
          (t nil))))
 
 (defun nnir-possibly-change-server (server)