+Sun Feb 15 19:50:10 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Quassia Gnus v0.27 is released.
+
+Sun Feb 15 19:41:14 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.el (gnus-ephemeral-servers): New variable.
+ * gnus-srvr.el (gnus-server-prepare): Use it.
+ * gnus-group.el (gnus-group-read-ephemeral-group): Ditto.
+
+Sun Feb 15 19:35:11 1998 Kurt Swanson <kurt@dna.lth.se>
+
+ * gnus-art.el (gnus-article-read-summary-keys): Go to top on
+ some.
+
+Sun Feb 15 19:26:21 1998 SeokChan LEE <chan@xfer.kren.nm.kr>
+
+ * message.el (message-ignored-supersedes-headers): Fix.
+
+Sun Feb 15 18:39:15 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-salt.el (gnus-tree-close): Start killing buffer again.
+
+ * gnus-sum.el (gnus-mark-article-as-read): Return t.
+
+ * gnus-art.el (gnus-article-edit-mode): Run text mode hook.
+
+Sun Feb 15 17:31:19 1998 Roland Roberts <rroberts@muller.com>
+
+ * gnus-sum.el (gnus-nov-parse-line): Would bug out on bogus
+ References headers.
+
+Sun Feb 15 14:23:51 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-art.el (gnus-article-current-summary): New variable.
+ (gnus-article-mode): Make it local.
+
+ * gnus-score.el (gnus-summary-increase-score): Find the right
+ global score file.
+
+ * gnus-start.el (gnus-setup-news): Don't find new newsgroups
+ unless plugged.
+
+ * message.el (message-mode): Set font-lock things before running
+ mode hook.
+
+ * gnus-agent.el (gnus-agent-group-path): Respect long file names.
+
+Sat Feb 14 21:31:25 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-sum.el (gnus-summary-goto-last-article): Force jumping to
+ articles outside limit.
+
+ * gnus-agent.el (gnus-agent-toggle-plugged): un/plug before hook.
+
+Sat Feb 14 21:08:03 1998 Kim-Minh Kaplan <KimMinh.Kaplan@utopia.eunet.fr>
+
+ * gnus-xmas.el (gnus-xmas-article-display-xface): t t would make
+ faces disappear.
+
+Sat Feb 14 20:52:34 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nntp.el (nntp-netrc-file): New variable.
+
Sat Feb 14 19:28:01 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Quassia Gnus v0.26 is released.
(defun gnus-agent-toggle-plugged (plugged)
"Toggle whether Gnus is unplugged or not."
(interactive (list (not gnus-plugged)))
+ (setq gnus-plugged plugged)
(if plugged
(progn
(gnus-run-hooks 'gnus-agent-plugged-hook)
(gnus-agent-close-connections)
(gnus-run-hooks 'gnus-agent-unplugged-hook)
(setcar (cdr gnus-agent-mode-status) " Unplugged"))
- (setq gnus-plugged plugged)
(set-buffer-modified-p t))
(defun gnus-agent-close-connections ()
(defun gnus-agent-group-path (group)
"Translate GROUP into a path."
- (nnheader-translate-file-chars
- (nnheader-replace-chars-in-string group ?. ?/)))
+ (if nnmail-use-long-file-names
+ group
+ (nnheader-translate-file-chars
+ (nnheader-replace-chars-in-string group ?. ?/))))
\f
;;; Internal variables
(defvar article-lapsed-timer nil)
+(defvar gnus-article-current-summary nil)
(defvar gnus-article-mode-syntax-table
(let ((table (copy-syntax-table text-mode-syntax-table)))
(defvar gnus-save-article-buffer nil)
(defvar gnus-article-mode-line-format-alist
- (nconc '((?w (gnus-article-wash-status) ?s))
- gnus-summary-mode-line-format-alist))
+ (nconc '((?w (gnus-article-wash-status) ?s))
+ gnus-summary-mode-line-format-alist))
(defvar gnus-number-of-articles-to-be-saved nil)
(gnus-number-of-articles-to-be-saved
(when (eq gnus-prompt-before-saving t)
num))) ; Magic
- (set-buffer gnus-summary-buffer)
+ (set-buffer gnus-article-current-summary)
(funcall gnus-default-article-saver filename)))))
(defun gnus-read-save-file-name (prompt &optional filename
(set (make-local-variable 'page-delimiter) gnus-page-delimiter)
(set (make-local-variable 'gnus-page-broken) nil)
(set (make-local-variable 'gnus-button-marker-list) nil)
+ (set (make-local-variable 'gnus-article-current-summary) nil)
(gnus-set-default-directory)
(buffer-disable-undo (current-buffer))
(setq buffer-read-only t)
(let ((obuf (current-buffer))
(owin (current-window-configuration))
func)
- (switch-to-buffer gnus-summary-buffer 'norecord)
+ (switch-to-buffer gnus-article-current-summary 'norecord)
(setq func (lookup-key (current-local-map) (this-command-keys)))
(call-interactively func)
(set-buffer obuf)
"Execute the last keystroke in the summary buffer."
(interactive)
(let (func)
- (pop-to-buffer gnus-summary-buffer 'norecord)
+ (pop-to-buffer gnus-article-current-summary 'norecord)
(setq func (lookup-key (current-local-map) (this-command-keys)))
(call-interactively func)))
'("A\r"))
(nosave-in-article
'("\C-d"))
+ (up-to-top
+ '("n" "Gn" "p" "Gp"))
keys)
(save-excursion
- (set-buffer gnus-summary-buffer)
+ (set-buffer gnus-article-current-summary)
(let (gnus-pick-mode)
(push (or key last-command-event) unread-command-events)
(setq keys (read-key-sequence nil))))
(member keys nosave-in-article))
(let (func)
(save-window-excursion
- (pop-to-buffer gnus-summary-buffer 'norecord)
+ (pop-to-buffer gnus-article-current-summary 'norecord)
;; We disable the pick minor mode commands.
(let (gnus-pick-mode)
(setq func (lookup-key (current-local-map) keys))))
(if (not func)
(ding)
(unless (member keys nosave-in-article)
- (set-buffer gnus-summary-buffer))
+ (set-buffer gnus-article-current-summary))
(call-interactively func))
(when (member keys nosave-but-article)
(pop-to-buffer gnus-article-buffer 'norecord)))
(opoint (point))
func in-buffer)
(if not-restore-window
- (pop-to-buffer gnus-summary-buffer 'norecord)
- (switch-to-buffer gnus-summary-buffer 'norecord))
+ (pop-to-buffer gnus-article-current-summary 'norecord)
+ (switch-to-buffer gnus-article-current-summary 'norecord))
(setq in-buffer (current-buffer))
;; We disable the pick minor mode commands.
(if (setq func (let (gnus-pick-mode)
(set-buffer obuf)
(unless not-restore-window
(set-window-configuration owin))
- (set-window-point (get-buffer-window (current-buffer)) opoint))))))
+ (unless (member keys up-to-top)
+ (set-window-point (get-buffer-window (current-buffer))
+ opoint)))))))
(defun gnus-article-hide (&optional arg force)
"Hide all the gruft in the current article.
;; It was a pseudo.
(t article)))
+ ;; Associate this article with the current summary buffer.
+ (setq gnus-article-current-summary gnus-summary-buffer)
+
;; Take the article from the original article buffer
;; and place it in the buffer it's supposed to be in.
(when (and (get-buffer gnus-article-buffer)
- ;;(numberp article)
(equal (buffer-name (current-buffer))
(buffer-name (get-buffer gnus-article-buffer))))
(save-excursion
(setq buffer-read-only nil)
(buffer-enable-undo)
(widen)
- (gnus-run-hooks 'text-mode 'gnus-article-edit-mode-hook))
+ (gnus-run-hooks 'text-mode-hook 'gnus-article-edit-mode-hook))
(defun gnus-article-edit (&optional force)
"Edit the current article.
(cons gnus-summary-buffer
gnus-current-window-configuration))))))
gnus-newsrc-hashtb)
+ (push method gnus-ephemeral-servers)
(set-buffer gnus-group-buffer)
(unless (gnus-check-server method)
(error "Unable to contact server: %s" (gnus-status-message method)))
(gnus-get-tree-buffer))
(defun gnus-tree-close (group)
- ;(gnus-kill-buffer gnus-tree-buffer)
- )
+ (gnus-kill-buffer gnus-tree-buffer))
(defun gnus-highlight-selected-tree (article)
"Highlight the selected article in the tree."
(save-excursion
(set-buffer gnus-summary-buffer)
(gnus-score-load-file
- (gnus-score-file-name "all"))))
+ ;; This is a kludge; yes...
+ (cond
+ ((eq gnus-score-find-score-files-function
+ 'gnus-score-find-hierarchical)
+ (gnus-score-file-name ""))
+ ((eq gnus-score-find-score-files-function 'gnus-score-find-single)
+ current-score-file)
+ (t
+ (gnus-score-file-name "all"))))))
(gnus-summary-score-entry
(nth 1 entry) ; Header
((or (null newsgroup)
(string-equal newsgroup ""))
;; The global score file is placed at top of the directory.
- (expand-file-name
- suffix gnus-kill-files-directory))
+ (expand-file-name suffix gnus-kill-files-directory))
((gnus-use-long-file-name 'not-score)
;; Append ".SCORE" to newsgroup name.
(expand-file-name (concat (gnus-newsgroup-savable-name newsgroup)
;; Then we insert the list of servers that have been opened in
;; this session.
(while opened
- (unless (member (caar opened) done)
+ (when (and (not (member (caar opened) done))
+ ;; Just ignore ephemeral servers.
+ (not (member (caar opened) gnus-ephemeral-servers)))
(push (caar opened) done)
(gnus-server-insert-server-line
(setq op-ser (format "%s:%s" (caaar opened) (nth 1 (caar opened))))
:type '(choice directory (const nil)))
(defcustom gnus-check-new-newsgroups 'ask-server
- "*Non-nil means that Gnus will run gnus-find-new-newsgroups at startup.
+ "*Non-nil means that Gnus will run `gnus-find-new-newsgroups' at startup.
This normally finds new newsgroups by comparing the active groups the
servers have already reported with those Gnus already knows, either alive
or killed.
-When any of the following are true, gnus-find-new-newsgroups will instead
+When any of the following are true, `gnus-find-new-newsgroups' will instead
ask the servers (primary, secondary, and archive servers) to list new
groups since the last time it checked:
1. This variable is `ask-server'.
2. This variable is a list of select methods (see below).
3. `gnus-read-active-file' is nil or `some'.
- 4. A prefix argument is given to gnus-find-new-newsgroups interactively.
+ 4. A prefix argument is given to `gnus-find-new-newsgroups' interactively.
Thus, if this variable is `ask-server' or a list of select methods or
`gnus-read-active-file' is nil or `some', then the killed list is no
gnus-newsgroup-data nil
gnus-newsgroup-unreads nil
nnoo-state-alist nil
- gnus-current-select-method nil)
+ gnus-current-select-method nil
+ gnus-ephemeral-servers nil)
(gnus-shutdown 'gnus)
;; Kill the startup file.
(and gnus-current-startup-file
;; Find new newsgroups and treat them.
(when (and init gnus-check-new-newsgroups (not level)
(gnus-check-server gnus-select-method)
- (not gnus-slave))
+ (not gnus-slave)
+ gnus-plugged)
(gnus-find-new-newsgroups))
;; We might read in new NoCeM messages here.
(setq ref
(buffer-substring
(1+ (point))
- (search-backward "<" beg t)))
+ (or (search-backward "<" beg t) beg)))
(setq ref nil))
(goto-char beg))
(gnus-nov-field)) ; refs
(interactive)
(prog1
(when gnus-last-article
- (gnus-summary-goto-article gnus-last-article))
+ (gnus-summary-goto-article gnus-last-article nil t))
(gnus-summary-position-point)))
(defun gnus-summary-pop-article (number)
;; through the expiry process.
(gnus-message 6 "Expiring articles...")
;; The list of articles that weren't expired is returned.
- (if expiry-wait
- (let ((nnmail-expiry-wait-function nil)
- (nnmail-expiry-wait expiry-wait))
- (setq es (gnus-request-expire-articles
- expirable gnus-newsgroup-name)))
- (setq es (gnus-request-expire-articles
- expirable gnus-newsgroup-name)))
+ (save-excursion
+ (if expiry-wait
+ (let ((nnmail-expiry-wait-function nil)
+ (nnmail-expiry-wait expiry-wait))
+ (setq es (gnus-request-expire-articles
+ expirable gnus-newsgroup-name)))
+ (setq es (gnus-request-expire-articles
+ expirable gnus-newsgroup-name))))
(unless total
(setq gnus-newsgroup-expirable es))
;; We go through the old list of expirable, and mark all
This means that *all* articles that are marked as expirable will be
deleted forever, right now."
(interactive)
- (or gnus-expert-user
- (gnus-yes-or-no-p
- "Are you really, really, really sure you want to delete all these messages? ")
- (error "Phew!"))
+ (unless gnus-expert-user
+ (gnus-yes-or-no-p
+ "Are you really, really, really sure you want to delete all these messages? ")
+ (error "Phew!"))
(gnus-summary-expire-articles t))
;; Suggested by Jack Vinson <vinson@unagi.cis.upenn.edu>.
(push (cons article mark) gnus-newsgroup-reads)
;; Possibly remove from cache, if that is used.
(when gnus-use-cache
- (gnus-cache-enter-remove-article article))))
+ (gnus-cache-enter-remove-article article))
+ t))
(defun gnus-mark-article-as-unread (article &optional mark)
"Enter ARTICLE in the pertinent lists and remove it from others."
(make-glyph
(vector 'xpm :data (buffer-string))))))
(t
- (make-glyph [nothing])))))
+ (make-glyph [nothing]))))
+ (ext (make-extent (progn
+ (goto-char (point-min))
+ (re-search-forward "^From:" nil t)
+ (point))
+ (1+ (point)))))
(set-glyph-face xface-glyph 'gnus-x-face)
- (goto-char (point-min))
- (re-search-forward "^From:" nil t)
- (set-extent-begin-glyph
- (make-extent (point) (1+ (point))) xface-glyph))))
+ (set-extent-begin-glyph ext xface-glyph)
+ (set-extent-property ext 'duplicable t))))
;;(defvar gnus-xmas-pointer-glyph
;; (progn
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "0.26"
+(defconst gnus-version-number "0.27"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Quassia Gnus v%s" gnus-version-number)
(defvar gnus-group-get-parameter-function 'gnus-group-get-parameter)
(defvar gnus-original-article-buffer " *Original Article*")
(defvar gnus-newsgroup-name nil)
+(defvar gnus-ephemeral-servers nil)
(defvar gnus-agent nil
"Whether we want to use the Gnus agent or not.")
:group 'message-headers
:type 'regexp)
-(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|X-Trace:\\|X-Complaints-To:\\|Return-Path:\\|^Supersedes:"
+(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|^X-Trace:\\|^X-Complaints-To:\\|Return-Path:\\|^Supersedes:"
"*Header lines matching this regexp will be deleted before posting.
It's best to delete old Path and Date headers before posting to avoid
any confusion."
(mail-abbrevs-setup)
(funcall (intern "mail-aliases-setup"))))
(message-set-auto-save-file-name)
- (gnus-run-hooks 'text-mode-hook 'message-mode-hook)
(unless (string-match "XEmacs" emacs-version)
(set (make-local-variable 'font-lock-defaults)
- '(message-font-lock-keywords t))))
+ '(message-font-lock-keywords t)))
+ (gnus-run-hooks 'text-mode-hook 'message-mode-hook))
\f
have an account at the machine \"other.machine\". This machine has
access to an NNTP server that you can't access locally. You could
then use this hook to rsh to the remote machine and start a proxy NNTP
-server there that you can connect to. See also `nntp-open-connection-function'")
+server there that you can connect to. See also
+`nntp-open-connection-function'")
(defvoo nntp-warn-about-losing-connection t
"*If non-nil, beep when a server closes connection.")
"*Coding system to read from NNTP.")
(defvoo nntp-coding-system-for-write 'binary
- "*Coding system to write to NNTP.")
+ "*Coding system to write to NNTP.")
+
+(defvar nntp-netrc-file "~/.netrc"
+ "*The location of the file containing authinfo information.")
\f
(ignore-errors
(nntp-send-string process "QUIT")
(unless (eq nntp-open-connection-function 'nntp-open-network-stream)
+ ;; Ok, this is evil, but when using telnet and stuff
+ ;; as the connection method, it's important that the
+ ;; QUIT command actually is sent out before we kill
+ ;; the process.
(sleep-for 1))))
(when (buffer-name (process-buffer process))
(kill-buffer (process-buffer process))))))
It will look in the \"~/.netrc\" file for matching entries. If
nothing suitable is found there, it will prompt for a user name
and a password."
- (let* ((list (gnus-parse-netrc "~/.netrc"))
+ (let* ((list (gnus-parse-netrc nntp-netrc-file))
(alist (gnus-netrc-machine list nntp-address))
(user (gnus-netrc-get alist "login"))
(passwd (gnus-netrc-get alist "password")))
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Quassia Gnus 0.26 Manual
+@settitle Quassia Gnus 0.27 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Quassia Gnus 0.26 Manual
+@title Quassia Gnus 0.27 Manual
@author by Lars Magne Ingebrigtsen
@page
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Quassia Gnus 0.26.
+This manual corresponds to Quassia Gnus 0.27.
@end ifinfo
@item nntp-authinfo-function
@vindex nntp-authinfo-function
@findex nntp-send-authinfo
+@vindex nntp-netrc-file
This function will be used to send @samp{AUTHINFO} to the @sc{nntp}
server. The default function is @code{nntp-send-authinfo}, which looks
-through your @file{~/.netrc} for applicable entries. If none are found,
-it will prompt you for a login name and a password. The format of the
-@file{~/.netrc} file is defined in the @code{ftp} manual page, but here
-are the salient facts:
+through your @file{~/.netrc} (or whatever you've set the
+@code{nntp-netrc-file} variable to) for applicable entries. If none are
+found, it will prompt you for a login name and a password. The format
+of the @file{~/.netrc} file is defined in the @code{ftp} manual page,
+but here are the salient facts:
@enumerate
@item
Jari Aalto,
Adrian Aichner,
+Russ Allbery,
Peter Arius,
Matt Armstrong,
Marc Auslander,
Dave Disser,
Joev Dubach,
Michael Welsh Duggan,
+Dave Edmondson,
Paul Eggert,
Enami Tsugutomo, @c Enami
Michael Ernst,
Hisashige Kenji, @c Hisashige
Marc Horowitz,
Gunnar Horrigmo,
+Richard Hoskins,
Brad Howes,
François Felix Ingrand,
Ishikawa Ichiro, @c Ishikawa
Andreas Jaeger,
Randell Jesup,
Fred Johansen,
+Simon Josefsson,
Greg Klanderman,
Karl Kleinpaste,
Peter Skov Knudsen,
Tonny Madsen,
Shlomo Mahlab,
Nat Makarevitch,
+Istvan Marko,
David Martin,
Gordon Matzigkeit,
Timo Metzemakers,
Erik Toubro Nielsen,
Hrvoje Niksic,
Andy Norman,
+Fred Oberhauser,
C. R. Oldham,
Alexandre Oliva,
Ken Olstad,
John McClary Prevost,
Colin Rafferty,
Lars Balker Rasmussen,
+Joe Reiss,
+Renaud Rioboo,
+Roland B. Roberts,
Bart Robinson,
+Christian von Roques,
Jason Rumney,
Jay Sachs,
Dewey M. Sasser,
Philippe Troin,
James Troup,
Aaron M. Ucko,
+Aki Vehtari,
Didier Verna,
Jan Vroonhof,
Stefan Waldherr,
+Pete Ware,
Barry A. Warsaw,
Christoph Wedler,
Joe Wells,
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Message 0.26 Manual
+@settitle Message 0.27 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Message 0.26 Manual
+@title Message 0.27 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Message 0.26. Message is distributed with
+This manual corresponds to Message 0.27. Message is distributed with
the Gnus distribution bearing the same version number as this manual
has.