+1998-08-16 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
+
+ * lisp/gnus.el (gnus-version-number): Update to 6.8.4.
+
+ * Sync up with Gnus 5.6.30.
+
1998-07-28 Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
* lisp/gnus.el (gnus-version-number): Update to 6.8.3.
distclean:
make clean
- rm -r *~
+ rm -rf *~
for i in lisp texi; do (cd $$i; make distclean); done
rm -f config.log config.status Makefile
+Sun Aug 9 15:46:16 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Gnus v5.6.30 is released.
+
+1998-08-09 10:48:31 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.el (message-cite-original-without-signature): Peel off
+ blank lines.
+
+ * gnus-art.el (gnus-article-maybe-highlight): Doc fix.
+
+ * gnus-sum.el (gnus-data-enter-list): Threw away all new list data
+ at the beginning of the buffer.
+
+1998-08-07 01:41:29 Gareth Jones <gdj1@gdjones.demon.co.uk>
+
+ * gnus-score.el (gnus-summary-increase-score): Don't downcase
+ before lookin in char-to-header.
+
+1998-08-07 01:33:22 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.el (gnus-predefined-server-alist): Too many parentheses.
+
+1998-08-06 11:20:08 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.el (gnus-continuum-version): Include quassia.
+
+ * gnus-sum.el (gnus-data-enter-list): Check before entering list.
+
+1998-08-06 11:13:56 Francois Felix Ingrand <felix@dial.oleane.com>
+
+ * gnus-salt.el (gnus-generate-vertical-tree): Don't go too far to
+ the left.
+
+Thu Aug 6 07:58:17 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Gnus v5.6.29 is released.
+
+1998-08-06 07:10:31 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-agent.el (gnus-agent-expire): Check whether (caar
+ gnus-agent-article-alist) is nil.
+
+ * gnus.el (gnus-read-method): Allow selecting predefined servers.
+
+ * gnus-topic.el (gnus-topic-update-topic-line): Compute right
+ number when inserting missing topic lines.
+
+ * gnus-start.el (gnus-get-unread-articles): Check that the group
+ is alive.
+
+ * gnus-score.el (gnus-score-load-score-alist): Better error
+ messaging.
+
+Tue Aug 4 09:42:31 1998 Kurt Swanson <ksw@dna.lth.se>
+
+ * gnus-salt.el (gnus-pick-mouse-pick-region): Fix picking bug due
+ to use of gnus-read-event-char.
+
+1998-07-28 Dave Love <d.love@dl.ac.uk>
+
+ * gnus-group.el (gnus-group-fetch-faq): Don't mung dots in group
+ name.
+
+1998-07-27 Dave Love <d.love@dl.ac.uk>
+
+ * gnus-topic.el (gnus-topic-mode-map): Provide Emacs tty
+ alternatives to [tab], [(meta tab)].
+
+1998-08-06 04:41:38 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-start.el (gnus-startup-file-coding-system): New variable.
+ (gnus-read-init-file): Use it.
+ (gnus-read-newsrc-el-file): Ditto.
+
+ * gnus-sum.el (gnus-thread-ignore-subject): Changed default.
+
+1998-08-06 04:38:02 Richard Stallman <rms@gnu.org>
+
+ * message.el (sendmail): Required.
+
+1998-08-06 02:11:37 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-sum.el (gnus-auto-select-same): Dix fix.
+
+1998-08-04 Mike McEwan <mike@lotusland.demon.co.uk>
+
+ * gnus-sum.el (gnus-select-newsgroup): Set
+ `gnus-newsgroup-unselected' when selecting specific articles via
+ SELECT-ARTICLE - there may be more headers to fetch if
+ `gnus-fetch-old-headers' is non-nil.
+ (gnus-summary-read-group): pass SELECT-ARTICLE to
+ `gnus-summary-read-group-1' and reset to nil when going to next group.
+ (gnus-summary-read-group): Change `select-article' to
+ `select-articles' for consistency.
+
+Tue Aug 4 05:25:01 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Gnus v5.6.28 is released.
+
+1998-08-03 22:00:25 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nndoc.el (nndoc-set-delims): Removed article-end.
+ (nndoc-dissect-buffer): Use eobp.
+
+1998-08-03 19:59:36 Trung Tran-Duc <trung.tranduc@prague.ixoskillspam.cz>
+
+ * nntp.el (nntp-open-connection): Bind coding-system-for-write.
+
+1998-07-31 16:45:36 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-group.el (gnus-group-read-ephemeral-group): Make the server
+ unique.
+
+1998-07-28 François Pinard <pinard@iro.umontreal.ca>
+
+ * gnus-uu.el (gnus-uu-reginize-string): Consider the number of
+ parts as part of the fixed subject, instead of a wild quantity.
+
+1998-07-30 21:47:23 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-cache.el (gnus-summary-insert-cached-articles): Sort
+ articles.
+
+ * nndir.el (nndir): Use nnml functions.
+
Mon Jul 27 03:26:00 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Gnus v5.6.27 is released.
* gnus-sum.el (gnus-summary-update-article): Don't pass along
iheader to regeneration routine.
-1998-07-26 17:33:03 KOSEKI Yoshinori <kose@yk.NetLaputa.ne.jp>
+1998-07-27 KOSEKI Yoshinori <kose@yk.NetLaputa.ne.jp>
- * nnmail.el (nnmail-move-inbox): Nix out password on errors.
+ * nnmail.el (nnmail-move-inbox): Clear nnmail-internal-password,
+ when supplied Password is incorrect.
Sat Jul 25 19:31:36 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
(setq gnus-agent-article-alist (cdr first))
;;; Mark all articles up to the first article
;;; in `gnus-article-alist' as read.
- (setcar (nthcdr 2 info)
- (gnus-range-add
- (nth 2 info) (cons 1 (- (caar gnus-agent-article-alist) 1))))
+ (when (caar gnus-agent-article-alist)
+ (setcar (nthcdr 2 info)
+ (gnus-range-add
+ (nth 2 info)
+ (cons 1 (- (caar gnus-agent-article-alist) 1)))))
(gnus-dribble-enter
(concat "(gnus-group-set-info '"
(gnus-prin1-to-string info)
(unless (vectorp gnus-current-headers)
(setq gnus-current-headers nil))
(gnus-summary-goto-subject gnus-current-article)
- (gnus-summary-show-thread)
+ (when (gnus-summary-show-thread)
+ ;; If the summary buffer really was folded, the
+ ;; previous goto may not actually have gone to
+ ;; the right article, but the thread root instead.
+ ;; So we go again.
+ (gnus-summary-goto-subject gnus-current-article))
(gnus-run-hooks 'gnus-mark-article-hook)
(gnus-set-mode-line 'summary)
(when (gnus-visual-p 'article-highlight 'highlight)
(gnus-article-hide-signature arg))
(defun gnus-article-maybe-highlight ()
- "Do some article highlighting if `article-visual' is non-nil."
+ "Do some article highlighting if article highlighting is requested."
(when (gnus-visual-p 'article-highlight 'highlight)
(gnus-article-highlight-some)))
(defun gnus-summary-insert-cached-articles ()
"Insert all the articles cached for this group into the current buffer."
(interactive)
- (let ((cached gnus-newsgroup-cached)
+ (let ((cached (sort (copy-sequence gnus-newsgroup-cached) '<))
(gnus-verbose (max 6 gnus-verbose)))
(unless cached
(gnus-message 3 "No cached articles for this group"))
gnus-summary-mode-hook gnus-select-group-hook
(group (gnus-group-group-name))
(method (gnus-find-method-for-group group)))
- (setq method
- `(,(car method) ,(concat (cadr method) "-ephemeral")
- (,(intern (format "%s-address" (car method))) ,(cadr method))
- ,@(cddr method)))
(gnus-group-read-ephemeral-group
(gnus-group-prefixed-name group method) method)))
;; Transform the select method into a unique server.
(when (stringp method)
(setq method (gnus-server-to-method method)))
+ (setq method
+ `(,(car method) ,(concat (cadr method) "-ephemeral")
+ (,(intern (format "%s-address" (car method))) ,(cadr method))
+ ,@(cddr method)))
(let ((group (if (gnus-group-foreign-p group) group
(gnus-group-prefixed-name group method))))
(gnus-sethash
(gnus-read-group "Group name: ")
(gnus-read-method "From method: ")))
+ (when (stringp method)
+ (setq method (gnus-server-to-method method)))
(let* ((meth (when (and method
(not (gnus-server-equal method gnus-select-method)))
(if address (list (intern method) address)
(while (and (not found)
(setq dir (pop dirs)))
(let ((name (gnus-group-real-name group)))
- (while (string-match "\\." name)
- (setq name (replace-match "/" t t name)))
(setq file (concat (file-name-as-directory dir) name)))
(if (not (file-exists-p file))
(gnus-message 1 "No such file: %s" file)
;; (but not outside the window where the drag started).
(let (event end end-point last-end-point (end-of-range (point)))
(track-mouse
- (while (progn
- (setq event (gnus-read-event-char))
- (or (mouse-movement-p event)
- (eq (car-safe event) 'switch-frame)))
- (if (eq (car-safe event) 'switch-frame)
- nil
- (setq end (event-end event)
- end-point (posn-point end))
- (when end-point
- (setq last-end-point end-point))
-
- (cond
- ;; Are we moving within the original window?
- ((and (eq (posn-window end) start-window)
- (integer-or-marker-p end-point))
- ;; Go to START-POINT first, so that when we move to END-POINT,
- ;; if it's in the middle of intangible text,
- ;; point jumps in the direction away from START-POINT.
- (goto-char start-point)
- (goto-char end-point)
- (gnus-pick-article)
- ;; In case the user moved his mouse really fast, pick
- ;; articles on the line between this one and the last one.
- (let* ((this-line (1+ (count-lines 1 end-point)))
- (min-line (min this-line start-line))
- (max-line (max this-line start-line)))
- (while (< min-line max-line)
- (goto-line min-line)
- (gnus-pick-article)
- (setq min-line (1+ min-line)))
- (setq start-line this-line))
- (when (zerop (% click-count 3))
- (setq end-of-range (point))))
- (t
- (let ((mouse-row (cdr (cdr (mouse-position)))))
- (cond
- ((null mouse-row))
- ((< mouse-row top)
- (mouse-scroll-subr start-window (- mouse-row top)))
- ((>= mouse-row bottom)
- (mouse-scroll-subr start-window
- (1+ (- mouse-row bottom)))))))))))
+ (while (progn
+ (setq event (cdr (gnus-read-event-char)))
+ (or (mouse-movement-p event)
+ (eq (car-safe event) 'switch-frame)))
+ (if (eq (car-safe event) 'switch-frame)
+ nil
+ (setq end (event-end event)
+ end-point (posn-point end))
+ (when end-point
+ (setq last-end-point end-point))
+
+ (cond
+ ;; Are we moving within the original window?
+ ((and (eq (posn-window end) start-window)
+ (integer-or-marker-p end-point))
+ ;; Go to START-POINT first, so that when we move to END-POINT,
+ ;; if it's in the middle of intangible text,
+ ;; point jumps in the direction away from START-POINT.
+ (goto-char start-point)
+ (goto-char end-point)
+ (gnus-pick-article)
+ ;; In case the user moved his mouse really fast, pick
+ ;; articles on the line between this one and the last one.
+ (let* ((this-line (1+ (count-lines 1 end-point)))
+ (min-line (min this-line start-line))
+ (max-line (max this-line start-line)))
+ (while (< min-line max-line)
+ (goto-line min-line)
+ (gnus-pick-article)
+ (setq min-line (1+ min-line)))
+ (setq start-line this-line))
+ (when (zerop (% click-count 3))
+ (setq end-of-range (point))))
+ (t
+ (let ((mouse-row (cdr (cdr (mouse-position)))))
+ (cond
+ ((null mouse-row))
+ ((< mouse-row top)
+ (mouse-scroll-subr start-window (- mouse-row top)))
+ ((>= mouse-row bottom)
+ (mouse-scroll-subr start-window
+ (1+ (- mouse-row bottom)))))))))))
(when (consp event)
(let ((fun (key-binding (vector (car event)))))
;; Run the binding of the terminating up-event, if possible.
(setq beg (point))
(forward-char -1)
;; Draw "-" lines leftwards.
- (while (= (char-after (1- (point))) ? )
+ (while (and (> (point) 1)
+ (= (char-after (1- (point))) ? ))
(delete-char -1)
(insert (car gnus-tree-parent-child-edges))
(forward-char -1))
(gnus-score-insert-help "Match on header" char-to-header 1)))
(gnus-score-kill-help-buffer)
- (unless (setq entry (assq (downcase hchar) char-to-header))
+ (unless (setq entry (assq hchar char-to-header))
(if mimic (error "%c %c" prefix hchar)
(error "Illegal header type")))
(read (current-buffer))
(error
(gnus-error 3.2 "Problem with score file %s" file))))))
- (if (eq (car alist) 'setq)
- ;; This is an old-style score file.
- (setq gnus-score-alist (gnus-score-transform-old-to-new alist))
- (setq gnus-score-alist alist))
+ (cond
+ ((and alist
+ (atom alist))
+ ;; Bogus score file.
+ (error "Invalid syntax with score file %s" file))
+ ((eq (car alist) 'setq)
+ ;; This is an old-style score file.
+ (setq gnus-score-alist (gnus-score-transform-old-to-new alist)))
+ (t
+ (setq gnus-score-alist alist)))
;; Check the syntax of the score file.
(setq gnus-score-alist
(gnus-score-check-syntax gnus-score-alist file)))))
For instance, if you want to brew on all the nnml groups, as well as
groups with \"emacs\" in the name, you could say something like:
-$ emacs -batch -f gnus-batch-brew-soup ^nnml \".*emacs.*\""
+$ emacs -batch -f gnus-batch-brew-soup ^nnml \".*emacs.*\"
+
+Note -- this function hasn't been implemented yet."
(interactive)
nil)
:group 'gnus-newsrc
:type 'boolean)
-(defvar gnus-startup-file-coding-system 'binary
+(defvar gnus-startup-file-coding-system 'ctext
"*Coding system for startup file.")
;;; Internal variables
(file-exists-p (concat file ".el"))
(file-exists-p (concat file ".elc")))
(condition-case var
- (load file nil t)
+ (let ((coding-system-for-read
+ gnus-startup-file-coding-system))
+ (load file nil t))
(error
(error "Error in %s: %s" file var)))))))))
(when (<= (gnus-info-level info) foreign-level)
(setq active (gnus-activate-group group 'scan))
;; Let the Gnus agent save the active file.
- (when (and gnus-agent gnus-plugged)
+ (when (and gnus-agent gnus-plugged active)
(gnus-agent-save-group-info
method (gnus-group-real-name group) active))
(unless (inline (gnus-virtual-group-p group))
:group 'gnus-thread
:type 'boolean)
-(defcustom gnus-thread-ignore-subject nil
- "*If non-nil, ignore subjects and do all threading based on the Reference header.
-If nil, which is the default, articles that have different subjects
-from their parents will start separate threads."
+(defcustom gnus-thread-ignore-subject t
+ "*If non-nil, which is the default, ignore subjects and do all threading based on the Reference header.
+If nil, articles that have different subjects from their parents will
+start separate threads."
:group 'gnus-thread
:type 'boolean)
(sexp :menu-tag "on" t)))
(defcustom gnus-auto-select-same nil
- "*If non-nil, select the next article with the same subject."
+ "*If non-nil, select the next article with the same subject.
+If there are no more articles with the same subject, go to
+the first unread article."
:group 'gnus-summary-maneuvering
:type 'boolean)
(when list
(let ((data (and after-article (gnus-data-find-list after-article)))
(ilist list))
- (or data (not after-article) (error "No such article: %d" after-article))
- ;; Find the last element in the list to be spliced into the main
- ;; list.
- (while (cdr list)
- (setq list (cdr list)))
- (if (not data)
- (progn
- (setcdr list gnus-newsgroup-data)
- (setq gnus-newsgroup-data ilist)
+ (if (not (or data
+ after-article))
+ (let ((odata gnus-newsgroup-data))
+ (setq gnus-newsgroup-data (nconc list gnus-newsgroup-data))
(when offset
- (gnus-data-update-list (cdr list) offset)))
- (setcdr list (cdr data))
- (setcdr data ilist)
- (when offset
- (gnus-data-update-list (cdr list) offset)))
+ (gnus-data-update-list odata offset)))
+ ;; Find the last element in the list to be spliced into the main
+ ;; list.
+ (while (cdr list)
+ (setq list (cdr list)))
+ (if (not data)
+ (progn
+ (setcdr list gnus-newsgroup-data)
+ (setq gnus-newsgroup-data ilist)
+ (when offset
+ (gnus-data-update-list (cdr list) offset)))
+ (setcdr list (cdr data))
+ (setcdr data ilist)
+ (when offset
+ (gnus-data-update-list (cdr list) offset))))
(setq gnus-newsgroup-data-reverse nil))))
(defun gnus-data-remove (article &optional offset)
(defun gnus-summary-read-group (group &optional show-all no-article
kill-buffer no-display backward
- select-article)
+ select-articles)
"Start reading news in newsgroup GROUP.
If SHOW-ALL is non-nil, already read articles are also listed.
If NO-ARTICLE is non-nil, no article is selected initially.
(let ((gnus-auto-select-next nil))
(or (gnus-summary-read-group-1
group show-all no-article
- kill-buffer no-display)
- (setq show-all nil)
- select-article))))
+ kill-buffer no-display
+ select-articles)
+ (setq show-all nil
+ select-articles nil)))))
(eq gnus-auto-select-next 'quietly))
(set-buffer gnus-group-buffer)
;; The entry function called above goes to the next
;;!!! then we want to insert at the beginning of the buffer.
;;!!! That happens to be true with Gnus now, but that may
;;!!! change in the future. Perhaps.
- (gnus-data-enter-list (if line nil current) data (- (point) old-pos))
- (setq gnus-newsgroup-threads (nconc threads gnus-newsgroup-threads))
- (when line
- (gnus-data-compute-positions)))))
+ (gnus-data-enter-list
+ (if line nil current) data (- (point) old-pos))
+ (setq gnus-newsgroup-threads
+ (nconc threads gnus-newsgroup-threads))
+ (gnus-data-compute-positions))))
(defun gnus-number-to-header (number)
"Return the header for article NUMBER."
(unless (gnus-ephemeral-group-p gnus-newsgroup-name)
(gnus-group-update-group group))
- (setq articles (or select-articles (gnus-articles-to-read group read-all)))
+ (if (setq articles select-articles)
+ (setq gnus-newsgroup-unselected
+ (gnus-sorted-intersection
+ gnus-newsgroup-unreads
+ (gnus-sorted-complement gnus-newsgroup-unreads articles)))
+ (setq articles (gnus-articles-to-read group read-all)))
(cond
((null articles)
(when parent
(forward-line -1)
(gnus-topic-update-topic-line
- parent (- (or old-unread 0) (or (gnus-group-topic-unread) 0))))
+ parent
+ (max 0 (- (or old-unread 0) (or (gnus-group-topic-unread) 0)))))
unread))
(defun gnus-topic-group-indentation ()
"\M-#" gnus-topic-unmark-topic
[tab] gnus-topic-indent
[(meta tab)] gnus-topic-unindent
+ "\C-i" gnus-topic-indent
+ "\M-\C-i" gnus-topic-unindent
gnus-mouse-2 gnus-mouse-pick-topic)
;; Define a new submap.
(defun gnus-uu-reginize-string (string)
;; Takes a string and puts a \ in front of every special character;
- ;; replaces the last thing that looks like "2/3" with "[0-9]+/[0-9]+"
+ ;; replaces the last thing that looks like "2/3" with "[0-9]+/3"
;; or, if it can't find something like that, tries "2 of 3", then
- ;; finally just replaces the last two numbers with "[0-9]+".
+ ;; finally just replaces the next to last number with "[0-9]+".
(let ((count 2))
(save-excursion
(set-buffer (get-buffer-create gnus-uu-output-buffer-name))
(setq case-fold-search nil)
(end-of-line)
- (if (re-search-backward "\\([^0-9]\\)[0-9]+/[0-9]+" nil t)
- (replace-match "\\1[0-9]+/[0-9]+")
+ (if (re-search-backward "\\([^0-9]\\)[0-9]+/\\([0-9]+\\)" nil t)
+ (replace-match "\\1[0-9]+/\\2")
(end-of-line)
- (if (re-search-backward "\\([^0-9]\\)[0-9]+[ \t]*of[ \t]*[0-9]+" nil t)
- (replace-match "\\1[0-9]+ of [0-9]+")
+ (if (re-search-backward "\\([^0-9]\\)[0-9]+[ \t]*of[ \t]*\\([0-9]+\\)"
+ nil t)
+ (replace-match "\\1[0-9]+ of \\2")
(end-of-line)
(if (re-search-backward "\\([^0-9]\\)[0-9]+\\([^0-9]+\\)[0-9]+"
(file-exists-p result-file)
(not gnus-uu-be-dangerous)
(or (eq gnus-uu-be-dangerous t)
- (gnus-y-or-n-p (format "Delete incomplete file %s? " result-file)))
+ (gnus-y-or-n-p
+ (format "Delete incomplete file %s? " result-file)))
(delete-file result-file))
;; If this was a file of the wrong sort, then
(defconst gnus-product-name "Shoe-gnus"
"Product name of this version of gnus.")
-(defconst gnus-version-number "6.8.3"
+(defconst gnus-version-number "6.8.4"
"Version number for this version of gnus.")
(defconst gnus-version
- (format "%s %s (based on Gnus 5.6.27; for SEMI 1.8, FLIM 1.8/1.9)"
+ (format "%s %s (based on Gnus 5.6.30; for SEMI 1.8, FLIM 1.8/1.9)"
gnus-product-name gnus-version-number)
"Version string for this version of gnus.")
(defvar gnus-predefined-server-alist
`(("cache"
- (nnspool "cache"
- (nnspool-spool-directory gnus-cache-directory)
- (nnspool-nov-directory gnus-cache-directory)
- (nnspool-active-file
- (nnheader-concat gnus-cache-directory "active")))))
+ nnspool "cache"
+ (nnspool-spool-directory gnus-cache-directory)
+ (nnspool-nov-directory gnus-cache-directory)
+ (nnspool-active-file
+ (nnheader-concat gnus-cache-directory "active"))))
"List of predefined (convenience) servers.")
(defvar gnus-topic-indentation "") ;; Obsolete variable.
"Return VERSION as a floating point number."
(when (or (string-match "^\\([^ ]+\\)? ?Gnus v?\\([0-9.]+\\)$" version)
(string-match "^\\(.?\\)gnus-\\([0-9.]+\\)$" version))
- (let* ((alpha (and (match-beginning 1) (match-string 1 version)))
- (number (match-string 2 version))
- major minor least)
- (string-match "\\([0-9]\\)\\.\\([0-9]+\\)\\.?\\([0-9]+\\)?" number)
- (setq major (string-to-number (match-string 1 number)))
- (setq minor (string-to-number (match-string 2 number)))
- (setq least (if (match-beginning 3)
+ (let ((alpha (and (match-beginning 1) (match-string 1 version)))
+ (number (match-string 2 version))
+ major minor least)
+ (unless (string-match
+ "\\([0-9]\\)\\.\\([0-9]+\\)\\.?\\([0-9]+\\)?" number)
+ (error "Invalid version string: %s" version))
+ (setq major (string-to-number (match-string 1 number))
+ minor (string-to-number (match-string 2 number))
+ least (if (match-beginning 3)
(string-to-number (match-string 3 number))
0))
(string-to-number
(cond
((member alpha '("(ding)" "d")) "4.99")
((member alpha '("September" "s")) "5.01")
- ((member alpha '("Red" "r")) "5.03"))
+ ((member alpha '("Red" "r")) "5.03")
+ ((member alpha '("Quassia" "q")) "5.05")
+ ((member alpha '("p")) "5.07")
+ ((member alpha '("o")) "5.09")
+ ((member alpha '("n")) "5.11"))
minor least)
(format "%d.%02d%02d" major minor least))))))
(setq prompt (match-string 1 string)))
(setq i (match-end 0))
;; We basically emulate just about everything that
- ;; `interactive' does, but adds the "g" and "G" specs.
+ ;; `interactive' does, but add the specs listed above.
(push
(cond
((= c ?a)
(defun gnus-read-method (prompt)
"Prompt the user for a method.
Allow completion over sensible values."
- (let ((method
- (completing-read
- prompt (append gnus-valid-select-methods gnus-predefined-server-alist
- gnus-server-alist)
- nil t nil 'gnus-method-history)))
+ (let* ((servers
+ (append gnus-valid-select-methods
+ gnus-predefined-server-alist
+ gnus-server-alist))
+ (method
+ (completing-read
+ prompt servers
+ nil t nil 'gnus-method-history)))
(cond
((equal method "")
(setq method gnus-select-method))
(assoc method gnus-valid-select-methods))
(read-string "Address: ")
"")))
- ((assoc method gnus-server-alist)
+ ((assoc method servers)
method)
(t
(list (intern method) "")))))
(list message-indent-citation-function)))))
(goto-char end)
(when (re-search-backward "^-- $" start t)
+ ;; Also peel off any blank lines before the signature.
+ (forward-line -1)
+ (while (looking-at "^[ \t]*$")
+ (forward-line -1))
+ (forward-line 1)
(delete-region (point) end))
(goto-char start)
(while functions
(nnoo-map-functions nndir
(nnml-retrieve-headers 0 nndir-current-group 0 0)
(nnml-request-article 0 nndir-current-group 0 0)
- (nnmh-request-group nndir-current-group 0 0)
+ (nnml-request-group nndir-current-group 0 0)
(nnml-close-group nndir-current-group 0)
- (nnmh-request-list (nnoo-current-server 'nndir) nndir-directory)
- (nnmh-request-newsgroups (nnoo-current-server 'nndir) nndir-directory))
+ (nnml-request-list (nnoo-current-server 'nndir) nndir-directory)
+ (nnml-request-newsgroups (nnoo-current-server 'nndir) nndir-directory))
(provide 'nndir)
(defvoo nndoc-file-begin nil)
(defvoo nndoc-first-article nil)
-(defvoo nndoc-article-end nil)
(defvoo nndoc-article-begin nil)
(defvoo nndoc-head-begin nil)
(defvoo nndoc-head-end nil)
"Set the nndoc delimiter variables according to the type of the document."
(let ((vars '(nndoc-file-begin
nndoc-first-article
- nndoc-article-end nndoc-head-begin nndoc-head-end
+ nndoc-article-begin-function
+ nndoc-head-begin nndoc-head-end
nndoc-file-end nndoc-article-begin
nndoc-body-begin nndoc-body-end-function nndoc-body-end
nndoc-prepare-body-function nndoc-article-transform-function
(funcall nndoc-head-begin-function))
(nndoc-head-begin
(nndoc-search nndoc-head-begin)))
- (if (or (>= (point) (point-max))
+ (if (or (eobp)
(and nndoc-file-end
(looking-at nndoc-file-end)))
(goto-char (point-max))
(unless (= beg pos)
(push (substring newtext beg pos) expanded))
(when (< pos len)
- ;; we hit a \, expand it.
- (setq did-expand t)
- (setq pos (1+ pos))
- (setq c (aref newtext pos))
+ ;; We hit a \; expand it.
+ (setq did-expand t
+ pos (1+ pos)
+ c (aref newtext pos))
(if (not (or (= c ?\&)
(and (>= c ?1)
(<= c ?9))))
- ;; \ followed by some character we don't expand
+ ;; \ followed by some character we don't expand.
(push (char-to-string c) expanded)
;; \& or \N
(if (= c ?\&)
(let* ((pbuffer (nntp-make-process-buffer buffer))
(process
(condition-case ()
- (let ((coding-system-for-read nntp-coding-system-for-read))
+ (let ((coding-system-for-read nntp-coding-system-for-read)
+ (coding-system-for-write nntp-coding-system-for-write))
(funcall nntp-open-connection-function pbuffer))
(error nil)
(quit nil))))
-@echo off
-
-rem Written by David Charlap <shamino@writeme.com>
-
-rem There are two catches, however. The emacs.bat batch file may not exist
-rem in all distributions. It is part of the Voelker build of Emacs 19.34
-rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html). If the user
-rem installs Gnus with some other build, he may have to replace calls to
-rem %1\emacs.bat with something else.
-rem
-rem Also, the emacs.bat file that Voelker ships does not accept more than 9
-rem parameters, so the attempts to compile the .texi files will fail. To
-rem fix that (at least on NT. I don't know about Win95), the following
-rem change should be made to emacs.bat:
-rem
-rem %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
-rem
-rem should become
-rem
-rem %emacs_dir%\bin\emacs.exe %*
-rem
-rem which will allow the batch file to accept an unlimited number of
-rem parameters.
-
-if "%1" == "" goto usage
-
-cd lisp
-call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile
-if not "%2" == "copy" goto info
-copy *.el* %1\lisp
-
-:info
-cd ..\texi
-call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
-call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
-if not "%2" == "copy" goto done
-copy gnus %1\info
-copy gnus-?? %1\info
-copy message %1\info
-
-:etc
-cd ..\etc
-copy gnus-tut.txt %1\etc
-
-:done
-cd ..
-goto end
-
-:usage
-echo Usage: make ^<emacs-dir^> [copy]
-echo.
-echo where: ^<emacs-dir^> is the directory you installed emacs in
-echo eg. d:\emacs\19.34
-echo copy indicates that the compiled files should be copied to your
-echo emacs lisp, info, and etc directories
-
-:end
+@echo off\r
+\r
+rem Written by David Charlap <shamino@writeme.com>\r
+\r
+rem There are two catches, however. The emacs.bat batch file may not exist\r
+rem in all distributions. It is part of the Voelker build of Emacs 19.34\r
+rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html). If the user\r
+rem installs Gnus with some other build, he may have to replace calls to\r
+rem %1\emacs.bat with something else.\r
+rem \r
+rem Also, the emacs.bat file that Voelker ships does not accept more than 9\r
+rem parameters, so the attempts to compile the .texi files will fail. To\r
+rem fix that (at least on NT. I don't know about Win95), the following\r
+rem change should be made to emacs.bat:\r
+rem \r
+rem %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9\r
+rem \r
+rem should become\r
+rem \r
+rem %emacs_dir%\bin\emacs.exe %*\r
+rem \r
+rem which will allow the batch file to accept an unlimited number of\r
+rem parameters.\r
+\r
+if "%1" == "" goto usage\r
+\r
+cd lisp\r
+call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile\r
+if not "%2" == "copy" goto info\r
+copy *.el* %1\lisp\r
+\r
+:info\r
+cd ..\texi\r
+call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
+call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
+if not "%2" == "copy" goto done\r
+copy gnus %1\info\r
+copy gnus-?? %1\info\r
+copy message %1\info\r
+\r
+:etc\r
+cd ..\etc\r
+copy gnus-tut.txt %1\etc\r
+\r
+:done\r
+cd ..\r
+goto end\r
+\r
+:usage\r
+echo Usage: make ^<emacs-dir^> [copy]\r
+echo.\r
+echo where: ^<emacs-dir^> is the directory you installed emacs in\r
+echo eg. d:\emacs\19.34\r
+echo copy indicates that the compiled files should be copied to your\r
+echo emacs lisp, info, and etc directories\r
+\r
+:end\r
+1998-08-09 15:32:24 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Hiding Headers): Fix.
+
+1998-08-08 06:06:37 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Fancy Mail Splitting): Change.
+
+1998-08-06 02:12:04 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi: De-legalize.
+
+ * message.texi: De-legalize.
+
+ * gnus.texi (Summary Maneuvering): Fix.
+
1998-07-21 17:51 Simon Josefsson <jas@pdc.kth.se>
* gnus.texi (Splitting Mail): junk is fancy splitting only
If non-@code{nil}, all the movement commands will try to go to the next
article with the same subject as the current. (@dfn{Same} here might
mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit}
-for details (@pxref{Customizing Threading}).) This variable is not
-particularly useful if you use a threaded display.
+for details (@pxref{Customizing Threading}).) If there are no more
+articles with the same subject, go to the first unread article.
+
+This variable is not particularly useful if you use a threaded display.
@item gnus-summary-check-current
@vindex gnus-summary-check-current
@table @code
@item empty
Remove all empty headers.
-@item newsgroups
-Remove the @code{Newsgroups} header if it only contains the current group
-name.
@item followup-to
Remove the @code{Followup-To} header if it is identical to the
@code{Newsgroups} header.
@item reply-to
Remove the @code{Reply-To} header if it lists the same address as the
@code{From} header.
+@item newsgroups
+Remove the @code{Newsgroups} header if it only contains the current group
+name.
@item date
Remove the @code{Date} header if the article is less than three days
old.
Remove all @code{To} headers if there are more than one.
@end table
-To include the four first elements, you could say something like;
+To include the four three elements, you could say something like;
@lisp
(setq gnus-boring-article-headers
- '(empty newsgroups followup-to reply-to))
+ '(empty followup-to reply-to))
@end lisp
This is also the default value for this variable.
(signature-file "~/.mail-signature"))))
@end lisp
+
@node Drafts
@section Drafts
@cindex drafts
substitutions in the group names), you can say things like:
@example
-(any "debian-\\(\\w*\\)@@lists.debian.org" "mail.debian.\\1")
+(any "debian-\\b\\(\\w+\\)@@lists.debian.org" "mail.debian.\\1")
@end example
If the string contains the element @samp{\&}, then the previously
@item gnus-category-line-format
@vindex gnus-category-line-format
Format of the lines in the category buffer (@pxref{Formatting
-Variables}). Legal elements are:
+Variables}). Valid elements are:
@table @samp
@item c
@item gnus-xmas-logo-color-style
@vindex gnus-xmas-logo-color-style
This is the key used to look up the color in the alist described above.
-Legal values include @code{flame}, @code{pine}, @code{moss},
+Valid values include @code{flame}, @code{pine}, @code{moss},
@code{irish}, @code{sky}, @code{tin}, @code{velvet}, @code{grape},
@code{labia}, @code{berry}, @code{neutral}, and @code{september}.
January 25th 1997 (after 84 releases) as ``Gnus 5.4'' (67 releases).
On September 13th 1997, Quassia Gnus was started and lasted 37
-releases. If was released as ``Gnus 5.6.27' on March 8th 1998.
+releases. If was released as ``Gnus 5.6.30' on March 8th 1998.
If you happen upon a version of Gnus that has a prefixed name --
``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' --
* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
* September Gnus:: The Thing Formally Known As Gnus 5.3/5.3.
* Red Gnus:: Third time best---Gnus 5.4/5.5.
-* Quassia Gnus:: Two times two is four, or Gnus 5.6.27.
+* Quassia Gnus:: Two times two is four, or Gnus 5.6.30.
@end menu
These lists are, of course, just @emph{short} overviews of the
@node Quassia Gnus
@subsubsection Quassia Gnus
-New features in Gnus 5.6.27:
+New features in Gnus 5.6.30:
@itemize @bullet
summary buffer for each article.
@item
+Implement gnus-batch-brew-soup.
+
+@item
Solve the halting problem.
@c TODO
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Message 5.6.27 Manual
+@settitle Message 5.6.30 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Message 5.6.27 Manual
+@title Message 5.6.30 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Message 5.6.27. Message is distributed with
+This manual corresponds to Message 5.6.30. Message is distributed with
the Gnus distribution bearing the same version number as this manual
has.
@item message-from-style
@vindex message-from-style
-Specifies how @code{From} headers should look. There are four legal
+Specifies how @code{From} headers should look. There are four valid
values:
@table @code
@vindex message-required-news-headers
@code{message-required-news-headers} a list of header symbols. These
headers will either be automatically generated, or, if that's
-impossible, they will be prompted for. The following symbols are legal:
+impossible, they will be prompted for. The following symbols are valid:
@table @code
@item message-syntax-checks
@vindex message-syntax-checks
-If non-@code{nil}, Message will attempt to check the legality of the
-headers, as well as some other stuff, before posting. You can control
-the granularity of the check by adding or removing elements from this
-list. Legal elements are:
+Controls what syntax checks should not be performed on outgoing posts.
+To disable checking of long signatures, for instance, add
+
+@lisp
+(signature . disabled)
+@end lisp
+
+to this list.
+
+Valid checks are:
@table @code
@item subject-cmsg
@cindex long lines
Check for too long lines.
@item control-chars
-Check for illegal characters.
+Check for invalid characters.
@item size
Check for excessive size.
@item new-text