*** pub/dgnus/lisp/gnus-cache.el Sat Jun 10 01:44:31 1995 --- dgnus/lisp/gnus-cache.el Wed Jun 14 15:02:36 1995 *************** *** 103,113 **** gnus-cache-enter-articles ticked dormant unread)) (file-exists-p (setq file (gnus-cache-file-name group article)))) () ! (gnus-summary-select-article) (or (file-exists-p (setq dir (file-name-directory file))) (gnus-make-directory dir)) (if (file-exists-p file) ! t (save-excursion (set-buffer gnus-article-buffer) (write-region (point-min) (point-max) file nil 'quiet) --- 103,115 ---- gnus-cache-enter-articles ticked dormant unread)) (file-exists-p (setq file (gnus-cache-file-name group article)))) () ! ;; Possibly create the cache directory. (or (file-exists-p (setq dir (file-name-directory file))) (gnus-make-directory dir)) + ;; Save the article in the cache. (if (file-exists-p file) ! t ; The article already is saved, so we end here. ! (gnus-summary-select-article) (save-excursion (set-buffer gnus-article-buffer) (write-region (point-min) (point-max) file nil 'quiet) *** pub/dgnus/lisp/gnus-msg.el Sat Jun 10 01:44:31 1995 --- dgnus/lisp/gnus-msg.el Wed Jun 14 14:51:09 1995 *************** *** 219,224 **** --- 219,225 ---- ;;; Internal variables. (defvar gnus-post-news-buffer "*post-news*") + (defvar gnus-mail-buffer "*mail*") (defvar gnus-summary-send-map nil) (defvar gnus-article-copy nil) (defvar gnus-reply-subject nil) *************** *** 849,855 **** (message-id nil) (distribution nil)) (or (gnus-member-of-valid 'post gnus-newsgroup-name) ! (error "This backend does not support cancelling")) (save-excursion ;; Get header info. from original article. (save-restriction --- 850,856 ---- (message-id nil) (distribution nil)) (or (gnus-member-of-valid 'post gnus-newsgroup-name) ! (error "This backend does not support canceling")) (save-excursion ;; Get header info. from original article. (save-restriction *************** *** 1356,1362 **** "Really send a nastygram to the author of the current article? ")) (let ((group gnus-newsgroup-name)) (gnus-summary-reply-with-original n) ! (set-buffer "*mail*") (insert (format gnus-nastygram-message group)) (gnus-mail-send-and-exit)))) --- 1357,1363 ---- "Really send a nastygram to the author of the current article? ")) (let ((group gnus-newsgroup-name)) (gnus-summary-reply-with-original n) ! (set-buffer gnus-mail-buffer) (insert (format gnus-nastygram-message group)) (gnus-mail-send-and-exit)))) *************** *** 1378,1384 **** (winconf (current-window-configuration)) from subject date to reply-to message-of references message-id sender follow-to cc sendto elt) ! (set-buffer (get-buffer-create "*mail*")) (mail-mode) (make-local-variable 'gnus-article-reply) (setq gnus-article-reply cur) --- 1379,1385 ---- (winconf (current-window-configuration)) from subject date to reply-to message-of references message-id sender follow-to cc sendto elt) ! (set-buffer (get-buffer-create gnus-mail-buffer)) (mail-mode) (make-local-variable 'gnus-article-reply) (setq gnus-article-reply cur) *** pub/dgnus/lisp/gnus-score.el Sat Jun 10 01:44:32 1995 --- dgnus/lisp/gnus-score.el Wed Jun 14 14:51:22 1995 *************** *** 62,69 **** ;; Internal variables. (defvar gnus-adaptive-score-alist gnus-default-adaptive-score-alist) - (defvar gnus-score-trace nil) (defvar gnus-score-alist nil --- 62,69 ---- ;; Internal variables. + (defvar gnus-score-help-winconf nil) (defvar gnus-adaptive-score-alist gnus-default-adaptive-score-alist) (defvar gnus-score-trace nil) (defvar gnus-score-alist nil *************** *** 168,175 **** (and (get-buffer "*Score Help*") (progn ! (delete-windows-on "*Score Help*") ! (kill-buffer "*Score Help*"))) (or (setq entry (assq (downcase hchar) char-to-header)) (progn --- 168,175 ---- (and (get-buffer "*Score Help*") (progn ! (kill-buffer "*Score Help*") ! (set-window-configuration gnus-score-help-winconf))) (or (setq entry (assq (downcase hchar) char-to-header)) (progn *************** *** 206,212 **** (and (get-buffer "*Score Help*") (progn ! (delete-windows-on "*Score Help*") (kill-buffer "*Score Help*"))) (or (setq type (nth 1 (assq (downcase tchar) char-to-type))) --- 206,212 ---- (and (get-buffer "*Score Help*") (progn ! (set-window-configuration gnus-score-help-winconf) (kill-buffer "*Score Help*"))) (or (setq type (nth 1 (assq (downcase tchar) char-to-type))) *************** *** 238,244 **** (and (get-buffer "*Score Help*") (progn ! (delete-windows-on "*Score Help*") (kill-buffer "*Score Help*"))) (if mimic (message "%c %c %c" prefix hchar tchar pchar) --- 238,244 ---- (and (get-buffer "*Score Help*") (progn ! (set-window-configuration gnus-score-help-winconf) (kill-buffer "*Score Help*"))) (if mimic (message "%c %c %c" prefix hchar tchar pchar) *************** *** 267,272 **** --- 267,273 ---- ))) (defun gnus-score-insert-help (string alist idx) + (setq gnus-score-help-winconf (current-window-configuration)) (save-excursion (pop-to-buffer "*Score Help*") (buffer-disable-undo (current-buffer)) *************** *** 289,295 **** "Enter score file entry. HEADER is the header being scored. MATCH is the string we are looking for. ! TYPE is a flag indicating if it is a regexp or substring. SCORE is the score to add. DATE is the expire date, or nil for no expire, or 'now for immediate expire. If optional argument `PROMPT' is non-nil, allow user to edit match. --- 290,296 ---- "Enter score file entry. HEADER is the header being scored. MATCH is the string we are looking for. ! TYPE is the match type: substring, regexp, exact, fuzzy. SCORE is the score to add. DATE is the expire date, or nil for no expire, or 'now for immediate expire. If optional argument `PROMPT' is non-nil, allow user to edit match. *************** *** 308,314 **** ((y-or-n-p "Expire kill? ") (current-time-string)) (t nil)))) ! (if (or (eq type 'r) (eq type 's)) (setq match (gnus-simplify-subject-re match))) (let ((score (gnus-score-default score)) (header (downcase header))) --- 309,318 ---- ((y-or-n-p "Expire kill? ") (current-time-string)) (t nil)))) ! ;; Regexp is the default type. ! (if (eq type t) (setq type 'r)) ! ;; Simplify matches... ! (if (or (eq type 'r) (eq type 's) (eq type nil)) (setq match (gnus-simplify-subject-re match))) (let ((score (gnus-score-default score)) (header (downcase header))) *** pub/dgnus/lisp/gnus-soup.el Sat Jun 10 01:44:32 1995 --- dgnus/lisp/gnus-soup.el Wed Jun 14 15:05:38 1995 *************** *** 2,7 **** --- 2,8 ---- ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Per Abrahamsen + ;; Lars Magne Ingebrigtsen ;; Keywords: news, mail ;; This file is part of GNU Emacs. *************** *** 423,428 **** --- 424,431 ---- (gnus-soup-parse-areas (concat gnus-soup-directory "AREAS"))))) (defun gnus-soup-write-areas () + "Write all areas to disk." + (interactive) (if (not gnus-soup-areas) () (save-excursion *** pub/dgnus/lisp/gnus-uu.el Sat Jun 10 01:44:34 1995 --- dgnus/lisp/gnus-uu.el Wed Jun 14 15:02:43 1995 *************** *** 424,432 **** (defun gnus-uu-digest-mail-forward (n &optional post) "Digests and forwards all articles in this series." (interactive "P") - (gnus-uu-initialize) (let ((gnus-uu-save-in-digest t) ! (file (concat gnus-uu-work-dir (make-temp-name "forward"))) (winconf (current-window-configuration)) buf) (gnus-uu-decode-save n file) --- 424,431 ---- (defun gnus-uu-digest-mail-forward (n &optional post) "Digests and forwards all articles in this series." (interactive "P") (let ((gnus-uu-save-in-digest t) ! (file (make-temp-name (concat gnus-uu-tmp-dir "forward"))) (winconf (current-window-configuration)) buf) (gnus-uu-decode-save n file) *************** *** 449,454 **** --- 448,454 ---- (if post (gnus-forward-using-post) (funcall gnus-mail-forward-method)) + (delete-file file) (kill-buffer buf))) (defun gnus-uu-digest-post-forward (n) *** pub/dgnus/lisp/gnus.el Sat Jun 10 01:44:35 1995 --- dgnus/lisp/gnus.el Thu Jun 15 04:09:04 1995 *************** *** 542,547 **** --- 542,551 ---- Articles with scores closer than this to `gnus-summary-default-score' will not be marked.") + (defvar gnus-simplify-subject-fuzzy-regexp nil + "*Regular expression that will be removed from subject strings if + fuzzy subject simplification is selected.") + (defvar gnus-group-default-list-level gnus-level-subscribed "*Default listing level. Ignored if `gnus-group-use-permanent-levels' is nil.") *************** *** 719,725 **** (summary-carpal . gnus-carpal-summary-buffer) (server-carpal . gnus-carpal-server-buffer) (browse-carpal . gnus-carpal-browse-buffer) ! (mail . "*mail*") (post . gnus-post-news-buffer)) "Mapping from short symbols to buffer names or buffer variables.") --- 723,729 ---- (summary-carpal . gnus-carpal-summary-buffer) (server-carpal . gnus-carpal-server-buffer) (browse-carpal . gnus-carpal-browse-buffer) ! (mail . gnus-mail-buffer) (post . gnus-post-news-buffer)) "Mapping from short symbols to buffer names or buffer variables.") *************** *** 795,801 **** (defvar gnus-ancient-mark ?A "*Mark used for ancient articles.") (defvar gnus-canceled-mark ?G ! "*Mark used for cancelled articles.") (defvar gnus-score-over-mark ?+ "*Score mark used for articles with high scores.") (defvar gnus-score-below-mark ?- --- 799,805 ---- (defvar gnus-ancient-mark ?A "*Mark used for ancient articles.") (defvar gnus-canceled-mark ?G ! "*Mark used for canceled articles.") (defvar gnus-score-over-mark ?+ "*Score mark used for articles with high scores.") (defvar gnus-score-below-mark ?- *************** *** 1283,1289 **** (defconst gnus-maintainer "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls & Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "(ding) Gnus v0.85" "Version number for this version of Gnus.") (defvar gnus-info-nodes --- 1287,1293 ---- (defconst gnus-maintainer "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls & Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "(ding) Gnus v0.86" "Version number for this version of Gnus.") (defvar gnus-info-nodes *************** *** 1765,1770 **** --- 1769,1776 ---- (and (string-match "(.+)" from) (setq name (substring from (1+ (match-beginning 0)) (1- (match-end 0))))) + (and (string-match "()" from) + (setq name address)) ;; Fix by MORIOKA Tomohiko . ;; XOVER might not support folded From headers. (and (string-match "(.*" from) *************** *** 2217,2223 **** (replace-match "" t t)) (goto-char (point-min)) (while (re-search-forward "^[ \t]+" nil t) ! (replace-match "" t t))) ;; Add the current buffer to the list of buffers to be killed on exit. (defun gnus-add-current-to-buffer-list () --- 2223,2233 ---- (replace-match "" t t)) (goto-char (point-min)) (while (re-search-forward "^[ \t]+" nil t) ! (replace-match "" t t)) ! (if gnus-simplify-subject-fuzzy-regexp ! (while (re-search-forward gnus-simplify-subject-fuzzy-regexp nil t) ! (replace-match "" t t))) ! ) ;; Add the current buffer to the list of buffers to be killed on exit. (defun gnus-add-current-to-buffer-list () *************** *** 4698,4703 **** --- 4708,4716 ---- gnus-expert-user (gnus-y-or-n-p "Are you sure you want to quit reading news? ")) (progn + (if gnus-use-full-window + (delete-other-windows) + (gnus-remove-some-windows)) (run-hooks 'gnus-exit-gnus-hook) (gnus-offer-save-summaries) (gnus-save-newsrc-file) *************** *** 4728,4733 **** --- 4741,4749 ---- (file-name-nondirectory gnus-current-startup-file)))) (progn (run-hooks 'gnus-exit-gnus-hook) + (if gnus-use-full-window + (delete-other-windows) + (gnus-remove-some-windows)) (gnus-dribble-save) (gnus-close-backends) (gnus-clear-system)))) *************** *** 6178,6198 **** gnus-newsgroup-name))) (progn (gnus-get-newsgroup-headers-xover articles)) (gnus-get-newsgroup-headers))) ! ;; If we were to fetch old headers, but the backend didn't ! ;; support XOVER, then it is possible we fetched one article ! ;; that we shouldn't have. If that's the case, we pop it off the ! ;; list of headers. ! (and (not (eq gnus-headers-retrieved-by 'nov)) ! gnus-fetch-old-headers ! gnus-newsgroup-headers ! (/= (header-number (car gnus-newsgroup-headers)) (car articles)) ! (let ((val (gnus-gethash ! (downcase (header-id (car gnus-newsgroup-headers))) ! gnus-newsgroup-dependencies))) ! (and val (setcar val nil)) ! (setq gnus-newsgroup-headers (cdr gnus-newsgroup-headers)))) ! ;; Remove cancelled articles from the list of unread articles. (setq gnus-newsgroup-unreads (gnus-set-sorted-intersection gnus-newsgroup-unreads --- 6194,6214 ---- gnus-newsgroup-name))) (progn (gnus-get-newsgroup-headers-xover articles)) + ;; If we were to fetch old headers, but the backend didn't + ;; support XOVER, then it is possible we fetched one article + ;; that we shouldn't have. If that's the case, we pop it off the + ;; list of headers. + (if (not gnus-fetch-old-headers) + () + (save-excursion + (set-buffer nntp-server-buffer) + (goto-char (point-min)) + (and (looking-at "[0-9]+[ \t]+1[ \t]") + (delete-region + (point) + (search-forward "\n.\n" nil t))))) (gnus-get-newsgroup-headers))) ! ;; Remove canceled articles from the list of unread articles. (setq gnus-newsgroup-unreads (gnus-set-sorted-intersection gnus-newsgroup-unreads *************** *** 7065,7071 **** ;; Suggested by earle@mahendo.JPL.NASA.GOV (Greg Earle). ;; Recenter only when requested. Suggested by popovich@park.cs.columbia.edu. (let* ((top (cond ((< (window-height) 4) 0) ! ((< (window-height) 6) 1) (t 2))) (height (1- (window-height))) (bottom (save-excursion (goto-char (point-max)) --- 7081,7087 ---- ;; Suggested by earle@mahendo.JPL.NASA.GOV (Greg Earle). ;; Recenter only when requested. Suggested by popovich@park.cs.columbia.edu. (let* ((top (cond ((< (window-height) 4) 0) ! ((< (window-height) 7) 1) (t 2))) (height (1- (window-height))) (bottom (save-excursion (goto-char (point-max)) *************** *** 7897,7902 **** --- 7913,7919 ---- (setq number (header-number gnus-current-headers)) (gnus-rebuild-thread message-id) (gnus-summary-goto-subject number) + (gnus-summary-recenter) (gnus-article-set-window-start (cdr (assq number gnus-newsgroup-bookmarks))) message-id) *************** *** 8538,8544 **** gnus-score-interactive-default-score)) (defun gnus-summary-raise-thread (score) ! "Raise articles under current thread with SCORE." (interactive "P") (setq score (1- (gnus-score-default score))) (let (e) --- 8555,8561 ---- gnus-score-interactive-default-score)) (defun gnus-summary-raise-thread (score) ! "Raise the score of the articles in the current thread with SCORE." (interactive "P") (setq score (1- (gnus-score-default score))) (let (e) *************** *** 8567,8573 **** (gnus-summary-raise-same-subject (- score))) (defun gnus-summary-lower-thread (score) ! "Raise articles under current thread with SCORE." (interactive "P") (gnus-summary-raise-thread (- (1- (gnus-score-default score))))) --- 8584,8590 ---- (gnus-summary-raise-same-subject (- score))) (defun gnus-summary-lower-thread (score) ! "Lower score of articles in the current thread with SCORE." (interactive "P") (gnus-summary-raise-thread (- (1- (gnus-score-default score))))) *************** *** 9171,9177 **** gnus-newsgroup-dormant nil)) (setq gnus-newsgroup-unreads (append gnus-newsgroup-marked gnus-newsgroup-dormant))) ! ;; We actually mark all articles as cancelled, which we ;; have to do when using auto-expiry or adaptive scoring. (let ((unreads (length gnus-newsgroup-unreads))) (if (gnus-summary-first-subject (not all)) --- 9188,9194 ---- gnus-newsgroup-dormant nil)) (setq gnus-newsgroup-unreads (append gnus-newsgroup-marked gnus-newsgroup-dormant))) ! ;; We actually mark all articles as canceled, which we ;; have to do when using auto-expiry or adaptive scoring. (let ((unreads (length gnus-newsgroup-unreads))) (if (gnus-summary-first-subject (not all)) *************** *** 11303,11309 **** ;; (67 . 99)) ...) ;; The only element in each entry in this hash table is a range of ;; (possibly) available articles. (Articles in this range may have ! ;; been expired or cancelled.) ;; ;; Gnus internal format of gnus-killed-list and gnus-zombie-list: ;; ("alt.misc" "alt.test" "alt.general" ...) --- 11320,11326 ---- ;; (67 . 99)) ...) ;; The only element in each entry in this hash table is a range of ;; (possibly) available articles. (Articles in this range may have ! ;; been expired or canceled.) ;; ;; Gnus internal format of gnus-killed-list and gnus-zombie-list: ;; ("alt.misc" "alt.test" "alt.general" ...) *************** *** 11704,11723 **** ;; unread articles, but it has no idea how many. (if (and (setq method (nth 4 info)) (not (gnus-server-equal gnus-select-method ! (gnus-server-get-method nil method)))) ;; These groups are foreign. (if (or (and gnus-activate-foreign-newsgroups (not (numberp gnus-activate-foreign-newsgroups))) (and (numberp gnus-activate-foreign-newsgroups) (<= (nth 1 info) gnus-activate-foreign-newsgroups) ! (<= (nth 1 info) level)) ! (gnus-secondary-method-p method)) (if (eq (car (if (stringp method) (gnus-server-to-method method) (nth 4 info))) 'nnvirtual) (setq virtuals (cons info virtuals)) (setq active (gnus-activate-newsgroup (car info))))) ! ;; These groups are native. (if (and (not gnus-read-active-file) (<= (nth 1 info) level)) (progn --- 11721,11740 ---- ;; unread articles, but it has no idea how many. (if (and (setq method (nth 4 info)) (not (gnus-server-equal gnus-select-method ! (gnus-server-get-method nil method))) ! (not (gnus-secondary-method-p method))) ;; These groups are foreign. (if (or (and gnus-activate-foreign-newsgroups (not (numberp gnus-activate-foreign-newsgroups))) (and (numberp gnus-activate-foreign-newsgroups) (<= (nth 1 info) gnus-activate-foreign-newsgroups) ! (<= (nth 1 info) level))) (if (eq (car (if (stringp method) (gnus-server-to-method method) (nth 4 info))) 'nnvirtual) (setq virtuals (cons info virtuals)) (setq active (gnus-activate-newsgroup (car info))))) ! ;; These groups are native or secondary. (if (and (not gnus-read-active-file) (<= (nth 1 info) level)) (progn *************** *** 11968,11975 **** (gnus-remove-from-range (nth 2 info) (nreverse news))) (gnus-group-update-group group t)))) (defun gnus-read-active-file () - "Get active file from NNTP server." (gnus-group-set-mode-line) (let ((methods (cons gnus-select-method gnus-secondary-select-methods)) (not-first nil) --- 11985,11992 ---- (gnus-remove-from-range (nth 2 info) (nreverse news))) (gnus-group-update-group group t)))) + ;; Get the active file(s) from the backend(s). (defun gnus-read-active-file () (gnus-group-set-mode-line) (let ((methods (cons gnus-select-method gnus-secondary-select-methods)) (not-first nil) *************** *** 12017,12025 **** (gnus-message 1 "Cannot read active file from %s server." (car (car methods))) (ding)) ! (gnus-active-to-gnus-format ! (and gnus-have-read-active-file (car methods))) ! (setq gnus-have-read-active-file t) (gnus-message 5 "%sdone" mesg))))) (setq methods (cdr methods)))))) --- 12034,12042 ---- (gnus-message 1 "Cannot read active file from %s server." (car (car methods))) (ding)) ! (gnus-active-to-gnus-format (and not-first (car methods))) ! (setq gnus-have-read-active-file t ! not-first t) (gnus-message 5 "%sdone" mesg))))) (setq methods (cdr methods)))))) *************** *** 12283,12288 **** --- 12300,12307 ---- (defun gnus-newsrc-to-gnus-format () (setq gnus-newsrc-options "") + (setq gnus-newsrc-options-n nil) + (or gnus-active-hashtb (setq gnus-active-hashtb (make-vector 4095 0))) (let ((buf (current-buffer)) *************** *** 12440,12447 **** (prev gnus-newsrc-alist) entry mentry) (while rc ! (or (assoc (car (car rc)) newsrc) ; It's already in the alist. ! (null (nth 4 (car rc))) ; It's a native group. (if (setq entry (assoc (car (car prev)) newsrc)) (setcdr (setq mentry (memq entry newsrc)) (cons (car rc) (cdr mentry))) --- 12459,12466 ---- (prev gnus-newsrc-alist) entry mentry) (while rc ! (or (null (nth 4 (car rc))) ; It's a native group. ! (assoc (car (car rc)) newsrc) ; It's already in the alist. (if (setq entry (assoc (car (car prev)) newsrc)) (setcdr (setq mentry (memq entry newsrc)) (cons (car rc) (cdr mentry))) *************** *** 13178,13185 **** (setq all (cons (substring group 0 start) all))) (setq all (cons group all)) (nconc ! (mapcar 'gnus-score-file-name (setq all (nreverse all)) ! gnus-adaptive-file-suffix) (mapcar 'gnus-score-file-name all)))) (defvar gnus-score-file-alist-cache nil) --- 13197,13205 ---- (setq all (cons (substring group 0 start) all))) (setq all (cons group all)) (nconc ! (mapcar (lambda (newsgroup) ! (gnus-score-file-name newsgroup gnus-adaptive-file-suffix)) ! (setq all (nreverse all))) (mapcar 'gnus-score-file-name all)))) (defvar gnus-score-file-alist-cache nil) *** pub/dgnus/lisp/nnfolder.el Sat Jun 10 01:44:35 1995 --- dgnus/lisp/nnfolder.el Wed Jun 14 12:21:45 1995 *************** *** 439,444 **** --- 439,445 ---- (nnmail-save-active nnfolder-group-alist nnfolder-active-file))) (let (inf file) (if (and (equal group nnfolder-current-group) + nnfolder-current-buffer (buffer-name nnfolder-current-buffer)) () (setq nnfolder-current-group group) *************** *** 452,463 **** ;; If the buffer is not live, make sure it isn't in the alist. If it ;; is live, verify that nobody else has touched the file since last ;; time. ! (if (or (not (buffer-name nnfolder-current-buffer)) (not (and (bufferp nnfolder-current-buffer) (verify-visited-file-modtime nnfolder-current-buffer)))) (progn ! (if (and (buffer-name nnfolder-current-buffer) (bufferp nnfolder-current-buffer)) (kill-buffer nnfolder-current-buffer)) (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist)) --- 453,466 ---- ;; If the buffer is not live, make sure it isn't in the alist. If it ;; is live, verify that nobody else has touched the file since last ;; time. ! (if (or (not (and nnfolder-current-buffer ! (buffer-name nnfolder-current-buffer))) (not (and (bufferp nnfolder-current-buffer) (verify-visited-file-modtime nnfolder-current-buffer)))) (progn ! (if (and nnfolder-current-buffer ! (buffer-name nnfolder-current-buffer) (bufferp nnfolder-current-buffer)) (kill-buffer nnfolder-current-buffer)) (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist)) *************** *** 467,480 **** () (save-excursion (setq file (concat nnfolder-directory group)) ! (if (or (file-directory-p file) ! (file-symlink-p file)) () (if (not (file-exists-p file)) (write-region 1 1 file t 'nomesg)) (setq nnfolder-buffer-alist (cons (list group (current-buffer)) ! nnfolder-buffer-alist)) ! (set-buffer (nnfolder-read-folder file))))))) (setq nnfolder-current-group group)) (defun nnfolder-save-mail (&optional group) --- 470,483 ---- () (save-excursion (setq file (concat nnfolder-directory group)) ! (if (file-directory-p (file-truename file)) () (if (not (file-exists-p file)) (write-region 1 1 file t 'nomesg)) + (setq nnfolder-current-buffer + (set-buffer (nnfolder-read-folder file))) (setq nnfolder-buffer-alist (cons (list group (current-buffer)) ! nnfolder-buffer-alist))))))) (setq nnfolder-current-group group)) (defun nnfolder-save-mail (&optional group) *** pub/dgnus/lisp/nnmail.el Sat Jun 10 01:44:36 1995 --- dgnus/lisp/nnmail.el Wed Jun 14 14:51:33 1995 *************** *** 91,99 **** This variable is \"/usr/spool/mail/$user\" by default. If this variable is nil, no mail backends will read incoming mail. If this variable is a list, all files mentioned in this list will be ! used as incoming mailboxes. ! If this variable is `procmail', the mail backends will look in ! `nnmail-procmail-directory' for spool files.") (defvar nnmail-procmail-directory "~/incoming/" "*When using procmail (and the like), incoming mail is put in this directory. --- 91,101 ---- This variable is \"/usr/spool/mail/$user\" by default. If this variable is nil, no mail backends will read incoming mail. If this variable is a list, all files mentioned in this list will be ! used as incoming mailboxes.") ! ! (defvar nnmail-use-procmail nil ! "*If non-nil, the mail backends will look in `nnmail-procmail-directory' for spool files. ! The file(s) in `nnmail-spool-file' will also be read.") (defvar nnmail-procmail-directory "~/incoming/" "*When using procmail (and the like), incoming mail is put in this directory. *************** *** 445,451 **** (kill-buffer (current-buffer))))) (defun nnmail-get-split-group (file group) ! (if (eq nnmail-spool-file 'procmail) (cond (group group) ((string-match (concat "^" (expand-file-name nnmail-procmail-directory) --- 447,454 ---- (kill-buffer (current-buffer))))) (defun nnmail-get-split-group (file group) ! (if (or (eq nnmail-spool-file 'procmail) ! nnmail-use-procmail) (cond (group group) ((string-match (concat "^" (expand-file-name nnmail-procmail-directory) *************** *** 464,470 **** ;; If this is a group-specific split, we bind the split ;; methods to just this group. (nnmail-split-methods (if (and group ! (eq nnmail-spool-file 'procmail) (not nnmail-resplit-incoming)) (list (list group "")) nnmail-split-methods)) --- 467,474 ---- ;; If this is a group-specific split, we bind the split ;; methods to just this group. (nnmail-split-methods (if (and group ! (or (eq nnmail-spool-file 'procmail) ! nnmail-use-procmail) (not nnmail-resplit-incoming)) (list (list group "")) nnmail-split-methods)) *** pub/dgnus/lisp/nnspool.el Sat Jun 10 01:44:36 1995 --- dgnus/lisp/nnspool.el Wed Jun 14 05:49:50 1995 *************** *** 419,425 **** (erase-buffer) (call-process "grep" nil t nil id nnspool-history-file) (goto-char (point-min)) ! (if (looking-at "<[^>]+>[ \t]+[-0-9~]+[ \t]+\\([^ \t]*\\)") (concat nnspool-spool-directory (nnspool-replace-chars-in-string (buffer-substring (match-beginning 1) (match-end 1)) --- 419,425 ---- (erase-buffer) (call-process "grep" nil t nil id nnspool-history-file) (goto-char (point-min)) ! (if (looking-at "<[^>]+>[ \t]+[-0-9~]+[ \t]+\\([^ \t\n]*\\)") (concat nnspool-spool-directory (nnspool-replace-chars-in-string (buffer-substring (match-beginning 1) (match-end 1)) *** pub/dgnus/lisp/nntp.el Sat Jun 10 01:44:36 1995 --- dgnus/lisp/nntp.el Wed Jun 14 12:32:43 1995 *************** *** 958,966 **** (let ((cmd (concat (mapconcat 'identity strings " ") "\r\n"))) ;; We open the nntp server if it is down. (or (nntp-server-opened nntp-current-server) ! (progn ! (nntp-close-server nntp-address) ! (nntp-open-server nntp-address)) (error (nntp-status-message))) ;; Send the strings. (process-send-string nntp-server-process cmd))) --- 958,964 ---- (let ((cmd (concat (mapconcat 'identity strings " ") "\r\n"))) ;; We open the nntp server if it is down. (or (nntp-server-opened nntp-current-server) ! (nntp-open-server nntp-current-server) (error (nntp-status-message))) ;; Send the strings. (process-send-string nntp-server-process cmd))) *** pub/dgnus/lisp/ChangeLog Sat Jun 10 01:44:40 1995 --- dgnus/lisp/ChangeLog Thu Jun 15 04:09:02 1995 *************** *** 1,3 **** --- 1,53 ---- + Thu Jun 15 03:34:23 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-refer-article): Recenter after fetching. + + Wed Jun 14 10:34:20 1995 Lars Ingebrigtsen + + * gnus-uu.el (gnus-uu-digest-mail-forward): Don't initialize + twice. + + * gnus-msg.el (gnus-mail-buffer): New variable. + + * gnus-score.el (gnus-summary-increase-score): Restore window + config after help. + + * nnmail.el (nnmail-use-procmail): New variable. + + * nntp.el (nntp-send-strings-to-server): Really reopen connection + if closed. + + * gnus.el (gnus-group-exit): Remove carpal window on exit. + (gnus-summary-recenter): Center on line 2 when in small windows. + (gnus-newsrc-to-gnus-format): Reset the options list. + (gnus-read-active-file): Would not activate primary groups when + 'some. + (gnus-get-unread-articles): Don't activate secondary groups + again. + + Tue Jun 13 00:26:45 1995 Lars Magne Ingebrigtsen + + * Treat empty comments fields. + + * gnus.el (gnus-newsrc-to-gnus-format): Exponentiality revealed. + (gnus-score-find-hierarchical): Didn't really work for adaptive + files. + (gnus-select-newsgroup): Really strip the first unwanted article. + + * gnus-score.el (gnus-summary-score-entry): Doc fix. + + Tue Jun 13 10:02:57 1995 Scott Byer + + * nnfolder.el (nnfolder-possibly-change-group) An added check for + a file being a directory also checked for a symlink without + verifying that the symlink actually pointed to a directory. This + would seriosly mess up some mail setups. + + * nnfolder.el (nnfolder-server-opened) + (nnfolder-possibly-change-group) Made sure checks for buffer + existence included checks for the name being nil, since + buffer-name with a nil name returns some random buffer. + Sat Jun 10 00:15:13 1995 Lars Ingebrigtsen * gnus.el (gnus-ask-server-for-new-groups): Ignore errors while *** pub/dgnus/texi/gnus.texi Sat Jun 10 01:44:43 1995 --- dgnus/texi/gnus.texi Wed Jun 14 14:51:29 1995 *************** *** 1,4 **** ! \input texinfo @c -*-texinfo-*- @comment %**start of header (This is for running Texinfo on a region.) @setfilename gnus @settitle (ding) Gnus 0.84 Manual --- 1,4 ---- ! x \input texinfo @c -*-texinfo-*- @comment %**start of header (This is for running Texinfo on a region.) @setfilename gnus @settitle (ding) Gnus 0.84 Manual *************** *** 116,121 **** --- 116,122 ---- which makes it a more appropriate name, don't you think?) @menu + * Why?:: What's the point of Gnus? * Compatibility:: Just how compatible is (ding) Gnus with @sc{gnus}? * Contributors:: Oodles of people. * Gnus & hilit:: Old hilit19 code will not work with (ding) Gnus. *************** *** 123,128 **** --- 124,155 ---- * Newest Features:: Features so new that they haven't been written yet. @end menu + @node Why? + @section Why? + + What's the point of Gnus? + + I want to provide a "rad", "happening", "way cool" and "hep" newsreader, + that lets you do anything you can think of. That was my original + motivation, but while working on Gnus, it has become clear to me that + this generation of newsreaders really belong in the stone age. + Newsreaders haven't developed much since the infancy of the net. If the + volume continues to rise with the current rate of increase, all current + newsreaders will be pretty much useless. How do you deal with + newsgroups that have hundreds (or thousands) of new articles each day? + + (ding) Gnus offer no real solutions to these questions, but I would very + much like to see Gnus being used as a testing ground for new methods of + reading and fetching news. Expanding on Umeda-san's wise decision to + separate the newsreader from the backends, (ding) Gnus now offers a + simple interface for anybody who wants to write new backends for + fetching mail and news from different sources. I have added hooks for + customizations everywhere I can imagine useful. By doing so, I'm + inviting every one of you to explore and invent new ways of reading + news. + + May Gnus never be complete. @kbd{C-u 100 M-x hail-emacs}. + @node Compatibility @section Compatibility *************** *** 1761,1771 **** Set this variable to begin with the string @samp{po:}, and everything should go smoothly, even though I have never tested this. ! If this variable is @code{procmail}, the mail backends will look in ! @code{nnmail-procmail-directory} for incoming mail. All the files in ! that directory that have names ending in @code{gnus-procmail-suffix} ! will be considered incoming mailboxes, and will be searched for new ! mail. @vindex nnmail-prepare-incoming-hook @code{nnmail-prepare-incoming-hook} is run in a buffer that holds all --- 1788,1799 ---- Set this variable to begin with the string @samp{po:}, and everything should go smoothly, even though I have never tested this. ! @vindex nnmail-use-procmail ! If @code{nnmail-use-procmail} is non-@code{nil}, the mail backends will ! look in @code{nnmail-procmail-directory} for incoming mail. All the ! files in that directory that have names ending in ! @code{gnus-procmail-suffix} will be considered incoming mailboxes, and ! will be searched for new mail. @vindex nnmail-prepare-incoming-hook @code{nnmail-prepare-incoming-hook} is run in a buffer that holds all *************** *** 3989,3995 **** Gnus will make the first of the orphaned articles the parent. This parent will adopt all the other articles. The adopted articles will be marked as such by pointy brackets (@samp{<>}) instead of the standard ! square brackets (@samp{[]]). This is the default method. @item dummy Gnus will create a dummy summary line that will pretend to be the parent. This dummy line does not correspond to any real article, so --- 4017,4023 ---- Gnus will make the first of the orphaned articles the parent. This parent will adopt all the other articles. The adopted articles will be marked as such by pointy brackets (@samp{<>}) instead of the standard ! square brackets (@samp{[]}). This is the default method. @item dummy Gnus will create a dummy summary line that will pretend to be the parent. This dummy line does not correspond to any real article, so