of strings). The functions are called with the name of the current
group (or nil) as a parameter.
+If you want to save your mail in one group and the news articles you
+write in another group, you could say something like:
+
+ \(setq gnus-message-archive-group
+ '((if (message-news-p)
+ \"misc-news\"
+ \"misc-mail\")))
+
Normally the group names returned by this variable should be
unprefixed -- which implictly means \"store on the archive server\".
However, you may wish to store the message on some other server. In
fetched by ange-ftp.
This variable can also be a list of directories. In that case, the
-first element in the list will be used by default, and the others will
-be used as backup sites.
+first element in the list will be used by default. The others can
+be used when being prompted for a site.
Note that Gnus uses an aol machine as the default directory. If this
feels fundamentally unclean, just think of it as a way to finally get
comparing subjects.")
(defvar gnus-simplify-ignored-prefixes nil
- "*Regexp, matches for which are removed from subject lines when simplifying.")
+ "*Regexp, matches for which are removed from subject lines when simplifying fuzzily.")
(defvar gnus-build-sparse-threads nil
"*If non-nil, fill in the gaps in threads.
(defvar gnus-summary-exit-hook nil
"*A hook called on exit from the summary buffer.")
+(defvar gnus-check-bogus-groups-hook nil
+ "A hook run after removing bogus groups.")
+
(defvar gnus-group-catchup-group-hook nil
"*A hook run when catching up a group from the group buffer.")
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version-number "5.2.29"
+(defconst gnus-version-number "5.2.32"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Gnus v%s" gnus-version-number)
gnus-group-brew-soup gnus-brew-soup gnus-soup-add-article
gnus-soup-send-replies gnus-soup-save-areas gnus-soup-pack-packet)
("nnsoup" nnsoup-pack-replies)
- ("gnus-scomo" :interactive t gnus-score-mode)
+ ("score-mode" :interactive t gnus-score-mode)
("gnus-mh" gnus-mh-mail-setup gnus-summary-save-article-folder
gnus-Folder-save-name gnus-folder-save-name)
("gnus-mh" :interactive t gnus-summary-save-in-folder)
(setcar (cddr entry) (gnus-byte-code 'gnus-tmp-func)))))
(push (cons 'version emacs-version) gnus-format-specs)
-
+ ;; Mark the .newsrc.eld file as "dirty".
+ (gnus-dribble-enter " ")
(gnus-message 7 "Compiling user specs...done"))))
(defun gnus-indent-rigidly (start end arg)
group gnus-active-hashtb))))
(and b (goto-char b)))))
-(defun gnus-group-next-group (n)
+(defun gnus-group-next-group (n &optional silent)
"Go to next N'th newsgroup.
If N is negative, search backward instead.
Returns the difference between N and the number of skips actually
done."
(interactive "p")
- (gnus-group-next-unread-group n t))
+ (gnus-group-next-unread-group n t nil silent))
-(defun gnus-group-next-unread-group (n &optional all level)
+(defun gnus-group-next-unread-group (n &optional all level silent)
"Go to next N'th unread newsgroup.
If N is negative, search backward instead.
If ALL is non-nil, choose any newsgroup, unread or not.
(gnus-group-search-forward
backward (or (not gnus-group-goto-unread) all) level))
(setq n (1- n)))
- (if (/= 0 n) (gnus-message 7 "No more%s newsgroups%s" (if all "" " unread")
- (if level " on this level or higher" "")))
+ (when (and (/= 0 n)
+ (not silent))
+ (gnus-message 7 "No more%s newsgroups%s" (if all "" " unread")
+ (if level " on this level or higher" "")))
n))
(defun gnus-group-prev-group (n)
(alist (cdr prev)))
(while alist
(if (= (gnus-info-level (car alist)) level)
- (setcdr prev (cdr alist))
+ (progn
+ (push (gnus-info-group (car alist)) gnus-killed-list)
+ (setcdr prev (cdr alist)))
(setq prev alist))
(setq alist (cdr alist)))
(gnus-make-hashtable-from-newsrc-alist)
(defun gnus-group-describe-group (force &optional group)
"Display a description of the current newsgroup."
(interactive (list current-prefix-arg (gnus-group-group-name)))
- (when (and force
- gnus-description-hashtb)
- (gnus-sethash group nil gnus-description-hashtb))
- (let ((method (gnus-find-method-for-group group))
- desc)
+ (let* ((method (gnus-find-method-for-group group))
+ (mname (gnus-group-prefixed-name "" method))
+ desc)
+ (when (and force
+ gnus-description-hashtb)
+ (gnus-sethash mname nil gnus-description-hashtb))
(or group (error "No group name given"))
(and (or (and gnus-description-hashtb
;; We check whether this group's method has been
;; queried for a description file.
- (gnus-gethash
- (gnus-group-prefixed-name "" method)
- gnus-description-hashtb))
+ (gnus-gethash mname gnus-description-hashtb))
(setq desc (gnus-group-get-description group))
(gnus-read-descriptions-file method))
(gnus-message 1
(make-local-variable 'gnus-summary-line-format)
(make-local-variable 'gnus-summary-line-format-spec)
(make-local-variable 'gnus-summary-mark-positions)
+ (gnus-make-local-hook 'post-command-hook)
+ (gnus-add-hook 'post-command-hook 'gnus-clear-inboxes-moved nil t)
(run-hooks 'gnus-summary-mode-hook))
(defun gnus-summary-make-local-variables ()
(cond (gnus-newsgroup-dormant
(gnus-summary-limit-include-dormant))
((and gnus-newsgroup-scored show-all)
- (gnus-summary-limit-include-expunged))))
+ (gnus-summary-limit-include-expunged t))))
;; Function `gnus-apply-kill-file' must be called in this hook.
(run-hooks 'gnus-apply-kill-hook)
(if (and (zerop (buffer-size))
;; If the article lies outside the current limit,
;; then we do not display it.
((and (not (memq number gnus-newsgroup-limit))
- (not gnus-tmp-dummy-line))
+ ;(not gnus-tmp-dummy-line)
+ )
(setq gnus-tmp-gathered
(nconc (mapcar
(lambda (h) (mail-header-number (car h)))
(setq gnus-newsgroup-limit articles)
(let ((total (length gnus-newsgroup-data))
(data (gnus-data-find-list (gnus-summary-article-number)))
+ (gnus-summary-mark-below nil) ; Inhibit this.
found)
;; This will do all the work of generating the new summary buffer
;; according to the new limit.
;; Suggested by Daniel Quinlan <quinlan@best.com>.
(defalias 'gnus-summary-show-all-expunged 'gnus-summary-limit-include-expunged)
-(defun gnus-summary-limit-include-expunged ()
+(defun gnus-summary-limit-include-expunged (&optional no-error)
"Display all the hidden articles that were expunged for low scores."
(interactive)
(gnus-set-global-variables)
(< (cdar scored) gnus-summary-expunge-below)
(setq headers (cons h headers))))
(setq scored (cdr scored)))
- (or headers (error "No expunged articles hidden."))
- (goto-char (point-min))
- (gnus-summary-prepare-unthreaded (nreverse headers)))
- (goto-char (point-min))
- (gnus-summary-position-point)))
+ (if (not headers)
+ (when (not no-error)
+ (error "No expunged articles hidden."))
+ (goto-char (point-min))
+ (gnus-summary-prepare-unthreaded (nreverse headers))
+ (goto-char (point-min))
+ (gnus-summary-position-point)
+ t))))
(defun gnus-summary-catchup (&optional all quietly to-here not-mark)
"Mark all articles not marked as unread in this newsgroup as read.
"\M-\t" gnus-article-prev-button
"<" beginning-of-buffer
">" end-of-buffer
+ "\C-c\C-i" gnus-info-find-node
"\C-c\C-b" gnus-bug)
(substitute-key-definition
"Describe article mode commands briefly."
(interactive)
(gnus-message 6
- (substitute-command-keys "\\<gnus-article-mode-map>\\[gnus-article-next-page]:Next page \\[gnus-article-prev-page]:Prev page \\[gnus-article-show-summary]:Show summary \\[gnus-info-find-node]:Run Info \\[gnus-article-describe-briefly]:This help")))
+ (substitute-command-keys "\\<gnus-article-mode-map>\\[gnus-article-goto-next-page]:Next page \\[gnus-article-goto-prev-page]:Prev page \\[gnus-article-show-summary]:Show summary \\[gnus-info-find-node]:Run Info \\[gnus-article-describe-briefly]:This help")))
(defun gnus-article-summary-command ()
"Execute the last keystroke in the summary buffer."
'("q" "Q" "c" "r" "R" "\C-c\C-f" "m" "a" "f" "F"
"Zc" "ZC" "ZE" "ZQ" "ZZ" "Zn" "ZR" "ZG" "ZN" "ZP"
"=" "^" "\M-^" "|"))
+ (nosave-but-article
+ '("A\r"))
keys)
(save-excursion
(set-buffer gnus-summary-buffer)
(setq keys (read-key-sequence nil)))
(message "")
- (if (member keys nosaves)
+ (if (or (member keys nosaves)
+ (member keys nosave-but-article))
(let (func)
- (pop-to-buffer gnus-summary-buffer 'norecord)
- (if (setq func (lookup-key (current-local-map) keys))
- (call-interactively func)
- (ding)))
+ (save-window-excursion
+ (pop-to-buffer gnus-summary-buffer 'norecord)
+ (setq func (lookup-key (current-local-map) keys)))
+ (if (not func)
+ (ding)
+ (set-buffer gnus-summary-buffer)
+ (call-interactively func))
+ (when (member keys nosave-but-article)
+ (pop-to-buffer gnus-article-buffer 'norecord)))
(let ((obuf (current-buffer))
(owin (current-window-configuration))
(opoint (point))
(set (car dead-lists)
(delete group (symbol-value (car dead-lists))))))
(setq dead-lists (cdr dead-lists))))
+ (run-hooks 'gnus-check-bogus-groups-hook)
(gnus-message 5 "Checking bogus newsgroups...done"))))
(defun gnus-check-duplicate-killed-groups ()