+2012-01-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Group Parameters): Really note precedence.
+
2012-01-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Group Parameters): Note precedence.
(to-group . "\\1"))
("mail\\.me"
- (gnus-use-scoring t))
+ (gnus-use-scoring t))
("list\\..*"
(total-expire . t)
(broken-reply-to . t))))
@end lisp
-The first clause that matches the group name will be used.
+All clauses that matches the group name will be used, but the last
+setting ``wins''. So if you have two clauses that both match the
+group name, and both set, say @code{display}, the last setting will
+override the first.
Parameters that are strings will be subjected to regexp substitution,
as the @code{to-group} example shows.
+2012-01-07 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mm-decode.el (mm-interactively-view-part): Use `completing-read',
+ since ido doesn't work on symbols (bug#9632).
+
+ * gnus.el (gnus-group-fast-parameter): Use the same precedence rules
+ when getting a single value as when getting all the values. This means
+ that atoms like `gcc-self' work cumulatively, like variable settings,
+ instead of getting the value from the last matching clause.
+ (gnus-group-find-parameter): Protect against the group buffer not
+ existing (bug#9585).
+
+2012-01-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-start.el (gnus-activate-group): Document more parameters
+ (bug#9694).
+
+ * gnus-group.el (gnus-group-read-ephemeral-group): Doc clarification
+ (bug#9692).
+
+ * gnus-agent.el (gnus-agent-store-article): Tell the Agent when the
+ article was fetched, so that it can be expired later (bug#9958).
+ (gnus-agent-summary-fetch-series): Add doc string.
+ (gnus-agent-summary-fetch-group): Don't remove tick and dormant marks
+ (bug#9517).
+
+ * nntp.el (nntp-retrieve-groups): Refuse to do retrieval when an async
+ retrieval is happening.
+
+ * gnus.el (gnus-parameters): Doc fix.
+
+2012-01-06 Dave Abrahams <dave@boostpro.com> (tiny change)
+
+ * gnus-sum.el (gnus-summary-refer-thread): If the subtree is hidden,
+ show the thread after expansion.
+
+2012-01-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (article-narrow-to-head): If the head is completely
+ empty, narrow to the empty region (bug#9764).
+
+ * gnus-sum.el (gnus-summary-mark-article-as-unread): Mark articles as
+ read, and then mark them as unread only when the unread mark is used.
+ This makes `C-- T k' actually work, even though it's confusing.
+
+ * gnus-win.el (gnus-all-windows-visible-p): Ensure that the buffer is
+ alive before we try to find its window.
+
+2012-01-06 Brian Sniffen <bsniffen@akamai.com> (tiny change)
+
+ * mm-decode.el (mm-display-external): Use a longer timeout for the
+ deletion to allow slow programs to display the file.
+
2012-01-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
+ * gnus-art.el (gnus-article-browse-delete-temp-files): Fix up the
+ prompt to be less confusing.
+
* gnus-msg.el (gnus-summary-reply): Do not give a `switch-to-buffer'
argument to `message-reply'. This broke `special-display-*' frame
pop-uping (bug#10238).
(gnus-summary-position-point)))
(defun gnus-agent-summary-fetch-series ()
+ "Fetch the process-marked articles into the Agent."
(interactive)
(when gnus-newsgroup-processable
(setq gnus-newsgroup-downloadable
(cond (gnus-agent-mark-unread-after-downloaded
(setq gnus-newsgroup-downloadable
(delq article gnus-newsgroup-downloadable))
-
- (gnus-summary-mark-article article gnus-unread-mark))
+ (when (and (not (member article gnus-newsgroup-dormant))
+ (not (member article gnus-newsgroup-marked)))
+ (gnus-summary-mark-article article gnus-unread-mark)))
(was-marked-downloadable
(gnus-summary-set-agent-mark article t)))
(when (gnus-summary-goto-subject article nil t)
(coding-system-for-write gnus-cache-coding-system))
(when (not (file-exists-p file))
(gnus-make-directory (file-name-directory file))
- (write-region (point-min) (point-max) file nil 'silent))))
+ (write-region (point-min) (point-max) file nil 'silent)
+ ;; Tell the Agent when the article was fetched, so that it can
+ ;; be expired later.
+ (gnus-agent-load-alist group)
+ (gnus-agent-save-alist group (list article)
+ (time-to-days (current-time))))))
(defun gnus-agent-regenerate-group (group &optional reread)
"Regenerate GROUP.
(or how (setq how gnus-article-browse-delete-temp))
(if (eq how 'ask)
(let ((files (length gnus-article-browse-html-temp-list)))
- (gnus-y-or-n-p (format
- "Delete all %s temporary HTML file%s? "
- files
- (if (> files 1) "s" ""))))
+ (gnus-y-or-n-p
+ (if (= files 1)
+ "Delete the temporary HTML file? "
+ (format "Delete all %s temporary HTML files? "
+ files))))
how)))
(dolist (file gnus-article-browse-html-temp-list)
(cond ((file-directory-p file)
Point is left at the beginning of the narrowed-to region."
(narrow-to-region
(goto-char (point-min))
- (if (search-forward "\n\n" nil 1)
- (1- (point))
- (point-max)))
+ (cond
+ ;; Absolutely no headers displayed.
+ ((looking-at "\n")
+ (point))
+ ;; Normal headers.
+ ((search-forward "\n\n" nil 1)
+ (1- (point)))
+ ;; Nothing but headers.
+ (t
+ (point-max))))
(goto-char (point-min)))
(defun article-goto-body ()
number)
"Read GROUP from METHOD as an ephemeral group.
If ACTIVATE, request the group first.
-If QUIT-CONFIG, use that window configuration when exiting from the
-ephemeral group.
+If QUIT-CONFIG, use that Gnus window configuration name when
+exiting from the ephemeral group.
If REQUEST-ONLY, don't actually read the group; just request it.
If SELECT-ARTICLES, only select those articles.
If PARAMETERS, use those as the group parameters.
result))
(defun gnus-request-compact (gnus-command-method)
- "Request groups compaction from GNUS-COMMAND-METHOD."
+ "Request groups compaction from GNUS-COMMAND-METHOD."
(when (stringp gnus-command-method)
(setq gnus-command-method (gnus-server-to-method gnus-command-method)))
(funcall (gnus-get-function gnus-command-method 'request-compact)
(defun gnus-activate-group (group &optional scan dont-check method
dont-sub-check)
"Check whether a group has been activated or not.
-If SCAN, request a scan of that group as well."
+If SCAN, request a scan of that group as well. If METHOD, use
+that select method instead of determining the method based on the
+group name. If DONT-CHECK, don't check check whether the group
+actually exists. If DONT-SUB-CHECK or DONT-CHECK, don't let the
+backend check whether the group actually exists."
(let ((method (or method (inline (gnus-find-method-for-group group))))
active)
(and (inline (gnus-check-server method))
'gnus-article-sort-by-number)))
(setq gnus-newsgroup-articles
(gnus-sorted-nunion gnus-newsgroup-articles (nreverse article-ids)))
- (gnus-summary-limit-include-thread id))))
+ (gnus-summary-limit-include-thread id)))
+ (gnus-summary-show-thread))
(defun gnus-summary-refer-article (message-id)
"Fetch an article specified by MESSAGE-ID."
(setq gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant))
(setq gnus-newsgroup-expirable (delq article gnus-newsgroup-expirable))
(setq gnus-newsgroup-reads (delq article gnus-newsgroup-reads))
+ (setq gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
(cond ((= mark gnus-ticked-mark)
(setq gnus-newsgroup-marked
(gnus-add-to-sorted-list gnus-newsgroup-marked
(unless buffer
(error "Invalid buffer type: %s" type))
(if (and (setq buf (get-buffer (gnus-window-to-buffer-helper buffer)))
+ (buffer-live-p buf)
(setq win (gnus-get-buffer-window buf t)))
(if (memq 'point split)
(setq all-visible win))
(display . all))
(\"mail\\\\.me\" (gnus-use-scoring t))
(\"list\\\\..*\" (total-expire . t)
- (broken-reply-to . t)))
-
-The first clause that matches the group name will be used."
+ (broken-reply-to . t)))"
:version "22.1"
:group 'gnus-group-various
:type '(repeat (cons regexp
;; The car is regexp matching for matching the group name.
(when (string-match (car head) group)
;; The cdr is the parameters.
- (setq result (gnus-group-parameter-value (cdr head)
- symbol allow-list))
- (when result
- ;; Expand if necessary.
- (if (and (stringp result) (string-match "\\\\[0-9&]" result))
- (setq result (gnus-expand-group-parameter (car head)
- result group))))))
+ (let ((this-result
+ (gnus-group-parameter-value (cdr head) symbol allow-list t)))
+ (when this-result
+ (setq result (car this-result))
+ ;; Expand if necessary.
+ (if (and (stringp result) (string-match "\\\\[0-9&]" result))
+ (setq result (gnus-expand-group-parameter
+ (car head) result group)))))))
;; Done.
result))))
If you call this function inside a loop, consider using the faster
`gnus-group-fast-parameter' instead."
- (with-current-buffer gnus-group-buffer
+ (with-current-buffer (if (buffer-live-p gnus-group-buffer)
+ gnus-group-buffer
+ (current-buffer))
(if symbol
(gnus-group-fast-parameter group symbol allow-list)
(nconc
;; In particular, the timer object (which is
;; a vector in Emacs but is a list in XEmacs)
;; requires that it is lexically scoped.
- (timer (run-at-time 2.0 nil 'ignore)))
+ (timer (run-at-time 30.0 nil 'ignore)))
(if (featurep 'xemacs)
(lambda (process state)
(when (eq 'exit (process-status process))
(mailcap-mime-info type 'all)))
(method (let ((minibuffer-local-completion-map
mm-viewer-completion-map))
- (gnus-completing-read "Viewer" methods))))
+ (completing-read "Viewer" methods))))
(when (string= method "")
(error "No method given"))
(if (string-match "^[^% \t]+$" method)
"Retrieve group info on GROUPS."
(nntp-with-open-group
nil server
- (when (nntp-find-connection-buffer nntp-server-buffer)
+ (when (and (nntp-find-connection-buffer nntp-server-buffer)
+ (with-current-buffer
+ (nntp-find-connection-buffer nntp-server-buffer)
+ (if (not nntp-retrieval-in-progress)
+ t
+ (message "Warning: Refusing to do retrieval from %s because a retrieval is already happening"
+ server)
+ nil)))
(catch 'done
(save-excursion
;; Erase nntp-server-buffer before nntp-inhibit-erase.