+Wed Oct 16 03:49:12 1996 Alexandre Oliva <oliva@dcc.unicamp.br>
+
+ * gnus-start.el (gnus-setup-news): Make sure
+ `gnus-group-line-format' is bound.
+
+Wed Oct 16 02:57:37 1996 Lars Magne Ingebrigtsen <larsi@ylfing.ifi.uio.no>
+
+ * nntp.el (nntp-after-change-function-callback): Would delete the
+ first line of all articles.
+
+Mon Oct 14 21:31:42 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-sum.el (gnus-summary-limit-to-marks): Accept prefix.
+
+Sun Oct 13 16:37:05 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-srvr.el (gnus-browse-foreign-server): Message better.
+
+Sat Oct 12 19:33:01 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * message.el (message-indent-citation): Would infloop on empty
+ articles.
+
+Sat Oct 12 19:21:05 1996 Raja R. Harinath <harinath@cs.umn.edu>
+
+ * gnus.el: Autoload more functions.
+
+Sat Oct 12 19:09:12 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-sum.el (gnus-summary-catchup): Don't move point.
+ (gnus-summary-limit-exclude-marks): New command.
+
+Fri Oct 11 15:26:02 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.el: Red Gnus v0.50 is released.
+
Thu Oct 10 23:36:32 1996 Jan Vroonhof <vroonhof@math.ethz.ch>
* gnus-nocem.el (gnus-nocem): Typo.
;;; Code:
+(fset 'facep 'ignore)
+
(require 'cl)
(push "." load-path)
(defvar gnus-kill-file-mode-map nil)
(unless gnus-kill-file-mode-map
- (gnus-define-keymap
- (setq gnus-kill-file-mode-map (copy-keymap emacs-lisp-mode-map))
- "\C-c\C-k\C-s" gnus-kill-file-kill-by-subject
- "\C-c\C-k\C-a" gnus-kill-file-kill-by-author
- "\C-c\C-k\C-t" gnus-kill-file-kill-by-thread
- "\C-c\C-k\C-x" gnus-kill-file-kill-by-xref
- "\C-c\C-a" gnus-kill-file-apply-buffer
- "\C-c\C-e" gnus-kill-file-apply-last-sexp
- "\C-c\C-c" gnus-kill-file-exit))
+ (gnus-define-keymap (setq gnus-kill-file-mode-map
+ (copy-keymap emacs-lisp-mode-map))
+ "\C-c\C-k\C-s" gnus-kill-file-kill-by-subject
+ "\C-c\C-k\C-a" gnus-kill-file-kill-by-author
+ "\C-c\C-k\C-t" gnus-kill-file-kill-by-thread
+ "\C-c\C-k\C-x" gnus-kill-file-kill-by-xref
+ "\C-c\C-a" gnus-kill-file-apply-buffer
+ "\C-c\C-e" gnus-kill-file-apply-last-sexp
+ "\C-c\C-c" gnus-kill-file-exit))
(defun gnus-kill-file-mode ()
"Major mode for editing kill files.
(gnus-message
1 "Unable to contact server: %s" (gnus-status-message method))
nil)
- ((not (gnus-request-list method))
+ ((not
+ (prog2
+ (gnus-message 6 "Reading active file...")
+ (gnus-request-list method)
+ (gnus-message 6 "Reading active file...done")))
(gnus-message
1 "Couldn't request list: %s" (gnus-status-message method))
nil)
(gnus-update-format-specifications)
;; See whether we need to read the description file.
- (when (and (string-match "%[-,0-9]*D" gnus-group-line-format)
+ (when (and (boundp 'gnus-group-line-format)
+ (string-match "%[-,0-9]*D" gnus-group-line-format)
(not gnus-description-hashtb)
(not dont-connect)
gnus-read-active-file)
(zerop (forward-line 1)))))))
;; Store the active file in a hash table.
(goto-char (point-min))
- (if (string-match "%[oO]" gnus-group-line-format)
+ (if (and (boundp 'gnus-group-line-format)
+ (string-match "%[oO]" gnus-group-line-format))
;; Suggested by Brian Edmonds <edmonds@cs.ubc.ca>.
;; If we want information on moderated groups, we use this
;; loop...
gnus-duplicate-mark)
'reverse)))
-(defalias 'gnus-summary-delete-marked-with 'gnus-summary-limit-to-marks)
-(make-obsolete 'gnus-summary-delete-marked-with 'gnus-summary-limit-to-marks)
+(defalias 'gnus-summary-delete-marked-with 'gnus-summary-limit-exclude-marks)
+(make-obsolete 'gnus-summary-delete-marked-with
+ 'gnus-summary-limit-exlude-marks)
-(defun gnus-summary-limit-to-marks (marks &optional reverse)
- "Limit the summary buffer to articles that are marked with MARKS (e.g. \"DK\").
-If REVERSE, limit the summary buffer to articles that are not marked
+(defun gnus-summary-limit-exclude-marks (marks &optional reverse)
+ "Exclude articles that are marked with MARKS (e.g. \"DK\").
+If REVERSE, limit the summary buffer to articles that are marked
with MARKS. MARKS can either be a string of marks or a list of marks.
Returns how many articles were removed."
(interactive "sMarks: ")
+ (gnus-summary-limit-to-marks marks t))
+
+(defun gnus-summary-limit-to-marks (marks &optional reverse)
+ "Limit the summary buffer to articles that are marked with MARKS (e.g. \"DK\").
+If REVERSE (the prefix), limit the summary buffer to articles that are
+not marked with MARKS. MARKS can either be a string of marks or a
+list of marks.
+Returns how many articles were removed."
+ (interactive (list (read-string "Marks: ") current-prefix-arg))
(gnus-set-global-variables)
(prog1
(let ((data gnus-newsgroup-data)
(interactive "P")
(gnus-set-global-variables)
(prog1
- (when (or quietly
- (not gnus-interactive-catchup) ;Without confirmation?
- gnus-expert-user
- (gnus-y-or-n-p
- (if all
- "Mark absolutely all articles as read? "
- "Mark all unread articles as read? ")))
- (if (and not-mark
- (not gnus-newsgroup-adaptive)
- (not gnus-newsgroup-auto-expire)
- (not gnus-suppress-duplicates))
- (progn
- (when all
- (setq gnus-newsgroup-marked nil
- gnus-newsgroup-dormant nil))
+ (save-excursion
+ (when (or quietly
+ (not gnus-interactive-catchup) ;Without confirmation?
+ gnus-expert-user
+ (gnus-y-or-n-p
+ (if all
+ "Mark absolutely all articles as read? "
+ "Mark all unread articles as read? ")))
+ (if (and not-mark
+ (not gnus-newsgroup-adaptive)
+ (not gnus-newsgroup-auto-expire)
+ (not gnus-suppress-duplicates))
+ (progn
+ (when all
+ (setq gnus-newsgroup-marked nil
+ gnus-newsgroup-dormant nil))
+ (setq gnus-newsgroup-unreads nil))
+ ;; We actually mark all articles as canceled, which we
+ ;; have to do when using auto-expiry or adaptive scoring.
+ (gnus-summary-show-all-threads)
+ (when (gnus-summary-first-subject (not all))
+ (while (and
+ (if to-here (< (point) to-here) t)
+ (gnus-summary-mark-article-as-read gnus-catchup-mark)
+ (gnus-summary-find-next (not all)))))
+ (unless to-here
(setq gnus-newsgroup-unreads nil))
- ;; We actually mark all articles as canceled, which we
- ;; have to do when using auto-expiry or adaptive scoring.
- (gnus-summary-show-all-threads)
- (when (gnus-summary-first-subject (not all))
- (while (and
- (if to-here (< (point) to-here) t)
- (gnus-summary-mark-article-as-read gnus-catchup-mark)
- (gnus-summary-find-next (not all)))))
- (unless to-here
- (setq gnus-newsgroup-unreads nil))
- (gnus-set-mode-line 'summary)))
- (let ((method (gnus-find-method-for-group gnus-newsgroup-name)))
- (when (and (not to-here) (eq 'nnvirtual (car method)))
- (nnvirtual-catchup-group
- (gnus-group-real-name gnus-newsgroup-name) (nth 1 method) all)))
+ (gnus-set-mode-line 'summary)))
+ (let ((method (gnus-find-method-for-group gnus-newsgroup-name)))
+ (when (and (not to-here) (eq 'nnvirtual (car method)))
+ (nnvirtual-catchup-group
+ (gnus-group-real-name gnus-newsgroup-name) (nth 1 method) all))))
(gnus-summary-position-point)))
(defun gnus-summary-catchup-to-here (&optional all)
"Define all keys in PLIST in KEYMAP."
`(gnus-define-keys-1 ,keymap (quote ,plist)))
+(put 'gnus-define-keymap 'lisp-indent-function 1)
+(put 'gnus-define-keymap 'lisp-indent-hook 1)
+
(defun gnus-define-keys-1 (keymap plist &optional safe)
(when (null keymap)
(error "Can't set keys in a null keymap"))
"Score and kill file handling."
:group 'gnus )
-(defconst gnus-version-number "0.50"
+(defconst gnus-version-number "0.51"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Red Gnus v%s" gnus-version-number)
gnus-post-news gnus-inews-news
gnus-summary-reply gnus-summary-reply-with-original
gnus-summary-mail-forward gnus-summary-mail-other-window
+ gnus-summary-resend-message gnus-summary-bounced-mail
gnus-bug)
("gnus-picon" :interactive t gnus-article-display-picons
gnus-group-display-picons gnus-picons-article-display-x-face
(goto-char (point-max))))
;; Delete blank lines at the start of the buffer.
(while (and (point-min)
- (eolp))
+ (eolp)
+ (not (eobp)))
(message-delete-line))
;; Delete blank lines at the end of the buffer.
(goto-char (point-max))
(insert-buffer-substring cur start)
(narrow-to-region b (point-max))
(nntp-decode-text)
- (goto-char (point-min))
- (gnus-delete-line)
(widen)))))
(goto-char end)
(let ((callback nntp-process-callback)
(defun nntp-decode-text (&optional cr-only)
"Decode the text in the current buffer."
(goto-char (point-min))
+ (current-buffer)
(while (search-forward "\r" nil t)
(delete-char -1))
(unless cr-only
EMACS=emacs
MAKEINFO=$(EMACS) -batch -q -no-site-file
INFOSWI=-l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
-XINFOSWI=-eval '(find-file "custom.texi")' -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
+XINFOSWI=-l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
LATEX=latex
DVIPS=dvips
PERL=perl
most: texi2latexi.elc latex latexps
gnus: gnus.texi
- $(MAKEINFO) gnus.texi $(XINFOSWI)
+ $(MAKEINFO) -eval '(find-file "gnus.texi")' $(XINFOSWI)
custom: custom.texi
- $(MAKEINFO) custom.texi $(XINFOSWI)
+ $(MAKEINFO) -eval '(find-file "custom.texi")' $(XINFOSWI)
widget: widget.texi
- $(MAKEINFO) widget.texi $(XINFOSWI)
+ $(MAKEINFO) -eval '(find-file "widget.texi")' $(XINFOSWI)
message: message.texi
- $(MAKEINFO) message.texi $(XINFOSWI)
+ $(MAKEINFO) -eval '(find-file "message.texi")' $(XINFOSWI)
dvi: gnus.dvi message.dvi
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Red Gnus 0.50 Manual
+@settitle Red Gnus 0.51 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Red Gnus 0.50 Manual
+@title Red Gnus 0.51 Manual
@author by Lars Magne Ingebrigtsen
@page