*** pub/sgnus/lisp/gnus-cache.el Fri Jan 26 10:47:52 1996 --- sgnus/lisp/gnus-cache.el Thu Feb 1 01:28:37 1996 *************** *** 173,179 **** ;; Update the active info. (set-buffer gnus-summary-buffer) (gnus-cache-update-active group number) ! (push number gnus-newsgroup-cached)) t)))))) (defun gnus-cache-enter-remove-article (article) --- 173,180 ---- ;; Update the active info. (set-buffer gnus-summary-buffer) (gnus-cache-update-active group number) ! (push number gnus-newsgroup-cached) ! (gnus-summary-update-secondary-mark article)) t)))))) (defun gnus-cache-enter-remove-article (article) *************** *** 372,377 **** --- 373,379 ---- (progn (forward-line 1) (point))))) (setq gnus-newsgroup-cached (delq article gnus-newsgroup-cached)) + (gnus-summary-update-secondary-mark article) t))) (defun gnus-cache-articles-in-group (group) *** pub/sgnus/lisp/gnus-cite.el Fri Jan 26 10:47:52 1996 --- sgnus/lisp/gnus-cite.el Sun Jan 28 11:30:45 1996 *************** *** 260,266 **** (setq omarks (cdr omarks))) (push (car omarks) marks)) (setq omarks (cdr omarks))) ! (push (car omarks) marks) (nreverse marks))))) (defun gnus-article-fill-cited-article (&optional force) --- 260,267 ---- (setq omarks (cdr omarks))) (push (car omarks) marks)) (setq omarks (cdr omarks))) ! (when (car omarks) ! (push (car omarks) marks)) (nreverse marks))))) (defun gnus-article-fill-cited-article (&optional force) *** pub/sgnus/lisp/gnus-kill.el Fri Jan 26 10:47:52 1996 --- sgnus/lisp/gnus-kill.el Wed Jan 31 21:37:25 1996 *************** *** 605,631 **** (save-excursion (let ((killed-no 0) function article header) ! (if (or (null field) (string-equal field "")) ! (setq function nil) ;; Get access function of header filed. ! (setq function (intern-soft (concat "gnus-header-" (downcase field)))) ! (if (and function (fboundp function)) ! (setq function (symbol-function function)) ! (error "Unknown header field: \"%s\"" field)) ! ;; Make FORM funcallable. ! (if (and (listp form) (not (eq (car form) 'lambda))) ! (setq form (list 'lambda nil form)))) ! ;; Starting from the current article. ! (while (or (and (not article) ! (setq article (gnus-summary-article-number)) ! t) ! (setq article ! (gnus-summary-search-forward ! (not ignore-marked) nil backward))) ! (and (or (null gnus-newsgroup-kill-headers) ! (memq article gnus-newsgroup-kill-headers)) ! (vectorp (setq header (gnus-summary-article-header article))) ! (gnus-execute-1 function regexp form header) ! (setq killed-no (1+ killed-no)))) ! killed-no))) --- 605,630 ---- (save-excursion (let ((killed-no 0) function article header) ! (if (or (null field) ! (string-equal field "") ! (not (fboundp ! (setq function ! (intern-soft ! (concat "mail-header-" (downcase field))))))) ! (error "Unknown header field: \"%s\"" field) ;; Get access function of header filed. ! (setq function `(lambda (h) (,function h))) ! ;; Starting from the current article. ! (while (or (and (not article) ! (setq article (gnus-summary-article-number)) ! t) ! (setq article ! (gnus-summary-search-forward ! (not ignore-marked) nil backward))) ! (and (or (null gnus-newsgroup-kill-headers) ! (memq article gnus-newsgroup-kill-headers)) ! (vectorp (setq header (gnus-summary-article-header article))) ! (gnus-execute-1 function regexp form header) ! (setq killed-no (1+ killed-no)))) ! killed-no)))) *** pub/sgnus/lisp/gnus-msg.el Fri Jan 26 10:47:54 1996 --- sgnus/lisp/gnus-msg.el Sat Feb 3 14:44:33 1996 *************** *** 330,340 **** (defvar gnus-in-reply-to nil) (defvar gnus-last-posting-server nil) - (eval-and-compile (autoload 'gnus-uu-post-news "gnus-uu" nil t) (autoload 'news-setup "rnewspost") (autoload 'news-reply-mode "rnewspost") (autoload 'rmail-output "rmailout")) --- 330,340 ---- (defvar gnus-in-reply-to nil) (defvar gnus-last-posting-server nil) (eval-and-compile (autoload 'gnus-uu-post-news "gnus-uu" nil t) (autoload 'news-setup "rnewspost") (autoload 'news-reply-mode "rnewspost") + (autoload 'rmail-dont-reply-to "mail-utils") (autoload 'rmail-output "rmailout")) *************** *** 570,576 **** ;; If the group-method is nil (which shouldn't happen) we use ;; the default method. ((null group-method) ! gnus-select-method) ;; We want this group's method. ((and query-method (not (eq query-method 0))) group-method) --- 570,576 ---- ;; If the group-method is nil (which shouldn't happen) we use ;; the default method. ((null group-method) ! (or gnus-post-method gnus-select-method)) ;; We want this group's method. ((and query-method (not (eq query-method 0))) group-method) *************** *** 1418,1424 **** "")))) (or (mail-position-on-field "Mime-Version") (insert "1.0") ! (cond ((progn (goto-char (point-min)) (re-search-forward "[\200-\377]" nil t)) (or (mail-position-on-field "Content-Type") --- 1418,1425 ---- "")))) (or (mail-position-on-field "Mime-Version") (insert "1.0") ! (cond ((save-restriction ! (widen) (goto-char (point-min)) (re-search-forward "[\200-\377]" nil t)) (or (mail-position-on-field "Content-Type") *************** *** 1846,1856 **** (gnus-set-work-buffer) (unless (equal mct "never") (insert (or reply-to from ""))) ! (insert (if (bolp) "" ", ") ! (or to "") ! (if (or (not mct) (not mctdo)) "" ! (concat (if (bolp) "" ", ") mct)) ! (if cc (concat (if (bolp) "" ", ") cc) "")) (goto-char (point-min)) (setq ccalist (mapcar --- 1847,1860 ---- (gnus-set-work-buffer) (unless (equal mct "never") (insert (or reply-to from ""))) ! (insert ! (if (bolp) "" ", ") (or to "") ! (if (or (not mct) (not mctdo)) "" ! (concat (if (bolp) "" ", ") mct)) ! (if cc (concat (if (bolp) "" ", ") cc) "")) ! ;; Remove addresses that match `rmail-dont-reply-to-names'. ! (insert (prog1 (rmail-dont-reply-to (buffer-string)) ! (erase-buffer))) (goto-char (point-min)) (setq ccalist (mapcar *************** *** 2276,2281 **** --- 2280,2292 ---- (cdr reply))))) (and winconf (set-window-configuration winconf)))))) + (defun gnus-kill-message-buffer () + "Kill the current buffer after dissociating it from the draft group." + (interactive) + (when (gnus-y-or-n-p "Dissociate and kill the current buffer? ") + (gnus-dissociate-buffer-from-draft) + (kill-buffer (current-buffer)))) + (defun gnus-put-message () "Put the current message in some group and return to Gnus." (interactive) *************** *** 2345,2354 **** --- 2356,2367 ---- (insert gnus-forward-end-separator) ;; Remove all unwanted headers. (goto-char (point-min)) + (forward-line 1) (save-restriction (narrow-to-region (point) (if (search-forward "\n\n" nil t) (1- (point)) (point))) + (goto-char (point-min)) (delete-non-matching-lines gnus-forward-included-headers)) ;; Delete any invisible text. (goto-char (point-min)) *************** *** 2532,2538 **** (erase-buffer) (insert-buffer-substring gnus-article-buffer) (goto-char (point-min)) ! (search-forward "\n\n") ;; We remove everything before the bounced mail. (delete-region (point-min) --- 2545,2553 ---- (erase-buffer) (insert-buffer-substring gnus-article-buffer) (goto-char (point-min)) ! (or (re-search-forward "--- *Original message.*\n" nil t) ! (and (search-forward "\n\n" nil t) ! (re-search-forward "^Return-Path:.*\n" nil t))) ;; We remove everything before the bounced mail. (delete-region (point-min) *************** *** 2593,2598 **** --- 2608,2614 ---- (use-local-map (copy-keymap (current-local-map))) (local-set-key "\C-c\C-c" 'gnus-mail-send-and-exit) (local-set-key "\C-c\C-p" 'gnus-put-message) + (local-set-key "\C-c\C-k" 'gnus-kill-message-buffer) (local-set-key "\C-c\M-d" 'gnus-dissociate-buffer-from-draft) (local-set-key "\C-c\C-d" 'gnus-associate-buffer-with-draft)) *************** *** 2622,2628 **** (eq gnus-mail-other-window-method 'gnus-mail-other-window-using-vm))) 'gnus-vm-mail-setup) ! (t 'gnus-sendmail-mail-setup)) to subject in-reply-to cc replybuffer actions) ;; Associate this mail buffer with the draft group. (gnus-enter-buffer-into-draft)) --- 2638,2660 ---- (eq gnus-mail-other-window-method 'gnus-mail-other-window-using-vm))) 'gnus-vm-mail-setup) ! ((or ! (eq gnus-mail-method 'sendmail) ! (and (or (eq type 'reply) (eq type 'followup)) ! (eq gnus-mail-reply-method 'gnus-mail-reply-using-mail)) ! (and (eq type 'forward) ! (eq gnus-mail-forward-method 'gnus-mail-forward-using-mail)) ! (and (eq type 'new) ! (eq gnus-mail-other-window-method ! 'gnus-mail-other-window-using-mail))) ! 'gnus-sendmail-mail-setup) ! (t ! (cond ((or (eq type 'reply) (eq type 'followup)) ! gnus-mail-reply-method) ! ((eq type 'forward) ! gnus-mail-forward-method) ! ((eq type 'new) ! gnus-mail-other-window-method)))) to subject in-reply-to cc replybuffer actions) ;; Associate this mail buffer with the draft group. (gnus-enter-buffer-into-draft)) *************** *** 2803,2809 **** (defun gnus-dissociate-buffer-from-draft () "Disable auto-saving and association to the draft group of the current buffer." (interactive) ! (run-hooks gnus-message-sent-hook) (setq buffer-file-name nil) (setq buffer-auto-save-file-name nil)) --- 2835,2841 ---- (defun gnus-dissociate-buffer-from-draft () "Disable auto-saving and association to the draft group of the current buffer." (interactive) ! (run-hooks 'gnus-message-sent-hook) (setq buffer-file-name nil) (setq buffer-auto-save-file-name nil)) *** pub/sgnus/lisp/gnus-score.el Fri Jan 26 10:47:55 1996 --- sgnus/lisp/gnus-score.el Fri Feb 2 20:53:32 1996 *************** *** 132,137 **** --- 132,187 ---- (defvar gnus-score-uncacheable-files "ADAPT$" "*All score files that match this regexp will not be cached.") + (defvar gnus-score-default-header nil + "Default header when entering new scores. + + Should be one of the following symbols. + + a: from + s: subject + b: body + h: head + i: message-id + t: references + x: xref + l: lines + d: date + f: followup + + If nil, the user will be asked for a header.") + + (defvar gnus-score-default-type nil + "Default match type when entering new scores. + + Should be one of the following symbols. + + s: substring + e: exact string + f: fuzzy string + r: regexp string + b: before date + a: at date + n: this date + <: less than number + >: greater than number + =: equal to number + + If nil, the user will be asked for a match type.") + + (defvar gnus-score-default-fold nil + "Use case folding for new score file entries iff not nil.") + + (defvar gnus-score-default-duration nil + "Default duration of effect when entering new scores. + + Should be one of the following symbols. + + t: temporary + p: permanent + i: immediate + + If nil, the user will be asked for a duration.") + ;; Internal variables. *************** *** 173,179 **** (gnus-define-keys (gnus-summary-score-map "V" gnus-summary-mode-map) - "V" gnus-summary-score-map "s" gnus-summary-set-score "a" gnus-summary-score-entry "S" gnus-summary-current-score --- 223,228 ---- *************** *** 253,261 **** (list (list ?t (current-time-string) "temporary") '(?p perm "permanent") '(?i now "immediate"))) (mimic gnus-score-mimic-keymap) ! (hchar gnus-score-default-header) ! (tchar gnus-score-default-type) ! (pchar gnus-score-default-duration) entry temporary end type match) ;; First we read the header to score. --- 302,313 ---- (list (list ?t (current-time-string) "temporary") '(?p perm "permanent") '(?i now "immediate"))) (mimic gnus-score-mimic-keymap) ! (hchar (and gnus-score-default-header ! (aref (symbol-name gnus-score-default-header) 0))) ! (tchar (and gnus-score-default-type ! (aref (symbol-name gnus-score-default-type) 0))) ! (pchar (and gnus-score-default-duration ! (aref (symbol-name gnus-score-default-duration) 0))) entry temporary end type match) ;; First we read the header to score. *************** *** 351,357 **** (if (eq 's score) nil score) ; Score (if (eq 'perm temporary) ; Temp nil ! (nth 1 temporary)) (not (nth 3 entry))) ; Prompt )) --- 403,409 ---- (if (eq 's score) nil score) ; Score (if (eq 'perm temporary) ; Temp nil ! temporary) (not (nth 3 entry))) ; Prompt )) *************** *** 617,623 **** (when id (gnus-summary-score-entry "references" (concat id "[ \t]*$") 'r ! score (current-time-string))))))) (defun gnus-score-followup-thread (&optional score) "Add SCORE to all later articles in the thread the current buffer is part of." --- 669,675 ---- (when id (gnus-summary-score-entry "references" (concat id "[ \t]*$") 'r ! score (current-time-string) nil t)))))) (defun gnus-score-followup-thread (&optional score) "Add SCORE to all later articles in the thread the current buffer is part of." *************** *** 2123,2128 **** --- 2175,2188 ---- (setq out (cons (car files) out))) (setq files (cdr files))) (setq gnus-internal-global-score-files out))) + + (defun gnus-score-default-fold-toggle () + "Toggle folding for new score file entries." + (interactive) + (setq gnus-score-default-fold (not gnus-score-default-fold)) + (if gnus-score-default-fold + (message "New score file entries will be case insensitive.") + (message "New score file entries will be case sensitive."))) (provide 'gnus-score) *** pub/sgnus/lisp/gnus-srvr.el Fri Jan 26 10:47:55 1996 --- sgnus/lisp/gnus-srvr.el Thu Feb 1 01:28:41 1996 *************** *** 192,198 **** ;; First we do the real list of servers. (while alist (push (cdr (setq server (pop alist))) done) ! (when server (gnus-server-insert-server-line (car server) (cdr server)))) ;; Then we insert the list of servers that have been opened in ;; this session. --- 192,198 ---- ;; First we do the real list of servers. (while alist (push (cdr (setq server (pop alist))) done) ! (when (and server (car server)) (gnus-server-insert-server-line (car server) (cdr server)))) ;; Then we insert the list of servers that have been opened in ;; this session. *** pub/sgnus/lisp/gnus-topic.el Fri Jan 26 10:47:55 1996 --- sgnus/lisp/gnus-topic.el Wed Jan 31 19:00:03 1996 *************** *** 47,58 **** %A Number of unread articles in the groups in the topic and its subtopics. ") - (defvar gnus-group-topic-topics-only nil - "*If non-nil, only the topics will be shown when typing `l' or `L'.") - (defvar gnus-topic-unique t "*If non-nil, each group will only belong to one topic.") ;; Internal variables. (defvar gnus-topic-killed-topics nil) --- 47,58 ---- %A Number of unread articles in the groups in the topic and its subtopics. ") (defvar gnus-topic-unique t "*If non-nil, each group will only belong to one topic.") + (defvar gnus-topic-indent-level 2 + "*How much each subtopic should be indented.") + ;; Internal variables. (defvar gnus-topic-killed-topics nil) *************** *** 110,115 **** --- 110,116 ---- (erase-buffer)) ;; List dead groups? + (when nil (when (and (>= level gnus-level-zombie) (<= lowest gnus-level-zombie)) (gnus-group-prepare-flat-list-dead (setq gnus-zombie-list (sort gnus-zombie-list 'string<)) *************** *** 120,126 **** (gnus-group-prepare-flat-list-dead (setq gnus-killed-list (sort gnus-killed-list 'string<)) gnus-level-killed ?K ! regexp)) ;; Use topics. (when (< lowest gnus-level-zombie) --- 121,127 ---- (gnus-group-prepare-flat-list-dead (setq gnus-killed-list (sort gnus-killed-list 'string<)) gnus-level-killed ?K ! regexp))) ;; Use topics. (when (< lowest gnus-level-zombie) *************** *** 140,148 **** (let* ((type (pop topic)) (entries (gnus-topic-find-groups (car type) list-level all)) (visiblep (and (eq (nth 1 type) 'visible) (not silent))) ! (gnus-group-indentation (make-string (* 2 level) ? )) (beg (progn (beginning-of-line) (point))) (topic (reverse topic)) (unread 0) info entry end) ;; Insert any sub-topics. --- 141,151 ---- (let* ((type (pop topic)) (entries (gnus-topic-find-groups (car type) list-level all)) (visiblep (and (eq (nth 1 type) 'visible) (not silent))) ! (gnus-group-indentation ! (make-string (* gnus-topic-indent-level level) ? )) (beg (progn (beginning-of-line) (point))) (topic (reverse topic)) + (all-entries entries) (unread 0) info entry end) ;; Insert any sub-topics. *************** *** 169,175 **** (gnus-topic-insert-topic-line (car type) visiblep (not (eq (nth 2 type) 'hidden)) ! level entries unread)) (goto-char end) unread)) --- 172,178 ---- (gnus-topic-insert-topic-line (car type) visiblep (not (eq (nth 2 type) 'hidden)) ! level all-entries unread)) (goto-char end) unread)) *************** *** 254,260 **** (defun gnus-topic-insert-topic-line (name visiblep shownp level entries &optional unread) (let* ((visible (if visiblep "" "...")) ! (indentation (make-string (* 2 level) ? )) (total-number-of-articles unread) (number-of-groups (length entries)) (active-topic (eq gnus-topic-alist gnus-topic-active-alist))) --- 257,263 ---- (defun gnus-topic-insert-topic-line (name visiblep shownp level entries &optional unread) (let* ((visible (if visiblep "" "...")) ! (indentation (make-string (* gnus-topic-indent-level level) ? )) (total-number-of-articles unread) (number-of-groups (length entries)) (active-topic (eq gnus-topic-alist gnus-topic-active-alist))) *************** *** 406,411 **** --- 409,415 ---- (car type) (car gnus-group-list-mode) (cdr gnus-group-list-mode))) (visiblep (eq (nth 1 type) 'visible)) + (all-entries entries) (unread 0) info entry end) ;; Tally any sub-topics. *************** *** 420,426 **** (gnus-topic-insert-topic-line (car type) visiblep (not (eq (nth 2 type) 'hidden)) ! level entries unread) (gnus-delete-line)) unread)) --- 424,430 ---- (gnus-topic-insert-topic-line (car type) visiblep (not (eq (nth 2 type) 'hidden)) ! level all-entries unread) (gnus-delete-line)) unread)) *************** *** 563,568 **** --- 567,573 ---- (push (cons 'gnus-topic-mode gnus-topic-mode-map) minor-mode-map-alist)) (add-hook 'gnus-summary-exit-hook 'gnus-topic-update-topic) + (add-hook 'gnus-group-catchup-group-hook 'gnus-topic-update-topic) (make-local-variable 'gnus-group-prepare-function) (setq gnus-group-prepare-function 'gnus-group-prepare-topics) (make-local-variable 'gnus-group-goto-next-group-function) *************** *** 617,623 **** (interactive (list (read-string "Create topic: ") ! (completing-read "Parent topic: " gnus-topic-alist nil t))) ;; Check whether this topic already exists. (when (gnus-topic-find-topology topic) (error "Topic aleady exists")) --- 622,629 ---- (interactive (list (read-string "Create topic: ") ! (completing-read "Parent topic: " gnus-topic-alist nil t ! (cons (gnus-group-parent-topic) 0)))) ;; Check whether this topic already exists. (when (gnus-topic-find-topology topic) (error "Topic aleady exists")) *************** *** 730,738 **** (gnus-topic-inhibit-change-level t) (gnus-group-indentation (make-string ! (* 2 (or (save-excursion ! (gnus-topic-goto-topic (gnus-group-parent-topic)) ! (gnus-group-topic-level)) 0)) ? )) yanked group alist) ;; We first yank the groups the normal way... (setq yanked (gnus-group-yank-group arg)) --- 736,745 ---- (gnus-topic-inhibit-change-level t) (gnus-group-indentation (make-string ! (* gnus-topic-indent-level ! (or (save-excursion ! (gnus-topic-goto-topic (gnus-group-parent-topic)) ! (gnus-group-topic-level)) 0)) ? )) yanked group alist) ;; We first yank the groups the normal way... (setq yanked (gnus-group-yank-group arg)) *************** *** 824,830 **** (interactive (let (topic) (list ! (setq topic (completing-read "Rename topic: " gnus-topic-alist nil t)) (read-string (format "Rename %s to: " topic))))) (let ((top (gnus-topic-find-topology old-name)) (entry (assoc old-name gnus-topic-alist))) --- 831,838 ---- (interactive (let (topic) (list ! (setq topic (completing-read "Rename topic: " gnus-topic-alist nil t ! (cons (gnus-group-parent-topic) 0))) (read-string (format "Rename %s to: " topic))))) (let ((top (gnus-topic-find-topology old-name)) (entry (assoc old-name gnus-topic-alist))) *** pub/sgnus/lisp/gnus-uu.el Fri Jan 26 10:47:57 1996 --- sgnus/lisp/gnus-uu.el Fri Feb 2 20:06:30 1996 *************** *** 1220,1226 **** (setq state 'middle))) ;; When there are no result-files, then something must be wrong. ! (unless result-files (cond ((not has-been-begin) (message "Wrong type file")) --- 1220,1227 ---- (setq state 'middle))) ;; When there are no result-files, then something must be wrong. ! (if result-files ! (message "") (cond ((not has-been-begin) (message "Wrong type file")) *************** *** 1300,1306 **** (or (looking-at gnus-uu-body-line) (gnus-delete-line)) ! ; Replace any slashes and spaces in file names before decoding (goto-char name-beg) (while (re-search-forward "/" name-end t) (replace-match ",")) --- 1301,1307 ---- (or (looking-at gnus-uu-body-line) (gnus-delete-line)) ! ;; Replace any slashes and spaces in file names before decoding (goto-char name-beg) (while (re-search-forward "/" name-end t) (replace-match ",")) *** pub/sgnus/lisp/gnus-vis.el Fri Jan 26 10:47:58 1996 --- sgnus/lisp/gnus-vis.el Fri Feb 2 18:47:15 1996 *************** *** 213,219 **** `(("\\bin\\( +article\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2 t gnus-button-message-id 3) ;; This is how URLs _should_ be embedded in text... ! ("]*\\)>" 0 t gnus-button-url 1) ;; Next regexp stolen from highlight-headers.el. ;; Modified by Vladimir Alexiev. (,gnus-button-url-regexp 0 t gnus-button-url 0) --- 213,219 ---- `(("\\bin\\( +article\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2 t gnus-button-message-id 3) ;; This is how URLs _should_ be embedded in text... ! ("]*\\)>" 0 t gnus-button-url 1) ;; Next regexp stolen from highlight-headers.el. ;; Modified by Vladimir Alexiev. (,gnus-button-url-regexp 0 t gnus-button-url 0) *************** *** 262,271 **** '((mailp . bold) ((= unread 0) . italic))) ((eq gnus-background-mode 'dark) ! `(((not mailp) . ! ,(custom-face-lookup "ForestGreen" nil nil t nil nil)) ! ((zerop unread) . ! ,(custom-face-lookup "Blue" nil nil t nil nil)))) (t `(((not mailp) . ,(custom-face-lookup "ForestGreen" nil nil t nil nil)) --- 262,274 ---- '((mailp . bold) ((= unread 0) . italic))) ((eq gnus-background-mode 'dark) ! `(((> unread 200) . ,(custom-face-lookup "Red" nil nil t nil nil)) ! ((and (< level 3) (zerop unread)) . ! ,(custom-face-lookup "SeaGreen" nil nil t nil nil)) ! ((< level 3) . ,(custom-face-lookup "SpringGreen" nil nil t nil nil)) ! ((zerop unread) . ,(custom-face-lookup "SteelBlue" nil nil t nil nil)) ! (t . ,(custom-face-lookup "SkyBlue" nil nil t nil nil)) ! )) (t `(((not mailp) . ,(custom-face-lookup "ForestGreen" nil nil t nil nil)) *************** *** 283,288 **** --- 286,292 ---- mailp: Whether the select method is a mail method. level: The level of the group. score: The score of the group. + ticked: The number of ticked articles in the group. ") *************** *** 578,587 **** :selected (null gnus-score-default-header)] ["From" (gnus-score-set-default 'gnus-score-default-header 'a) :style radio ! :selected (eq gnus-score-default-header 'a )] ["Subject" (gnus-score-set-default 'gnus-score-default-header 's) :style radio ! :selected (eq gnus-score-default-header 's )] ["Article body" (gnus-score-set-default 'gnus-score-default-header 'b) :style radio --- 582,591 ---- :selected (null gnus-score-default-header)] ["From" (gnus-score-set-default 'gnus-score-default-header 'a) :style radio ! :selected (eq gnus-score-default-header 'a)] ["Subject" (gnus-score-set-default 'gnus-score-default-header 's) :style radio ! :selected (eq gnus-score-default-header 's)] ["Article body" (gnus-score-set-default 'gnus-score-default-header 'b) :style radio *************** *** 807,871 **** ;; It is the message that forces the active status to be updated. (message "")) - (defvar gnus-score-default-header nil - "Default header when entering new scores. - - Should be one of the following symbols. - - a: from - s: subject - b: body - h: head - i: message-id - t: references - x: xref - l: lines - d: date - f: followup - - If nil, the user will be asked for a header.") - - (defvar gnus-score-default-type nil - "Default match type when entering new scores. - - Should be one of the following symbols. - - s: substring - e: exact string - f: fuzzy string - r: regexp string - b: before date - a: at date - n: this date - <: less than number - >: greater than number - =: equal to number - - If nil, the user will be asked for a match type.") - - (defvar gnus-score-default-fold nil - "Use case folding for new score file entries iff not nil.") - - - (defun gnus-score-default-fold-toggle () - "Toggle folding for new score file entries." - (interactive) - (setq gnus-score-default-fold (not gnus-score-default-fold)) - (if gnus-score-default-fold - (message "New score file entries will be case insensitive.") - (message "New score file entries will be case sensitive."))) - - (defvar gnus-score-default-duration nil - "Default duration of effect when entering new scores. - - Should be one of the following symbols. - - t: temporary - p: permanent - i: immediate - - If nil, the user will be asked for a duration.") - (defun gnus-visual-score-map (type) (if t nil --- 811,816 ---- *************** *** 1044,1054 **** --- 989,1001 ---- (unread (if (numberp (car entry)) (car entry) 0)) (info (nth 2 entry)) (method (gnus-server-get-method group (gnus-info-method info))) + (marked (gnus-info-marks info)) (mailp (memq 'mail (assoc (symbol-name (car (or method gnus-select-method))) gnus-valid-select-methods))) (level (gnus-info-level info)) (score (gnus-info-score info)) + (ticked (gnus-range-length (cdr (assq 'tick marked)))) (inhibit-read-only t)) ;; Eval the cars of the lists until we find a match. (while (and list *************** *** 1324,1340 **** (save-excursion (set-buffer gnus-article-buffer) (save-restriction ! (goto-char (point-min)) ! (when (search-forward "\n\n" nil t) ! (narrow-to-region (1- (point)) (point-min)) ! (let ((alist gnus-header-face-alist) ! (buffer-read-only nil) ! (case-fold-search t) ! (inhibit-point-motion-hooks t) ! entry regexp header-face field-face from hpoints fpoints) (while (setq entry (pop alist)) (goto-char (point-min)) ! (setq regexp (concat "^\\(" (nth 0 entry) "\\)") header-face (nth 1 entry) field-face (nth 2 entry)) (while (and (re-search-forward regexp nil t) --- 1271,1291 ---- (save-excursion (set-buffer gnus-article-buffer) (save-restriction ! (let ((alist gnus-header-face-alist) ! (buffer-read-only nil) ! (case-fold-search t) ! (inhibit-point-motion-hooks t) ! entry regexp header-face field-face from hpoints fpoints) ! (goto-char (point-min)) ! (when (search-forward "\n\n" nil t) ! (narrow-to-region (1- (point)) (point-min)) (while (setq entry (pop alist)) (goto-char (point-min)) ! (setq regexp (concat "^\\(" ! (if (string-equal "" (nth 0 entry)) ! "[^\t ]" ! (nth 0 entry)) ! "\\)") header-face (nth 1 entry) field-face (nth 2 entry)) (while (and (re-search-forward regexp nil t) *************** *** 1350,1356 **** (not (memq (setq from (point)) fpoints))) (push from fpoints) (if (re-search-forward "^[^ \t]" nil t) ! (forward-char -1) (goto-char (point-max))) (put-text-property from (point) 'face field-face))))))))) --- 1301,1307 ---- (not (memq (setq from (point)) fpoints))) (push from fpoints) (if (re-search-forward "^[^ \t]" nil t) ! (forward-char -2) (goto-char (point-max))) (put-text-property from (point) 'face field-face))))))))) *************** *** 1397,1402 **** --- 1348,1354 ---- (setq beg (point)) (while (setq entry (pop alist)) (setq regexp (car entry)) + (goto-char beg) (while (re-search-forward regexp nil t) (let* ((start (and entry (match-beginning (nth 1 entry)))) (end (and entry (match-end (nth 1 entry)))) *************** *** 1592,1599 **** (defun gnus-insert-prev-page-button () (let ((buffer-read-only nil)) ! (gnus-eval-format gnus-prev-page-line-format nil ! `(gnus-prev t local-map ,gnus-prev-page-map)))) (defvar gnus-next-page-map nil) (unless gnus-next-page-map --- 1544,1553 ---- (defun gnus-insert-prev-page-button () (let ((buffer-read-only nil)) ! (gnus-eval-format ! gnus-prev-page-line-format nil ! `(gnus-prev t local-map ,gnus-prev-page-map ! gnus-callback gnus-article-prev-page)))) (defvar gnus-next-page-map nil) (unless gnus-next-page-map *************** *** 1605,1611 **** (defun gnus-insert-next-page-button () (let ((buffer-read-only nil)) (gnus-eval-format gnus-next-page-line-format nil ! `(gnus-next t local-map ,gnus-next-page-map)))) ;;; Compatibility Functions: --- 1559,1566 ---- (defun gnus-insert-next-page-button () (let ((buffer-read-only nil)) (gnus-eval-format gnus-next-page-line-format nil ! `(gnus-next t local-map ,gnus-next-page-map ! gnus-callback gnus-article-prev-page)))) ;;; Compatibility Functions: *** pub/sgnus/lisp/gnus.el Fri Jan 26 10:47:59 1996 --- sgnus/lisp/gnus.el Fri Feb 2 20:53:10 1996 *************** *** 1354,1359 **** --- 1354,1362 ---- (defvar gnus-summary-exit-hook nil "*A hook called on exit from the summary buffer.") + (defvar gnus-group-catchup-group-hook nil + "*A hook run when catching up a group from the group buffer.") + (defvar gnus-open-server-hook nil "*A hook called just before opening connection to the news server.") *************** *** 1577,1585 **** `((?M gnus-tmp-marked-mark ?c) (?S gnus-tmp-subscribed ?c) (?L gnus-tmp-level ?d) ! (?N gnus-tmp-number ?s) (?R gnus-tmp-number-of-read ?s) ! (?t gnus-tmp-number-total ?s) (?y gnus-tmp-number-of-unread ?s) (?I (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked))) ?d) (?T (gnus-range-length (cdr (assq 'tick gnus-tmp-marked))) ?d) --- 1580,1594 ---- `((?M gnus-tmp-marked-mark ?c) (?S gnus-tmp-subscribed ?c) (?L gnus-tmp-level ?d) ! (?N (cond ((eq number t) "*" ) ! ((numberp number) ! (int-to-string ! (+ number ! (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked))) ! (gnus-range-length (cdr (assq 'tick gnus-tmp-marked)))))) ! (t number)) ?s) (?R gnus-tmp-number-of-read ?s) ! (?t gnus-tmp-number-total ?d) (?y gnus-tmp-number-of-unread ?s) (?I (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked))) ?d) (?T (gnus-range-length (cdr (assq 'tick gnus-tmp-marked))) ?d) *************** *** 1673,1679 **** "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "September Gnus v0.32" "Version number for this version of Gnus.") (defvar gnus-info-nodes --- 1682,1688 ---- "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "September Gnus v0.33" "Version number for this version of Gnus.") (defvar gnus-info-nodes *************** *** 2984,2990 **** (progn (goto-char (match-beginning 0))) (re-search-forward ":")))) (goto-char (point-min)) ! (while (re-search-forward "[ \t\n]*([^()]*)[ \t]*$" nil t) (replace-match "" t t)) (goto-char (point-min)) (while (re-search-forward "[ \t]+" nil t) --- 2993,2999 ---- (progn (goto-char (match-beginning 0))) (re-search-forward ":")))) (goto-char (point-min)) ! (while (re-search-forward "[ \t\n]*[[{(][^()]*[]})][ \t]*$" nil t) (replace-match "" t t)) (goto-char (point-min)) (while (re-search-forward "[ \t]+" nil t) *************** *** 3009,3017 **** (defun gnus-simplify-subject-fuzzy (subject) "Siplify a subject string fuzzily." ! (let ((case-fold-search t)) ! (save-excursion ! (gnus-set-work-buffer) (insert subject) (inline (gnus-simplify-buffer-fuzzy)) (buffer-string)))) --- 3018,3026 ---- (defun gnus-simplify-subject-fuzzy (subject) "Siplify a subject string fuzzily." ! (save-excursion ! (gnus-set-work-buffer) ! (let ((case-fold-search t)) (insert subject) (inline (gnus-simplify-buffer-fuzzy)) (buffer-string)))) *************** *** 4647,4656 **** (zerop number) (cdr (assq 'tick gnus-tmp-marked))) ?* ? )) - (gnus-tmp-number - (cond ((eq number t) "*" ) - ((numberp number) (int-to-string number)) - (t number))) (gnus-tmp-process-marked (if (member gnus-tmp-group gnus-group-marked) gnus-process-mark ? )) --- 4656,4661 ---- *************** *** 4735,4741 **** (gnus-tmp-news-server (car (cdr gnus-select-method))) (gnus-tmp-news-method (car gnus-select-method)) (max-len 60) ! header ;Dummy binding for user-defined formats ;; Get the resulting string. (mode-string (eval gformat))) ;; If the line is too long, we chop it off. --- 4740,4746 ---- (gnus-tmp-news-server (car (cdr gnus-select-method))) (gnus-tmp-news-method (car gnus-select-method)) (max-len 60) ! gnus-tmp-header ;Dummy binding for user-defined formats ;; Get the resulting string. (mode-string (eval gformat))) ;; If the line is too long, we chop it off. *************** *** 4874,4884 **** (gnus-group-position-point)) (defun gnus-group-remove-mark (group) (if (gnus-group-goto-group group) (save-excursion ! (gnus-group-mark-group 1 'unmark t)) (setq gnus-group-marked ! (delete group gnus-group-marked)))) (defun gnus-group-set-mark (group) "Set the process mark on GROUP." --- 4879,4893 ---- (gnus-group-position-point)) (defun gnus-group-remove-mark (group) + "Remove the process mark from GROUP and move point there. + Return nil if the group isn't displayed." (if (gnus-group-goto-group group) (save-excursion ! (gnus-group-mark-group 1 'unmark t) ! t) (setq gnus-group-marked ! (delete group gnus-group-marked)) ! nil)) (defun gnus-group-set-mark (group) "Set the process mark on GROUP." *************** *** 5718,5723 **** --- 5727,5733 ---- (when all (gnus-add-marked-articles group 'tick nil nil 'force) (gnus-add-marked-articles group 'dormant nil nil 'force)) + (run-hooks 'gnus-group-catchup-group-hook) num)))) (defun gnus-group-expire-articles (&optional n) *************** *** 5916,5925 **** (while groups (gnus-group-remove-mark (car groups)) (gnus-delete-line) ! (setq entry (gnus-gethash (pop groups) gnus-newsrc-hashtb)) ! (push (cons (car entry) (nth 2 entry)) ! gnus-list-of-killed-groups) ! (setcdr (cdr entry) (cdr (cdr (cdr entry))))) (gnus-make-hashtable-from-newsrc-alist))) (gnus-group-position-point) --- 5926,5935 ---- (while groups (gnus-group-remove-mark (car groups)) (gnus-delete-line) ! (when (setq entry (gnus-gethash (pop groups) gnus-newsrc-hashtb)) ! (push (cons (car entry) (nth 2 entry)) ! gnus-list-of-killed-groups) ! (setcdr (cdr entry) (cdr (cdr (cdr entry)))))) (gnus-make-hashtable-from-newsrc-alist))) (gnus-group-position-point) *************** *** 6539,6545 **** "a" gnus-summary-post-news "x" gnus-summary-limit-to-unread "s" gnus-summary-isearch-article ! "t" gnus-summary-toggle-header "g" gnus-summary-show-article "l" gnus-summary-goto-last-article "\C-c\C-v\C-v" gnus-uu-decode-uu-view --- 6549,6555 ---- "a" gnus-summary-post-news "x" gnus-summary-limit-to-unread "s" gnus-summary-isearch-article ! "t" gnus-article-hide-headers "g" gnus-summary-show-article "l" gnus-summary-goto-last-article "\C-c\C-v\C-v" gnus-uu-decode-uu-view *************** *** 6550,6556 **** "\M-*" gnus-cache-remove-article "\M-&" gnus-summary-universal-argument "\C-l" gnus-recenter - "D" gnus-summary-enter-digest-group "I" gnus-summary-increase-score "L" gnus-summary-lower-score --- 6560,6565 ---- *************** *** 7302,7310 **** (run-hooks 'gnus-select-group-hook) ;; Set any local variables in the group parameters. (gnus-summary-set-local-parameters gnus-newsgroup-name) - ;; Do score processing. - (when gnus-use-scoring - (gnus-possibly-score-headers)) (gnus-update-format-specifications) ;; Check whether to fill in the gaps in the threads. (when gnus-build-sparse-threads --- 7311,7316 ---- *************** *** 8250,8255 **** --- 8256,8264 ---- 'quit) ((eq articles 0) nil) (t + ;; Do score processing. + (when gnus-use-scoring + (gnus-possibly-score-headers)) ;; Init the dependencies hash table. (setq gnus-newsgroup-dependencies (gnus-make-hashtable (length articles))) *************** *** 8525,8531 **** (vectorp gnus-current-headers)) (mail-header-subject gnus-current-headers) "")) max-len ! header);; passed as argument to any user-format-funcs (setq mode-string (eval mformat)) (setq max-len (max 4 (if gnus-mode-non-string-length (- (frame-width) --- 8534,8540 ---- (vectorp gnus-current-headers)) (mail-header-subject gnus-current-headers) "")) max-len ! gnus-tmp-header);; passed as argument to any user-format-funcs (setq mode-string (eval mformat)) (setq max-len (max 4 (if gnus-mode-non-string-length (- (frame-width) *************** *** 9424,9429 **** --- 9433,9439 ---- ;; not garbage-collected, it seems. This would the lead to en ;; ever-growing Emacs. (gnus-summary-clear-local-variables) + (bury-buffer gnus-article-buffer) ;; We clear the global counterparts of the buffer-local ;; variables as well, just to be on the safe side. (gnus-configure-windows 'group 'force) *************** *** 9472,9477 **** --- 9482,9488 ---- (kill-buffer gnus-summary-buffer))) (when gnus-use-trees (gnus-tree-close group)) + (bury-buffer gnus-article-buffer) ;; Return to the group buffer. (gnus-configure-windows 'group 'force) ;; Clear the current group name. *************** *** 9796,9802 **** (setq did article)) (if (or all-headers gnus-show-all-headers) (gnus-article-show-all-headers)) ! nil)) (if did (gnus-article-set-window-start (cdr (assq article gnus-newsgroup-bookmarks))))))) --- 9807,9813 ---- (setq did article)) (if (or all-headers gnus-show-all-headers) (gnus-article-show-all-headers)) ! t)) (if did (gnus-article-set-window-start (cdr (assq article gnus-newsgroup-bookmarks))))))) *************** *** 9878,9884 **** (gnus-summary-search-group backward gnus-keep-same-level)))) (while (not ended) (gnus-message ! 7 "No more%s articles%s" (if unread " unread" "") (if (and group (not (gnus-ephemeral-group-p gnus-newsgroup-name))) (format " (Type %s for %s [%s])" --- 9889,9895 ---- (gnus-summary-search-group backward gnus-keep-same-level)))) (while (not ended) (gnus-message ! 5 "No more%s articles%s" (if unread " unread" "") (if (and group (not (gnus-ephemeral-group-p gnus-newsgroup-name))) (format " (Type %s for %s [%s])" *************** *** 10160,10166 **** (list gnus-del-mark gnus-read-mark gnus-ancient-mark gnus-killed-mark gnus-kill-file-mark gnus-low-score-mark gnus-expirable-mark ! gnus-canceled-mark gnus-catchup-mark) 'reverse))) (defalias 'gnus-summary-delete-marked-with 'gnus-summary-limit-to-marks) --- 10171,10177 ---- (list gnus-del-mark gnus-read-mark gnus-ancient-mark gnus-killed-mark gnus-kill-file-mark gnus-low-score-mark gnus-expirable-mark ! gnus-canceled-mark gnus-catchup-mark gnus-sparse-mark) 'reverse))) (defalias 'gnus-summary-delete-marked-with 'gnus-summary-limit-to-marks) *************** *** 10282,10288 **** ;; This will do all the work of generating the new summary buffer ;; according to the new limit. (gnus-summary-prepare) ! ;; Try to return to the article you were at, or on in the ;; neighborhood. (if data ;; We try to find some article after the current one. --- 10293,10303 ---- ;; This will do all the work of generating the new summary buffer ;; according to the new limit. (gnus-summary-prepare) ! ;; Hide any threads, possibly. ! (and gnus-show-threads ! gnus-thread-hide-subtree ! (gnus-summary-hide-all-threads)) ! ;; Try to return to the article you were at, or one in the ;; neighborhood. (if data ;; We try to find some article after the current one. *************** *** 13163,13173 **** ((listp gnus-ignored-headers) (mapconcat 'identity gnus-ignored-headers "\\|"))))) ! (visible (cond ((stringp gnus-visible-headers) ! gnus-visible-headers) ! ((listp gnus-visible-headers) ! (mapconcat 'identity gnus-visible-headers ! "\\|")))) want-list beg want-l) ;; First we narrow to just the headers. (widen) --- 13178,13188 ---- ((listp gnus-ignored-headers) (mapconcat 'identity gnus-ignored-headers "\\|"))))) ! (visible ! (cond ((stringp gnus-visible-headers) ! gnus-visible-headers) ! ((listp gnus-visible-headers) ! (mapconcat 'identity gnus-visible-headers "\\|")))) want-list beg want-l) ;; First we narrow to just the headers. (widen) *************** *** 13544,13556 **** (defun gnus-article-check-hidden-text (type arg) "Return nil if hiding is necessary." ! (let ((hide (gnus-article-hidden-text-p 'signature))) ! (cond ((or (and (null arg) (eq hide 'hidden)) ! (and arg (< 0 (prefix-numeric-value arg)))) ! (gnus-article-show-hidden-text 'signature)) ! ((eq hide 'shown) ! (gnus-article-show-hidden-text 'signature t)) ! (t nil)))) (defun gnus-article-hidden-text-p (type) "Say whether the current buffer contains hidden text of type TYPE." --- 13559,13573 ---- (defun gnus-article-check-hidden-text (type arg) "Return nil if hiding is necessary." ! (save-excursion ! (set-buffer gnus-article-buffer) ! (let ((hide (gnus-article-hidden-text-p type))) ! (cond ((or (and (null arg) (eq hide 'hidden)) ! (and arg (< 0 (prefix-numeric-value arg)))) ! (gnus-article-show-hidden-text type)) ! ((eq hide 'shown) ! (gnus-article-show-hidden-text type t)) ! (t nil))))) (defun gnus-article-hidden-text-p (type) "Say whether the current buffer contains hidden text of type TYPE." *************** *** 14072,14077 **** --- 14089,14095 ---- (defvar gnus-dribble-eval-file nil) (defun gnus-dribble-file-name () + "Return the dribble file for the current .newsrc." (concat (if gnus-dribble-directory (concat (file-name-as-directory gnus-dribble-directory) *************** *** 14080,14085 **** --- 14098,14104 ---- "-dribble")) (defun gnus-dribble-enter (string) + "Enter STRING into the dribble buffer." (if (and (not gnus-dribble-ignore) gnus-dribble-buffer (buffer-name gnus-dribble-buffer)) *************** *** 14090,14095 **** --- 14109,14115 ---- (set-buffer obuf)))) (defun gnus-dribble-read-file () + "Read the dribble file from disk." (let ((dribble-file (gnus-dribble-file-name))) (save-excursion (set-buffer (setq gnus-dribble-buffer *************** *** 14104,14119 **** (set-buffer-modified-p nil) (let ((auto (make-auto-save-file-name)) (gnus-dribble-ignore t)) ! (if (or (file-exists-p auto) (file-exists-p dribble-file)) ! (progn ! (if (file-newer-than-file-p auto dribble-file) ! (setq dribble-file auto)) ! (insert-file-contents dribble-file) ! (if (not (zerop (buffer-size))) ! (set-buffer-modified-p t)) ! (if (gnus-y-or-n-p ! "Auto-save file exists. Do you want to read it? ") ! (setq gnus-dribble-eval-file t)))))))) (defun gnus-dribble-eval-file () (if (not gnus-dribble-eval-file) --- 14124,14146 ---- (set-buffer-modified-p nil) (let ((auto (make-auto-save-file-name)) (gnus-dribble-ignore t)) ! (when (or (file-exists-p auto) (file-exists-p dribble-file)) ! ;; Load whichever file is newest -- the auto save file ! ;; or the "real" file. ! (if (file-newer-than-file-p auto dribble-file) ! (insert-file-contents auto) ! (insert-file-contents dribble-file)) ! (unless (zerop (buffer-size)) ! (set-buffer-modified-p t)) ! ;; Set the file modes to reflect the .newsrc file modes. ! (save-buffer) ! (when (file-exists-p gnus-current-startup-file) ! (set-file-modes dribble-file ! (file-modes gnus-current-startup-file))) ! ;; Possibly eval the file later. ! (when (gnus-y-or-n-p ! "Auto-save file exists. Do you want to read it? ") ! (setq gnus-dribble-eval-file t))))))) (defun gnus-dribble-eval-file () (if (not gnus-dribble-eval-file) *** pub/sgnus/lisp/nnbabyl.el Fri Jan 26 10:48:00 1996 --- sgnus/lisp/nnbabyl.el Sat Jan 27 21:22:09 1996 *************** *** 210,217 **** (dont-check (nnheader-report 'nnbabyl "Selected group %s" group) t) - ((> (car active) (cdr active)) - (nnheader-report 'nnbabyl "Empty group %s" group)) (t (nnheader-report 'nnbabyl "Selected group %s" group) (nnheader-insert "211 %d %d %d %s\n" --- 210,215 ---- *** pub/sgnus/lisp/nndoc.el Fri Jan 26 10:48:00 1996 --- sgnus/lisp/nndoc.el Fri Feb 2 20:06:55 1996 *************** *** 447,453 **** (and (re-search-backward nndoc-article-begin nil t) (setq end (point)) (search-forward "\n\n" beg t) ! (re-search-backward "^Content-Length: \\([0-9]+\\) *$" end t) (setq len (string-to-int (match-string 1))) (search-forward "\n\n" beg t) (or (= (setq len (+ (point) len)) (point-max)) --- 447,453 ---- (and (re-search-backward nndoc-article-begin nil t) (setq end (point)) (search-forward "\n\n" beg t) ! (re-search-backward "^Content-Length:[ \t]*\\([0-9]+\\) *$" end t) (setq len (string-to-int (match-string 1))) (search-forward "\n\n" beg t) (or (= (setq len (+ (point) len)) (point-max)) *** pub/sgnus/lisp/nnfolder.el Fri Jan 26 10:48:00 1996 --- sgnus/lisp/nnfolder.el Thu Feb 1 19:41:06 1996 *************** *** 118,124 **** (erase-buffer) (let ((delim-string (concat "^" rmail-unix-mail-delimiter)) article art-string start stop) ! (nnfolder-possibly-change-group newsgroup) (set-buffer nnfolder-current-buffer) (goto-char (point-min)) (if (stringp (car sequence)) --- 118,124 ---- (erase-buffer) (let ((delim-string (concat "^" rmail-unix-mail-delimiter)) article art-string start stop) ! (nnfolder-possibly-change-group newsgroup server) (set-buffer nnfolder-current-buffer) (goto-char (point-min)) (if (stringp (car sequence)) *************** *** 187,193 **** nnfolder-status-string) (defun nnfolder-request-article (article &optional newsgroup server buffer) ! (nnfolder-possibly-change-group newsgroup) (save-excursion (set-buffer nnfolder-current-buffer) (goto-char (point-min)) --- 187,193 ---- nnfolder-status-string) (defun nnfolder-request-article (article &optional newsgroup server buffer) ! (nnfolder-possibly-change-group newsgroup server) (save-excursion (set-buffer nnfolder-current-buffer) (goto-char (point-min)) *************** *** 222,250 **** (defun nnfolder-request-group (group &optional server dont-check) (save-excursion (nnmail-activate 'nnfolder) ! (when (assoc group nnfolder-group-alist) ! (nnfolder-possibly-change-group group) ! (cond ! (dont-check ! (nnheader-report 'nnfolder "Selected group %s" group) ! t) ! (t (let* ((active (assoc group nnfolder-group-alist)) (group (car active)) (range (car (cdr active))) (minactive (car range)) (maxactive (cdr range))) - (set-buffer nntp-server-buffer) - (erase-buffer) (cond ((null active) (nnheader-report 'nnfolder "No such group: %s" group)) (t (nnheader-report 'nnfolder "Selected group %s" group) ! (insert (format "211 %d %d %d %s\n" ! (1+ (- maxactive minactive)) ! minactive maxactive group)) ! t)))))))) (defun nnfolder-request-scan (&optional group server) (nnmail-get-new-mail --- 222,247 ---- (defun nnfolder-request-group (group &optional server dont-check) (save-excursion (nnmail-activate 'nnfolder) ! (if (not (assoc group nnfolder-group-alist)) ! (nnheader-report 'nnfolder "No such group: %s" group) ! (nnfolder-possibly-change-group group server) ! (if dont-check ! (progn ! (nnheader-report 'nnfolder "Selected group %s" group) ! t) (let* ((active (assoc group nnfolder-group-alist)) (group (car active)) (range (car (cdr active))) (minactive (car range)) (maxactive (cdr range))) (cond ((null active) (nnheader-report 'nnfolder "No such group: %s" group)) (t (nnheader-report 'nnfolder "Selected group %s" group) ! (nnheader-insert "211 %d %d %d %s\n" ! (1+ (- maxactive minactive)) ! minactive maxactive group)))))))) (defun nnfolder-request-scan (&optional group server) (nnmail-get-new-mail *************** *** 272,278 **** (if (or (assoc group nnfolder-buffer-alist) (equal group nnfolder-current-group)) (progn ! (nnfolder-possibly-change-group group) (save-excursion (set-buffer nnfolder-current-buffer) ;; If the buffer was modified, write the file out now. --- 269,275 ---- (if (or (assoc group nnfolder-buffer-alist) (equal group nnfolder-current-group)) (progn ! (nnfolder-possibly-change-group group server) (save-excursion (set-buffer nnfolder-current-buffer) ;; If the buffer was modified, write the file out now. *************** *** 293,304 **** (defun nnfolder-request-create-group (group &optional server) (nnmail-activate 'nnfolder) ! (or (assoc group nnfolder-group-alist) ! (let (active) ! (setq nnfolder-group-alist ! (cons (list group (setq active (cons 1 0))) ! nnfolder-group-alist)) ! (nnmail-save-active nnfolder-group-alist nnfolder-active-file))) t) (defun nnfolder-request-list (&optional server) --- 290,298 ---- (defun nnfolder-request-create-group (group &optional server) (nnmail-activate 'nnfolder) ! (unless (assoc group nnfolder-group-alist) ! (push (list group (cons 1 0)) nnfolder-group-alist) ! (nnmail-save-active nnfolder-group-alist nnfolder-active-file)) t) (defun nnfolder-request-list (&optional server) *************** *** 318,324 **** (defun nnfolder-request-expire-articles (articles newsgroup &optional server force) ! (nnfolder-possibly-change-group newsgroup) (let* ((is-old t) rest) (nnmail-activate 'nnfolder) --- 312,318 ---- (defun nnfolder-request-expire-articles (articles newsgroup &optional server force) ! (nnfolder-possibly-change-group newsgroup server) (let* ((is-old t) rest) (nnmail-activate 'nnfolder) *************** *** 359,365 **** (defun nnfolder-request-move-article (article group server accept-form &optional last) ! (nnfolder-possibly-change-group group) (let ((buf (get-buffer-create " *nnfolder move*")) result) (and --- 353,359 ---- (defun nnfolder-request-move-article (article group server accept-form &optional last) ! (nnfolder-possibly-change-group group server) (let ((buf (get-buffer-create " *nnfolder move*")) result) (and *************** *** 379,385 **** (kill-buffer buf) result) (save-excursion ! (nnfolder-possibly-change-group group) (set-buffer nnfolder-current-buffer) (goto-char (point-min)) (if (search-forward (nnfolder-article-string article) nil t) --- 373,379 ---- (kill-buffer buf) result) (save-excursion ! (nnfolder-possibly-change-group group server) (set-buffer nnfolder-current-buffer) (goto-char (point-min)) (if (search-forward (nnfolder-article-string article) nil t) *************** *** 444,450 **** t) (defun nnfolder-request-rename-group (group new-name &optional server) ! (nnfolder-possibly-change-group group) (save-excursion (set-buffer nnfolder-current-buffer) (and (file-writable-p buffer-file-name) --- 438,444 ---- t) (defun nnfolder-request-rename-group (group new-name &optional server) ! (nnfolder-possibly-change-group group server) (save-excursion (set-buffer nnfolder-current-buffer) (and (file-writable-p buffer-file-name) *************** *** 493,501 **** (point-max)))) (delete-region (point-min) (point-max))))) ! (defun nnfolder-possibly-change-group (group) ! (or (file-exists-p nnfolder-directory) ! (make-directory (directory-file-name nnfolder-directory) t)) (nnfolder-possibly-activate-groups nil) (or (assoc group nnfolder-group-alist) (not (file-exists-p (concat (file-name-as-directory nnfolder-directory) --- 487,498 ---- (point-max)))) (delete-region (point-min) (point-max))))) ! (defun nnfolder-possibly-change-group (group &optional server) ! (when (and server ! (not (nnfolder-server-opened server))) ! (nnfolder-open-server server)) ! (unless (file-exists-p nnfolder-directory) ! (make-directory (directory-file-name nnfolder-directory) t)) (nnfolder-possibly-activate-groups nil) (or (assoc group nnfolder-group-alist) (not (file-exists-p (concat (file-name-as-directory nnfolder-directory) *** pub/sgnus/lisp/nnmail.el Fri Jan 26 10:48:00 1996 --- sgnus/lisp/nnmail.el Fri Feb 2 20:06:57 1996 *************** *** 288,294 **** (concat dir group "/") ;; If not, we translate dots into slashes. (concat dir (nnheader-replace-chars-in-string group ?. ?/) "/"))) ! (if file file ""))) (defun nnmail-date-to-time (date) "Convert DATE into time." --- 288,294 ---- (concat dir group "/") ;; If not, we translate dots into slashes. (concat dir (nnheader-replace-chars-in-string group ?. ?/) "/"))) ! (or file ""))) (defun nnmail-date-to-time (date) "Convert DATE into time." *************** *** 489,495 **** ;; Look for a Content-Length header. (if (not (save-excursion (and (re-search-backward ! "^Content-Length: \\([0-9]+\\)" start t) (setq content-length (string-to-int (buffer-substring (match-beginning 1) --- 489,495 ---- ;; Look for a Content-Length header. (if (not (save-excursion (and (re-search-backward ! "^Content-Length:[ \t]*\\([0-9]+\\)" start t) (setq content-length (string-to-int (buffer-substring (match-beginning 1) *************** *** 560,566 **** (insert "Message-ID: " (setq message-id (nnmail-message-id)) "\n")) ;; Look for a Content-Length header. (goto-char (point-min)) ! (if (not (re-search-forward "^Content-Length: \\([0-9]+\\)" nil t)) (setq content-length nil) (setq content-length (string-to-int (match-string 1))) ;; We destroy the header, since none of the backends ever --- 560,566 ---- (insert "Message-ID: " (setq message-id (nnmail-message-id)) "\n")) ;; Look for a Content-Length header. (goto-char (point-min)) ! (if (not (re-search-forward "^Content-Length:[ \t]*\\([0-9]+\\)" nil t)) (setq content-length nil) (setq content-length (string-to-int (match-string 1))) ;; We destroy the header, since none of the backends ever *************** *** 1002,1010 **** ;; If this is a duplicate message, then we do not save it. (let* ((duplication (nnmail-cache-id-exists-p message-id)) (action (when duplication ! (if (nnheader-functionp nnmail-treat-duplicates) ! (funcall nnmail-treat-duplicates message-id) ! nnmail-treat-duplicates)))) (cond ((not duplication) (nnmail-cache-insert message-id) --- 1002,1014 ---- ;; If this is a duplicate message, then we do not save it. (let* ((duplication (nnmail-cache-id-exists-p message-id)) (action (when duplication ! (cond ! ((memq nnmail-treat-duplicates '(warn delete)) ! nnmail-treat-duplicates) ! ((nnheader-functionp nnmail-treat-duplicates) ! (funcall nnmail-treat-duplicates message-id)) ! (t ! nnmail-treat-duplicates))))) (cond ((not duplication) (nnmail-cache-insert message-id) *** pub/sgnus/lisp/nnmbox.el Fri Jan 26 10:48:00 1996 --- sgnus/lisp/nnmbox.el Sat Jan 27 21:22:08 1996 *************** *** 189,197 **** (dont-check (nnheader-report 'nnmbox "Selected group %s" group) (nnheader-insert "")) - ((> (car active) (cdr active)) - (nnheader-report 'nnmbox "Empty group %s" group) - (nnheader-insert "211 0 0 0 %s\n" group)) (t (nnheader-report 'nnmbox "Selected group %s" group) (nnheader-insert "211 %d %d %d %s\n" --- 189,194 ---- *** pub/sgnus/lisp/nnml.el Fri Jan 26 10:48:00 1996 --- sgnus/lisp/nnml.el Sat Feb 3 14:41:00 1996 *************** *** 321,326 **** --- 321,330 ---- (article group server accept-form &optional last) (let ((buf (get-buffer-create " *nnml move*")) result) + (nnml-possibly-change-directory group) + (unless nnml-article-file-alist + (setq nnml-article-file-alist + (nnheader-article-to-file-alist nnml-current-directory))) (and (nnml-deletable-article-p group article) (nnml-request-article article group server) *** pub/sgnus/lisp/nnsoup.el Fri Jan 26 10:48:00 1996 --- sgnus/lisp/nnsoup.el Thu Feb 1 10:26:01 1996 *************** *** 339,345 **** (when (not mod-time) (setcdr (cdr total-infolist) (delq info (cddr total-infolist))))) (if (cddr total-infolist) ! (setcar active (car (car (cdr (car (cdr (cdr total-infolist))))))) (setcar active (1+ (cdr active)))) (nnsoup-write-active-file) ;; Return the articles that weren't expired. --- 339,345 ---- (when (not mod-time) (setcdr (cdr total-infolist) (delq info (cddr total-infolist))))) (if (cddr total-infolist) ! (setcar active (car (car (car (cdr (cdr total-infolist)))))) (setcar active (1+ (cdr active)))) (nnsoup-write-active-file) ;; Return the articles that weren't expired. *************** *** 717,722 **** --- 717,746 ---- (setcdr (car active) (nreverse (cdr (car active)))) (setq active (cdr active))) (nnsoup-write-active-file))) + + (defun nnsoup-delete-unreferenced-message-files () + "Delete any *.MSG and *.IDX files that aren't known by nnsoup." + (interactive) + (let* ((known (apply 'nconc (mapcar + (lambda (ga) + (mapcar + (lambda (area) + (gnus-soup-area-prefix (cadr area))) + (cddr ga))) + nnsoup-group-alist))) + (regexp "\\.MSG$\\|\\.IDX$") + (files (directory-files nnsoup-directory nil regexp)) + non-files file) + ;; Find all files that aren't known by nnsoup. + (while (setq file (pop files)) + (string-match regexp file) + (unless (member (substring file 0 (match-beginning 0)) known) + (push file non-files))) + ;; Sort and delete the files. + (setq non-files (sort non-files 'string<)) + (map-y-or-n-p "Delete file %s? " + (lambda (file) (delete-file (concat nnsoup-directory file))) + non-files))) (provide 'nnsoup) *** pub/sgnus/lisp/nntp.el Fri Jan 26 10:48:00 1996 --- sgnus/lisp/nntp.el Mon Jan 29 17:48:28 1996 *************** *** 1008,1034 **** (defun nntp-send-region-to-server (begin end) "Send the current buffer region (from BEGIN to END) to the server." (save-excursion ! ;; If we're not the the nntp server buffer, we copy the region ! ;; over to that buffer. ! (if (eq (get-buffer nntp-server-buffer) (current-buffer)) ! (let ((orig (current-buffer))) ! (set-buffer nntp-server-buffer) ! (erase-buffer) ! (insert-buffer-substring orig begin end)) ! ;; We are in the nntp buffer, so we just narrow it. ! (narrow-to-region begin end)) ! ;; `process-send-region' does not work if the text to be sent is very ! ;; large, so we send it piecemeal. ! (let ((last (point-min)) ! (size 100)) ;Size of text sent at once. ! (while (/= last (point-max)) ! (process-send-region ! nntp-server-process last (setq last (min (+ last size) (point-max)))) ! ;; Read any output from the server. May be unnecessary. ! (accept-process-output))) ! ;; Delete the area we sent. ! (delete-region (point-min) (point-max)) ! (widen))) (defun nntp-open-server-semi-internal (server &optional service) "Open SERVER. --- 1008,1031 ---- (defun nntp-send-region-to-server (begin end) "Send the current buffer region (from BEGIN to END) to the server." (save-excursion ! (let ((cur (current-buffer))) ! ;; Copy the buffer over to the send buffer. ! (nnheader-set-temp-buffer " *nntp send*") ! (insert-buffer-substring cur begin end) ! (save-excursion ! (set-buffer cur) ! (erase-buffer)) ! ;; `process-send-region' does not work if the text to be sent is very ! ;; large, so we send it piecemeal. ! (let ((last (point-min)) ! (size 100)) ;Size of text sent at once. ! (while (/= last (point-max)) ! (process-send-region ! nntp-server-process ! last (setq last (min (+ last size) (point-max)))) ! ;; Read any output from the server. May be unnecessary. ! (accept-process-output))) ! (kill-buffer (current-buffer))))) (defun nntp-open-server-semi-internal (server &optional service) "Open SERVER. *** pub/sgnus/lisp/ChangeLog Fri Jan 26 10:48:07 1996 --- sgnus/lisp/ChangeLog Sat Feb 3 14:31:04 1996 *************** *** 1,6 **** --- 1,191 ---- + Sat Feb 3 13:08:48 1996 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-summary-resend-bounced-mail): Strip more + gruft. + + Fri Feb 2 20:19:07 1996 Lars Ingebrigtsen + + * gnus.el (gnus-summary-exit): Bury the article buffer. + + * gnus-score.el (gnus-score-followup-article): Don't do + `score-effect'. + + Fri Feb 2 20:07:31 1996 Jason L. Tibbitts, III + + * nnmail.el (nnmail-process-babyl-mail-format): Allow many spaces + after ":". + + Fri Feb 2 20:05:02 1996 Lars Ingebrigtsen + + * gnus.el (gnus-summary-select-article): Return t on success. + + Thu Feb 1 00:50:54 1996 Lars Ingebrigtsen + + * nnfolder.el (nnfolder-request-group): Give a better error + message. + + * nnfolder.el: Really use virtual servers. + + * gnus.el (gnus-select-newsgroup): Moved score file processing to + an earlier point. + + * gnus-msg.el (gnus-post-method): Use `gnus-post-method' from the + group buffer. + + * nnsoup.el (nnsoup-request-expire-articles): Bombed. + (nnsoup-delete-unreferenced-message-files): New command. + + * gnus-cache.el (gnus-cache-possibly-enter-article): Update cache + mark. + (gnus-cache-possibly-remove-article): Ditto. + + * gnus-srvr.el (gnus-server-prepare): Weed out nil servers. + + * gnus-msg.el (gnus-mail-reply): Respect + `rmail-dont-reply-to-names'. + + Wed Jan 31 19:25:50 1996 Per Abrahamsen + + * gnus-msg.el (gnus-inews-insert-mime-headers): `(widen)' before + searching for 8-bit characters. + + * gnus-vis.el (gnus-article-highlight-headers): Make it ignore + the `intangible' text property. + + Thu Feb 1 00:33:37 1996 Lars Ingebrigtsen + + * gnus.el (gnus-summary-limit-to-unread): Remove sparse articles. + + Wed Jan 31 15:54:38 1996 Lars Ingebrigtsen + + * gnus-score.el (gnus-summary-score-map): Recursive map. + + * gnus-msg.el (gnus-dissociate-buffer-from-draft): Didn't run hook + properly. + + * gnus-kill.el (gnus-execute): Don't use `gnus-header-*'. + + * gnus-msg.el (gnus-kill-message-buffer): New command and + keystroke. + (gnus-mail-setup): Use the gnus-mail-*-method variables. + + * gnus-topic.el (gnus-topic-rename): Default to current topic. + (gnus-topic-create-topic): Ditto. + + * gnus-vis.el (gnus-group-highlight-line): Offer ticked number. + + * gnus-uu.el (gnus-uu-grab-articles): Remove the message. + + * gnus-vis.el (gnus-group-highlight): New default for dark + backgrounds. + + * gnus-topic.el (gnus-group-prepare-topics): Don't do anything + about dead groups. + + * gnus.el (gnus-summary-mode-map): Clobbered "D". + + Mon Jan 29 19:06:00 1996 Kim-Minh Kaplan + + * gnus.el (gnus-simplify-subject-fuzzy): Fold case. + + Mon Jan 29 17:48:12 1996 Lars Ingebrigtsen + + * gnus.el (gnus-summary-limit): Hide any threads, possibly. + + * gnus-msg.el (gnus-forward-insert-buffer): Really delete unwanted + headers. + + * gnus-vis.el (gnus-insert-prev-page-button): Allow clicking. + (gnus-insert-next-page-button): Ditto. + + * nntp.el (nntp-send-region-to-server): Copy text to a temp buffer + before sending. + + Sun Jan 28 10:28:39 1996 Lars Magne Ingebrigtsen + + * gnus-cite.el (gnus-dissect-cited-text): Don't push a nil on the + list. + + Sat Jan 27 20:32:29 1996 Lars Ingebrigtsen + + * gnus-topic.el (gnus-group-topic-topics-only): Removed variable. + + * nnbabyl.el (nnbabyl-request-group): Don't report failures on + empty groups. + * nnmbox.el (nnmbox-request-group): Ditto. + + * gnus.el (gnus-simplify-buffer-fuzzy): Simplify [x/x]. + + * gnus-score.el (gnus-score-default-header): Duplicate defvars. + (gnus-summary-increase-score): Default variables should be + symbols, not chars. + + * gnus.el (gnus-summary-mode-map): Wrong name for `t' keystroke. + + Sat Jan 27 20:29:45 1996 Marc Auslander + + * gnus-score.el (gnus-summary-increase-score): Didn't work for + non-temporary score entries. + + Fri Jan 26 17:24:00 1996 David K}gedal + + * nnmail.el (nnmail-check-duplication): Don't tread 'delete as a + function + + Sat Jan 27 19:51:08 1996 Lars Ingebrigtsen + + * gnus-topic.el (gnus-topic-prepare-topic): Number of groups would + be 0. + (gnus-topic-update-topic-line): Ditto. + + Fri Jan 26 15:10:09 1996 Steven L. Baur + + * gnus-vis.el (gnus-article-add-buttons): Need to reset point to top + of article before trying the next regexp in the gnus-button-alist. + + Sat Jan 27 19:22:24 1996 Lars Ingebrigtsen + + * gnus-vis.el (gnus-button-alist): Allow space after " + + * gnus-topic.el (gnus-topic-indent-level): New variable. + (gnus-topic-yank-group): Use it. + (gnus-topic-insert-topic-line): Ditto. + (gnus-topic-prepare-topic): Ditto. + + Fri Jan 26 17:18:25 1996 ISO-2022-JP + + * gnus-vis.el (gnus-article-highlight-headers): Would infloop. + + Fri Jan 26 14:10:19 1996 Lars Ingebrigtsen + + * gnus.el (gnus-dribble-read-file): Set file modes on the dribble + file. + (gnus-article-check-hidden-text): Only checked signature. + (gnus-article-check-hidden-text): Do things in the article + buffer. + (gnus-group-line-format-alist): Let N have its old definition. + (gnus-group-catchup-group-hook): New variable. + (gnus-group-catchup): Use it. + (gnus-group-remove-mark): Give a useful return value. + (gnus-group-kill-group): Would bug out when killing lots of dead + groups. + + Thu Jan 25 09:32:19 1996 Jack Vinson + + * gnus.el (gnus-group-insert-group-line) : Changed "header" to + "gnus-tmp-header" for parameter that gets passed to user + functions. Set to the group name, but may not necessarily want + this. + (gnus-group-set-mode-line) : ditto, gnus-tmp-header set to nil. + (gnus-set-mode-line) : ditto, gnus-tmp-header set to nil. + Fri Jan 26 07:47:59 1996 Lars Magne Ingebrigtsen * gnus.el (gnus): Goto the first unread group. + + * gnus.el: 0.32 is released. Thu Jan 25 18:27:03 1996 Lars Ingebrigtsen *** pub/sgnus/texi/Makefile Fri Jan 26 10:48:08 1996 --- sgnus/texi/Makefile Sat Jan 27 16:51:37 1996 *************** *** 3,8 **** --- 3,9 ---- MAKEINFO=$(EMACS) -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer # MAKEINFO=makeinfo -o gnus.info gnus.texi LATEX=latex + DVIPS=dvips all: gnus.info refcard.dvi *************** *** 20,22 **** --- 21,32 ---- makeinfo: makeinfo -o gnus.info gnus.texi + + latex: gnus.texi + $(EMACS) -batch -q -no-site-file gnus.texi -l ./texi2latex.elc -f latexi-translate + + latexps: gnus.latexi + $(LATEX) gnus.latexi ; $(DVIPS) -f gnus.dvi > gnus.ps + + latexboth: gnus.latexi + rm -f gnus-manual-a4.ps.gz gnus-manual-standard.ps.gz ; $(LATEX) gnus.latexi ; $(DVIPS) -f gnus.dvi > gnus-manual-a4.ps ; gzip gnus-manual-a4.ps ; sed 's/,a4paper//' gnus.latexi > gnus-standard.latexi ; $(LATEX) gnus.latexi ; $(DVIPS) -f gnus.dvi > gnus-manual-standard.ps ; gzip gnus-manual-standard.ps *** pub/sgnus/texi/gnus.texi Fri Jan 26 10:48:08 1996 --- sgnus/texi/gnus.texi Sat Feb 3 14:05:27 1996 *************** *** 14,39 **** @iftex @iflatex ! \documentstyle[a4,pagestyle]{book} ! \input{epsf} ! %\addtolength{\oddsidemargin}{2cm} ! %\addtolength{\evensidemargin}{2cm} \makeindex \begin{document} ! \newcommand{\gnuscode}[1]{{\tt #1}} ! \newcommand{\gnussamp}[1]{{\tt #1}} ! \newcommand{\gnuslisp}[1]{{\tt #1}} ! \newcommand{\gnuskbd}[1]{{`\tt #1'}} ! \newcommand{\gnusfile}[1]{{`\tt #1'}} ! \newcommand{\gnusdfn}[1]{{\em #1}} ! \newcommand{\gnusstrong}[1]{{\bf #1}} ! \newcommand{\gnusemph}[1]{{\em #1}} ! \newcommand{\gnusvar}[1]{{\sl #1}} ! \newcommand{\gnussc}[1]{{\sc #1}} ! \newcommand{\gnustitle}[1]{{\huge #1}} ! \newcommand{\gnusauthor}[1]{{\huge #1}} ! \newcommand{\gnusbullet}{{.}} \newenvironment{codelist}% {\begin{list}{}{ --- 14,85 ---- @iftex @iflatex ! \documentclass[twoside,a4paper,openright]{book} ! \usepackage[latin1]{inputenc} ! % \usepackage{fontenc} ! % \usepackage{babel} ! \usepackage{pagestyle} ! \usepackage{epsfig} ! \fontfamily{bembo}\selectfont ! \makeindex \begin{document} ! \newcommand{\gnuschaptername}{} ! \newcommand{\gnussectionname}{} ! ! \newcommand{\gnusbackslash}{/} ! ! \newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}} ! \newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}} ! ! \newcommand{\gnuskindex}[1]{\index{#1}} ! \newcommand{\gnusindex}[1]{\index{#1}} ! ! \newcommand{\gnustt}[1]{{\textbf{\textsf{#1}}}} ! \newcommand{\gnuscode}[1]{\gnustt{#1}} ! \newcommand{\gnussamp}[1]{`\gnustt{#1}'} ! \newcommand{\gnuslisp}[1]{\gnustt{#1}} ! \newcommand{\gnuskbd}[1]{`\gnustt{#1}'} ! \newcommand{\gnusfile}[1]{`\gnustt{#1}'} ! \newcommand{\gnusdfn}[1]{\textit{#1}} ! \newcommand{\gnusi}[1]{\textit{#1}} ! \newcommand{\gnusstrong}[1]{\textbf{#1}} ! \newcommand{\gnusemph}[1]{\textit{#1}} ! \newcommand{\gnusvar}[1]{\textsl{\textsf{#1}}} ! \newcommand{\gnussc}[1]{\textsc{#1}} ! \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}} ! \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}} ! ! \newcommand{\gnusbullet}{{${\bullet}$}} ! \newcommand{\gnusdollar}{\$} ! \newcommand{\gnusampersand}{\&} ! \newcommand{\gnuspercent}{\%} ! \newcommand{\gnushash}{\#} ! \newcommand{\gnushat}{\%} ! \newcommand{\gnustilde}{\%} ! \newcommand{\gnusless}{{$<$}} ! \newcommand{\gnusgreater}{{$>$}} ! ! \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}} ! \newcommand{\gnusinteresting}{ ! \marginpar[\hspace{2.5cm}\gnushead]{\gnushead} ! } ! ! \newcommand{\gnuschapter}[1]{ ! \chapter{#1} ! \renewcommand{\gnuschaptername}{#1} ! \thispagestyle{empty} ! % \epsfig{figure=gnus-herd-\arabic{chapter}.eps,height=15cm} ! \clearpage ! } ! ! \newcommand{\gnusitemx}[1]{{\itemsep=0pt\item#1}} ! ! \newcommand{\gnussection}[1]{ ! \renewcommand{\gnussectionname}{#1} ! \section{#1} ! } \newenvironment{codelist}% {\begin{list}{}{ *************** *** 42,47 **** --- 88,94 ---- \newenvironment{kbdlist}% {\begin{list}{}{ + \labelwidth=0cm } }{\end{list}} *************** *** 70,84 **** } }{\end{list}} \newpagestyle{gnus}% { ! {\underline{\makebox{\hfill}}} } { \ifodd\count0 ! % \epsfbox{foot-gnus.ps} hei \hfill \arabic{page} \else ! \arabic{page} \hfill hei % \epsfbox{foot-gnus} \fi } \pagestyle{gnus} --- 117,167 ---- } }{\end{list}} + \newlength{\headrulewidth} + \setlength{\headrulewidth}{\headtextwidth} + \addtolength{\headrulewidth}{-2.6ex} + \newlength{\headwrule} + \setlength{\headwrule}{\headrulewidth} + \addtolength{\headwrule}{-0ex} + \newpagestyle{gnus}% { ! { ! \ifodd\count0 ! { ! \hspace*{-2ex} ! \underline{ ! \makebox[\headtextwidth]{ ! \hspace*{-2.1ex} ! %\ifnum chapter=0\else ! \textbf{\arabic{chapter}.\arabic{section}} ! %\fi ! \textbf{\gnussectionname\hfill\arabic{page}} ! }} ! %\hspace*{-\headrulewidth} ! %\raisebox{-3pt}{\rule{\headwrule}{0.5pt}} ! } ! \else ! { ! \hspace*{-2.1cm} ! \underline{ ! \hspace*{-2ex} ! \makebox[\headtextwidth]{ ! \textbf{\arabic{page}\hfill\gnuschaptername} ! %\hspace*{-\headrulewidth} ! %\raisebox{-3pt}{\rule{\headwrule}{0.5pt}} ! }} ! } ! \fi ! } } { \ifodd\count0 ! \mbox{} \hfill ! \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} \else ! \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} ! \hfill \mbox{} \fi } \pagestyle{gnus} *************** *** 86,91 **** --- 169,218 ---- @end iflatex @end iftex + @iftex + @iflatex + \begin{titlepage} + { + + %\addtolength{\oddsidemargin}{-5cm} + %\addtolength{\evensidemargin}{-5cm} + \parindent=0cm + \addtolength{\textheight}{2cm} + + \gnustitle{\gnustitlename}\\ + \rule{15cm}{1mm}\\ + \vfill + \hspace*{-1cm}\epsfig{figure=gnus-big-logo.eps,height=15cm} + \vfill + \rule{15cm}{1mm}\\ + \gnusauthor{by Lars Magne Ingebrigtsen} + \newpage + } + + \mbox{} + \vfill + + \thispagestyle{empty} + + Copyright \copyright{} 1995 Free Software Foundation, Inc. + + Permission is granted to make and distribute verbatim copies of + this manual provided the copyright notice and this permission notice + are preserved on all copies. + + Permission is granted to copy and distribute modified versions of this + manual under the conditions for verbatim copying, provided that the + entire resulting derived work is distributed under the terms of a + permission notice identical to this one. + + Permission is granted to copy and distribute translations of this manual + into another language, under the above conditions for modified versions. + + \newpage + \end{titlepage} + @end iflatex + @end iftex + @ifinfo This file documents Gnus, the GNU Emacs newsreader. *************** *** 112,118 **** into another language, under the above conditions for modified versions. @end ifinfo ! @iftex @titlepage @title September Gnus Manual --- 239,245 ---- into another language, under the above conditions for modified versions. @end ifinfo ! @tex @titlepage @title September Gnus Manual *************** *** 138,144 **** @end titlepage @page ! @end iftex @node Top --- 265,271 ---- @end titlepage @page ! @end tex @node Top *************** *** 450,455 **** --- 577,584 ---- highlighting (as well as the @sc{soup} support) was written by Per Abrahamsen. @item + Design and graphics were done by Luis Fernandes. + @item Innumerable bug fixes were written by Sudish Joseph. @item @code{gnus-topic} was written by Ilja Weis. *************** *** 768,774 **** @section Finding the News @vindex gnus-select-method ! The @code{gnus-select-method} variable controls how Gnus finds news. This variable should be a list where the first element says @dfn{how} and the second element says @dfn{where}. This method is your native method. All groups that are not fetched with this method are foreign --- 897,904 ---- @section Finding the News @vindex gnus-select-method ! @c @head ! The @code{gnus-select-method} variable controls how Gnus finds news. This variable should be a list where the first element says @dfn{how} and the second element says @dfn{where}. This method is your native method. All groups that are not fetched with this method are foreign *************** *** 821,826 **** --- 951,957 ---- @xref{Foreign Groups}. @vindex gnus-secondary-select-methods + @c @head A slightly different approach to foreign groups is to set the @code{gnus-secondary-select-methods} variable. The select methods listed in this variable are in many ways just as native as the *************** *** 881,886 **** --- 1012,1018 ---- hey, that's your problem. Blllrph! @findex gnus-no-server + @c @head If you know that the server is definitely down, or you just want to read your mail without bothering with the server at all, you can use the @code{gnus-no-server} command to start Gnus. That might come in handy *************** *** 1154,1159 **** --- 1286,1292 ---- @c if you set it to anything else. @vindex gnus-read-active-file + @c @head The active file can be rather Huge, so if you have a slow network, you can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from reading the active file. This variable is @code{t} by default. *************** *** 1330,1339 **** Newsgroup description. @item o ! Moderated. @item O ! Moderated. @item s Select method. --- 1463,1472 ---- Newsgroup description. @item o ! @samp{m} if moderated. @item O ! @samp{(m)} if moderated. @item s Select method. *************** *** 2532,2539 **** @node SOUP ! @subsection @sc{soup} ! @cindex @sc{SOUP} @cindex offline In the PC world people often talk about ``offline'' newsreaders. These --- 2665,2672 ---- @node SOUP ! @subsection SOUP ! @cindex SOUP @cindex offline In the PC world people often talk about ``offline'' newsreaders. These *************** *** 2599,2605 **** @node SOUP Commands ! @subsubsection @sc{soup} Commands @table @kbd @item G s b --- 2732,2738 ---- @node SOUP Commands ! @subsubsection SOUP Commands @table @kbd @item G s b *************** *** 2746,2752 **** @node SOUP Replies ! @subsubsection @sc{SOUP} Replies Just using @code{nnsoup} won't mean that your postings and mailings end up in @sc{soup} reply packets automagically. You have to work a bit --- 2879,2885 ---- @node SOUP Replies ! @subsubsection SOUP Replies Just using @code{nnsoup} won't mean that your postings and mailings end up in @sc{soup} reply packets automagically. You have to work a bit *************** *** 2896,2901 **** --- 3029,3056 ---- You can turn this feature off completely by setting the variable to @code{nil}. + If you want all the duplicate mails to be put into a special + @dfn{duplicates} group, you could do that using the normal mail split + methods: + + @lisp + (setq nnmail-split-fancy + '(| ;; Messages duplicates go to a separate group. + ("gnus-warning" "duplication of message" "duplicate") + ;; Message from deamons, postmaster, and the like to another. + (any mail "mail.misc") + ;; Other rules. + [ ... ] )) + @end lisp + + Or something like: + @lisp + (setq nnmail-split-methods + '(("duplicates" "^Gnus-Warning:") + ;; Other rules. + [...])) + @end lisp + Here's a neat feature: If you know that the recipient reads her mail with Gnus, and that she has @code{nnmail-treat-duplicates} set to @code{delete}, you can send her as many insults as you like, just by *************** *** 3919,3932 **** @cindex topic variables - @vindex gnus-group-topic-topics-only - Whoo, this is complicated. If @code{gnus-group-topic-topics-only} is - @code{nil}, all groups and topics will be listed, as you would expect. - If this variable is non-@code{nil}, only the topics will be listed, and - the groups will not be listed. This makes the group buffer much shorter, - I'm sure you'll agree. This is all modified on a topic-by-topic basis - by the @var{show} parameter. It makes perfect sense, really. - @vindex gnus-topic-unique If @code{gnus-topic-unique} is non-@code{nil}, each group will be member of (tops) one topic each. If this is @code{nil}, each group might end --- 4074,4079 ---- *************** *** 3957,3962 **** --- 4104,4114 ---- Number of unread articles in the topic and all its subtopics. @end table + @vindex gnus-topic-indent-level + Each sub-topic (and the groups in the sub-topics) will be indented with + @code{gnus-topic-indent-level} times the topic level number of spaces. + The default is @samp{2}. + @node Topic Commands @subsection Topic Commands *************** *** 4011,4016 **** --- 4163,4175 ---- toggling command on topics. In addition, if you give a numerical prefix, group on that level (and lower) will be displayed. + @item TAB + @kindex TAB (Group) + @findex gnus-topic-indent + ``Indent'' the current topic so that it becomes a sub-topic of the + previous topic (@code{gnus-topic-indent}). If given a prefix, + ``un-indent'' the topic instead. + @item C-k @kindex C-k (Group) @findex gnus-topic-kill-group *************** *** 4889,4894 **** --- 5048,5065 ---- thing, you will be prompted for a mail group, and then the article will be put there. This means that the article is @dfn{not} mailed. + @findex gnus-kill-message-buffer + @cindex kill mail buffer + @kindex C-x k (Mail) + @kindex C-x k (Post) + If enter a mail (or post) buffer and then decide not to compose a + message after all, you'd normally just kill the buffer with @kbd{C-x k}. + However, since the mail and post buffers are associated with articles in + the draft group, this will leave lots of rubbish articles in the draft + group. To avoid that problem, kill mail and post buffer with @kbd{C-c + C-k} (@code{gnus-kill-message-buffer}) instead. This will make sure + that everything is properly cleaned up before the buffer is killed. + There are three ``methods'' for handling all mail. The default is @code{sendmail}. Some people like what @code{mh} does better, and some people prefer @code{vm}. *************** *** 6334,6339 **** --- 6505,6513 ---- "\\|") "\\)?\\]?:?[ \t]*")) @end lisp + + All words that match this regexp will be removed before comparing two + subjects. @item gnus-summary-gather-exclude-subject @vindex gnus-summary-gather-exclude-subject *** pub/sgnus/texi/ChangeLog Fri Jan 26 10:48:07 1996 --- sgnus/texi/ChangeLog Fri Feb 2 20:53:12 1996 *************** *** 1,3 **** --- 1,21 ---- + Fri Feb 2 20:41:56 1996 Lars Ingebrigtsen + + * gnus.texi (Reading Mail): Addition. + + Wed Jan 31 20:20:43 1996 Lars Ingebrigtsen + + * gnus.texi (Mail): Addition. + + Sat Jan 27 21:13:34 1996 Lars Ingebrigtsen + + * gnus.texi (Topic Variables): Deletia. + + Fri Jan 26 13:50:23 1996 Lars Ingebrigtsen + + * gnus.texi (Customizing Threading): Addition. + (Topic Commands): Addition. + (Topic Variables): Addition. + Thu Jan 25 18:35:12 1996 Lars Ingebrigtsen * gnus.texi (Summary Maneuvering): Addition.