*** pub/sgnus/lisp/dgnushack.el Mon Jun 10 05:46:33 1996 --- sgnus/lisp/dgnushack.el Tue Jun 11 04:33:25 1996 *************** *** 49,55 **** (setq byte-compile-warnings '(free-vars unresolved callargs redefine obsolete)))) (when (or (not (member file '("gnus-xmas.el" "gnus-picon.el" ! "messagexmas.el"))) xemacs) (condition-case () (byte-compile-file file) --- 49,55 ---- (setq byte-compile-warnings '(free-vars unresolved callargs redefine obsolete)))) (when (or (not (member file '("gnus-xmas.el" "gnus-picon.el" ! "messagexmas.el" "nnheaderxm.el"))) xemacs) (condition-case () (byte-compile-file file) *** pub/sgnus/lisp/gnus-cache.el Mon Jun 10 05:46:33 1996 --- sgnus/lisp/gnus-cache.el Tue Jun 11 05:46:46 1996 *************** *** 376,384 **** (defun gnus-cache-update-article (group article) "If ARTICLE is in the cache, remove it and re-enter it." (when (gnus-cache-possibly-remove-article article nil nil nil t) ! (gnus-cache-possibly-enter-article ! gnus-newsgroup-name article (gnus-summary-article-header article) ! nil nil nil t))) (defun gnus-cache-possibly-remove-article (article ticked dormant unread &optional force) --- 376,385 ---- (defun gnus-cache-update-article (group article) "If ARTICLE is in the cache, remove it and re-enter it." (when (gnus-cache-possibly-remove-article article nil nil nil t) ! (let ((gnus-use-cache nil)) ! (gnus-cache-possibly-enter-article ! gnus-newsgroup-name article (gnus-summary-article-header article) ! nil nil nil t)))) (defun gnus-cache-possibly-remove-article (article ticked dormant unread &optional force) *** pub/sgnus/lisp/gnus-cite.el Mon Jun 10 05:46:33 1996 --- sgnus/lisp/gnus-cite.el Tue Jun 11 04:27:37 1996 *************** *** 300,306 **** See the documentation for `gnus-article-highlight-citation'. If given a negative prefix, always show; if given a positive prefix, always hide." ! (interactive (append (gnus-hidden-arg) 'force)) (setq gnus-cited-text-button-line-format-spec (gnus-parse-format gnus-cited-text-button-line-format gnus-cited-text-button-line-format-alist t)) --- 300,306 ---- See the documentation for `gnus-article-highlight-citation'. If given a negative prefix, always show; if given a positive prefix, always hide." ! (interactive (append (gnus-hidden-arg) (list 'force))) (setq gnus-cited-text-button-line-format-spec (gnus-parse-format gnus-cited-text-button-line-format gnus-cited-text-button-line-format-alist t)) *************** *** 361,367 **** cited text with attributions. When called interactively, these two variables are ignored. See also the documentation for `gnus-article-highlight-citation'." ! (interactive (append (gnus-hidden-arg) 'force)) (unless (gnus-article-check-hidden-text 'cite arg) (save-excursion (set-buffer gnus-article-buffer) --- 361,367 ---- cited text with attributions. When called interactively, these two variables are ignored. See also the documentation for `gnus-article-highlight-citation'." ! (interactive (append (gnus-hidden-arg) (list 'force))) (unless (gnus-article-check-hidden-text 'cite arg) (save-excursion (set-buffer gnus-article-buffer) *** pub/sgnus/lisp/gnus-mh.el Mon Jun 10 05:46:34 1996 --- sgnus/lisp/gnus-mh.el Mon Jun 10 23:24:14 1996 *************** *** 67,84 **** (errbuf (get-buffer-create " *Gnus rcvstore*")) ;; Find the rcvstore program. (exec-path (if mh-lib (cons mh-lib exec-path) exec-path))) ! (gnus-eval-in-buffer-window ! gnus-original-article-buffer ! (save-restriction ! (widen) ! (unwind-protect ! (call-process-region ! (point-min) (point-max) "rcvstore" nil errbuf nil folder) ! (set-buffer errbuf) ! (if (zerop (buffer-size)) ! (message "Article saved in folder: %s" folder) ! (message "%s" (buffer-string))) ! (kill-buffer errbuf)))) (setq gnus-newsgroup-last-folder folder))) (defun gnus-Folder-save-name (newsgroup headers &optional last-folder) --- 67,83 ---- (errbuf (get-buffer-create " *Gnus rcvstore*")) ;; Find the rcvstore program. (exec-path (if mh-lib (cons mh-lib exec-path) exec-path))) ! (gnus-eval-in-buffer-window gnus-original-article-buffer ! (save-restriction ! (widen) ! (unwind-protect ! (call-process-region ! (point-min) (point-max) "rcvstore" nil errbuf nil folder) ! (set-buffer errbuf) ! (if (zerop (buffer-size)) ! (message "Article saved in folder: %s" folder) ! (message "%s" (buffer-string))) ! (kill-buffer errbuf)))) (setq gnus-newsgroup-last-folder folder))) (defun gnus-Folder-save-name (newsgroup headers &optional last-folder) *** pub/sgnus/lisp/gnus-picon.el Mon Jun 10 05:46:34 1996 --- sgnus/lisp/gnus-picon.el Mon Jun 10 23:24:15 1996 *************** *** 212,218 **** (replace-in-string from ".*@\\([_a-zA-Z0-9-.]+\\).*" "\\1") "\\." "/")) "/"))) ! (set-to-buffer (gnus-get-buffer-name gnus-picons-display-where)) (gnus-add-current-to-buffer-list) (beginning-of-buffer) (setq iconpoint (point)) --- 212,218 ---- (replace-in-string from ".*@\\([_a-zA-Z0-9-.]+\\).*" "\\1") "\\." "/")) "/"))) ! (set-buffer (gnus-get-buffer-name gnus-picons-display-where)) (gnus-add-current-to-buffer-list) (beginning-of-buffer) (setq iconpoint (point)) *************** *** 264,270 **** (save-excursion (let ((iconpoint (point))) ! (set-to-buffer (gnus-get-buffer-name gnus-picons-display-where)) (gnus-add-current-to-buffer-list) (beginning-of-buffer) (cond --- 264,270 ---- (save-excursion (let ((iconpoint (point))) ! (set-buffer (gnus-get-buffer-name gnus-picons-display-where)) (gnus-add-current-to-buffer-list) (beginning-of-buffer) (cond *** pub/sgnus/lisp/gnus-score.el Mon Jun 10 05:46:35 1996 --- sgnus/lisp/gnus-score.el Tue Jun 11 05:46:46 1996 *************** *** 1859,1864 **** --- 1859,1868 ---- (gnus-newsgroup-scored nil) (buf (current-buffer)) trace) + (when (get-buffer "*Gnus Scores*") + (save-excursion + (set-buffer "*Gnus Scores*") + (erase-buffer))) (setq gnus-score-trace nil) (gnus-possibly-score-headers 'trace) (if (not (setq trace gnus-score-trace)) *** pub/sgnus/lisp/gnus-uu.el Mon Jun 10 05:46:37 1996 --- sgnus/lisp/gnus-uu.el Mon Jun 10 23:24:15 1996 *************** *** 185,195 **** "*Non-nil means that gnus-uu won't peek inside archives looking for files to display. Default is nil.") - (defvar gnus-uu-view-and-save nil - "*Non-nil means that the user will always be asked to save a file after viewing it. - If the variable is nil, the user will only be asked to save if the - viewing is unsuccessful. Default is nil.") - (defvar gnus-uu-ignore-default-view-rules nil "*Non-nil means that gnus-uu will ignore the default viewing rules. Only the user viewing rules will be consulted. Default is nil.") --- 185,190 ---- *** pub/sgnus/lisp/gnus-xmas.el Mon Jun 10 05:46:38 1996 --- sgnus/lisp/gnus-xmas.el Mon Jun 10 23:24:15 1996 *************** *** 145,153 **** ;; Suggested by earle@mahendo.JPL.NASA.GOV (Greg Earle). ;; Recenter only when requested. Suggested by popovich@park.cs.columbia.edu. (when gnus-auto-center-summary - (sit-for 0) (let* ((height (if (fboundp 'window-displayed-height) ! (window-displayed-height) (- (window-height) 2))) (top (cond ((< height 4) 0) ((< height 7) 1) --- 145,154 ---- ;; Suggested by earle@mahendo.JPL.NASA.GOV (Greg Earle). ;; Recenter only when requested. Suggested by popovich@park.cs.columbia.edu. (when gnus-auto-center-summary (let* ((height (if (fboundp 'window-displayed-height) ! (progn ! (sit-for 0) ! (window-displayed-height)) (- (window-height) 2))) (top (cond ((< height 4) 0) ((< height 7) 1) *** pub/sgnus/lisp/gnus.el Mon Jun 10 05:46:40 1996 --- sgnus/lisp/gnus.el Tue Jun 11 05:46:43 1996 *************** *** 1726,1732 **** "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version-number "5.2.14" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) --- 1726,1732 ---- "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version-number "5.2.15" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) *************** *** 8848,8854 **** "How many articles from %s (default %d): " gnus-newsgroup-name number)))) (if (string-match "^[ \t]*$" input) number input))) ! ((and (> scored marked) (< scored number)) (let ((input (read-string (format "%s %s (%d scored, %d total): " --- 8848,8855 ---- "How many articles from %s (default %d): " gnus-newsgroup-name number)))) (if (string-match "^[ \t]*$" input) number input))) ! ((and (> scored marked) (< scored number) ! (> (- scored number) 20)) (let ((input (read-string (format "%s %s (%d scored, %d total): " *************** *** 11823,11830 **** (gnus-configure-windows 'summary) (gnus-summary-update-article (cdr gnus-article-current)) (when gnus-use-cache ! (gnus-cache-update-article ! (cdr gnus-article-current) (car gnus-article-current))) (when gnus-keep-backlog (gnus-backlog-remove-article (car gnus-article-current) (cdr gnus-article-current)))) --- 11824,11831 ---- (gnus-configure-windows 'summary) (gnus-summary-update-article (cdr gnus-article-current)) (when gnus-use-cache ! (gnus-cache-update-article ! (car gnus-article-current) (cdr gnus-article-current))) (when gnus-keep-backlog (gnus-backlog-remove-article (car gnus-article-current) (cdr gnus-article-current)))) *************** *** 12950,12955 **** --- 12951,12957 ---- (gnus-summary-select-article t nil nil article)) (save-excursion (set-buffer save-buffer) + (erase-buffer) (insert-buffer-substring gnus-original-article-buffer)) (unless gnus-save-all-headers ;; Remove headers accoring to `gnus-saved-headers'. *************** *** 12962,12970 **** (error "No default saver is defined.") ;; !!! Magic! The saving functions all save ;; `gnus-original-article-buffer' (or so they think), ! ;; but we bind that variable to out save-buffer. (set-buffer gnus-article-buffer) (let ((gnus-original-article-buffer save-buffer)) (setq file (funcall gnus-default-article-saver (cond --- 12964,12973 ---- (error "No default saver is defined.") ;; !!! Magic! The saving functions all save ;; `gnus-original-article-buffer' (or so they think), ! ;; but we bind that variable to our save-buffer. (set-buffer gnus-article-buffer) (let ((gnus-original-article-buffer save-buffer)) + (set-buffer gnus-summary-buffer) (setq file (funcall gnus-default-article-saver (cond *************** *** 13115,13120 **** --- 13118,13127 ---- (setq to-newsgroup (or default ""))) (or (gnus-active to-newsgroup) (gnus-activate-group to-newsgroup) + (if (gnus-y-or-n-p (format "No such group: %s. Create it? " + to-newsgroup)) + (or (gnus-request-create-group to-newsgroup) + (error "Couldn't create group %s" to-newsgroup))) (error "No such group: %s" to-newsgroup))) to-newsgroup)) *************** *** 13912,13917 **** --- 13919,13925 ---- ((and gnus-visible-headers (listp gnus-visible-headers)) (mapconcat 'identity gnus-visible-headers "\\|")))) + (inhibit-point-motion-hooks t) want-list beg) ;; First we narrow to just the headers. (widen) *************** *** 14540,14559 **** (defun gnus-output-to-file (file-name) "Append the current article to a file named FILE-NAME." ! (setq file-name (expand-file-name file-name)) ! (let ((artbuf (current-buffer)) ! (tmpbuf (get-buffer-create " *Gnus-output*"))) ! (save-excursion ! (set-buffer tmpbuf) ! (buffer-disable-undo (current-buffer)) ! (erase-buffer) (insert-buffer-substring artbuf) ;; Append newline at end of the buffer as separator, and then ;; save it to file. (goto-char (point-max)) (insert "\n") ! (append-to-file (point-min) (point-max) file-name)) ! (kill-buffer tmpbuf))) (defun gnus-convert-article-to-rmail () "Convert article in current buffer to Rmail message format." --- 14548,14561 ---- (defun gnus-output-to-file (file-name) "Append the current article to a file named FILE-NAME." ! (let ((artbuf (current-buffer))) ! (nnheader-temp-write nil (insert-buffer-substring artbuf) ;; Append newline at end of the buffer as separator, and then ;; save it to file. (goto-char (point-max)) (insert "\n") ! (append-to-file (point-min) (point-max) file-name)))) (defun gnus-convert-article-to-rmail () "Convert article in current buffer to Rmail message format." *** pub/sgnus/lisp/message.el Mon Jun 10 05:46:41 1996 --- sgnus/lisp/message.el Tue Jun 11 04:27:37 1996 *************** *** 2253,2258 **** --- 2253,2259 ---- (setq message-buffer-list (nconc message-buffer-list (list (current-buffer)))))) + (defvar mc-modes-alist) (defun message-setup (headers &optional replybuffer actions) (when (and (boundp 'mc-modes-alist) (not (assq 'message-mode mc-modes-alist))) *** pub/sgnus/lisp/nndb.el Mon Jun 10 05:46:41 1996 --- sgnus/lisp/nndb.el Tue Jun 11 05:03:53 1996 *************** *** 227,233 **** (nnoo-import nndb (nntp)) ! (provide 'nndb) --- 227,233 ---- (nnoo-import nndb (nntp)) ! (provide 'nndb) *** pub/sgnus/lisp/nnheader.el Mon Jun 10 05:46:42 1996 --- sgnus/lisp/nnheader.el Tue Jun 11 04:32:56 1996 *************** *** 543,549 **** "Concat DIR as directory to FILE." (concat (file-name-as-directory dir) file)) ! (require 'nnheaderems) (run-hooks 'nnheader-load-hook) --- 543,563 ---- "Concat DIR as directory to FILE." (concat (file-name-as-directory dir) file)) ! (defun nnheader-ms-strip-cr () ! "Strip ^M from the end of all lines." ! (save-excursion ! (goto-char (point-min)) ! (while (re-search-forward "\r$" nil t) ! (delete-backward-char 1)))) ! ! (fset 'nnheader-run-at-time 'run-at-time) ! (fset 'nnheader-cancel-timer 'cancel-timer) ! (fset 'nnheader-find-file-noselect 'find-file-noselect) ! (fset 'nnheader-insert-file-contents-literally ! 'insert-file-contents-literally) ! ! (when (string-match "XEmacs\\|Lucid" emacs-version) ! (require 'nnheaderxm)) (run-hooks 'nnheader-load-hook) *** pub/sgnus/lisp/nnheaderxm.el Tue Jun 11 06:47:24 1996 --- sgnus/lisp/nnheaderxm.el Tue Jun 11 04:32:55 1996 *************** *** 0 **** --- 1,180 ---- + ;;; nnheaderxm.el --- making Gnus backends work under XEmacs + ;; Copyright (C) 1996 Free Software Foundation, Inc. + + ;; Author: Lars Magne Ingebrigtsen + ;; Keywords: news + + ;; This file is part of GNU Emacs. + + ;; GNU Emacs is free software; you can redistribute it and/or modify + ;; it under the terms of the GNU General Public License as published by + ;; the Free Software Foundation; either version 2, or (at your option) + ;; any later version. + + ;; GNU Emacs is distributed in the hope that it will be useful, + ;; but WITHOUT ANY WARRANTY; without even the implied warranty of + ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ;; GNU General Public License for more details. + + ;; You should have received a copy of the GNU General Public License + ;; along with GNU Emacs; see the file COPYING. If not, write to the + ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, + ;; Boston, MA 02111-1307, USA. + + ;;; Commentary: + + ;;; Code: + + (defun nnheader-xmas-run-at-time (time repeat function &rest args) + (start-itimer + "nnheader-run-at-time" + `(lambda () + (,function ,@args)) + time repeat)) + + (defun nnheader-xmas-cancel-timer (timer) + (delete-itimer timer)) + + ;; Written by Erik Naggum . + ;; Saved by Steve Baur . + (defun nnheader-xmas-insert-file-contents-literally (filename &optional visit beg end replace) + "Like `insert-file-contents', q.v., but only reads in the file. + A buffer may be modified in several ways after reading into the buffer due + to advanced Emacs features, such as file-name-handlers, format decoding, + find-file-hooks, etc. + This function ensures that none of these modifications will take place." + (let ( ; (file-name-handler-alist nil) + (format-alist nil) + (after-insert-file-functions nil) + (find-buffer-file-type-function + (if (fboundp 'find-buffer-file-type) + (symbol-function 'find-buffer-file-type) + nil))) + (unwind-protect + (progn + (fset 'find-buffer-file-type (lambda (filename) t)) + (insert-file-contents filename visit beg end replace)) + (if find-buffer-file-type-function + (fset 'find-buffer-file-type find-buffer-file-type-function) + (fmakunbound 'find-buffer-file-type))))) + + (defun nnheader-xmas-find-file-noselect (filename &optional nowarn rawfile) + "Read file FILENAME into a buffer and return the buffer. + If a buffer exists visiting FILENAME, return that one, but + verify that the file has not changed since visited or saved. + The buffer is not selected, just returned to the caller." + (setq filename + (abbreviate-file-name + (expand-file-name filename))) + (if (file-directory-p filename) + (if find-file-run-dired + (dired-noselect filename) + (error "%s is a directory." filename)) + (let* ((buf (get-file-buffer filename)) + (truename (abbreviate-file-name (file-truename filename))) + (number (nthcdr 10 (file-attributes truename))) + ;; Find any buffer for a file which has same truename. + (other (and (not buf) + (if (fboundp 'find-buffer-visiting) + (find-buffer-visiting filename) + (get-file-buffer filename)))) + error) + ;; Let user know if there is a buffer with the same truename. + (if other + (progn + (or nowarn + (string-equal filename (buffer-file-name other)) + (message "%s and %s are the same file" + filename (buffer-file-name other))) + ;; Optionally also find that buffer. + (if (or (and (boundp 'find-file-existing-other-name) + find-file-existing-other-name) + find-file-visit-truename) + (setq buf other)))) + (if buf + (or nowarn + (verify-visited-file-modtime buf) + (cond ((not (file-exists-p filename)) + (error "File %s no longer exists!" filename)) + ((yes-or-no-p + (if (string= (file-name-nondirectory filename) + (buffer-name buf)) + (format + (if (buffer-modified-p buf) + "File %s changed on disk. Discard your edits? " + "File %s changed on disk. Reread from disk? ") + (file-name-nondirectory filename)) + (format + (if (buffer-modified-p buf) + "File %s changed on disk. Discard your edits in %s? " + "File %s changed on disk. Reread from disk into %s? ") + (file-name-nondirectory filename) + (buffer-name buf)))) + (save-excursion + (set-buffer buf) + (revert-buffer t t))))) + (save-excursion + ;;; The truename stuff makes this obsolete. + ;;; (let* ((link-name (car (file-attributes filename))) + ;;; (linked-buf (and (stringp link-name) + ;;; (get-file-buffer link-name)))) + ;;; (if (bufferp linked-buf) + ;;; (message "Symbolic link to file in buffer %s" + ;;; (buffer-name linked-buf)))) + (setq buf (create-file-buffer filename)) + ;; (set-buffer-major-mode buf) + (set-buffer buf) + (erase-buffer) + (if rawfile + (condition-case () + (nnheader-insert-file-contents-literally filename t) + (file-error + ;; Unconditionally set error + (setq error t))) + (condition-case () + (insert-file-contents filename t) + (file-error + ;; Run find-file-not-found-hooks until one returns non-nil. + (or t ; (run-hook-with-args-until-success 'find-file-not-found-hooks) + ;; If they fail too, set error. + (setq error t))))) + ;; Find the file's truename, and maybe use that as visited name. + (setq buffer-file-truename truename) + (setq buffer-file-number number) + ;; On VMS, we may want to remember which directory in a search list + ;; the file was found in. + (and (eq system-type 'vax-vms) + (let (logical) + (if (string-match ":" (file-name-directory filename)) + (setq logical (substring (file-name-directory filename) + 0 (match-beginning 0)))) + (not (member logical find-file-not-true-dirname-list))) + (setq buffer-file-name buffer-file-truename)) + (if find-file-visit-truename + (setq buffer-file-name + (setq filename + (expand-file-name buffer-file-truename)))) + ;; Set buffer's default directory to that of the file. + (setq default-directory (file-name-directory filename)) + ;; Turn off backup files for certain file names. Since + ;; this is a permanent local, the major mode won't eliminate it. + (and (not (funcall backup-enable-predicate buffer-file-name)) + (progn + (make-local-variable 'backup-inhibited) + (setq backup-inhibited t))) + (if rawfile + nil + (after-find-file error (not nowarn))))) + buf))) + + (fset 'nnheader-run-at-time 'nnheader-xmas-run-at-time) + (fset 'nnheader-cancel-timer 'nnheader-xmas-cancel-timer) + (fset 'nnheader-find-file-noselect 'nnheader-xmas-find-file-noselect) + (fset 'nnheader-insert-file-contents-literally + (if (fboundp 'insert-file-contents-literally) + 'insert-file-contents-literally + 'nnheader-xmas-insert-file-contents-literally)) + + (provide 'nnheaderxm) + + ;;; nnheaderxm.el ends here. *** pub/sgnus/lisp/nnmail.el Mon Jun 10 05:46:42 1996 --- sgnus/lisp/nnmail.el Tue Jun 11 06:05:47 1996 *************** *** 137,142 **** --- 137,148 ---- "*A command to be executed to move mail from the inbox. The default is \"movemail\".") + (defvar nnmail-pop-password nil + "*Password to use when reading mail from a POP server, if required.") + + (defvar nnmail-pop-password-required nil + "*Non-nil if a password is required when reading mail using POP.") + (defvar nnmail-read-incoming-hook nil "*Hook that will be run after the incoming mail has been transferred. The incoming mail is moved from `nnmail-spool-file' (which normally is *************** *** 164,169 **** --- 170,178 ---- (if (eq (process-status \"display-time\") 'run) (display-time-filter display-time-process \"\"))))") + (when (eq system-type 'windows-nt) + (add-hook 'nnmail-prepare-incoming-hook 'nnheader-ms-strip-cr)) + ;; Suggested by Erik Selberg . (defvar nnmail-prepare-incoming-hook nil "*Hook called before treating incoming mail. *************** *** 260,265 **** --- 269,277 ---- ;;; Internal variables. + (eval-and-compile + (autoload 'ange-ftp-read-passwd "ange-ftp")) + (defvar nnmail-split-fancy-syntax-table (copy-syntax-table (standard-syntax-table)) "Syntax table used by `nnmail-split-fancy'.") *************** *** 339,352 **** (list (- (+ (car current) (if rest -1 0)) (car time)) (- (+ (or rest 0) (nth 1 current)) (nth 1 time))))) ! ;; Function taken from rmail.el. (defun nnmail-move-inbox (inbox) "Move INBOX to `nnmail-crash-box'." (let ((inbox (file-truename (expand-file-name (substitute-in-file-name inbox)))) (tofile (file-truename (expand-file-name (substitute-in-file-name nnmail-crash-box)))) ! movemail popmail errors) ;; If getting from mail spool directory, ;; use movemail to move rather than just renaming, ;; so as to interlock with the mailer. --- 351,364 ---- (list (- (+ (car current) (if rest -1 0)) (car time)) (- (+ (or rest 0) (nth 1 current)) (nth 1 time))))) ! ;; Function rewritten from rmail.el. (defun nnmail-move-inbox (inbox) "Move INBOX to `nnmail-crash-box'." (let ((inbox (file-truename (expand-file-name (substitute-in-file-name inbox)))) (tofile (file-truename (expand-file-name (substitute-in-file-name nnmail-crash-box)))) ! movemail popmail errors password) ;; If getting from mail spool directory, ;; use movemail to move rather than just renaming, ;; so as to interlock with the mailer. *************** *** 362,368 **** (if (member inbox nnmail-moved-inboxes) nil (if popmail ! (message "Getting mail from post office ...") (when (or (and (file-exists-p tofile) (/= 0 (nth 7 (file-attributes tofile)))) (and (file-exists-p inbox) --- 374,387 ---- (if (member inbox nnmail-moved-inboxes) nil (if popmail ! (progn ! (setq password nnmail-pop-password) ! (when (and nnmail-pop-password-required (not nnmail-pop-password)) ! (setq password ! (ange-ftp-read-passwd ! (format "Password for %s: " ! (substring inbox (+ popmail 3)))))) ! (message "Getting mail from post office ...")) (when (or (and (file-exists-p tofile) (/= 0 (nth 7 (file-attributes tofile)))) (and (file-exists-p inbox) *************** *** 400,408 **** (setq errors (generate-new-buffer " *nnmail loss*")) (buffer-disable-undo errors) (let ((default-directory "/")) ! (call-process ! (expand-file-name nnmail-movemail-program exec-directory) ! nil errors nil inbox tofile)) (if (not (buffer-modified-p errors)) ;; No output => movemail won (push tofile nnmail-moved-inboxes) --- 419,431 ---- (setq errors (generate-new-buffer " *nnmail loss*")) (buffer-disable-undo errors) (let ((default-directory "/")) ! (apply ! 'call-process ! (append ! (list ! (expand-file-name nnmail-movemail-program exec-directory) ! nil errors nil inbox tofile) ! (when password (list password))))) (if (not (buffer-modified-p errors)) ;; No output => movemail won (push tofile nnmail-moved-inboxes) *** pub/sgnus/lisp/nnmh.el Mon Jun 10 05:46:42 1996 --- sgnus/lisp/nnmh.el Mon Jun 10 23:24:20 1996 *************** *** 87,93 **** nnmh-current-directory) (int-to-string (setq article (pop articles)))))) - (not (file-directory-p file))) (insert (format "221 %d Article retrieved.\n" article)) (setq beg (point)) --- 87,92 ---- *************** *** 195,201 **** dir) ;; Recurse down directories. (while (setq dir (pop dirs)) ! (when (and (not (member (file-name-nondirectory file) '("." ".."))) (file-directory-p dir) (file-readable-p dir)) (nnmh-request-list-1 dir)))) --- 194,200 ---- dir) ;; Recurse down directories. (while (setq dir (pop dirs)) ! (when (and (not (member (file-name-nondirectory dir) '("." ".."))) (file-directory-p dir) (file-readable-p dir)) (nnmh-request-list-1 dir)))) *** pub/sgnus/lisp/nnml.el Mon Jun 10 05:46:42 1996 --- sgnus/lisp/nnml.el Mon Jun 10 23:24:20 1996 *************** *** 681,687 **** dir) (while dirs (setq dir (pop dirs)) ! (when (and (not (member (file-name-nondirectory file) '("." ".."))) (file-directory-p dir)) (nnml-generate-nov-databases-1 dir)))) ;; Do this directory. --- 681,687 ---- dir) (while dirs (setq dir (pop dirs)) ! (when (and (not (member (file-name-nondirectory dir) '("." ".."))) (file-directory-p dir)) (nnml-generate-nov-databases-1 dir)))) ;; Do this directory. *** pub/sgnus/lisp/nntp.el Mon Jun 10 05:46:42 1996 --- sgnus/lisp/nntp.el Tue Jun 11 05:47:35 1996 *************** *** 1054,1060 **** ;; 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)))) --- 1054,1061 ---- ;; large, so we send it piecemeal. (let ((last (point-min)) (size 100)) ;Size of text sent at once. ! (while (and (/= last (point-max)) ! (memq (process-status nntp-server-process) '(open run))) (process-send-region nntp-server-process last (setq last (min (+ last size) (point-max)))) *** pub/sgnus/lisp/ChangeLog Mon Jun 10 05:46:51 1996 --- sgnus/lisp/ChangeLog Tue Jun 11 05:47:32 1996 *************** *** 1,4 **** --- 1,40 ---- + Tue Jun 11 02:29:33 1996 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-score-find-trace): Erase contents first. + + * nntp.el (nntp-send-region-to-server): Make sure the server is + up. + + * gnus.el (gnus-summary-edit-article-done): Reversed parameters. + + * nnheaderxm.el: Renamed. + + * nnmail.el ((eq system-type 'windows-nt)): Moved here. + + Tue Jun 11 02:11:30 1996 Lars Magne Ingebrigtsen + + * nnmail.el (nnmail-pop-password): New variable. + (nnmail-pop-password-required): New variable. + (nnmail-move-inbox): Use them. + + Mon Jun 10 21:40:13 1996 Lars Magne Ingebrigtsen + + * gnus-xmas.el (gnus-xmas-summary-recenter): Don't sit-for on + XEmacs 19.13. + + * gnus-picon.el (gnus-group-display-picons): `set-to-buffer'? + + * gnus.el (gnus-articles-to-read): Don't prompt for scored unless + there are many unscored ones. + (gnus-read-move-group-name): Prompt when group doesn't exist. + (gnus-output-to-file): New implementation. + (gnus-summary-save-article): Would duplicate while saving. + (gnus-summary-save-article): Prompts wouldn't be remembered. + (gnus-article-hide-headers): Inhibit point motion hooks. + Mon Jun 10 05:20:24 1996 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.2.14 is released. * gnus-cus.el (()): Display X face by default. *** pub/sgnus/texi/gnus.texi Mon Jun 10 05:46:53 1996 --- sgnus/texi/gnus.texi Tue Jun 11 04:47:45 1996 *************** *** 1950,1958 **** (@code{gnus-group-browse-foreign-server}). @end table ! @findex gnus-browse-server-mode A new buffer with a list of available groups will appear. This buffer ! will be use the @code{gnus-browse-server-mode}. This buffer looks a bit (well, a lot) like a normal group buffer, but with one major difference - you can't enter any of the groups. If you want to read any of the news available on that server, you have to subscribe to the groups you --- 1950,1958 ---- (@code{gnus-group-browse-foreign-server}). @end table ! @findex gnus-browse-mode A new buffer with a list of available groups will appear. This buffer ! will be use the @code{gnus-browse-mode}. This buffer looks a bit (well, a lot) like a normal group buffer, but with one major difference - you can't enter any of the groups. If you want to read any of the news available on that server, you have to subscribe to the groups you *************** *** 3033,3047 **** @item S D b @kindex S D b (Summary) @findex gnus-summary-resend-bounced-mail - @vindex gnus-bounced-headers-junk @cindex bouncing mail If you have sent a mail, but the mail was bounced back to you for some reason (wrong address, transient failure), you can use this command to resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You will be popped into a mail buffer where you can edit the headers before ! sending the mail off again. The headers that match the regexp ! @code{gnus-bounced-headers-junk} (default @samp{^Received:}) are ! automatically deleted first. If you give a prefix to this command, and the bounced mail is a reply to some other mail, Gnus will try to fetch that mail and display it for easy perusal of its headers. This might very well fail, though. --- 3033,3044 ---- @item S D b @kindex S D b (Summary) @findex gnus-summary-resend-bounced-mail @cindex bouncing mail If you have sent a mail, but the mail was bounced back to you for some reason (wrong address, transient failure), you can use this command to resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You will be popped into a mail buffer where you can edit the headers before ! sending the mail off again. If you give a prefix to this command, and the bounced mail is a reply to some other mail, Gnus will try to fetch that mail and display it for easy perusal of its headers. This might very well fail, though. *************** *** 3049,3055 **** @item S D r @kindex S D r (Summary) @findex gnus-summary-resend-message - @vindex gnus-ignored-resent-headers Not to be confused with the previous command, @code{gnus-summary-resend-message} will prompt you for an address to send the current message off to, and then send it to that place. The --- 3046,3051 ---- *************** *** 3057,3066 **** @code{Resent-To}, @code{Resent-From} and so on will be added. This means that you actually send a mail to someone that has a @code{To} header that (probably) points to yourself. This will confuse people. ! So, natcherly you'll only do that if you're really eVIl. All old ! headers that match the regular expression ! @code{gnus-ignored-resent-headers} will be deleted before resending the ! message. The default is @samp{"^Return-receipt"}. This command is mainly used if you have several accounts and want to ship a mail to a different account of yours. (If you're both --- 3053,3059 ---- @code{Resent-To}, @code{Resent-From} and so on will be added. This means that you actually send a mail to someone that has a @code{To} header that (probably) points to yourself. This will confuse people. ! So, natcherly you'll only do that if you're really eVIl. This command is mainly used if you have several accounts and want to ship a mail to a different account of yours. (If you're both *************** *** 5501,5513 **** @item e @kindex e (Pick) ! @findex gnus-uu-unmark-regexp ! Pick articles that match a regexp (@code{gnus-uu-unmark-regexp}). @item E @kindex E (Pick) ! @findex gnus-uu-unmark-regexp ! Unpick articles that match a regexp (@code{gnus-uu-unmark-regexp}). @item b @kindex b (Pick) --- 5494,5506 ---- @item e @kindex e (Pick) ! @findex gnus-uu-mark-by-regexp ! Pick articles that match a regexp (@code{gnus-uu-mark-by-regexp}). @item E @kindex E (Pick) ! @findex gnus-uu-unmark-by-regexp ! Unpick articles that match a regexp (@code{gnus-uu-unmark-by-regexp}). @item b @kindex b (Pick) *************** *** 5706,5712 **** @item B DEL @kindex B DEL (Summary) ! @findex gnus-summary-delete-articles Delete the mail article. This is ``delete'' as in ``delete it from your disk forever and ever, never to return again.'' Use with caution. (@code{gnus-summary-delete-article}). --- 5699,5705 ---- @item B DEL @kindex B DEL (Summary) ! @findex gnus-summary-delete-article Delete the mail article. This is ``delete'' as in ``delete it from your disk forever and ever, never to return again.'' Use with caution. (@code{gnus-summary-delete-article}). *************** *** 6028,6034 **** heinous crime. Remember: Cross-posting is kinda ok, but posting the same article ! separately to several groups is not. @cindex cross-posting @cindex Xref --- 6021,6028 ---- heinous crime. Remember: Cross-posting is kinda ok, but posting the same article ! separately to several groups is not. Massive cross-posting (aka. ! @dfn{velveeta}) is to be avoided. @cindex cross-posting @cindex Xref *************** *** 6376,6385 **** @kindex C-c C-c (Post) All commands for posting and mailing will put you in a message buffer where you can edit the article all you like, before you send the article ! by pressing @kbd{C-c C-c}. (@pxref{(message)Top}). If you are in a ! foreign news group, and you wish to post the article using the foreign ! server, you can give a prefix to @kbd{C-c C-c} to make Gnus try to post ! using the foreign server. @menu * Mail:: Mailing and replying. --- 6370,6379 ---- @kindex C-c C-c (Post) All commands for posting and mailing will put you in a message buffer where you can edit the article all you like, before you send the article ! by pressing @kbd{C-c C-c}. @xref{Top, , Top, message, The Message ! Manual}. If you are in a foreign news group, and you wish to post the ! article using the foreign server, you can give a prefix to @kbd{C-c C-c} ! to make Gnus try to post using the foreign server. @menu * Mail:: Mailing and replying. *************** *** 6495,6501 **** you don't want to spell-check by hand, you could add automatic spell-checking via the @code{ispell} package: - @vindex news-inews-hook @cindex ispell @findex ispell-message @lisp --- 6489,6494 ---- *************** *** 6609,6639 **** @table @code - @item gnus-author-copy - @vindex gnus-author-copy - @cindex AUTHORCOPY - This is a file name, and all outgoing articles will be saved in that - file. Initialized from the @code{AUTHORCOPY} environment variable. - - If this variable begins with the character @samp{|}, outgoing articles - will be piped to the named program. It is possible to save an article in - an MH folder as follows: - - @lisp - (setq gnus-author-copy - "|/usr/local/lib/mh/rcvstore +Article") - @end lisp - - If the first character is not a pipe, articles are saved using the - function specified by the @code{gnus-author-copy-saver} variable. - - @item gnus-author-copy-saver - @vindex gnus-author-copy-saver - @findex rmail-output - A function called to save outgoing articles. This function will be - called with the same of the file to store the article in. The default - function is @code{rmail-output} which saves in the Unix mailbox format. - @item gnus-outgoing-message-group @vindex gnus-outgoing-message-group All outgoing messages will be put in this group. If you want to store --- 6602,6607 ---- *************** *** 7556,7561 **** --- 7524,7531 ---- @cindex POP mail @cindex MAILHOST @cindex movemail + @vindex nnmail-pop-password + @vindex nnmail-pop-password-required The backends will look for new mail in this file. If this variable is @code{nil}, the mail backends will never attempt to fetch mail by themselves. If you are using a POP mail server and your name is *************** *** 7565,7571 **** devil! You can also set this variable to @code{pop}, and Gnus will try to figure out the POP mail string by itself. In any case, Gnus will call @code{movemail} which will contact the POP server named in the ! @code{MAILHOST} environment variable. When you use a mail backend, Gnus will slurp all your mail from your inbox and plonk it down in your home directory. Gnus doesn't move any --- 7535,7544 ---- devil! You can also set this variable to @code{pop}, and Gnus will try to figure out the POP mail string by itself. In any case, Gnus will call @code{movemail} which will contact the POP server named in the ! @code{MAILHOST} environment variable. If the POP server needs a ! password, you can either set @code{nnmail-pop-password-required} to ! @code{t} and be prompted for the password, or set ! @code{nnmail-pop-password} to the password itself. When you use a mail backend, Gnus will slurp all your mail from your inbox and plonk it down in your home directory. Gnus doesn't move any *************** *** 7937,7946 **** @node Duplicates @subsection Duplicates ! @vindex nnmail-delete-duplicates @vindex nnmail-message-id-cache-length @vindex nnmail-message-id-cache-file - @vindex nnmail-treat-duplicates @cindex duplicate mails If you are a member of a couple of mailing list, you will sometime receive two copies of the same mail. This can be quite annoying, so --- 7910,7918 ---- @node Duplicates @subsection Duplicates ! @vindex nnmail-treat-duplicates @vindex nnmail-message-id-cache-length @vindex nnmail-message-id-cache-file @cindex duplicate mails If you are a member of a couple of mailing list, you will sometime receive two copies of the same mail. This can be quite annoying, so *************** *** 7951,7957 **** there is controlled by the @code{nnmail-message-id-cache-length} variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be stored.) If all this sounds scary to you, you can set ! @code{nnmail-delete-duplicates} to @code{warn} (which is what it is by default), and @code{nnmail} won't delete duplicate mails. Instead it will generate a brand new @code{Message-ID} for the mail and insert a warning into the head of the mail saying that it thinks that this is a --- 7923,7929 ---- there is controlled by the @code{nnmail-message-id-cache-length} variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be stored.) If all this sounds scary to you, you can set ! @code{nnmail-treat-duplicates} to @code{warn} (which is what it is by default), and @code{nnmail} won't delete duplicate mails. Instead it will generate a brand new @code{Message-ID} for the mail and insert a warning into the head of the mail saying that it thinks that this is a *************** *** 10127,10137 **** Require confirmation before catching up a group if non-@code{nil}. It is @code{t} by default. - @item gnus-interactive-post - @vindex gnus-interactive-post - If non-@code{nil}, the user will be prompted for a group name when - posting an article. It is @code{t} by default. - @item gnus-interactive-exit @vindex gnus-interactive-exit Require confirmation before exiting Gnus. This variable is @code{t} by --- 10099,10104 ---- *************** *** 10393,10399 **** frame will be created where picons will be shown. As you can see, instead of the normal @code{1.0} top-level spec, each additional split should have a frame parameter alist as the size spec. ! @xref{(elisp)Frame Parameters}. Here's a list of all possible keys for @code{gnus-buffer-configuration}: --- 10360,10367 ---- frame will be created where picons will be shown. As you can see, instead of the normal @code{1.0} top-level spec, each additional split should have a frame parameter alist as the size spec. ! @xref{Frame Parameters, , Frame Parameters, elisp, The GNU Emacs Lisp ! Reference Manual}. Here's a list of all possible keys for @code{gnus-buffer-configuration}: *************** *** 11054,11061 **** @code{(invisible t intangible t)} by default on most systems, which makes invisible text invisible and intangible. ! @item gnus-parse-header-hook ! @vindex gnus-parse-header-hook A hook called before parsing headers. It can be used, for instance, to gather statistics on the headers fetched, or perhaps you'd like to prune some headers. I don't see why you'd want that, though. --- 11022,11029 ---- @code{(invisible t intangible t)} by default on most systems, which makes invisible text invisible and intangible. ! @item gnus-parse-headers-hook ! @vindex gnus-parse-headers-hook A hook called before parsing headers. It can be used, for instance, to gather statistics on the headers fetched, or perhaps you'd like to prune some headers. I don't see why you'd want that, though.