Commit c20643e2 authored by Dave Abrahams's avatar Dave Abrahams Committed by Katsumi Yamaoka
Browse files

[Gnus] Miscellaneous fixes by Dave Abrahams

parent 4e0f6479
2012-08-31 Dave Abrahams <>
* auth-source.el (auth-sources): Fix macos keychain access.
* gnus-int.el (gnus-request-head): When gnus-override-method is set,
allow the backend `request-head' function to determine the group
name on its own.
(gnus-request-expire-articles): Filter out negative article numbers
during expiry (Bug#11980).
* gnus-range.el (gnus-set-difference): Change gnus-set-difference from
O(N^2) to O(N). This makes warping into huge groups tolerable.
* gnus-registry.el (gnus-try-warping-via-registry): Don't act as though
you've found the article when you haven't.
2012-08-31 Stefan Monnier <>
* gnus-notifications.el (gnus-notifications-action): Avoid CL-ism.
......@@ -256,10 +256,10 @@ can get pretty complex."
(const :tag "Temp Secrets API Collection" "secrets:session")
(const :tag "Default internet Mac OS Keychain"
(const :tag "Default generic Mac OS Keychain"
(list :tag "Source definition"
(const :format "" :value :source)
......@@ -599,7 +599,8 @@ real group. Does nothing on a real group."
clean-up t))
;; Use `head' function.
((fboundp head)
(setq res (funcall head article (gnus-group-real-name group)
(setq res (funcall head article
(and (not gnus-override-method) (gnus-group-real-name group))
(nth 1 gnus-command-method))))
;; Use `article' function.
......@@ -706,6 +707,10 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned."
(defun gnus-request-expire-articles (articles group &optional force)
(let* ((gnus-command-method (gnus-find-method-for-group group))
;; Filter out any negative article numbers; they can't be
;; expired here.
(delq nil (mapcar (lambda (n) (and (>= n 0) n)) articles)))
(gnus-inhibit-demon t)
......@@ -52,11 +52,13 @@ If RANGE is a single range, return (RANGE). Otherwise, return RANGE."
(defun gnus-set-difference (list1 list2)
"Return a list of elements of LIST1 that do not appear in LIST2."
(let ((list1 (copy-sequence list1)))
(while list2
(setq list1 (delq (car list2) list1))
(setq list2 (cdr list2)))
(let ((hash2 (make-hash-table :test 'eq))
(result nil))
(dolist (elt list2) (puthash elt t hash2))
(dolist (elt list1)
(unless (gethash elt hash2)
(setq result (cons elt result))))
(nreverse result)))
(defun gnus-range-nconcat (&rest ranges)
"Return a range comprising all the RANGES, which are pre-sorted.
......@@ -1169,9 +1169,10 @@ data stored in the registry."
;; Try to activate the group. If that fails, just move
;; along. We may have more groups to work with
(gnus-select-group-with-message-id group message-id))
(throw 'found t)))))))
(gnus-select-group-with-message-id group message-id) t)
(throw 'found t))))))))
;; TODO: a few things
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment