*** pub/dgnus/lisp/custom.el Fri Jun 2 17:21:26 1995 --- dgnus/lisp/custom.el Sun Jun 4 14:09:24 1995 *************** *** 854,860 **** 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) (custom-mode) (setq custom-local-type-properties types) (if (null custom) --- 854,860 ---- 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 (current-buffer)) (custom-mode) (setq custom-local-type-properties types) (if (null custom) *** pub/dgnus/lisp/gnus-cache.el Fri Jun 2 17:21:27 1995 --- dgnus/lisp/gnus-cache.el Sun Jun 4 14:09:24 1995 *************** *** 151,158 **** (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"))) (delete-region (progn (beginning-of-line) (point)) (progn (forward-line 1) (point)))))))) --- 151,158 ---- (gnus-cache-change-buffer group) (set-buffer (cdr gnus-cache-buffer)) (goto-char (point-min)) ! (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)))))))) *** pub/dgnus/lisp/gnus-ems.el Fri Jun 2 17:21:27 1995 --- dgnus/lisp/gnus-ems.el Sun Jun 4 14:09:24 1995 *************** *** 26,31 **** --- 26,34 ---- (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,47 **** (or (memq 'underline (list-faces)) (funcall (intern "make-face") 'underline)) (or (face-differs-from-default-p 'underline) ! (set-face-underline-p 'underline t)) (or (fboundp 'set-text-properties) (defun set-text-properties (start end props &optional buffer) (if props --- 43,53 ---- (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) ! (funcall 'set-face-underline-p 'underline t)) (or (fboundp 'set-text-properties) (defun set-text-properties (start end props &optional buffer) (if props *************** *** 54,59 **** --- 60,66 ---- (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,98 **** --- 100,108 ---- (not (string-match "29" emacs-version))) (setq gnus-hidden-properties '(invisible t))) + ((boundp 'MULE) + (provide 'gnusutil)) + )) (eval-and-compile *************** *** 121,140 **** (fset 'gnus-set-mouse-face (lambda (string) string)) (defun gnus-summary-make-display-table () (let* ((table (window-display-table))) (and (not table) (setq table (make-vector 261 ()))) (let ((i 32)) (while (>= (setq i (1- i)) 0) (aset table i [??]))) (aset table ?\n nil) ! (let ((i 160)) (while (>= (setq i (1- i)) 127) ! (aset table i [??]))) ! (setq gnus-summary-display-table table))) ) ! )) (provide 'gnus-ems) --- 131,204 ---- (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) ! ;; We nix out any glyphs over 126 that are not set already. ! (let ((i 256)) (while (>= (setq i (1- i)) 127) ! (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 . ! ;; 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) *** pub/dgnus/lisp/gnus-kill.el Fri Jun 2 17:21:27 1995 --- dgnus/lisp/gnus-kill.el Sun Jun 4 14:09:24 1995 *************** *** 410,416 **** (progn (delete-region beg (point)) (insert (or (eval form) ""))) ! (condition-case () (eval form) (error nil)))) (and (buffer-modified-p) (save-buffer)))) ;; Parse an rn killfile. --- 410,418 ---- (progn (delete-region beg (point)) (insert (or (eval form) ""))) ! (save-excursion ! (set-buffer gnus-summary-buffer) ! (condition-case () (eval form) (error nil))))) (and (buffer-modified-p) (save-buffer)))) ;; Parse an rn killfile. *** pub/dgnus/lisp/gnus-msg.el Fri Jun 2 17:21:27 1995 --- dgnus/lisp/gnus-msg.el Sun Jun 4 14:09:25 1995 *************** *** 969,975 **** (goto-char (point-min)) (and (re-search-forward (concat "^" (symbol-name (car headers)) ": *") nil t) ! (get-text-property 'gnus-delete (match-end 0)) (gnus-delete-line)) (setq headers (cdr headers)))) ;; Insert new Sender if the From is strange. --- 969,975 ---- (goto-char (point-min)) (and (re-search-forward (concat "^" (symbol-name (car headers)) ": *") nil t) ! (get-text-property (match-end 0) 'gnus-delete) (gnus-delete-line)) (setq headers (cdr headers)))) ;; Insert new Sender if the From is strange. *** pub/dgnus/lisp/gnus-score.el Fri Jun 2 17:21:27 1995 --- dgnus/lisp/gnus-score.el Sun Jun 4 14:09:25 1995 *************** *** 125,146 **** (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"))) (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"))) (char-to-perm (list (list ?t (current-time-string) "temporary") '(?p perm "permanent") '(?i now "immediate"))) --- 125,151 ---- (prefix (if (< nscore 0) ?L ?I)) (increase (> nscore 0)) (char-to-header ! '((?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" 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,160 **** ;; First we read the header to score. (while (not hchar) (if mimic ! (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 ??)) () (setq hchar nil) (gnus-score-insert-help "Match on header" char-to-header 1))) --- 154,167 ---- ;; First we read the header to score. (while (not hchar) (if mimic ! (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 (or (= hchar ??) (= hchar ?\C-h))) () (setq hchar nil) (gnus-score-insert-help "Match on header" char-to-header 1))) *************** *** 179,192 **** ;; We continue reading - the type. (while (not tchar) (if mimic ! (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))) char-to-type ""))) (setq tchar (read-char)) ! (if (not (= tchar ??)) () (setq tchar nil) (gnus-score-insert-help "Match type" char-to-type 2))) --- 186,205 ---- ;; We continue reading - the type. (while (not tchar) (if mimic ! (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) ! (if (eq (nth 4 entry) ! (nth 3 s)) ! (char-to-string (car s)) ! "")) char-to-type ""))) (setq tchar (read-char)) ! (if (not (or (= tchar ??) (= tchar ?\C-h))) () (setq tchar nil) (gnus-score-insert-help "Match type" char-to-type 2))) *************** *** 211,222 **** ;; We continue reading. (while (not pchar) (if mimic ! (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 ??)) () (setq pchar nil) (gnus-score-insert-help "Match permanence" char-to-perm 2))) --- 224,237 ---- ;; We continue reading. (while (not pchar) (if mimic ! (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 (or (= pchar ??) (= pchar ?\C-h))) () (setq pchar nil) (gnus-score-insert-help "Match permanence" char-to-perm 2))) *************** *** 291,296 **** --- 306,313 ---- ((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,326 **** (t "permanent")) header (if (< score 0) "lower" "raise")) ! match))) (and (>= (nth 1 (assoc header gnus-header-index)) 0) (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)))) (old (gnus-score-get header)) elem) ;; We see whether we can collapse some score entries. --- 319,348 ---- (t "permanent")) header (if (< score 0) "lower" "raise")) ! (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)))) (old (gnus-score-get header)) elem) ;; We see whether we can collapse some score entries. *************** *** 518,525 **** ;; 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))) (read-only (gnus-score-get 'read-only alist)) (files (gnus-score-get 'files alist)) (exclude-files (gnus-score-get 'exclude-files alist)) --- 540,546 ---- ;; 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))) (read-only (gnus-score-get 'read-only alist)) (files (gnus-score-get 'files alist)) (exclude-files (gnus-score-get 'exclude-files alist)) *************** *** 960,965 **** --- 981,988 ---- (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,981 **** (setq request-func 'gnus-request-article))) (while articles (setq article (header-number (car (car articles)))) ! (gnus-message 7 "Scoring on article %s..." article) (if (not (funcall request-func article gnus-newsgroup-name)) () (widen) --- 998,1004 ---- (setq request-func 'gnus-request-article))) (while articles (setq article (header-number (car (car articles)))) ! (gnus-message 7 "Scoring on article %s of %s..." article last) (if (not (funcall request-func article gnus-newsgroup-name)) () (widen) *************** *** 1493,1498 **** --- 1516,1522 ---- (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) *** pub/dgnus/lisp/gnus-soup.el Fri Jun 2 17:21:27 1995 --- dgnus/lisp/gnus-soup.el Sun Jun 4 14:09:26 1995 *************** *** 233,239 **** ;;; Internal Functions: ! ;; Store the article in 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. --- 233,239 ---- ;;; Internal Functions: ! ;; 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,362 **** (packer (if (< (string-match "%s" packer) (string-match "%d" packer)) (format packer files ! (string-to-int (gnus-soup-unique-prefix))) (format packer ! (string-to-int (gnus-soup-unique-prefix)) files))) (dir (expand-file-name dir))) (message "Packing %s..." packer) (if (zerop (call-process "sh" nil nil nil "-c" --- 354,363 ---- (packer (if (< (string-match "%s" packer) (string-match "%d" packer)) (format packer files ! (string-to-int (gnus-soup-unique-prefix dir))) (format packer ! (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,382 **** (let (areas) (save-excursion (set-buffer (gnus-find-file-noselect file 'force)) ! (buffer-disable-undo) (goto-char (point-min)) (while (not (eobp)) (setq areas --- 377,383 ---- (let (areas) (save-excursion (set-buffer (gnus-find-file-noselect file 'force)) ! (buffer-disable-undo (current-buffer)) (goto-char (point-min)) (while (not (eobp)) (setq areas *** pub/dgnus/lisp/gnus-vis.el Fri Jun 2 17:21:28 1995 --- dgnus/lisp/gnus-vis.el Sun Jun 4 14:09:26 1995 *************** *** 511,517 **** (overlay-put gnus-newsgroup-selected-overlay 'face gnus-summary-selected-face)))))) - ;; New implementation by Christian Limpach . (defun gnus-summary-highlight-line () "Highlight current line according to `gnus-summary-highlight'." --- 511,516 ---- *** pub/dgnus/lisp/gnus.el Fri Jun 2 17:21:28 1995 --- dgnus/lisp/gnus.el Sun Jun 4 14:09:29 1995 *************** *** 537,542 **** --- 537,547 ---- "*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,554 **** --- 554,562 ---- 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,947 **** ("nndigest" none) ("nndoc" none prompt-address) ("nnbabyl" mail respool) ! ("nnkiboze" none virtual) ("nnsoup" post) ("nnfolder" mail respool)) "An alist of valid select methods. --- 949,955 ---- ("nndigest" none) ("nndoc" none prompt-address) ("nnbabyl" mail respool) ! ("nnkiboze" post virtual) ("nnsoup" post) ("nnfolder" mail respool)) "An alist of valid select methods. *************** *** 1275,1281 **** (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" "Version number for this version of Gnus.") (defvar gnus-info-nodes --- 1283,1289 ---- (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.82" "Version number for this version of Gnus.") (defvar gnus-info-nodes *************** *** 1755,1761 **** (setq name (substring name 1 (1- (match-end 0)))))) ;; If not, then "address (name)" is used. (or name ! (and (string-match "(.+)" from) (setq name (substring from (1+ (match-beginning 0)) (1- (match-end 0)))))) ;; Fix by Hallvard B Furuseth . --- 1763,1772 ---- (setq name (substring name 1 (1- (match-end 0)))))) ;; If not, then "address (name)" is used. (or name ! (and (or (string-match "(.+)" from) ! ;; Fix by MORIOKA Tomohiko . ! ;; 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 . *************** *** 2323,2328 **** --- 2334,2344 ---- (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,3878 **** (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) (gnus-sethash nname '(0 . 0) gnus-active-hashtb) (gnus-dribble-enter (concat "(gnus-group-set-info '" (prin1-to-string (cdr info)) ")")) --- 3887,3896 ---- (gnus-group-change-level (setq info (list t nname gnus-level-default-subscribed nil nil meth)) gnus-level-default-subscribed gnus-level-killed ! (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,4194 **** (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)))))) num)) (defun gnus-group-expire-articles (n) --- 4200,4216 ---- (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 (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,5370 **** (if (get-buffer buffer) (progn (set-buffer buffer) ! (not gnus-newsgroup-threads)) ;; Fix by Sudish Joseph (setq gnus-summary-buffer (set-buffer (get-buffer-create buffer))) (gnus-add-current-to-buffer-list) --- 5386,5392 ---- (if (get-buffer buffer) (progn (set-buffer buffer) ! (not gnus-newsgroup-begin)) ;; Fix by Sudish Joseph (setq gnus-summary-buffer (set-buffer (get-buffer-create buffer))) (gnus-add-current-to-buffer-list) *************** *** 5427,5436 **** (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))) (replied (if replied gnus-replied-mark ? )) (from (header-from header)) (name-address (funcall gnus-extract-address-components from)) --- 5449,5460 ---- (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) ! (<= (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,6364 **** 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))) (if newmarked ! (setcdr (nthcdr 2 info) (cons newmarked nil)))))) (defun gnus-add-marked-articles (group type articles &optional info force) ;; Add ARTICLES of TYPE to the info of GROUP. --- 6376,6388 ---- newmarked))) (and score (setq newmarked (cons (cons 'score score) newmarked))) (if (nthcdr 3 info) ! (progn ! (setcar (nthcdr 3 info) newmarked) ! (and (not newmarked) ! (not (nthcdr 4 info)) ! (setcdr (nthcdr 2 info) nil))) (if newmarked ! (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,6925 **** 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))))) (defun gnus-summary-best-group (&optional exclude-group) "Find the name of the best unread group. --- 6938,6946 ---- If optional argument BACKWARD is non-nil, search backward instead." (save-excursion (set-buffer gnus-group-buffer) ! (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,7477 **** ;; Walking around summary lines with displaying articles. (defun gnus-summary-expand-window () ! "Expand summary window to show headers full window." (interactive) (gnus-set-global-variables) (gnus-configure-windows 'summary)) --- 7492,7498 ---- ;; Walking around summary lines with displaying articles. (defun gnus-summary-expand-window () ! "Make the summary buffer take up the entire Emacs frame." (interactive) (gnus-set-global-variables) (gnus-configure-windows 'summary)) *************** *** 7570,7575 **** --- 7591,7599 ---- (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,7617 **** ;; Confirm auto selection. (let* ((event (read-event))) (setq key (if (listp event) (car event) event)) ! (if (member key keystrokes) (let ((obuf (current-buffer))) (switch-to-buffer gnus-group-buffer) (gnus-group-jump-to-group group) (setq group (gnus-group-group-name)) ! (switch-to-buffer obuf) ! (execute-kbd-macro (char-to-string key)))))) ! (if (eq key cmd) (if (or (not group) (assoc 'quit-config (gnus-find-method-for-group gnus-newsgroup-name))) --- 7628,7641 ---- ;; Confirm auto selection. (let* ((event (read-event))) (setq key (if (listp event) (car event) event)) ! (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))))) ! (if (equal key cmd) (if (or (not group) (assoc 'quit-config (gnus-find-method-for-group gnus-newsgroup-name))) *************** *** 8807,8813 **** ;; 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)))) (defun gnus-mark-article-as-unread (article &optional mark) "Enter ARTICLE in the pertinent lists and remove it from others." --- 8831,8845 ---- ;; 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)) ! ;; 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,9123 **** (progn (and all (setq gnus-newsgroup-marked nil gnus-newsgroup-dormant nil)) ! (setq gnus-newsgroup-unreads gnus-newsgroup-marked)) (let ((unreads (length gnus-newsgroup-unreads))) (if (gnus-summary-first-subject (not all)) (while (and (gnus-summary-mark-as-read nil gnus-catchup-mark) --- 9149,9158 ---- (progn (and all (setq gnus-newsgroup-marked nil gnus-newsgroup-dormant nil)) ! (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,9431 **** (gnus-summary-prepare) (and gnus-show-threads gnus-thread-hide-subtree ! (gnus-summary-hide-all-threads))))))) (defun gnus-sortable-date (date) "Make sortable string by string-lessp from DATE. --- 9460,9476 ---- (gnus-summary-prepare) (and gnus-show-threads gnus-thread-hide-subtree ! (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,10058 **** (run-hooks 'gnus-article-prepare-hook) ;; Decode MIME message. (if (and gnus-show-mime ! (gnus-fetch-field "Mime-Version")) (funcall gnus-show-mime-method)) ;; Perform the article display hooks. (run-hooks 'gnus-article-display-hook)) --- 10097,10104 ---- (run-hooks 'gnus-article-prepare-hook) ;; Decode MIME message. (if (and gnus-show-mime ! (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,11090 **** (defun gnus-retrieve-headers (articles group) (let ((method (gnus-find-method-for-group group))) ! (if gnus-use-cache (gnus-cache-retrieve-headers articles group) (funcall (gnus-get-function method 'retrieve-headers) articles (gnus-group-real-name group) (nth 1 method))))) --- 11130,11136 ---- (defun gnus-retrieve-headers (articles group) (let ((method (gnus-find-method-for-group group))) ! (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,11175 **** --- 11216,11224 ---- (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,11648 **** (if (and (setq method (nth 4 info)) (not (gnus-server-equal gnus-select-method (gnus-server-get-method nil method)))) (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))) (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))))) (if (and (not gnus-read-active-file) (<= (nth 1 info) level)) (progn --- 11682,11700 ---- (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)) ! (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,11996 **** (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))) ;; Enter moderated groups into a list. (if (eq (let ((obarray mod-hashtb)) (read cur)) m) (setq gnus-moderated-list --- 12040,12049 ---- (progn (narrow-to-region (point) (gnus-point-at-eol)) (setq group (let ((obarray hashtb)) (read cur))) ! (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,12022 **** ;; 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)))) (error ! (progn (ding) ! (gnus-message 3 "Warning - illegal active: %s" ! (buffer-substring ! (gnus-point-at-bol) (gnus-point-at-eol))) ! nil))) (widen) (forward-line 1)))))) --- 12061,12077 ---- ;; group gets set to a symbol interned in the hash table ;; (what a hack!!) (setq group (let ((obarray hashtb)) (read cur))) ! (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))) (widen) (forward-line 1)))))) *************** *** 12550,12555 **** --- 12605,12619 ---- (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,12572 **** 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) --- 12625,12630 ---- *** pub/dgnus/lisp/nnbabyl.el Fri Jun 2 17:21:28 1995 --- dgnus/lisp/nnbabyl.el Sun Jun 4 14:09:30 1995 *************** *** 488,497 **** (and (buffer-modified-p (current-buffer)) (save-buffer)) (nnmail-save-active nnbabyl-group-alist nnbabyl-active-file))))) (defun nnbabyl-get-new-mail (&optional group) "Read new incoming mail." ! (let ((spools (nnmail-get-spool-files group)) ! incoming incomings) (nnbabyl-read-mbox) (if (or (not nnbabyl-get-new-mail) (not nnmail-spool-file)) () --- 488,503 ---- (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)) ! (all-spools spools) ! incoming incomings) (nnbabyl-read-mbox) (if (or (not nnbabyl-get-new-mail) (not nnmail-spool-file)) () *************** *** 509,516 **** (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))) (set-buffer in-buf) (goto-char (point-min)) (while (search-forward "\n\^_\n" nil t) --- 515,527 ---- (car spools) (concat nnbabyl-mbox-file "-Incoming"))) (setq incomings (cons incoming incomings)) (save-excursion ! (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,533 **** --- 539,545 ---- (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) *** pub/dgnus/lisp/nndoc.el Fri Jun 2 17:21:29 1995 --- dgnus/lisp/nndoc.el Sun Jun 4 14:09:30 1995 *************** *** 97,103 **** 'headers (set-buffer nndoc-current-buffer) (goto-char (point-min)) ! (re-search-forward nndoc-first-article nil t) (or (not nndoc-head-begin) (re-search-forward nndoc-head-begin nil t)) (re-search-forward nndoc-head-end nil t) --- 97,104 ---- 'headers (set-buffer nndoc-current-buffer) (goto-char (point-min)) ! (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,280 **** (widen) (goto-char (point-min)) (let ((num 0)) ! (if (re-search-forward nndoc-first-article nil t) (progn (setq num 1) (while (and (re-search-forward nndoc-article-begin nil t) --- 275,282 ---- (widen) (goto-char (point-min)) (let ((num 0)) ! (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) *** pub/dgnus/lisp/nnfolder.el Fri Jun 2 17:21:29 1995 --- dgnus/lisp/nnfolder.el Sun Jun 4 14:09:30 1995 *************** *** 445,451 **** ;; time. (if (or (not (buffer-name nnfolder-current-buffer)) (not (and (bufferp nnfolder-current-buffer) ! (verify-visited-file-modtime nnfolder-current-buffer)))) (progn (if (and (buffer-name nnfolder-current-buffer) (bufferp nnfolder-current-buffer)) --- 445,452 ---- ;; time. (if (or (not (buffer-name nnfolder-current-buffer)) (not (and (bufferp nnfolder-current-buffer) ! (verify-visited-file-modtime ! nnfolder-current-buffer)))) (progn (if (and (buffer-name nnfolder-current-buffer) (bufferp nnfolder-current-buffer)) *************** *** 457,467 **** () (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)))))) (setq nnfolder-current-group group)) (defun nnfolder-save-mail (&optional group) --- 458,471 ---- () (save-excursion (setq file (concat nnfolder-directory group)) ! (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,620 **** (defun nnfolder-get-new-mail (&optional group) "Read new incoming mail." ! (let ((spools (nnmail-get-spool-files group)) ! incomings incoming) (if (or (not nnfolder-get-new-mail) (not nnmail-spool-file)) () ;; We first activate all the groups. --- 617,625 ---- (defun nnfolder-get-new-mail (&optional group) "Read new incoming mail." ! (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,637 **** --- 637,643 ---- (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. *** pub/dgnus/lisp/nnmail.el Fri Jun 2 17:21:29 1995 --- dgnus/lisp/nnmail.el Sun Jun 4 14:09:31 1995 *************** *** 90,95 **** --- 90,97 ---- "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,337 **** ;; 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))) (if popmail (setq inbox (file-name-nondirectory inbox))) (if movemail ;; On some systems, /usr/spool/mail/foo is a directory --- 331,338 ---- ;; If getting from mail spool directory, ;; use movemail to move rather than just renaming, ;; so as to interlock with the mailer. ! (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,446 **** --- 442,460 ---- (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,556 **** (if (stringp (nth 1 (car methods))) (re-search-backward (car (cdr (car methods))) nil t) ! ;; Suggested by Brian Edmonds . (funcall (nth 1 (car methods)) (car (car methods)))) (error nil)) --- 564,571 ---- (if (stringp (nth 1 (car methods))) (re-search-backward (car (cdr (car methods))) nil t) ! ;; Suggested by Brian Edmonds ! ;; . (funcall (nth 1 (car methods)) (car (car methods)))) (error nil)) *************** *** 663,676 **** (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)))) (cond ((listp nnmail-spool-file) (append nnmail-spool-file procmails)) ((stringp nnmail-spool-file) --- 678,699 ---- (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))) ! (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,683 **** (provide 'nnmail) ! ;;; nnml.el ends here --- 703,706 ---- (provide 'nnmail) ! ;;; nnmail.el ends here *** pub/dgnus/lisp/nnmbox.el Fri Jun 2 17:21:29 1995 --- dgnus/lisp/nnmbox.el Sun Jun 4 14:09:37 1995 *************** *** 449,456 **** (defun nnmbox-get-new-mail (&optional group) "Read new incoming mail." ! (let ((spools (nnmail-get-spool-files group)) ! incoming incomings) (nnmbox-read-mbox) (if (or (not nnmbox-get-new-mail) (not nnmail-spool-file)) () --- 449,457 ---- (defun nnmbox-get-new-mail (&optional group) "Read new incoming mail." ! (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,472 **** --- 468,474 ---- (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,485 **** --- 482,488 ---- (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) *** pub/dgnus/lisp/nnmh.el Fri Jun 2 17:21:29 1995 --- dgnus/lisp/nnmh.el Sun Jun 4 14:09:37 1995 *************** *** 390,397 **** (defun nnmh-get-new-mail (&optional group) "Read new incoming mail." ! (let ((spools (nnmail-get-spool-files group)) ! incoming incomings) (if (or (not nnmh-get-new-mail) (not nnmail-spool-file)) () ;; We first activate all the groups. --- 390,398 ---- (defun nnmh-get-new-mail (&optional group) "Read new incoming mail." ! (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,415 **** --- 411,417 ---- (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. *** pub/dgnus/lisp/nnml.el Fri Jun 2 17:21:29 1995 --- dgnus/lisp/nnml.el Sun Jun 4 14:09:38 1995 *************** *** 479,486 **** (defun nnml-get-new-mail (&optional group) "Read new incoming mail." ! (let ((spools (nnmail-get-spool-files group)) ! incoming incomings) (if (or (not nnml-get-new-mail) (not nnmail-spool-file)) () ;; We first activate all the groups. --- 479,487 ---- (defun nnml-get-new-mail (&optional group) "Read new incoming mail." ! (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,505 **** --- 501,507 ---- (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))) *** pub/dgnus/lisp/nnsoup.el Fri Jun 2 17:21:29 1995 --- dgnus/lisp/nnsoup.el Sun Jun 4 14:09:38 1995 *************** *** 338,344 **** (let ((e (cdr entry))) (while (cdr e) (setq e (cdr e))) ! (setcdr e (list (list (cons (setq lnum (1+ (cdr (nth 1 (car e))))) (+ lnum number)) area))))))))) --- 338,344 ---- (let ((e (cdr entry))) (while (cdr e) (setq e (cdr e))) ! (setcdr e (list (list (cons (setq lnum (1+ (cdr (car (car e))))) (+ lnum number)) area))))))))) *************** *** 459,464 **** --- 459,465 ---- (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)) *** pub/dgnus/lisp/nntp.el Fri Jun 2 17:21:29 1995 --- dgnus/lisp/nntp.el Sun Jun 4 14:24:58 1995 *************** *** 886,909 **** (< (- (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-server-xover) () --- 886,910 ---- (< (- (nth 1 sequence) (car sequence)) nntp-nov-gap)) (setq sequence (cdr sequence))) ! (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,937 **** (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) (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. --- 932,940 ---- (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. ! (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,955 **** (setq commands (cdr commands))) ;; If none of the commands worked, we disable XOVER. (if (eq nntp-server-xover 'try) ! (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"))) ;; We open the nntp server if it is down. (or (nntp-server-opened nntp-current-server) (progn --- 947,961 ---- (setq commands (cdr commands))) ;; If none of the commands worked, we disable XOVER. (if (eq nntp-server-xover 'try) ! (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 'identity strings " ") "\r\n"))) ;; We open the nntp server if it is down. (or (nntp-server-opened nntp-current-server) (progn *************** *** 999,1006 **** (status nil) (timer (and nntp-connection-timeout ! (run-at-time nntp-connection-timeout ! nil 'nntp-kill-connection server)))) (setq nntp-status-string "") (message "nntp: Connecting to server on %s..." server) (cond ((and server (nntp-open-server-internal server service)) --- 1005,1021 ---- (status nil) (timer (and nntp-connection-timeout ! (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,1064 **** (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 "\n"))) ! (defun nntp-telnet-to-machine (let (b) (telnet "localhost") (goto-char (point-min)) --- 1069,1079 ---- (defun nntp-open-rlogin (server) (let ((proc (start-process "nntpd" nntp-server-buffer "rsh" server))) ! (process-send-string proc (mapconcat 'identity nntp-rlogin-parameters " ")) (process-send-string proc "\n"))) ! (defun nntp-telnet-to-machine () (let (b) (telnet "localhost") (goto-char (point-min)) *************** *** 1175,1181 **** (setq articles (cdr articles)))))) (defun nntp-async-send-strings (&rest strings) ! (let ((cmd (concat (mapconcat (lambda (s) s) strings " ") "\r\n"))) (or (nntp-async-server-opened) (nntp-async-open-server) (error (nntp-status-message))) --- 1190,1196 ---- (setq articles (cdr articles)))))) (defun nntp-async-send-strings (&rest strings) ! (let ((cmd (concat (mapconcat 'identity strings " ") "\r\n"))) (or (nntp-async-server-opened) (nntp-async-open-server) (error (nntp-status-message))) *** pub/dgnus/lisp/nnvirtual.el Fri Jun 2 17:21:30 1995 --- dgnus/lisp/nnvirtual.el Sun Jun 4 14:09:39 1995 *************** *** 269,274 **** --- 269,276 ---- (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)))) *** pub/dgnus/lisp/ChangeLog Fri Jun 2 17:21:35 1995 --- dgnus/lisp/ChangeLog Sun Jun 4 14:09:44 1995 *************** *** 1,3 **** --- 1,91 ---- + Sun Jun 4 00:48:38 1995 Lars Ingebrigtsen + + * 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 + + * 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 + + * 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 + + * gnus.el: 0.81 is released. + Fri Jun 2 14:56:40 1995 Lars Ingebrigtsen * gnus.el (gnus-group-exit): Would offer to save summaries after *** pub/dgnus/texi/gnus.texi Fri Jun 2 17:21:36 1995 --- dgnus/texi/gnus.texi Sun Jun 4 14:09:45 1995 *************** *** 1852,1858 **** @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. @node Fancy Mail Splitting @subsubsection Fancy Mail Splitting --- 1852,1859 ---- @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. Note ! that no articles are crossposted to the general (@samp{""}) group. @node Fancy Mail Splitting @subsubsection Fancy Mail Splitting *************** *** 2720,2727 **** @item i Score as a number. @item z Zcore, @samp{+} if above the default level and @samp{-} if below the ! default level. @item x @code{Xref}. @item D --- 2721,2731 ---- @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. 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,5660 **** @item B c @kindex B c (Summary) ! @kindex 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}). --- 5658,5664 ---- @item B c @kindex B c (Summary) ! @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,5897 **** @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.) Any similarity to real events and people is purely coincidental. Ahem. --- 5885,5903 ---- @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. 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. *************** *** 6277,6282 **** --- 6283,6301 ---- @code{summary-reply}, @code{info}, @code{summary-faq}, @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