+Fri Sep 27 21:24:46 1996 Lars Magne Ingebrigtsen <larsi@ylfing.ifi.uio.no>
+
+ * gnus-sum.el (gnus-nov-parse-line): Would double articles.
+
+Fri Sep 27 20:52:31 1996 Shlomo Mahlab <shlomo@en3501.oren.co.il>
+
+ * gnus-cache.el (gnus-jog-cache): Call with function name.
+
+ * gnus-group.el (gnus-group-universal-argument): Shadowed `func'.
+
+Fri Sep 27 19:48:52 1996 Lars Magne Ingebrigtsen <larsi@ylfing.ifi.uio.no>
+
+ * gnus-cite.el (gnus-article-fill-cited-article): Nix out data
+ after filling.
+
+ * gnus-group.el (gnus-group-unsubscribe-current-group): Accept
+ second param.
+ (gnus-group-unsubscribe): New function.
+ (gnus-group-subscribe): New function.
+
+Fri Sep 27 17:36:31 1996 Kurt Swanson <kurt@dna.lth.se>
+
+ * gnus-sum.el (gnus-get-newsgroup-headers-xover): Never add nil
+ headers.
+
+Fri Sep 27 17:33:30 1996 Stephen Peters <speters@cygnus.com>
+
+ * gnus-art.el (gnus-header-face-alist): Typo.
+
+Fri Sep 27 04:10:21 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-msg.el (gnus-summary-mail-crosspost-complaint): Add a tag
+ to the subject.
+ (gnus-mail-yank-original): Elided.
+ (gnus-inews-yank-articles): Would yank articles in reverse order.
+
+Thu Sep 26 22:39:45 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.el: Red Gnus v0.43 is released.
+
Thu Sep 26 22:13:00 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* nnweb.el (nnweb-altavista-wash-article): Didn't remove all
(defcustom gnus-header-face-alist
'(("From" nil gnus-header-from-face)
- ("Subejct" nil gnus-header-subject-face)
+ ("Subject" nil gnus-header-subject-face)
("Newsgroups:.*," nil gnus-header-newsgroups-face)
("" gnus-header-name-face gnus-header-content-face))
"Controls highlighting of article header.
(gnus-group-universal-argument
nil nil
(lambda ()
- (gnus-summary-read-group nil nil t)
+ (gnus-summary-read-group (gnus-group-group-name) nil t)
;; ... and enter the articles into the cache.
(when (eq major-mode 'gnus-summary-mode)
(gnus-uu-mark-buffer)
(set-marker (caar marks) nil)
(setq marks (cdr marks)))
(when marks
- (set-marker (caar marks) nil))))))
+ (set-marker (caar marks) nil))
+ ;; All this information is now incorrect.
+ (setq gnus-cite-prefix-alist nil
+ gnus-cite-attribution-alist nil
+ gnus-cite-loose-prefix-alist nil
+ gnus-cite-loose-attribution-alist nil)))))
(defun gnus-article-hide-citation (&optional arg force)
"Toggle hiding of all cited text except attribution lines.
(defun gnus-group-universal-argument (arg &optional groups func)
"Perform any command on all groups according to the process/prefix convention."
(interactive "P")
- (let ((groups (or groups (gnus-group-process-prefix arg)))
- func)
+ (let ((groups (or groups (gnus-group-process-prefix arg))))
(if (eq (setq func (or func
(key-binding
(read-key-sequence
(gnus-group-update-group-line)))
(gnus-group-position-point))
-(defun gnus-group-unsubscribe-current-group (&optional n)
+(defun gnus-group-unsubscribe (&optional n)
+ "Unsubscribe the current group."
+ (interactive "P")
+ (gnus-group-unsubscribe-current-group n 'unsubscribe))
+
+(defun gnus-group-subscribe (&optional n)
+ "Unsubscribe the current group."
+ (interactive "P")
+ (gnus-group-unsubscribe-current-group n 'subscribe))
+
+(defun gnus-group-unsubscribe-current-group (&optional n do-sub)
"Toggle subscription of the current group.
If given numerical prefix, toggle the N next groups."
(interactive "P")
groups (cdr groups))
(gnus-group-remove-mark group)
(gnus-group-unsubscribe-group
- group (if (<= (gnus-group-group-level) gnus-level-subscribed)
- gnus-level-default-unsubscribed
- gnus-level-default-subscribed) t)
+ group
+ (cond
+ ((eq do-sub 'unsubscribe)
+ gnus-level-default-unsubscribed)
+ ((eq do-sub 'subscribe)
+ gnus-level-default-subscribed)
+ ((<= (gnus-group-group-level) gnus-level-subscribed)
+ gnus-level-default-unsubscribed)
+ (t
+ gnus-level-default-subscribed))
+ t)
(gnus-group-update-group-line))
(gnus-group-next-group 1)))
(defun gnus-inews-yank-articles (articles)
(let (beg article)
+ (message-goto-body)
(while (setq article (pop articles))
(save-window-excursion
(set-buffer gnus-summary-buffer)
(gnus-summary-select-article nil nil nil article)
(gnus-summary-remove-process-mark article))
(gnus-copy-article-buffer)
- (message-goto-body)
(let ((message-reply-buffer gnus-article-copy)
(message-reply-headers gnus-current-headers))
(message-yank-original)
(set-buffer gnus-message-buffer)
(message-goto-body)
(insert (format gnus-crosspost-complaint newsgroups group))
+ (message-goto-subject)
+ (re-search-forward " *$")
+ (replace-match " (crosspost notification)" t t)
(when (gnus-y-or-n-p "Send this complaint? ")
(message-send-and-exit)))))))
(skip-chars-forward ", "))
accumulated))
-(defun gnus-mail-yank-original ()
- (interactive)
- (save-excursion
- (mail-yank-original nil))
- (or mail-yank-hooks mail-citation-hook
- (run-hooks 'news-reply-header-hook)))
-
(defun gnus-inews-add-to-address (group)
(let ((to-address (mail-fetch-field "to")))
(when (and to-address
(defmacro gnus-nov-field ()
'(buffer-substring (point) (if (gnus-nov-skip-field) (1- (point)) eol)))
+(defvar gnus-nov-none-counter 0)
+
;; This function has to be called with point after the article number
;; on the beginning of the line.
(defun gnus-nov-parse-line (number dependencies &optional force-new)
- (let ((none 0)
- (eol (gnus-point-at-eol))
+ (let ((eol (gnus-point-at-eol))
(buffer (current-buffer))
header ref id id-dep ref-dep)
(setq id (or (gnus-nov-field)
(concat "none+"
(int-to-string
- (setq none (1+ none)))))) ; id
+ (incf gnus-nov-none-counter))))) ; id
(progn
- (save-excursion
- (let ((beg (point)))
- (search-forward "\t" eol)
- (if (search-backward ">" beg t)
- (setq ref
- (buffer-substring
- (1+ (point))
- (search-backward "<" beg t)))
- (setq ref nil))))
+ (let ((beg (point)))
+ (search-forward "\t" eol)
+ (if (search-backward ">" beg t)
+ (setq ref
+ (buffer-substring
+ (1+ (point))
+ (search-backward "<" beg t)))
+ (setq ref nil))
+ (goto-char beg))
(gnus-nov-field)) ; refs
(gnus-nov-read-integer) ; chars
(gnus-nov-read-integer) ; lines
(setq header nil))
(setcar (symbol-value id-dep) header))
(set id-dep (list header)))
- (if (boundp (setq ref-dep (intern (or ref "none") dependencies)))
- (setcdr (symbol-value ref-dep)
- (nconc (cdr (symbol-value ref-dep))
- (list (symbol-value id-dep))))
- (set ref-dep (list nil (symbol-value id-dep))))
+ (when header
+ (if (boundp (setq ref-dep (intern (or ref "none") dependencies)))
+ (setcdr (symbol-value ref-dep)
+ (nconc (cdr (symbol-value ref-dep))
+ (list (symbol-value id-dep))))
+ (set ref-dep (list nil (symbol-value id-dep)))))
header))
;; Goes through the xover lines and returns a list of vectors
(eq number (car sequence))
(progn
(setq sequence (cdr sequence))
- (push (inline (gnus-nov-parse-line
- number dependencies force-new))
- headers)))
+ (setq header (inline
+ (gnus-nov-parse-line
+ number dependencies force-new))))
+ (push header headers))
(forward-line 1))
(error
- (progn
- (gnus-error 4 "Strange nov line")
- (forward-line 1)))))
+ (gnus-error 4 "Strange nov line")))
+ (forward-line 1))
(nreverse headers))))
(defun gnus-article-get-xrefs ()
`right-toolbar', and `left-toolbar'.")
(defvar gnus-group-toolbar
- '(
- [gnus-group-get-new-news gnus-group-get-new-news t "Get new news"]
+ '([gnus-group-get-new-news gnus-group-get-new-news t "Get new news"]
[gnus-group-get-new-news-this-group
gnus-group-get-new-news-this-group t "Get new news in this group"]
[gnus-group-catchup-current
gnus-group-catchup-current t "Catchup group"]
[gnus-group-describe-group
gnus-group-describe-group t "Describe group"]
+ [gnus-group-unsubscribe gnus-group-unsubscribe t "Unsubscribe group"]
+ [gnus-group-subscribe gnus-group-subscribe t "Subscribe group"]
[gnus-group-kill-group gnus-group-kill-group t "Kill group"]
[gnus-group-exit gnus-group-exit t "Exit Gnus"]
)
"The group buffer toolbar.")
(defvar gnus-summary-toolbar
- '(
- [gnus-summary-prev-unread
+ '([gnus-summary-prev-unread
gnus-summary-prev-unread-article t "Prev unread article"]
[gnus-summary-next-unread
gnus-summary-next-unread-article t "Next unread article"]
gnus-uu-post-news t "Post an uuencoded article"]
[gnus-summary-cancel-article
gnus-summary-cancel-article t "Cancel article"]
+ [gnus-summary-catchup
+ gnus-summary-catchup t "Catchup"]
[gnus-summary-catchup-and-exit
gnus-summary-catchup-and-exit t "Catchup and exit"]
[gnus-summary-exit gnus-summary-exit t "Exit this summary"]
gnus-summary-save-article t "Save article"]
[gnus-summary-catchup-and-exit
gnus-summary-catchup-and-exit t "Catchup and exit"]
+ [gnus-summary-catchup
+ gnus-summary-catchup t "Catchup"]
[gnus-summary-exit gnus-summary-exit t "Exit this summary"]
)
"The summary buffer mail toolbar.")
"Score and kill file handling."
:group 'gnus )
-(defconst gnus-version-number "0.43"
+(defconst gnus-version-number "0.44"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Red Gnus v%s" gnus-version-number)
(current-buffer))
(defmacro nnheader-temp-write (file &rest forms)
- "Create a new buffer, evaluate FORM there, and write the buffer to FILE."
- `(save-excursion
- (let* ((nnheader-temp-file ,file)
- (default-major-mode 'fundamental-mode)
- (nnheader-temp-cur-buffer
- (nnheader-set-temp-buffer
- (generate-new-buffer-name " *nnheader temp*"))))
- (when (and nnheader-temp-file
- (not (file-directory-p (file-name-directory
- nnheader-temp-file))))
- (make-directory (file-name-directory nnheader-temp-file) t))
- (unwind-protect
- (prog1
+ "Create a new buffer, evaluate FORMS there, and write the buffer to FILE.
+Return the value of FORMS.
+If FILE is nil, just evaluate FORMS and don't save anything.
+If FILE is t, return the buffer contents as a string."
+ (let ((temp-file (make-symbol "temp-file"))
+ (temp-buffer (make-symbol "temp-buffer"))
+ (temp-results (make-symbol "temp-results")))
+ `(save-excursion
+ (let* ((,temp-file ,file)
+ (default-major-mode 'fundamental-mode)
+ (,temp-buffer
(progn
- ,@forms)
- (when nnheader-temp-file
- (set-buffer nnheader-temp-cur-buffer)
- (write-region (point-min) (point-max)
- nnheader-temp-file nil 'nomesg)))
- (when (buffer-name nnheader-temp-cur-buffer)
- (kill-buffer nnheader-temp-cur-buffer))))))
+ (set-buffer
+ (get-buffer-create
+ (generate-new-buffer-name " *nnheader temp*")))
+ (buffer-disable-undo (current-buffer))
+ (current-buffer)))
+ ,temp-results)
+ (unwind-protect
+ (progn
+ (setq ,temp-results (progn ,@forms))
+ (cond
+ ;; Don't save anything.
+ ((null ,temp-file)
+ ,temp-results)
+ ;; Return the buffer contents.
+ ((eq ,temp-file t)
+ (set-buffer ,temp-buffer)
+ (buffer-string))
+ ;; Save a file.
+ (t
+ (set-buffer ,temp-buffer)
+ ;; Make sure the directory where this file is
+ ;; to be saved exists.
+ (when (not (file-directory-p
+ (file-name-directory ,temp-file)))
+ (make-directory (file-name-directory ,temp-file) t))
+ ;; Save the file.
+ (write-region (point-min) (point-max)
+ ,temp-file nil 'nomesg)
+ ,temp-results)))
+ ;; Kill the buffer.
+ (when (buffer-name ,temp-buffer)
+ (kill-buffer ,temp-buffer)))))))
(put 'nnheader-temp-write 'lisp-indent-function 1)
(put 'nnheader-temp-write 'lisp-indent-hook 1)
--- /dev/null
+TEXI2DVI=texi2dvi
+EMACS=emacs
+MAKEINFO=$(EMACS) -batch -q -no-site-file
+INFOSWI=-l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
+LATEX=latex
+DVIPS=dvips
+PERL=perl
+
+all: gnus message
+
+most: texi2latexi.elc latex latexps
+
+gnus: gnus.texi
+ $(MAKEINFO) gnus.texi $(INFOSWI)
+
+message: message.texi
+ $(MAKEINFO) message.texi $(INFOSWI)
+
+dvi: gnus.dvi message.dvi
+
+.texi.dvi :
+ $(PERL) -n -e 'print unless (/\@iflatex/ .. /\@end iflatex/)' $< > gnustmp.texi
+ $(TEXI2DVI) gnustmp.texi
+
+refcard.dvi: refcard.tex gnuslogo.refcard gnusref.tex
+ $(LATEX) refcard.tex
+
+sclean:
+ rm -f gnus.*.bak *.ky *.cp *.fn *.cps *.kys *.log *.aux *.dvi *.vr \
+ *.tp *.toc \
+ *.pg gnus.latexi *.aux *.[cgk]idx \
+ gnus.ilg gnus.ind gnus.[cgk]ind gnus.idx \
+ gnus.tmptexi gnus.tmplatexi gnus.tmplatexi1 texput.log *.orig *.rej \
+ gnus.latexi*~*
+
+clean:
+ make sclean
+ rm -f *.latexi
+
+makeinfo:
+ makeinfo -o gnus gnus.texi
+ makeinfo -o message message.texi
+
+texi2latexi.elc:
+ $(EMACS) -batch -l bytecomp -f batch-byte-recompile-directory
+
+latex: gnus.texi
+ $(EMACS) -batch -q -no-site-file gnus.texi -l ./texi2latex.elc -f latexi-translate
+
+latexps:
+ egrep -v "label.*Index|chapter.*Index" gnus.latexi > gnus.tmplatexi1
+ $(LATEX) gnus.tmplatexi1
+ splitindex
+ makeindex -o gnus.kind gnus.kidx
+ makeindex -o gnus.cind gnus.cidx
+ makeindex -o gnus.gind gnus.gidx
+ egrep -v "end{document}" gnus.tmplatexi1 > gnus.tmplatexi
+ cat postamble.tex >> gnus.tmplatexi
+ $(LATEX) gnus.tmplatexi
+ $(LATEX) gnus.tmplatexi
+ $(DVIPS) -f gnus.dvi > gnus.ps
+
+pss:
+ make latex
+ make latexps
+
+psout:
+ make latex
+ make latexboth
+ make out
+
+latexboth:
+ rm -f gnus-manual-a4.ps.gz gnus-manual-standard.ps.gz
+ make latexps
+ mv gnus.ps gnus-manual-a4.ps
+ gzip gnus-manual-a4.ps
+ sed 's/,a4paper//' gnus.latexi > gnus-standard.latexi
+ make latexps
+ mv gnus.ps gnus-manual-standard.ps
+ gzip gnus-manual-standard.ps
+
+out:
+ cp gnus-manual-standard.ps.gz gnus-manual-a4.ps.gz \
+ /local/ftp/pub/emacs/gnus/manual
+ mv gnus-manual-standard.ps.gz gnus-manual-a4.ps.gz \
+ /hom/larsi/www_docs/gnus/manual
+
+veryclean:
+ make clean
+ rm -f gnus.dvi gnus.ps
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Red Gnus 0.43 Manual
+@settitle Red Gnus 0.44 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Red Gnus 0.43 Manual
+@title Red Gnus 0.44 Manual
@author by Lars Magne Ingebrigtsen
@page
@item jem@@xpat.com;
@cindex Jem
-Jem---Korean despammer who is getting very busy these days.
+John Milburn---despammer located in Korea who is getting very busy these
+days.
@item red@@redpoll.mrfs.oh.us (Richard E. Depew)
Richard E. Depew---lone American despammer. He mostly cancels binary