*** pub/sgnus/lisp/gnus-msg.el Sat Mar 23 01:48:06 1996 --- sgnus/lisp/gnus-msg.el Sun Mar 24 02:52:27 1996 *************** *** 2678,2686 **** ;; Create a mail buffer. (gnus-new-empty-mail) (erase-buffer) ! (insert-buffer-substring gnus-article-buffer) (goto-char (point-min)) ! (or (re-search-forward mail-unsent-separator nil t) (and (search-forward "\n\n" nil t) (re-search-forward "^Return-Path:.*\n" nil t))) ;; We remove everything before the bounced mail. --- 2678,2687 ---- ;; Create a mail buffer. (gnus-new-empty-mail) (erase-buffer) ! (insert-buffer-substring gnus-original-article-buffer) (goto-char (point-min)) ! (or (and (re-search-forward mail-unsent-separator nil t) ! (forward-line 1)) (and (search-forward "\n\n" nil t) (re-search-forward "^Return-Path:.*\n" nil t))) ;; We remove everything before the bounced mail. *** pub/sgnus/lisp/gnus-topic.el Sat Mar 23 01:48:08 1996 --- sgnus/lisp/gnus-topic.el Sun Mar 24 02:52:26 1996 *************** *** 87,93 **** (defun gnus-group-topic-unread () "The number of unread articles in topic on the current line." ! (get-text-property (gnus-point-at-bol) 'gnus-unread)) (defun gnus-topic-init-alist () "Initialize the topic structures." --- 87,93 ---- (defun gnus-group-topic-unread () "The number of unread articles in topic on the current line." ! (get-text-property (gnus-point-at-bol) 'gnus-topic-unread)) (defun gnus-topic-init-alist () "Initialize the topic structures." *************** *** 300,306 **** (gnus-topic-remove-excess-properties)) (list 'gnus-topic (intern name) 'gnus-topic-level level ! 'gnus-unread unread 'gnus-active active-topic 'gnus-topic-visible visiblep)))) --- 300,306 ---- (gnus-topic-remove-excess-properties)) (list 'gnus-topic (intern name) 'gnus-topic-level level ! 'gnus-topic-unread unread 'gnus-active active-topic 'gnus-topic-visible visiblep)))) *************** *** 564,570 **** "\C-k" gnus-topic-kill-group "\C-y" gnus-topic-yank-group "\M-g" gnus-topic-get-new-news-this-topic - "\C-i" gnus-topic-indent "AT" gnus-topic-list-active gnus-mouse-2 gnus-mouse-pick-topic) --- 564,569 ---- *************** *** 581,586 **** --- 580,587 ---- "s" gnus-topic-show-topic "M" gnus-topic-move-matching "C" gnus-topic-copy-matching + "\C-i" gnus-topic-indent + [tab] gnus-topic-indent "r" gnus-topic-rename "\177" gnus-topic-delete)) *** pub/sgnus/lisp/gnus.el Sat Mar 23 01:48:15 1996 --- sgnus/lisp/gnus.el Sun Mar 24 02:52:23 1996 *************** *** 932,937 **** --- 932,941 ---- (summary 0.25 point) (if gnus-carpal '(summary-carpal 4)) ("*Shell Command Output*" 1.0))) + (compose-bounce + (vertical 1.0 + (article 0.5) + (mail 1.0 point))) (followup (vertical 1.0 (article-copy 0.5) *************** *** 1715,1721 **** "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "September Gnus v0.56" "Version number for this version of Gnus.") (defvar gnus-info-nodes --- 1719,1725 ---- "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "September Gnus v0.57" "Version number for this version of Gnus.") (defvar gnus-info-nodes *************** *** 2285,2290 **** --- 2289,2313 ---- (require 'gnus-ems) + ;;; + ;;; Shutdown + ;;; + + (defvar gnus-shutdown-alist nil) + + (defun gnus-add-shutdown (function &rest symbols) + "Run FUNCTION whenever one of SYMBOLS is shut down." + (push (cons function symbols) gnus-shutdown-alist)) + + (defun gnus-shutdown (symbol) + "Shut down everything that waits for SYMBOL." + (let ((alist gnus-shutdown-alist) + entry) + (while (setq entry (pop alist)) + (when (memq symbol (cdr entry)) + (funcall (car entry)))))) + + ;; Format specs. The chunks below are the machine-generated forms ;; that are to be evaled as the result of the default format strings. *************** *** 4791,4799 **** (- (1+ (cdr active)) (car active)) 0) nil)))) ! (defun gnus-group-insert-group-line ! (gnus-tmp-group gnus-tmp-level gnus-tmp-marked number ! gnus-tmp-method) "Insert a group line in the group buffer." (let* ((gnus-tmp-active (gnus-active gnus-tmp-group)) (gnus-tmp-number-total --- 4814,4822 ---- (- (1+ (cdr active)) (car active)) 0) nil)))) ! (defun gnus-group-insert-group-line (gnus-tmp-group gnus-tmp-level ! gnus-tmp-marked number ! gnus-tmp-method) "Insert a group line in the group buffer." (let* ((gnus-tmp-active (gnus-active gnus-tmp-group)) (gnus-tmp-number-total *************** *** 4856,4862 **** gnus-marked ,gnus-tmp-marked-mark gnus-indentation ,gnus-group-indentation gnus-level ,gnus-tmp-level)) ! (when (gnus-visual-p 'group-highlight 'highlight) (forward-line -1) (run-hooks 'gnus-group-update-hook) (forward-line)) --- 4879,4885 ---- gnus-marked ,gnus-tmp-marked-mark gnus-indentation ,gnus-group-indentation gnus-level ,gnus-tmp-level)) ! (when (inline (gnus-visual-p 'group-highlight 'highlight)) (forward-line -1) (run-hooks 'gnus-group-update-hook) (forward-line)) *************** *** 5331,5337 **** (while (setq unread (get-text-property (point) 'gnus-unread)) (if (and (numberp unread) (> unread 0)) (progn ! (if (and (< (get-text-property (point) 'gnus-level) best) (or (not exclude-group) (not (equal exclude-group (gnus-group-group-name))))) (progn --- 5354,5361 ---- (while (setq unread (get-text-property (point) 'gnus-unread)) (if (and (numberp unread) (> unread 0)) (progn ! (if (and (get-text-property (point) 'gnus-level) ! (< (get-text-property (point) 'gnus-level) best) (or (not exclude-group) (not (equal exclude-group (gnus-group-group-name))))) (progn *************** *** 6280,6287 **** (buffer-read-only nil)) (erase-buffer) (while groups ! (gnus-group-insert-group-line-info (car groups)) ! (setq groups (cdr groups))) (goto-char (point-min)))) (defun gnus-activate-all-groups (level) --- 6304,6310 ---- (buffer-read-only nil)) (erase-buffer) (while groups ! (gnus-group-insert-group-line-info (pop groups))) (goto-char (point-min)))) (defun gnus-activate-all-groups (level) *************** *** 13046,13052 **** (gnus-summary-goto-subject after-article) (forward-line 1) (setq b (point)) ! (insert " " (file-name-nondirectory (cdr (assq 'name (car pslist)))) ": " (or (cdr (assq 'execute (car pslist))) "") "\n") (setq e (point)) --- 13069,13075 ---- (gnus-summary-goto-subject after-article) (forward-line 1) (setq b (point)) ! (insert " " (file-name-nondirectory (cdr (assq 'name (car pslist)))) ": " (or (cdr (assq 'execute (car pslist))) "") "\n") (setq e (point)) *************** *** 15427,15432 **** --- 15450,15542 ---- (setcdr killed (delete (car killed) (cdr killed))) (setq killed (cdr killed))))) + ;; We want to inline a function from gnus-cache, so we cheat here: + (eval-when-compile + (provide 'gnus) + (require 'gnus-cache)) + + (defun gnus-get-unread-articles-in-group (info active &optional update) + (when active + ;; Allow the backend to update the info in the group. + (when (and update + (gnus-request-update-info + info (gnus-find-method-for-group (gnus-info-group info)))) + (gnus-activate-group (gnus-info-group info))) + (let* ((range (gnus-info-read info)) + (num 0)) + ;; If a cache is present, we may have to alter the active info. + (when (and gnus-use-cache info) + (inline (gnus-cache-possibly-alter-active + (gnus-info-group info) active))) + ;; Modify the list of read articles according to what articles + ;; are available; then tally the unread articles and add the + ;; number to the group hash table entry. + (cond + ((zerop (cdr active)) + (setq num 0)) + ((not range) + (setq num (- (1+ (cdr active)) (car active)))) + ((not (listp (cdr range))) + ;; Fix a single (num . num) range according to the + ;; active hash table. + ;; Fix by Carsten Bormann . + (and (< (cdr range) (car active)) (setcdr range (1- (car active)))) + (and (> (cdr range) (cdr active)) (setcdr range (cdr active))) + ;; Compute number of unread articles. + (setq num (max 0 (- (cdr active) (- (1+ (cdr range)) (car range)))))) + (t + ;; The read list is a list of ranges. Fix them according to + ;; the active hash table. + ;; First peel off any elements that are below the lower + ;; active limit. + (while (and (cdr range) + (>= (car active) + (or (and (atom (cadr range)) (cadr range)) + (caadr range)))) + (if (numberp (car range)) + (setcar range + (cons (car range) + (or (and (numberp (cadr range)) + (cadr range)) + (cdadr range)))) + (setcdr (car range) + (or (and (numberp (nth 1 range)) (nth 1 range)) + (cdadr range)))) + (setcdr range (cddr range))) + ;; Adjust the first element to be the same as the lower limit. + (if (and (not (atom (car range))) + (< (cdar range) (car active))) + (setcdr (car range) (1- (car active)))) + ;; Then we want to peel off any elements that are higher + ;; than the upper active limit. + (let ((srange range)) + ;; Go past all legal elements. + (while (and (cdr srange) + (<= (or (and (atom (cadr srange)) + (cadr srange)) + (caadr srange)) (cdr active))) + (setq srange (cdr srange))) + (if (cdr srange) + ;; Nuke all remaining illegal elements. + (setcdr srange nil)) + + ;; Adjust the final element. + (if (and (not (atom (car srange))) + (> (cdar srange) (cdr active))) + (setcdr (car srange) (cdr active)))) + ;; Compute the number of unread articles. + (while range + (setq num (+ num (- (1+ (or (and (atom (car range)) (car range)) + (cdar range))) + (or (and (atom (car range)) (car range)) + (caar range))))) + (setq range (cdr range))) + (setq num (max 0 (- (cdr active) num))))) + ;; Set the number of unread articles. + (when info + (setcar (gnus-gethash (gnus-info-group info) gnus-newsrc-hashtb) num)) + num))) + ;; Go though `gnus-newsrc-alist' and compare with `gnus-active-hashtb' ;; and compute how many unread articles there are in each group. (defun gnus-get-unread-articles (&optional level) *************** *** 15456,15462 **** (if (and (setq method (gnus-info-method info)) (not (gnus-server-equal gnus-select-method ! (gnus-server-get-method nil method))) (not (gnus-secondary-method-p method))) ;; These groups are foreign. Check the level. (when (<= (gnus-info-level info) foreign-level) --- 15566,15572 ---- (if (and (setq method (gnus-info-method info)) (not (gnus-server-equal gnus-select-method ! (setq method (gnus-server-get-method nil method)))) (not (gnus-secondary-method-p method))) ;; These groups are foreign. Check the level. (when (<= (gnus-info-level info) foreign-level) *************** *** 15470,15476 **** (gnus-close-group group))) (if active ! (gnus-get-unread-articles-in-group info active t) ;; The group couldn't be reached, so we nix out the number of ;; unread articles and stuff. (gnus-set-active group nil) --- 15580,15590 ---- (gnus-close-group group))) (if active ! (inline (gnus-get-unread-articles-in-group ! info active ! (and method ! (fboundp (intern (concat (symbol-name (car method)) ! "-request-scan")))))) ;; The group couldn't be reached, so we nix out the number of ;; unread articles and stuff. (gnus-set-active group nil) *************** *** 15511,15597 **** (while list (gnus-sethash (car list) (pop list) gnus-killed-hashtb))))) - (defun gnus-get-unread-articles-in-group (info active &optional update) - (when active - ;; Allow the backend to update the info in the group. - (when (and update - (gnus-request-update-info - info (gnus-find-method-for-group (gnus-info-group info)))) - (gnus-activate-group (gnus-info-group info))) - (let* ((range (gnus-info-read info)) - (num 0)) - ;; If a cache is present, we may have to alter the active info. - (when (and gnus-use-cache info) - (gnus-cache-possibly-alter-active (gnus-info-group info) active)) - ;; Modify the list of read articles according to what articles - ;; are available; then tally the unread articles and add the - ;; number to the group hash table entry. - (cond - ((zerop (cdr active)) - (setq num 0)) - ((not range) - (setq num (- (1+ (cdr active)) (car active)))) - ((not (listp (cdr range))) - ;; Fix a single (num . num) range according to the - ;; active hash table. - ;; Fix by Carsten Bormann . - (and (< (cdr range) (car active)) (setcdr range (1- (car active)))) - (and (> (cdr range) (cdr active)) (setcdr range (cdr active))) - ;; Compute number of unread articles. - (setq num (max 0 (- (cdr active) (- (1+ (cdr range)) (car range)))))) - (t - ;; The read list is a list of ranges. Fix them according to - ;; the active hash table. - ;; First peel off any elements that are below the lower - ;; active limit. - (while (and (cdr range) - (>= (car active) - (or (and (atom (cadr range)) (cadr range)) - (caadr range)))) - (if (numberp (car range)) - (setcar range - (cons (car range) - (or (and (numberp (cadr range)) - (cadr range)) - (cdadr range)))) - (setcdr (car range) - (or (and (numberp (nth 1 range)) (nth 1 range)) - (cdadr range)))) - (setcdr range (cddr range))) - ;; Adjust the first element to be the same as the lower limit. - (if (and (not (atom (car range))) - (< (cdar range) (car active))) - (setcdr (car range) (1- (car active)))) - ;; Then we want to peel off any elements that are higher - ;; than the upper active limit. - (let ((srange range)) - ;; Go past all legal elements. - (while (and (cdr srange) - (<= (or (and (atom (cadr srange)) - (cadr srange)) - (caadr srange)) (cdr active))) - (setq srange (cdr srange))) - (if (cdr srange) - ;; Nuke all remaining illegal elements. - (setcdr srange nil)) - - ;; Adjust the final element. - (if (and (not (atom (car srange))) - (> (cdar srange) (cdr active))) - (setcdr (car srange) (cdr active)))) - ;; Compute the number of unread articles. - (while range - (setq num (+ num (- (1+ (or (and (atom (car range)) (car range)) - (cdar range))) - (or (and (atom (car range)) (car range)) - (caar range))))) - (setq range (cdr range))) - (setq num (max 0 (- (cdr active) num))))) - ;; Set the number of unread articles. - (when info - (setcar (gnus-gethash (gnus-info-group info) gnus-newsrc-hashtb) num)) - num))) - (defun gnus-activate-group (group &optional scan) ;; Check whether a group has been activated or not. ;; If SCAN, request a scan of that group as well. --- 15625,15630 ---- *************** *** 16539,16563 **** (goto-char (point-min)) (when (looking-at "[^ \t]+[ \t]+\\(.*\\)") (match-string 1))))) - - - ;;; - ;;; Shutdown - ;;; - - (defvar gnus-shutdown-alist nil) - - (defun gnus-add-shutdown (function &rest symbols) - "Run FUNCTION whenever one of SYMBOLS is shut down." - (push (cons function symbols) gnus-shutdown-alist)) - - (defun gnus-shutdown (symbol) - "Shut down everything that waits for SYMBOL." - (let ((alist gnus-shutdown-alist) - entry) - (while (setq entry (pop alist)) - (when (memq symbol (cdr entry)) - (funcall (car entry)))))) ;;; --- 16572,16577 ---- *** pub/sgnus/lisp/nnspool.el Sat Mar 23 01:48:16 1996 --- sgnus/lisp/nnspool.el Sun Mar 24 01:27:26 1996 *************** *** 412,427 **** (setq min (point))) (t (setq found t))))) (when (not (eq num article)) (setq found (point)) ! (forward-line 1) ! (or (eobp) ! (= (setq num (read cur)) article) ! (goto-char found))) (beginning-of-line) (eq num article))) - (defun nnspool-sift-nov-with-sed (articles file) (let ((first (car articles)) (last (progn (while (cdr articles) (setq articles (cdr articles))) --- 412,432 ---- (setq min (point))) (t (setq found t))))) + ;; Now we may have found the article we're looking for, or we + ;; may be somewhere near it. (when (not (eq num article)) (setq found (point)) ! (while (and (< (point) max) ! (< num article)) ! (forward-line 1) ! (setq found (point)) ! (or (eobp) ! (= (setq num (read cur)) article))) ! (unless (eq num article) ! (goto-char found))) (beginning-of-line) (eq num article))) (defun nnspool-sift-nov-with-sed (articles file) (let ((first (car articles)) (last (progn (while (cdr articles) (setq articles (cdr articles))) *** pub/sgnus/lisp/ChangeLog Sat Mar 23 01:48:25 1996 --- sgnus/lisp/ChangeLog Sun Mar 24 02:52:25 1996 *************** *** 1,4 **** --- 1,35 ---- + Sun Mar 24 00:00:33 1996 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-insert-topic-line): Would mess up the + `.' command. + (gnus-topic-mode-map): Moved `gnus-topic-indent' to `T TAB'. + + * gnus-msg.el (gnus-summary-resend-bounced-mail): Would do odd + things. + + * gnus.el (gnus-buffer-configuration): Add compose-bounce. + + * nnspool.el (nnspool-find-nov-line): Would cut off ends of NOV + files. + + Fri Mar 22 21:46:18 1996 David Kågedal + + * gnus.el (gnus-group-best-unread-group): Didn't work with topics. + + Sat Mar 23 05:45:38 1996 Lars Magne Ingebrigtsen + + * gnus.el (gnus-get-unread-articles): Inline + `gnus-get-unread-articles-in-group'. + (gnus-get-unread-articles-in-group): Inline + `gnus-cache-possibly-alter-active'. + + Sat Mar 23 01:26:10 1996 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-insert-pseudos): Would print out tabs. + Sat Mar 23 00:01:56 1996 Lars Magne Ingebrigtsen + + * gnus.el: September Gnus v0.56 is released. * gnus.el (gnus-group-add-score): Would bug out on dead groups. *** pub/sgnus/texi/gnus.texi Sat Mar 23 01:48:29 1996 --- sgnus/texi/gnus.texi Sun Mar 24 02:52:25 1996 *************** *** 2285,2292 **** 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, --- 2285,2292 ---- toggling command on topics. In addition, if you give a numerical prefix, group on that level (and lower) will be displayed. ! @item T TAB ! @kindex T 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,