+Sun Nov 10 06:31:36 1996 Lars Magne Ingebrigtsen <menja.larsi@ifi.uio.no>
+
+ * gnus.el: Red Gnus v0.59 is released.
+
+Sun Nov 10 06:09:37 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nntp.el (nntp-decode-text): Erased everything.
+
+ * article.el (article-remove-trailing-blank-lines): Would
+ infloop.
+
+Sun Nov 10 06:06:31 1996 Lars Magne Ingebrigtsen <menja.larsi@ifi.uio.no>
+
+ * gnus.el: Red Gnus v0.58 is released.
+
+Sun Nov 10 06:02:51 1996 Alexandre Oliva <oliva@dcc.unicamp.br>
+
+ * nntp.el (nntp-possibly-change-group): Bind callback function to
+ nil.
+
+Sun Nov 10 05:35:25 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-topic.el (gnus-topic-remove-topic): Remove from alist.
+
+ * gnus-score.el (gnus-score-string): Didn't trace fuzzies and
+ words.
+
+Sat Nov 9 18:14:42 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nnweb.el (nnweb-set-hashtb): Typo.
+ (nnweb-read-overview): Typo.
+
+ * nnheader.el (nnheader-skeleton-replace): New macro.
+ (nnheader-replace-string): Use it.
+ (nnheader-replace-regexp): Use it.
+ (nnheader-strip-cr): Use it.
+
+ * nntp.el (nntp-retrieve-headers): Be faster.
+ (nntp-decode-text): Use faster algorithm.
+
+ * nnheader.el (nnheader-replace-string): New function.
+
+Sat Nov 9 17:22:16 1996 Hrvoje Niksic <hniksic@srce.hr>
+
+ * article.el (gnus-emphasis-alist): Doc fix.
+
+Sat Nov 9 16:27:27 1996 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * nnmail.el (nnmail-split-it): Fix bug in abbrev handling.
+
+Sat Nov 9 05:59:02 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nnweb.el (nnweb-set-hashtb): Typo.
+
+ * article.el (gnus-emphasis-alist): One ' too many.
+
+ * gnus-async.el (gnus-async-prefetch-article): Only message when
+ in the summary buffer.
+
+ * gnus-msg.el (gnus-post-news): Handle `newsgroup' param.
+ (gnus-debug): Be `defcustom' aware.
+
+Sat Nov 9 05:41:27 1996 Lars Magne Ingebrigtsen <menja.larsi@ifi.uio.no>
+
+ * gnus.el: Red Gnus v0.57 is released.
+
Fri Nov 8 22:56:59 1996 Per Abrahamsen <abraham@dina.kvl.dk>
* gnus.el: Added customize support.
("\\*/" "/\\*" bold-italic)
("_\\*/" "/\\*_" underline-bold-italic))))
`(("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_\\)+\\)_\\)\\(\\s-\\|[?!.,;]\\)"
- 2 3 'gnus-emphasis-underline)
+ 2 3 gnus-emphasis-underline)
,@(mapcar
(lambda (spec)
(list
"Alist that says how to fontify certain phrases.
Each item looks like this:
- (\"_\\\\([[\\w+\\\\)_\" 0 1 'underline)
+ (\"_\\\\(\\\\w+\\\\)_\" 0 1 'underline)
The first element is a regular expression to be matched. The second
is a number that says what regular expression grouping used to find
(delete-region
(point)
(progn
- (while (looking-at "^[ \t]*$")
+ (while (and (not (bobp))
+ (looking-at "^[ \t]*$"))
(forward-line -1))
(forward-line 1)
(point))))))
["Remove carriage return" gnus-article-remove-cr t]
["Remove quoted-unreadable" gnus-article-de-quoted-unreadable t]))
+ (when nil
(define-key gnus-article-mode-map
(vector 'menu-bar (car gnus-summary-article-menu))
- gnus-summary-article-menu)
+ gnus-summary-article-menu))
(run-hooks 'gnus-article-menu-hook)))
(when next
(gnus-async-with-semaphore
(pop gnus-async-fetch-list)))
- (let ((do-fetch next))
+ (let ((do-fetch next)
+ (do-message t)) ;(eq major-mode 'gnus-summary-mode)))
(when (and (gnus-group-asynchronous-p group)
(gnus-buffer-live-p summary)
(or (not next)
group article mark summary next))
(nntp-server-buffer
(get-buffer gnus-async-prefetch-article-buffer)))
- (gnus-message 7 "Prefetching article %d in group %s"
- article group)
+ (when do-message
+ (gnus-message 7 "Prefetching article %d in group %s"
+ article group))
(gnus-request-article article group))))))))))
(defun gnus-make-async-article-function (group article mark summary next)
(t 'message))
(let* ((group (or group gnus-newsgroup-name))
(pgroup group)
- to-address to-group mailing-list to-list)
+ to-address to-group mailing-list to-list
+ newsgroup-p)
(when group
(setq to-address (gnus-group-find-parameter group 'to-address)
to-group (gnus-group-find-parameter group 'to-group)
to-list (gnus-group-find-parameter group 'to-list)
+ newsgroup-p (gnus-group-find-parameter group 'newsgroup)
mailing-list (when gnus-mailing-list-groups
(string-match gnus-mailing-list-groups group))
group (gnus-group-real-name group)))
(if (or (and to-group
(gnus-news-group-p to-group))
+ newsgroup-p
force-news
(and (gnus-news-group-p
(or pgroup gnus-newsgroup-name)
(if post
(message-news (or to-group group))
(set-buffer gnus-article-copy)
- (message-followup (if force-news nil to-group)))
+ (message-followup (if (or newsgroup-p force-news) nil to-group)))
;; The is mail.
(if post
(progn
(goto-char (point-min))
(while (setq expr (ignore-errors (read (current-buffer))))
(ignore-errors
- (and (eq (car expr) 'defvar)
+ (and (or (eq (car expr) 'defvar)
+ (eq (car expr) 'defcustom))
(stringp (nth 3 expr))
(or (not (boundp (nth 1 expr)))
(not (equal (eval (nth 2 expr))
(cond
;; Fuzzy matches. We save these for later.
((= dmt ?f)
- (push entries fuzzies))
+ (push (cons entries alist) fuzzies))
;; Word matches. Save these for even later.
((= dmt ?w)
- (push entries words))
+ (push (cons entries alist) words))
;; Exact matches.
((= dmt ?e)
;; Do exact matching.
(when fuzzies
;; Simplify the entire buffer for easy matching.
(gnus-simplify-buffer-fuzzy)
- (while (setq kill (cadar fuzzies))
+ (while (setq kill (cadaar fuzzies))
(let* ((match (nth 0 kill))
(type (nth 3 kill))
(score (or (nth 1 kill) gnus-score-interactive-default-score))
(while (setq art (pop arts))
(setcdr art (+ score (cdr art)))
(push (cons
- (car-safe (rassq alist gnus-score-cache)) kill)
+ (car-safe (rassq (cdar fuzzies) gnus-score-cache))
+ kill)
gnus-score-trace))
;; Found a match, update scores.
(while (setq art (pop arts))
)
;; Match, update date.
((and found gnus-update-score-entry-dates)
- (gnus-score-set 'touched '(t) alist)
+ (gnus-score-set 'touched '(t) (cdar fuzzies))
(setcar (nthcdr 2 kill) now))
;; Old entry, remove.
((and expire (< date expire))
- (gnus-score-set 'touched '(t) alist)
- (setcdr (car fuzzies) (cddar fuzzies))))
+ (gnus-score-set 'touched '(t) (cdar fuzzies))
+ (setcdr (caar fuzzies) (cddaar fuzzies))))
(setq fuzzies (cdr fuzzies)))))
(when words
(let ((hashtb (gnus-make-hashtable
(* 10 (count-lines (point-min) (point-max))))))
(gnus-enter-score-words-into-hashtb hashtb)
- (while (setq kill (cadar words))
+ (while (setq kill (cadaar words))
(let* ((score (or (nth 1 kill) gnus-score-interactive-default-score))
(date (nth 2 kill))
found)
(if trace
(while (setq art (pop arts))
(setcdr art (+ score (cdr art)))
- (push (cons (car-safe (rassq alist gnus-score-cache)) kill)
+ (push (cons
+ (car-safe (rassq (cdar words) gnus-score-cache))
+ kill)
gnus-score-trace))
;; Found a match, update scores.
(while (setq art (pop arts))
)
;; Match, update date.
((and found gnus-update-score-entry-dates)
- (gnus-score-set 'touched '(t) alist)
+ (gnus-score-set 'touched '(t) (cdar words))
(setcar (nthcdr 2 kill) now))
;; Old entry, remove.
((and expire (< date expire))
- (gnus-score-set 'touched '(t) alist)
- (setcdr (car words) (cddar words))))
+ (gnus-score-set 'touched '(t) (cdar words))
+ (setcdr (caar words) (cddaar words))))
(setq words (cdr words))))))
nil))
:type 'string)
(defcustom gnus-summary-goto-unread t
- "*If non-nil, marking commands will go to the next unread article.
-If `never', \\<gnus-summary-mode-map>\\[gnus-summary-next-page] will go to the next article,
-whether it is read or not."
+ "*If t, marking commands will go to the next unread article.
+If `never', commands that usually go to the next unread article, will
+go to the next article, whether it is read or not.
+If nil, only the marking commands will go to the next (un)read article."
:group 'gnus-summary
:type '(choice (const :tag "off" nil)
(const never)
["Uuencode and post" gnus-uu-post-news t]
["Followup via news" gnus-summary-followup-to-mail t]
["Followup via news and yank"
- gnus-summary-followup-with-original-to-mail t]
+ gnus-summary-followup-to-mail-with-original t]
;;("Draft"
;;["Send" gnus-summary-send-draft t]
;;["Send bounced" gnus-resend-bounced-mail t])
(list (if insert 'visible 'invisible)
(if hide 'hide nil)
(cadddr data))))
- (unless total-remove
+ (if total-remove
+ (setq gnus-topic-alist
+ (delq (assoc topic gnus-topic-alist) gnus-topic-alist))
(gnus-topic-insert-topic topic in-level)))))
(defun gnus-topic-insert-topic (topic &optional level)
"Score and kill file handling."
:group 'gnus )
-(defconst gnus-version-number "0.57"
+(defconst gnus-version-number "0.60"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Red Gnus v%s" gnus-version-number)
(defun nnheader-fold-continuation-lines ()
"Fold continuation lines in the current buffer."
- (goto-char (point-min))
- (while (re-search-forward "\\(\r?\n[ \t]+\\)+" nil t)
- (replace-match " " t t)))
+ (nnheader-replace-regexp "\\(\r?\n[ \t]+\\)+" " "))
(defun nnheader-translate-file-chars (file)
(if (null nnheader-file-name-translation-alist)
(pop files))
(nreverse out)))
+(defmacro nnheader-skeleton-replace (from &optional to regexp)
+ `(let ((new (generate-new-buffer " *nnheader replace*"))
+ (cur (current-buffer))
+ (start (point-min)))
+ (set-buffer new)
+ (buffer-disable-undo (current-buffer))
+ (set-buffer cur)
+ (goto-char (point-min))
+ (while (,(if regexp 're-search-forward 'search-forward)
+ ,from nil t)
+ (insert-buffer-substring
+ cur start (prog1 (match-beginning 0) (set-buffer new)))
+ (goto-char (point-max))
+ ,(when to `(insert ,to))
+ (set-buffer cur)
+ (setq start (point)))
+ (insert-buffer-substring
+ cur start (prog1 (point-max) (set-buffer new)))
+ (copy-to-buffer cur (point-min) (point-max))
+ (kill-buffer (current-buffer))
+ (set-buffer cur)))
+
+(defun nnheader-replace-string (from to)
+ "Do a fast replacement of FROM to TO from point to point-max."
+ (nnheader-skeleton-replace from to))
+
+(defun nnheader-replace-regexp (from to)
+ "Do a fast regexp replacement of FROM to TO from point to point-max."
+ (nnheader-skeleton-replace from to t))
+
+(defun nnheader-strip-cr ()
+ "Strip all \r's from the current buffer."
+ (nnheader-skeleton-replace "\r"))
+
(fset 'nnheader-run-at-time 'run-at-time)
(fset 'nnheader-cancel-timer 'cancel-timer)
(fset 'nnheader-cancel-function-timers 'cancel-function-timers)
;; Someone might want to do a \N sub on this match, so get the
;; correct match positions.
(goto-char (match-end 0))
- (re-search-backward (nth 1 split) (match-end 1))
+ (let ((value (nth 1 split)))
+ (re-search-backward (if (symbolp value)
+ (cdr (assq value nnmail-split-abbrev-alist))
+ value)
+ (match-end 1)))
(nnmail-split-it (nth 2 split))))
;; Not in cache, compute a regexp for the field/value pair.
;; Now all of replies are received. Fold continuation lines.
(nnheader-fold-continuation-lines)
;; Remove all "\r"'s.
- (goto-char (point-min))
- (while (search-forward "\r" nil t)
- (replace-match "" t t))
+ (nnheader-strip-cr)
(copy-to-buffer nntp-server-buffer (point-min) (point-max))
'headers))))
(when group
(let ((entry (nntp-find-connection-entry nntp-server-buffer)))
(when (not (equal group (caddr entry)))
- (nntp-request-group group)
- (save-excursion
- (set-buffer nntp-server-buffer)
- (erase-buffer))))))
+ (let ((nnheader-callback-function nil))
+ (nntp-request-group group)
+ (save-excursion
+ (set-buffer nntp-server-buffer)
+ (erase-buffer)))))))
(defun nntp-decode-text (&optional cr-only)
"Decode the text in the current buffer."
(goto-char (point-min))
- ;; Remove \R's.
(while (search-forward "\r" nil t)
(delete-char -1))
(unless cr-only
(setq header (nnheader-parse-nov))
(forward-line 1)
(push (list (mail-header-number header)
- header (nnheader-header-xref header))
+ header (mail-header-xref header))
nnweb-articles)
(nnweb-set-hashtb header (car nnweb-articles)))))))
(nnheader-insert-nov (cadr (pop articles)))))))
(defun nnweb-set-hashtb (header data)
- (gnus-sethastb (nnweb-identifier (mail-header-xrefs header))
+ (gnus-sethash (nnweb-identifier (mail-header-xref header))
data nnweb-hashtb))
(defun nnweb-get-hashtb (url)
+Sat Nov 9 06:04:22 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.texi (Group Parameters): Addition.
+
Fri Nov 8 04:01:06 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* gnus.texi (Article Fontisizing): New.
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Red Gnus 0.57 Manual
+@settitle Red Gnus 0.60 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Red Gnus 0.57 Manual
+@title Red Gnus 0.60 Manual
@author by Lars Magne Ingebrigtsen
@page
Elements like @code{(to-group . "some.group.name")} means that all
posts in that group will be sent to @code{some.group.name}.
+@item newsgroup
+@cindex newsgroup
+If this symbol is present in the group parameter list, Gnus will treat
+all responses as if they were responses to news articles. This can be
+useful if you have a mail group that's really a mirror of a news group.
+
@item gcc-self
@cindex gcc-self
If this symbol is present in the group parameter list and set to