Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

*** empty log message ***

  • Loading branch information...
commit fdb41e3b36213c5501a5757e64bb60d938cf3a29 1 parent b5efda3
@larsmagne larsmagne authored
View
88 lisp/ChangeLog
@@ -1,3 +1,91 @@
+Sun Jun 4 00:48:38 1995 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.el (gnus-group-catchup): Would not properly catchup all
+ ticked articles.
+
+ * nndoc.el (nndoc-number-of-articles): Would totally bug out on
+ mbox types.
+
+Sat Jun 3 00:27:41 1995 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.el (gnus-summary-sort): Re-send async info after sorting.
+ (gnus-strict-mime): New variable.
+ (gnus-extract-address-components): XOVER From headers might not
+ support folded lines.
+
+ * nnmail.el (nnmail-move-inbox): Always use movemail to move
+ incoming mail.
+
+ * gnus.el (gnus-summary-zcore-fuzz): New variable.
+ (gnus-summary-insert-line): Use it.
+
+ * gnus-score.el (gnus-summary-score-entry): Remove Re:'s from
+ substring and regexp matches.
+
+ * gnus-msg.el (gnus-inews-insert-headers): Would bug out on
+ existing message-ids.
+
+ * gnus-ems.el: Provide gnusutil for Mule users.
+
+ * gnus.el (gnus-summary-catchup): Would nix out dormant articles.
+
+ * nntp.el (nntp-retrieve-headers-with-xover): Would give erronous
+ results on non-xover servers.
+
+ * gnus.el (gnus-group-make-group): Would insert groups at the end
+ of the list at the beginning.
+
+ * gnus-kill.el (gnus-kill-parse-gnus-kill-file): Switch to the
+ summary buffer before evaling nok-kill forms.
+
+ * gnus-score.el (gnus-score-edit-done): Make sure the directory
+ where we save the score file exists.
+
+ * gnus.el (gnus-retrieve-headers): Don't try to retrieve headers
+ by id from the cache.
+
+ * nnsoup.el (nnsoup-read-areas): New packets would bomb.
+
+ * gnus.el (gnus-get-unread-articles): Check secondary groups kinda
+ unconditionally.
+ (gnus-read-descriptions-file): Don't try to re-read desc file if
+ it failed the first time.
+ (gnus-add-configuration): New function.
+ (gnus-summary-next-article): The group window was selected. We
+ select the summary buffer.
+ (gnus-active-to-gnus-format): Would leave illegal group symbols
+ undefined.
+
+Fri Jun 2 20:58:58 1995 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * nnvirtual.el (nnvirtual-possibly-change-newsgroups): Make sure
+ the nnvirtual group doesn't include itself.
+
+ * gnus-score.el (gnus-score-body): Changed message to "num of
+ tot".
+
+ * nnbabyl.el (nnbabyl-get-new-mail): Remove ^_-s from incoming
+ mails.
+
+ * gnus.el (gnus-mark-article-as-read): Did not remove articles
+ from the cache.
+
+ * nnmail.el (nnmail-get-spool-files): Remove directories that
+ match the suffix.
+
+ * gnus-score.el (gnus-summary-increase-score): Use sit-fors to
+ better mimic a keymap.
+ (gnus-summary-increase-score): Don't display match types that are
+ illegal for the header to be scored on.
+ (gnus-summary-increase-score): Allow C-h to list help.
+
+ * nnmail.el (nnmail-get-split-group): Get the right group to split
+ in when doing procmail splits.
+
+Fri Jun 2 17:25:28 1995 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: 0.81 is released.
+
Fri Jun 2 14:56:40 1995 Lars Ingebrigtsen <lars@eyesore.no>
* gnus.el (gnus-group-exit): Would offer to save summaries after
View
2  lisp/custom.el
@@ -854,7 +854,7 @@ If the optional argument TYPES is non-nil, use that as the local types.
If the optional argument SET is non-nil, use that to set external data.
If the optional argument GET is non-nil, use that to get external data."
(switch-to-buffer name)
- (buffer-disable-undo)
+ (buffer-disable-undo (current-buffer))
(custom-mode)
(setq custom-local-type-properties types)
(if (null custom)
View
4 lisp/gnus-cache.el
@@ -151,8 +151,8 @@
(gnus-cache-change-buffer group)
(set-buffer (cdr gnus-cache-buffer))
(goto-char (point-min))
- (if (or (looking-at (concat (string-to-int article) "\t"))
- (search-forward (concat "\n" (string-to-int article) "\t")))
+ (if (or (looking-at (concat (int-to-string article) "\t"))
+ (search-forward (concat "\n" (int-to-string article) "\t")))
(delete-region (progn (beginning-of-line) (point))
(progn (forward-line 1) (point))))))))
View
74 lisp/gnus-ems.el
@@ -26,6 +26,9 @@
(defvar gnus-mouse-2 [mouse-2])
(defvar gnus-easymenu 'easymenu)
+(defvar gnus-group-mode-hook ())
+(defvar gnus-summary-mode-hook ())
+(defvar gnus-article-mode-hook ())
;; We do not byte-compile this file, because error messages are such a
;; bore.
@@ -40,8 +43,11 @@
(or (memq 'underline (list-faces))
(funcall (intern "make-face") 'underline))
+ ;; Must avoid calling set-face-underline-p directly, because it
+ ;; is a defsubst in emacs19, and will make the .elc files non
+ ;; portable!
(or (face-differs-from-default-p 'underline)
- (set-face-underline-p 'underline t))
+ (funcall 'set-face-underline-p 'underline t))
(or (fboundp 'set-text-properties)
(defun set-text-properties (start end props &optional buffer)
(if props
@@ -54,6 +60,7 @@
(defun move-overlay (extent start end &optional buffer)
(set-extent-endpoints extent start end)))
(or (boundp 'standard-display-table) (setq standard-display-table nil))
+ (or (boundp 'read-event) (fset 'read-event 'next-command-event))
(if (not gnus-visual)
()
@@ -93,6 +100,9 @@
(not (string-match "29" emacs-version)))
(setq gnus-hidden-properties '(invisible t)))
+ ((boundp 'MULE)
+ (provide 'gnusutil))
+
))
(eval-and-compile
@@ -121,20 +131,74 @@
(fset 'gnus-set-mouse-face (lambda (string) string))
(defun gnus-summary-make-display-table ()
+ ;; We start from the standard display table, if any.
(let* ((table (window-display-table)))
(and (not table)
(setq table (make-vector 261 ())))
+ ;; Nix out all the control chars...
(let ((i 32))
(while (>= (setq i (1- i)) 0)
(aset table i [??])))
+ ;; ... but not newline, of course.
(aset table ?\n nil)
- (let ((i 160))
+ ;; We nix out any glyphs over 126 that are not set already.
+ (let ((i 256))
(while (>= (setq i (1- i)) 127)
- (aset table i [??])))
- (setq gnus-summary-display-table table)))
+ (or (aref table i)
+ (aset table i [??]))))
+ (set-window-display-table (get-buffer-window (current-buffer)) table)))
+
+ (defun gnus-highlight-selected-summary ()
+ ;; Added by Per Abrahamsen <amanda@iesd.auc.dk>.
+ ;; Highlight selected article in summary buffer
+ (if gnus-summary-selected-face
+ (save-excursion
+ (let* ((beg (progn (beginning-of-line) (point)))
+ (end (progn (end-of-line) (point)))
+ (to (max 1 (1- (or (previous-single-property-change
+ end 'mouse-face nil beg) end))))
+ (from (1+ (or (next-single-property-change
+ beg 'mouse-face nil end) beg))))
+ (if (< to beg)
+ (progn
+ (setq from beg)
+ (setq to end)))
+ (if gnus-newsgroup-selected-overlay
+ (delete-extent gnus-newsgroup-selected-overlay))
+ (setq gnus-newsgroup-selected-overlay
+ (make-extent from to))
+ (set-extent-face gnus-newsgroup-selected-overlay
+ gnus-summary-selected-face)))))
)
-
+ ((boundp 'MULE)
+ ;; Mule definitions
+ (defun top-short-string (str width)
+ "Return a substring of STRING, starting at top and its length is
+equal or smaller than WIDTH. This function doesn't split in the middle
+of multi-octet character. [tl-str]"
+ (substring str 0
+ (let ((i 0) (w 0) chr (len (length str)))
+ (catch 'label
+ (while (< i len)
+ (setq chr (elt str i))
+ (setq w (+ w (char-width chr)))
+ (if (> w width)
+ (throw 'label i))
+ (setq i (+ i (char-bytes chr)))
+ )
+ i))
+ ))
+
+ (defun gnus-format-max-width (form length)
+ (let* ((val (eval form))
+ (valstr (if (numberp val) (int-to-string val) val)))
+ (if (> (length valstr) length)
+ (top-short-string valstr length)
+ valstr)))
+
+ (defun gnus-summary-make-display-table ())
+ )
))
(provide 'gnus-ems)
View
4 lisp/gnus-kill.el
@@ -410,7 +410,9 @@ Returns the number of articles marked as read."
(progn
(delete-region beg (point))
(insert (or (eval form) "")))
- (condition-case () (eval form) (error nil))))
+ (save-excursion
+ (set-buffer gnus-summary-buffer)
+ (condition-case () (eval form) (error nil)))))
(and (buffer-modified-p) (save-buffer))))
;; Parse an rn killfile.
View
2  lisp/gnus-msg.el
@@ -969,7 +969,7 @@ Headers in `gnus-required-headers' will be generated."
(goto-char (point-min))
(and (re-search-forward
(concat "^" (symbol-name (car headers)) ": *") nil t)
- (get-text-property 'gnus-delete (match-end 0))
+ (get-text-property (match-end 0) 'gnus-delete)
(gnus-delete-line))
(setq headers (cdr headers))))
;; Insert new Sender if the From is strange.
View
98 lisp/gnus-score.el
@@ -125,22 +125,27 @@ of the last succesful match.")
(prefix (if (< nscore 0) ?L ?I))
(increase (> nscore 0))
(char-to-header
- '((?a "from")
- (?s "subject")
- (?b "body" "")
- (?h "head" "")
- (?i "message-id" nil t)
- (?t "references" "message-id" t)
- (?x "xref")
- (?l "lines")
- (?d "date")
- (?f "followup")))
+ '((?a "from" nil nil string)
+ (?s "subject" nil nil string)
+ (?b "body" "" nil string)
+ (?h "head" "" nil string)
+ (?i "message-id" nil t string)
+ (?t "references" "message-id" t string)
+ (?x "xref" nil nil string)
+ (?l "lines" nil nil number)
+ (?d "date" nil nil date)
+ (?f "followup" nil nil string)))
(char-to-type
- '((?s s "substring") (?e e "exact string") (?f f "fuzzy string")
- (?r r "regexp string")
- (?b before "before date") (?a at "at date") (?n now "this date")
- (?< < "less than number") (?> > "greater than number")
- (?= = "equal to number")))
+ '((?s s "substring" string)
+ (?e e "exact string" string)
+ (?f f "fuzzy string" string)
+ (?r r "regexp string" string)
+ (?b before "before date" date)
+ (?a at "at date" date)
+ (?n now "this date" date)
+ (?< < "less than number" number)
+ (?> > "greater than number" number)
+ (?= = "equal to number" number)))
(char-to-perm
(list (list ?t (current-time-string) "temporary")
'(?p perm "permanent") '(?i now "immediate")))
@@ -149,12 +154,14 @@ of the last succesful match.")
;; First we read the header to score.
(while (not hchar)
(if mimic
- (message "%c-" prefix)
+ (progn
+ (sit-for 1)
+ (message "%c-" prefix))
(message "%s header (%s?): " (if increase "Increase" "Lower")
(mapconcat (lambda (s) (char-to-string (car s)))
char-to-header "")))
(setq hchar (read-char))
- (if (not (= hchar ??))
+ (if (not (or (= hchar ??) (= hchar ?\C-h)))
()
(setq hchar nil)
(gnus-score-insert-help "Match on header" char-to-header 1)))
@@ -179,14 +186,20 @@ of the last succesful match.")
;; We continue reading - the type.
(while (not tchar)
(if mimic
- (message "%c %c-" prefix hchar)
+ (progn
+ (sit-for 1)
+ (message "%c %c-" prefix hchar))
(message "%s header '%s' with match type (%s?): "
(if increase "Increase" "Lower")
(nth 1 entry)
- (mapconcat (lambda (s) (char-to-string (car s)))
+ (mapconcat (lambda (s)
+ (if (eq (nth 4 entry)
+ (nth 3 s))
+ (char-to-string (car s))
+ ""))
char-to-type "")))
(setq tchar (read-char))
- (if (not (= tchar ??))
+ (if (not (or (= tchar ??) (= tchar ?\C-h)))
()
(setq tchar nil)
(gnus-score-insert-help "Match type" char-to-type 2)))
@@ -211,12 +224,14 @@ of the last succesful match.")
;; We continue reading.
(while (not pchar)
(if mimic
- (message "%c %c %c-" prefix hchar tchar)
+ (progn
+ (sit-for 1)
+ (message "%c %c %c-" prefix hchar tchar))
(message "%s permanence (%s?): " (if increase "Increase" "Lower")
(mapconcat (lambda (s) (char-to-string (car s)))
char-to-perm "")))
(setq pchar (read-char))
- (if (not (= pchar ??))
+ (if (not (or (= pchar ??) (= pchar ?\C-h)))
()
(setq pchar nil)
(gnus-score-insert-help "Match permanence" char-to-perm 2)))
@@ -291,6 +306,8 @@ If optional argument `SILENT' is nil, show effect of score entry."
((y-or-n-p "Expire kill? ")
(current-time-string))
(t nil))))
+ (if (or (eq type 'r) (eq type 's))
+ (setq match (gnus-simplify-subject-re match)))
(let ((score (gnus-score-default score))
(header (downcase header)))
(and prompt (setq match (read-string
@@ -302,25 +319,30 @@ If optional argument `SILENT' is nil, show effect of score entry."
(t "permanent"))
header
(if (< score 0) "lower" "raise"))
- match)))
+ (if (numberp match)
+ (int-to-string match)
+ match))))
(and (>= (nth 1 (assoc header gnus-header-index)) 0)
+ (eq (nth 2 (assoc header gnus-header-index))
+ 'gnus-score-string)
(not silent)
(gnus-summary-score-effect header match type score))
(if (eq date 'now)
()
(and (= score gnus-score-interactive-default-score)
(setq score nil))
- (let ((new (cond ((eq type 'f)
- (list (gnus-simplify-subject-fuzzy match)
- score (and date (gnus-day-number date)) type))
- (type
- (list match score (and date (gnus-day-number date)) type))
- (date
- (list match score (gnus-day-number date)))
- (score
- (list match score))
- (t
- (list match))))
+ (let ((new (cond
+ ((eq type 'f)
+ (list (gnus-simplify-subject-fuzzy match)
+ score (and date (gnus-day-number date)) type))
+ (type
+ (list match score (and date (gnus-day-number date)) type))
+ (date
+ (list match score (gnus-day-number date)))
+ (score
+ (list match score))
+ (t
+ (list match))))
(old (gnus-score-get header))
elem)
;; We see whether we can collapse some score entries.
@@ -518,8 +540,7 @@ SCORE is the score to add."
;; Treat the other possible atoms in the score alist.
(let ((mark (car (gnus-score-get 'mark alist)))
(expunge (car (gnus-score-get 'expunge alist)))
- (mark-and-expunge
- (car (gnus-score-get 'mark-and-expunge alist)))
+ (mark-and-expunge (car (gnus-score-get 'mark-and-expunge alist)))
(read-only (gnus-score-get 'read-only alist))
(files (gnus-score-get 'files alist))
(exclude-files (gnus-score-get 'exclude-files alist))
@@ -960,6 +981,8 @@ SCORE is the score to add."
(save-restriction
(let* ((buffer-read-only nil)
(articles gnus-scores-articles)
+ (last (header-number
+ (gnus-last-element (car gnus-scores-articles))))
(all-scores scores)
(request-func (cond ((string= "head" (downcase header))
'gnus-request-head)
@@ -975,7 +998,7 @@ SCORE is the score to add."
(setq request-func 'gnus-request-article)))
(while articles
(setq article (header-number (car (car articles))))
- (gnus-message 7 "Scoring on article %s..." article)
+ (gnus-message 7 "Scoring on article %s of %s..." article last)
(if (not (funcall request-func article gnus-newsgroup-name))
()
(widen)
@@ -1493,6 +1516,7 @@ This mode is an extended emacs-lisp mode.
(interactive)
(let ((bufnam (buffer-file-name (current-buffer)))
(winconf gnus-prev-winconf))
+ (gnus-make-directory (file-name-directory (buffer-file-name)))
(save-buffer)
(kill-buffer (current-buffer))
(gnus-score-remove-from-cache bufnam)
View
9 lisp/gnus-soup.el
@@ -233,7 +233,7 @@ $ emacs -batch -f gnus-batch-brew-soup ^nnml \".*emacs.*\""
;;; Internal Functions:
-;; Store the article in the current buffer.
+;; Store the current buffer.
(defun gnus-soup-store (directory prefix headers format index)
(add-hook 'gnus-exit-gnus-hook 'gnus-soup-save-areas)
;; Create the directory, if needed.
@@ -354,9 +354,10 @@ $ emacs -batch -f gnus-batch-brew-soup ^nnml \".*emacs.*\""
(packer (if (< (string-match "%s" packer)
(string-match "%d" packer))
(format packer files
- (string-to-int (gnus-soup-unique-prefix)))
+ (string-to-int (gnus-soup-unique-prefix dir)))
(format packer
- (string-to-int (gnus-soup-unique-prefix)) files)))
+ (string-to-int (gnus-soup-unique-prefix dir))
+ files)))
(dir (expand-file-name dir)))
(message "Packing %s..." packer)
(if (zerop (call-process "sh" nil nil nil "-c"
@@ -376,7 +377,7 @@ though the two last may be nil if they are missing."
(let (areas)
(save-excursion
(set-buffer (gnus-find-file-noselect file 'force))
- (buffer-disable-undo)
+ (buffer-disable-undo (current-buffer))
(goto-char (point-min))
(while (not (eobp))
(setq areas
View
1  lisp/gnus-vis.el
@@ -511,7 +511,6 @@ highlight-headers-follow-url-netscape:
(overlay-put gnus-newsgroup-selected-overlay 'face
gnus-summary-selected-face))))))
-
;; New implementation by Christian Limpach <Christian.Limpach@nice.ch>.
(defun gnus-summary-highlight-line ()
"Highlight current line according to `gnus-summary-highlight'."
View
172 lisp/gnus.el
@@ -537,6 +537,11 @@ slower.")
"*Default article score level.
If this variable is nil, scoring will be disabled.")
+(defvar gnus-summary-zcore-fuzz 0
+ "*Fuzziness factor for the zcore in the summary buffer.
+Articles with scores closer than this to `gnus-summary-default-score'
+will not be marked.")
+
(defvar gnus-group-default-list-level gnus-level-subscribed
"*Default listing level.
Ignored if `gnus-group-use-permanent-levels' is nil.")
@@ -549,6 +554,9 @@ Ignored if `gnus-group-use-permanent-levels' is nil.")
The articles will simply be fed to the function given by
`gnus-show-mime-method'.")
+(defvar gnus-strict-mime t
+ "*If nil, decode MIME header even if there is not Mime-Version field.")
+
(defvar gnus-show-mime-method (function metamail-buffer)
"*Function to process a MIME message.
The function is called from the article buffer.")
@@ -941,7 +949,7 @@ with some simple extensions.
("nndigest" none)
("nndoc" none prompt-address)
("nnbabyl" mail respool)
- ("nnkiboze" none virtual)
+ ("nnkiboze" post virtual)
("nnsoup" post)
("nnfolder" mail respool))
"An alist of valid select methods.
@@ -1275,7 +1283,7 @@ variable (string, integer, character, etc).")
(defconst gnus-maintainer "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls & Boys)"
"The mail address of the Gnus maintainer.")
-(defconst gnus-version "(ding) Gnus v0.81"
+(defconst gnus-version "(ding) Gnus v0.82"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
@@ -1755,7 +1763,10 @@ Thank you for your help in stamping out bugs.
(setq name (substring name 1 (1- (match-end 0))))))
;; If not, then "address (name)" is used.
(or name
- (and (string-match "(.+)" from)
+ (and (or (string-match "(.+)" from)
+ ;; Fix by MORIOKA Tomohiko <morioka@jaist.ac.jp>.
+ ;; XOVER might not support folded From headers.
+ (string-match "(.*" from))
(setq name (substring from (1+ (match-beginning 0))
(1- (match-end 0))))))
;; Fix by Hallvard B Furuseth <h.b.furuseth@usit.uio.no>.
@@ -2323,6 +2334,11 @@ If optional argument RE-ONLY is non-nil, strip `Re:' only."
(setq i (1+ i)))
(list (nreverse out)))))
+(defun gnus-add-configuration (conf)
+ (setq gnus-buffer-configuration
+ (cons conf (delq (assq (car conf) gnus-buffer-configuration)
+ gnus-buffer-configuration))))
+
(defun gnus-configure-windows (setting)
(setq setting (gnus-windows-old-to-new setting))
(let ((r (if (symbolp setting)
@@ -3871,8 +3887,10 @@ ADDRESS."
(gnus-group-change-level
(setq info (list t nname gnus-level-default-subscribed nil nil meth))
gnus-level-default-subscribed gnus-level-killed
- (gnus-gethash (or (gnus-group-group-name) "dummy.group")
- gnus-newsrc-hashtb) t)
+ (and (gnus-group-group-name)
+ (gnus-gethash (gnus-group-group-name)
+ gnus-newsrc-hashtb))
+ t)
(gnus-sethash nname '(0 . 0) gnus-active-hashtb)
(gnus-dribble-enter
(concat "(gnus-group-set-info '" (prin1-to-string (cdr info)) ")"))
@@ -4182,13 +4200,17 @@ or nil if no action could be taken."
(if (not (numberp (car entry)))
(gnus-message 1 "Can't catch up; non-active group")
;; Do the updating only if the newsgroup isn't killed.
- (if entry
- (progn
- (setq ticked (if all nil (cdr (assq 'tick marked))))
- (gnus-update-read-articles group ticked nil ticked)
- (if (and all marked)
- (setcar (nthcdr 3 (nth 2 entry))
- (delq (assq 'dormant marked) marked))))))
+ (if (not entry)
+ ()
+ (gnus-update-read-articles
+ group
+ (and (not all) (append (cdr (assq 'tick marked))
+ (cdr (assq 'dormant marked))))
+ nil (and (not all) (cdr (assq 'tick marked))))
+ (and all marked
+ (setcar (nthcdr 3 (nth 2 entry))
+ (delq (assq 'dormant marked)
+ (nth 3 (nth 2 entry)))))))
num))
(defun gnus-group-expire-articles (n)
@@ -5364,7 +5386,7 @@ The following commands are available:
(if (get-buffer buffer)
(progn
(set-buffer buffer)
- (not gnus-newsgroup-threads))
+ (not gnus-newsgroup-begin))
;; Fix by Sudish Joseph <joseph@cis.ohio-state.edu>
(setq gnus-summary-buffer (set-buffer (get-buffer-create buffer)))
(gnus-add-current-to-buffer-list)
@@ -5427,10 +5449,12 @@ The following commands are available:
(let* ((indentation (aref gnus-thread-indent-array level))
(lines (header-lines header))
(score (or score gnus-summary-default-score 0))
- (score-char (if (or (null gnus-summary-default-score)
- (= score gnus-summary-default-score)) ?
- (if (< score gnus-summary-default-score)
- gnus-score-below-mark gnus-score-over-mark)))
+ (score-char
+ (if (or (null gnus-summary-default-score)
+ (<= (abs (- score gnus-summary-default-score))
+ gnus-summary-zcore-fuzz)) ?
+ (if (< score gnus-summary-default-score)
+ gnus-score-below-mark gnus-score-over-mark)))
(replied (if replied gnus-replied-mark ? ))
(from (header-from header))
(name-address (funcall gnus-extract-address-components from))
@@ -6352,13 +6376,13 @@ If READ-ALL is non-nil, all articles in the group are selected."
newmarked)))
(and score (setq newmarked (cons (cons 'score score) newmarked)))
(if (nthcdr 3 info)
- (if newmarked
- (setcar (nthcdr 3 info) newmarked)
- (if (not (nthcdr 4 info))
- (setcdr (nthcdr 2 info) nil)
- (setcar (nthcdr 3 info) nil)))
+ (progn
+ (setcar (nthcdr 3 info) newmarked)
+ (and (not newmarked)
+ (not (nthcdr 4 info))
+ (setcdr (nthcdr 2 info) nil)))
(if newmarked
- (setcdr (nthcdr 2 info) (cons newmarked nil))))))
+ (setcdr (nthcdr 2 info) (list newmarked))))))
(defun gnus-add-marked-articles (group type articles &optional info force)
;; Add ARTICLES of TYPE to the info of GROUP.
@@ -6914,12 +6938,9 @@ taken into consideration."
If optional argument BACKWARD is non-nil, search backward instead."
(save-excursion
(set-buffer gnus-group-buffer)
- (save-excursion
- ;; We don't want to alter current point of group mode buffer.
- (if (gnus-group-search-forward
- backward nil
- (if use-level (gnus-group-group-level) nil))
- (gnus-group-group-name)))))
+ (if (gnus-group-search-forward
+ backward nil (if use-level (gnus-group-group-level) nil))
+ (gnus-group-group-name))))
(defun gnus-summary-best-group (&optional exclude-group)
"Find the name of the best unread group.
@@ -7471,7 +7492,7 @@ If optional argument UNREAD is non-nil, only unread article is selected."
;; Walking around summary lines with displaying articles.
(defun gnus-summary-expand-window ()
- "Expand summary window to show headers full window."
+ "Make the summary buffer take up the entire Emacs frame."
(interactive)
(gnus-set-global-variables)
(gnus-configure-windows 'summary))
@@ -7570,6 +7591,9 @@ If BACKWARD, the previous article is selected instead of the next."
(if (eq gnus-keep-same-level 'best)
(gnus-summary-best-group gnus-newsgroup-name)
(gnus-summary-search-group backward gnus-keep-same-level))))
+ ;; For some reason, the group window gets selected. We change
+ ;; it back.
+ (select-window (get-buffer-window (current-buffer)))
;; Keep just the event type of CMD.
(and (listp cmd) (setq cmd (car cmd)))
;; Select next unread newsgroup automagically.
@@ -7604,14 +7628,14 @@ If BACKWARD, the previous article is selected instead of the next."
;; Confirm auto selection.
(let* ((event (read-event)))
(setq key (if (listp event) (car event) event))
- (if (member key keystrokes)
+ (if (memq key keystrokes)
(let ((obuf (current-buffer)))
(switch-to-buffer gnus-group-buffer)
(gnus-group-jump-to-group group)
+ (execute-kbd-macro (char-to-string key))
(setq group (gnus-group-group-name))
- (switch-to-buffer obuf)
- (execute-kbd-macro (char-to-string key))))))
- (if (eq key cmd)
+ (switch-to-buffer obuf)))))
+ (if (equal key cmd)
(if (or (not group) (assoc 'quit-config
(gnus-find-method-for-group
gnus-newsgroup-name)))
@@ -8807,7 +8831,15 @@ marked."
;; Remove from unread and marked lists.
(setq gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
(setq gnus-newsgroup-marked (delq article gnus-newsgroup-marked))
- (setq gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant))))
+ (setq gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant))
+ ;; Possibly remove from cache, if that is used.
+ (and gnus-use-cache
+ (gnus-cache-possibly-remove-article
+ gnus-newsgroup-name article
+ (memq article gnus-newsgroup-marked)
+ (memq article gnus-newsgroup-dormant)
+ (or (memq article gnus-newsgroup-unreads)
+ (memq article gnus-newsgroup-unselected))))))
(defun gnus-mark-article-as-unread (article &optional mark)
"Enter ARTICLE in the pertinent lists and remove it from others."
@@ -9117,7 +9149,10 @@ The number of articles marked as read is returned."
(progn
(and all (setq gnus-newsgroup-marked nil
gnus-newsgroup-dormant nil))
- (setq gnus-newsgroup-unreads gnus-newsgroup-marked))
+ (setq gnus-newsgroup-unreads
+ (append gnus-newsgroup-marked gnus-newsgroup-dormant)))
+ ;; We actually mark all articles as cancelled, which we
+ ;; have to do when using auto-expiry or adaptive scoring.
(let ((unreads (length gnus-newsgroup-unreads)))
(if (gnus-summary-first-subject (not all))
(while (and (gnus-summary-mark-as-read nil gnus-catchup-mark)
@@ -9425,7 +9460,17 @@ Argument REVERSE means reverse order."
(gnus-summary-prepare)
(and gnus-show-threads
gnus-thread-hide-subtree
- (gnus-summary-hide-all-threads)))))))
+ (gnus-summary-hide-all-threads))
+ ;; If in async mode, we send some info to the backend.
+ (and gnus-newsgroup-async
+ (setq gnus-newsgroup-threads (nreverse gnus-newsgroup-threads))
+ (gnus-request-asynchronous
+ gnus-newsgroup-name
+ (if (and gnus-asynchronous-article-function
+ (fboundp gnus-asynchronous-article-function))
+ (funcall gnus-asynchronous-article-function
+ gnus-newsgroup-threads)))))))))
+
(defun gnus-sortable-date (date)
"Make sortable string by string-lessp from DATE.
@@ -10052,7 +10097,8 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(run-hooks 'gnus-article-prepare-hook)
;; Decode MIME message.
(if (and gnus-show-mime
- (gnus-fetch-field "Mime-Version"))
+ (or (not gnus-strict-mime)
+ (gnus-fetch-field "Mime-Version")))
(funcall gnus-show-mime-method))
;; Perform the article display hooks.
(run-hooks 'gnus-article-display-hook))
@@ -11084,7 +11130,7 @@ is returned insted of the status string."
(defun gnus-retrieve-headers (articles group)
(let ((method (gnus-find-method-for-group group)))
- (if gnus-use-cache
+ (if (and gnus-use-cache (numberp (car articles)))
(gnus-cache-retrieve-headers articles group)
(funcall (gnus-get-function method 'retrieve-headers)
articles (gnus-group-real-name group) (nth 1 method)))))
@@ -11170,6 +11216,9 @@ is returned insted of the status string."
(format "%s" (car (gnus-find-method-for-group group)))
gnus-valid-select-methods)))
+(defsubst gnus-secondary-method-p (method)
+ (member method gnus-secondary-select-methods))
+
(defun gnus-find-method-for-group (group &optional info)
(or gnus-override-method
(and (not group)
@@ -11633,16 +11682,19 @@ newsgroup."
(if (and (setq method (nth 4 info))
(not (gnus-server-equal gnus-select-method
(gnus-server-get-method nil method))))
+ ;; These groups are foreign.
(if (or (and gnus-activate-foreign-newsgroups
(not (numberp gnus-activate-foreign-newsgroups)))
(and (numberp gnus-activate-foreign-newsgroups)
(<= (nth 1 info) gnus-activate-foreign-newsgroups)
- (<= (nth 1 info) level)))
+ (<= (nth 1 info) level))
+ (gnus-secondary-method-p method))
(if (eq (car (if (stringp method)
(gnus-server-to-method method)
(nth 4 info))) 'nnvirtual)
(setq virtuals (cons info virtuals))
(setq active (gnus-activate-newsgroup (car info)))))
+ ;; These groups are native.
(if (and (not gnus-read-active-file)
(<= (nth 1 info) level))
(progn
@@ -11988,9 +12040,10 @@ Returns whether the updating was successful."
(progn
(narrow-to-region (point) (gnus-point-at-eol))
(setq group (let ((obarray hashtb)) (read cur)))
- (and (numberp (setq max (read cur)))
- (numberp (setq min (read cur)))
- (set group (cons min max)))
+ (if (and (numberp (setq max (read cur)))
+ (numberp (setq min (read cur))))
+ (set group (cons min max))
+ (set group nil))
;; Enter moderated groups into a list.
(if (eq (let ((obarray mod-hashtb)) (read cur)) m)
(setq gnus-moderated-list
@@ -12008,15 +12061,17 @@ Returns whether the updating was successful."
;; group gets set to a symbol interned in the hash table
;; (what a hack!!)
(setq group (let ((obarray hashtb)) (read cur)))
- (and (numberp (setq max (read cur)))
- (numberp (setq min (read cur)))
- (set group (cons min max))))
+ (if (and (numberp (setq max (read cur)))
+ (numberp (setq min (read cur))))
+ (set group (cons min max))
+ (set group nil)))
(error
- (progn (ding)
- (gnus-message 3 "Warning - illegal active: %s"
- (buffer-substring
- (gnus-point-at-bol) (gnus-point-at-eol)))
- nil)))
+ (progn
+ (ding)
+ (gnus-message 3 "Warning - illegal active: %s"
+ (buffer-substring
+ (gnus-point-at-bol) (gnus-point-at-eol)))
+ nil)))
(widen)
(forward-line 1))))))
@@ -12550,6 +12605,15 @@ If FORCE is non-nil, the .newsrc file is read."
(defun gnus-read-descriptions-file (&optional method)
(let ((method (or method gnus-select-method)))
+ ;; We create the hashtable whether we manage to read the desc file
+ ;; to avoid trying to re-read after a failed read.
+ (or gnus-description-hashtb
+ (setq gnus-description-hashtb
+ (gnus-make-hashtable (length gnus-active-hashtb))))
+ ;; Mark this method's desc file as read.
+ (gnus-sethash (gnus-group-prefixed-name "" method) "Has read"
+ gnus-description-hashtb)
+
(gnus-message 5 "Reading descriptions file via %s..." (car method))
(cond
((not (or (gnus-server-opened method)
@@ -12561,12 +12625,6 @@ If FORCE is non-nil, the .newsrc file is read."
nil)
(t
(let (group)
- (or gnus-description-hashtb
- (setq gnus-description-hashtb
- (gnus-make-hashtable (length gnus-active-hashtb))))
- ;; Mark this method's desc file as read.
- (gnus-sethash (gnus-group-prefixed-name "" method) "Has read"
- gnus-description-hashtb)
(save-excursion
(save-restriction
(set-buffer nntp-server-buffer)
View
20 lisp/nnbabyl.el
@@ -488,10 +488,16 @@
(and (buffer-modified-p (current-buffer)) (save-buffer))
(nnmail-save-active nnbabyl-group-alist nnbabyl-active-file)))))
+(defun nnbabyl-remove-incoming-delims ()
+ (goto-char (point-min))
+ (while (search-forward "\^_" nil t)
+ (replace-match "?" t t)))
+
(defun nnbabyl-get-new-mail (&optional group)
"Read new incoming mail."
- (let ((spools (nnmail-get-spool-files group))
- incoming incomings)
+ (let* ((spools (nnmail-get-spool-files group))
+ (all-spools spools)
+ incoming incomings)
(nnbabyl-read-mbox)
(if (or (not nnbabyl-get-new-mail) (not nnmail-spool-file))
()
@@ -509,8 +515,13 @@
(car spools) (concat nnbabyl-mbox-file "-Incoming")))
(setq incomings (cons incoming incomings))
(save-excursion
- (let ((in-buf (nnmail-split-incoming
- incoming 'nnbabyl-save-mail t group)))
+ (setq group (nnmail-get-split-group (car spools) group))
+ (let* ((nnmail-prepare-incoming-hook
+ (cons 'nnbabyl-remove-incoming-delims
+ nnmail-prepare-incoming-hook))
+ in-buf)
+ (setq in-buf (nnmail-split-incoming
+ incoming 'nnbabyl-save-mail t group))
(set-buffer in-buf)
(goto-char (point-min))
(while (search-forward "\n\^_\n" nil t)
@@ -528,6 +539,7 @@
(nnmail-save-active nnbabyl-group-alist nnbabyl-active-file)
(set-buffer nnbabyl-mbox-buffer)
(save-buffer)))
+ (if incomings (run-hooks 'nnmail-read-incoming-hook))
(while incomings
(and nnmail-delete-incoming
(file-writable-p incoming)
View
6 lisp/nndoc.el
@@ -97,7 +97,8 @@
'headers
(set-buffer nndoc-current-buffer)
(goto-char (point-min))
- (re-search-forward nndoc-first-article nil t)
+ (re-search-forward (or nndoc-first-article
+ nndoc-article-begin) nil t)
(or (not nndoc-head-begin)
(re-search-forward nndoc-head-begin nil t))
(re-search-forward nndoc-head-end nil t)
@@ -274,7 +275,8 @@
(widen)
(goto-char (point-min))
(let ((num 0))
- (if (re-search-forward nndoc-first-article nil t)
+ (if (re-search-forward (or nndoc-first-article
+ nndoc-article-begin) nil t)
(progn
(setq num 1)
(while (and (re-search-forward nndoc-article-begin nil t)
View
22 lisp/nnfolder.el
@@ -445,7 +445,8 @@ such things as moving mail. All buffers always get killed upon server close.")
;; time.
(if (or (not (buffer-name nnfolder-current-buffer))
(not (and (bufferp nnfolder-current-buffer)
- (verify-visited-file-modtime nnfolder-current-buffer))))
+ (verify-visited-file-modtime
+ nnfolder-current-buffer))))
(progn
(if (and (buffer-name nnfolder-current-buffer)
(bufferp nnfolder-current-buffer))
@@ -457,11 +458,14 @@ such things as moving mail. All buffers always get killed upon server close.")
()
(save-excursion
(setq file (concat nnfolder-directory group))
- (if (not (file-exists-p file))
- (write-region 1 1 file t 'nomesg))
- (set-buffer (nnfolder-read-folder file))
- (setq nnfolder-buffer-alist (cons (list group (current-buffer))
- nnfolder-buffer-alist))))))
+ (if (or (file-directory-p file)
+ (file-symlink-p file))
+ ()
+ (if (not (file-exists-p file))
+ (write-region 1 1 file t 'nomesg))
+ (set-buffer (nnfolder-read-folder file))
+ (setq nnfolder-buffer-alist (cons (list group (current-buffer))
+ nnfolder-buffer-alist)))))))
(setq nnfolder-current-group group))
(defun nnfolder-save-mail (&optional group)
@@ -613,8 +617,9 @@ such things as moving mail. All buffers always get killed upon server close.")
(defun nnfolder-get-new-mail (&optional group)
"Read new incoming mail."
- (let ((spools (nnmail-get-spool-files group))
- incomings incoming)
+ (let* ((spools (nnmail-get-spool-files group))
+ (all-spools spools)
+ incomings incoming)
(if (or (not nnfolder-get-new-mail) (not nnmail-spool-file))
()
;; We first activate all the groups.
@@ -632,6 +637,7 @@ such things as moving mail. All buffers always get killed upon server close.")
(nnmail-move-inbox
(car spools) (concat nnfolder-directory "Incoming")))
(setq incomings (cons incoming incomings))
+ (setq group (nnmail-get-split-group (car spools) group))
(nnmail-split-incoming incoming 'nnfolder-save-mail nil group)))
(setq spools (cdr spools)))
;; If we did indeed read any incoming spools, we save all info.
View
49 lisp/nnmail.el
@@ -90,6 +90,8 @@ Eg.:
"Where the mail backends will look for incoming mail.
This variable is \"/usr/spool/mail/$user\" by default.
If this variable is nil, no mail backends will read incoming mail.
+If this variable is a list, all files mentioned in this list will be
+used as incoming mailboxes.
If this variable is `procmail', the mail backends will look in
`nnmail-procmail-directory' for spool files.")
@@ -329,9 +331,8 @@ This is nil by default for reasons of security.")
;; If getting from mail spool directory,
;; use movemail to move rather than just renaming,
;; so as to interlock with the mailer.
- (setq movemail (string= (file-name-directory inbox)
- (file-truename rmail-spool-directory))
- popmail (string-match "^po:" (file-name-nondirectory inbox)))
+ (or (setq popmail (string-match "^po:" (file-name-nondirectory inbox)))
+ (setq movemail t))
(if popmail (setq inbox (file-name-nondirectory inbox)))
(if movemail
;; On some systems, /usr/spool/mail/foo is a directory
@@ -441,6 +442,19 @@ nn*-request-list should have been called before calling this function."
(write-region 1 (point-max) (expand-file-name file-name) nil 'nomesg)
(kill-buffer (current-buffer)))))
+(defun nnmail-get-split-group (file group)
+ (if (eq nnmail-spool-file 'procmail)
+ (cond (group group)
+ ((string-match (concat "^" (expand-file-name
+ nnmail-procmail-directory)
+ "\\(.*\\)" nnmail-procmail-suffix "$")
+ (expand-file-name file))
+ (substring (expand-file-name file)
+ (match-beginning 1) (match-end 1)))
+ (t
+ group))
+ group))
+
(defun nnmail-split-incoming (incoming func &optional dont-kill group)
"Go through the entire INCOMING file and pick out each individual mail.
FUNC will be called with the buffer narrowed to each mail."
@@ -550,7 +564,8 @@ FUNC will be called with the group name to determine the article number."
(if (stringp (nth 1 (car methods)))
(re-search-backward
(car (cdr (car methods))) nil t)
- ;; Suggested by Brian Edmonds <edmonds@cs.ubc.ca>.
+ ;; Suggested by Brian Edmonds
+ ;; <edmonds@cs.ubc.ca>.
(funcall (nth 1 (car methods))
(car (car methods))))
(error nil))
@@ -663,14 +678,22 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
(if (null nnmail-spool-file)
;; No spool file whatsoever.
nil)
- (let ((procmails
- ;; If procmail is used to get incoming mail, the files
- ;; are stored in this directory.
- (and (file-exists-p nnmail-procmail-directory)
- (directory-files
- nnmail-procmail-directory
- t (concat (if group group "")
- nnmail-procmail-suffix "$") t))))
+ (let* ((procmails
+ ;; If procmail is used to get incoming mail, the files
+ ;; are stored in this directory.
+ (and (file-exists-p nnmail-procmail-directory)
+ (directory-files
+ nnmail-procmail-directory
+ t (concat (if group group "")
+ nnmail-procmail-suffix "$") t)))
+ (p procmails))
+ ;; Remove any directories that inadvertantly match the procmail
+ ;; suffix, which might happen if the suffix is "".
+ (while p
+ (and (or (file-directory-p (car p))
+ (file-symlink-p (car p)))
+ (setq procmails (delete (car p) procmails)))
+ (setq p (cdr p)))
(cond ((listp nnmail-spool-file)
(append nnmail-spool-file procmails))
((stringp nnmail-spool-file)
@@ -680,4 +703,4 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
(provide 'nnmail)
-;;; nnml.el ends here
+;;; nnmail.el ends here
View
7 lisp/nnmbox.el
@@ -449,8 +449,9 @@
(defun nnmbox-get-new-mail (&optional group)
"Read new incoming mail."
- (let ((spools (nnmail-get-spool-files group))
- incoming incomings)
+ (let* ((spools (nnmail-get-spool-files group))
+ (all-spools spools)
+ incoming incomings)
(nnmbox-read-mbox)
(if (or (not nnmbox-get-new-mail) (not nnmail-spool-file))
()
@@ -467,6 +468,7 @@
(nnmail-move-inbox
(car spools) (concat nnmbox-mbox-file "-Incoming")))
(save-excursion
+ (setq group (nnmail-get-split-group (car spools) group))
(let ((in-buf (nnmail-split-incoming
incoming 'nnmbox-save-mail t group)))
(set-buffer nnmbox-mbox-buffer)
@@ -480,6 +482,7 @@
(nnmail-save-active nnmbox-group-alist nnmbox-active-file)
(set-buffer nnmbox-mbox-buffer)
(save-buffer)))
+ (if incomings (run-hooks 'nnmail-read-incoming-hook))
(while incomings
(and nnmail-delete-incoming
(file-writable-p incoming)
View
6 lisp/nnmh.el
@@ -390,8 +390,9 @@
(defun nnmh-get-new-mail (&optional group)
"Read new incoming mail."
- (let ((spools (nnmail-get-spool-files group))
- incoming incomings)
+ (let* ((spools (nnmail-get-spool-files group))
+ (all-spools spools)
+ incoming incomings)
(if (or (not nnmh-get-new-mail) (not nnmail-spool-file))
()
;; We first activate all the groups.
@@ -410,6 +411,7 @@
(nnmail-move-inbox
(car spools) (concat nnmh-directory "Incoming")))
(setq incomings (cons incoming incomings))
+ (setq group (nnmail-get-split-group (car spools) group))
(nnmail-split-incoming incoming 'nnmh-save-mail nil group)))
(setq spools (cdr spools)))
;; If we did indeed read any incoming spools, we save all info.
View
6 lisp/nnml.el
@@ -479,8 +479,9 @@ all. This may very well take some time.")
(defun nnml-get-new-mail (&optional group)
"Read new incoming mail."
- (let ((spools (nnmail-get-spool-files group))
- incoming incomings)
+ (let* ((spools (nnmail-get-spool-files group))
+ (all-spools spools)
+ incoming incomings)
(if (or (not nnml-get-new-mail) (not nnmail-spool-file))
()
;; We first activate all the groups.
@@ -500,6 +501,7 @@ all. This may very well take some time.")
(setq incoming
(nnmail-move-inbox
(car spools) (concat nnml-directory "Incoming")))
+ (setq group (nnmail-get-split-group (car spools) group))
(nnmail-split-incoming incoming 'nnml-save-mail nil group)
(setq incomings (cons incoming incomings))))
(setq spools (cdr spools)))
View
3  lisp/nnsoup.el
@@ -338,7 +338,7 @@ The SOUP packet file name will be inserted at the %s.")
(let ((e (cdr entry)))
(while (cdr e)
(setq e (cdr e)))
- (setcdr e (list (list (cons (setq lnum (1+ (cdr (nth 1 (car e)))))
+ (setcdr e (list (list (cons (setq lnum (1+ (cdr (car (car e)))))
(+ lnum number))
area)))))))))
@@ -459,6 +459,7 @@ The SOUP packet file name will be inserted at the %s.")
(defun nnsoup-pack-replies ()
"Make an outbound package of SOUP replies."
(interactive)
+ (nnsoup-write-active-file)
(nnsoup-write-replies)
(gnus-soup-pack nnsoup-replies-directory nnsoup-packer))
View
67 lisp/nntp.el
@@ -886,24 +886,25 @@ It will prompt for a password."
(< (- (nth 1 sequence) (car sequence)) nntp-nov-gap))
(setq sequence (cdr sequence)))
- (nntp-send-xover-command first (car sequence))
- (setq sequence (cdr sequence)
- count (1+ count))
-
- ;; Every 400 requests we have to read the stream in
- ;; order to avoid deadlocks.
- (if (or (null sequence) ;All requests have been sent.
- (zerop (% count nntp-maximum-request)))
- (progn
- (accept-process-output)
- (while (progn
- (goto-char last-point)
- ;; Count replies.
- (while (re-search-forward "^[0-9][0-9][0-9] " nil t)
- (setq received (1+ received)))
- (setq last-point (point))
- (< received count))
- (nntp-accept-response)))))
+ (if (not (nntp-send-xover-command first (car sequence)))
+ ()
+ (setq sequence (cdr sequence)
+ count (1+ count))
+
+ ;; Every 400 requests we have to read the stream in
+ ;; order to avoid deadlocks.
+ (if (or (null sequence) ;All requests have been sent.
+ (zerop (% count nntp-maximum-request)))
+ (progn
+ (accept-process-output)
+ (while (progn
+ (goto-char last-point)
+ ;; Count replies.
+ (while (re-search-forward "^[0-9][0-9][0-9] " nil t)
+ (setq received (1+ received)))
+ (setq last-point (point))
+ (< received count))
+ (nntp-accept-response))))))
(if (not nntp-server-xover)
()
@@ -931,7 +932,9 @@ It will prompt for a password."
(if (stringp nntp-server-xover)
;; If `nntp-server-xover' is a string, then we just send this
;; command. We do not wait for the reply.
- (nntp-send-strings-to-server nntp-server-xover range)
+ (progn
+ (nntp-send-strings-to-server nntp-server-xover range)
+ t)
(let ((commands nntp-xover-commands))
;; `nntp-xover-commands' is a list of possible XOVER commands.
;; We try them all until we get at positive response.
@@ -944,12 +947,15 @@ It will prompt for a password."
(setq commands (cdr commands)))
;; If none of the commands worked, we disable XOVER.
(if (eq nntp-server-xover 'try)
- (setq nntp-server-xover nil))
+ (save-excursion
+ (set-buffer nntp-server-buffer)
+ (erase-buffer)
+ (setq nntp-server-xover nil)))
nntp-server-xover))))
(defun nntp-send-strings-to-server (&rest strings)
"Send list of STRINGS to news server as command and its arguments."
- (let ((cmd (concat (mapconcat (lambda (s) s) strings " ") "\r\n")))
+ (let ((cmd (concat (mapconcat 'identity strings " ") "\r\n")))
;; We open the nntp server if it is down.
(or (nntp-server-opened nntp-current-server)
(progn
@@ -999,8 +1005,17 @@ If SERVICE, this this as the port number."
(status nil)
(timer
(and nntp-connection-timeout
- (run-at-time nntp-connection-timeout
- nil 'nntp-kill-connection server))))
+ (cond
+ ((fboundp 'run-at-time)
+ (run-at-time nntp-connection-timeout
+ nil 'nntp-kill-connection server))
+ ((fboundp 'start-itimer)
+ ;; Not sure if this will work or not, only one way to
+ ;; find out
+ (eval '(start-itimer "nntp-timeout"
+ (lambda ()
+ (nntp-kill-connection server))
+ nntp-connection-timeout nil)))))))
(setq nntp-status-string "")
(message "nntp: Connecting to server on %s..." server)
(cond ((and server (nntp-open-server-internal server service))
@@ -1054,11 +1069,11 @@ If SERVICE, this this as the port number."
(defun nntp-open-rlogin (server)
(let ((proc (start-process "nntpd" nntp-server-buffer "rsh" server)))
- (process-send-string proc (mapconcat (lambda (s) s) nntp-rlogin-parameters
+ (process-send-string proc (mapconcat 'identity nntp-rlogin-parameters
" "))
(process-send-string proc "\n")))
-(defun nntp-telnet-to-machine
+(defun nntp-telnet-to-machine ()
(let (b)
(telnet "localhost")
(goto-char (point-min))
@@ -1175,7 +1190,7 @@ defining this function as macro."
(setq articles (cdr articles))))))
(defun nntp-async-send-strings (&rest strings)
- (let ((cmd (concat (mapconcat (lambda (s) s) strings " ") "\r\n")))
+ (let ((cmd (concat (mapconcat 'identity strings " ") "\r\n")))
(or (nntp-async-server-opened)
(nntp-async-open-server)
(error (nntp-status-message)))
View
2  lisp/nnvirtual.el
@@ -269,6 +269,8 @@ If the stream is opened, return T, otherwise return NIL."
(setq nnvirtual-current-groups nil)
(while newsrc
(and (string-match regexp (car (car newsrc)))
+ (not (string= (gnus-group-real-name (car (car newsrc)))
+ nnvirtual-current-group))
(setq nnvirtual-current-groups
(cons (car (car newsrc)) nnvirtual-current-groups)))
(setq newsrc (cdr newsrc))))
View
47 texi/gnus.texi
@@ -1852,7 +1852,8 @@ thinks should carry this mail message.
@vindex nnmail-crosspost
The mail backends all support cross-posting. If several regexps match,
the mail will be "cross-posted" to all those groups.
-@code{nnmail-crosspost} says whether to use this mechanism or not.
+@code{nnmail-crosspost} says whether to use this mechanism or not. Note
+that no articles are crossposted to the general (@samp{""}) group.
@node Fancy Mail Splitting
@subsubsection Fancy Mail Splitting
@@ -2720,8 +2721,11 @@ Replied.
@item i
Score as a number.
@item z
+@vindex gnus-summary-zcore-fuzz
Zcore, @samp{+} if above the default level and @samp{-} if below the
-default level.
+default level. If the difference between
+@code{gnus-summary-default-level} and the score is less than
+@code{gnus-summary-zcore-fuzz}, this spec will not be used.
@item x
@code{Xref}.
@item D
@@ -5654,7 +5658,7 @@ Move the article from one mail group to another
@item B c
@kindex B c (Summary)
-@kindex copy mail
+@cindex copy mail
@findex gnus-summary-copy-article
Copy the article from one group (mail group or not) to a mail group
(@code{gnus-summary-copy-article}).
@@ -5881,17 +5885,19 @@ other naughty stuff in innocent-looking articles.
@vindex gnus-show-mime-method
Gnus handles @sc{mime} by shoving the articles through
@code{gnus-show-mime-method}, which is @code{metamail-buffer} by
-default. Set @code{gnus-show-mime} to @code{t} if you want to use
-@sc{mime} all the time; it might be best to just use the toggling
-functions from the summary buffer to avoid getting nasty surprises. (For
-instance, you enter the group @samp{alt.sing-a-long} and, before you
-know it, @sc{mime} has decoded the sound file in the article and some
-horrible sing-a-long song comes streaming out out your speakers, and you
-can't find the volume button, because there isn't one, and people are
-starting to look at you, and you try to stop the program, but you can't,
-and you can't find the program to control the volume, and everybody else
-in the room suddenly decides to look at you disdainfully, and you'll
-feel rather stupid.)
+default. If @code{gnus-strict-mime} is non-@code{nil}, the @sc{mime}
+method will only be used it there are @sc{mime} headers in the article.
+Set @code{gnus-show-mime} to @code{t} if you want to use @sc{mime} all
+the time; it might be best to just use the toggling functions from the
+summary buffer to avoid getting nasty surprises. (For instance, you
+enter the group @samp{alt.sing-a-long} and, before you know it,
+@sc{mime} has decoded the sound file in the article and some horrible
+sing-a-long song comes streaming out out your speakers, and you can't
+find the volume button, because there isn't one, and people are starting
+to look at you, and you try to stop the program, but you can't, and you
+can't find the program to control the volume, and everybody else in the
+room suddenly decides to look at you disdainfully, and you'll feel
+rather stupid.)
Any similarity to real events and people is purely coincidental. Ahem.
@@ -6278,6 +6284,19 @@ Here's a list of all possible keys:
@code{edit-group}, @code{edit-server}, @code{reply}, @code{reply-yank},
@code{followup}, @code{followup-yank}.
+@findex gnus-add-configuration
+Since this variable is so long and complicated, there's a function you
+can use to ease changing the config of a single setting:
+@code{gnus-add-configuration}. If, for instance, you want to change the
+@code{article} setting, you could say:
+
+@lisp
+(gnus-add-configuration
+ '(article ([group 4]
+ [summary .25 point]
+ [article 1.0])))
+@end lisp
+
@end table
@node Buttons
Please sign in to comment.
Something went wrong with that request. Please try again.