From: shuhei-k Date: Sun, 28 Jun 1998 12:56:29 +0000 (+0000) Subject: Sync up with Semi-gnus 6.7.4. X-Git-Tag: semi-mule-199811302358~50 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e951431b11619d3573b5c2837d8e99c543a56110;p=elisp%2Fgnus.git- Sync up with Semi-gnus 6.7.4. --- diff --git a/ChangeLog b/ChangeLog index 7f1dda8..723402f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +1998-06-26 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.7.3. + + * lisp/gnus-sum.el (gnus-summary-move-article): Use + `gnus-request-article-this-buffer'. + (gnus-request-partial-message): Likewise. + + * lisp/gnus-art.el (gnus-article-prepare): Use + `gnus-request-article-this-buffer'. + (gnus-request-article-this-buffer): Renamed from + `gnus-request-original-article'; abolish conventional + implementation. + - Abolish unused setting for `mime-view-show-summary-method'. + 1998-06-26 Shuhei KOBAYASHI * lisp/messge.el (message-use-followup-to): Change menu tag. diff --git a/GNUS-NEWS b/GNUS-NEWS index bef3a3a..71e58c7 100644 --- a/GNUS-NEWS +++ b/GNUS-NEWS @@ -97,3 +97,4 @@ updated by the `gnus-start-date-timer' command. *** Old dejanews archives can now be read by nnweb. +*** Byte-compilation of user-specs now works under XEmacs. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7da8130..8db48c8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,126 @@ +Sun Jun 28 09:54:52 1998 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.6.21 is released. + +Sun Jun 28 08:51:39 1998 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-edit-article-done): Copy the buffer to + a temp buffer before replacing. + + * gnus-msg.el (gnus-post-news): Treat broken-reply-to in + followups. + + * gnus-sum.el (gnus-summary-goto-subject): Position point. + +Sat Jun 27 09:19:20 1998 Lars Magne Ingebrigtsen + + * gnus-demon.el (gnus-util): Required. + + * gnus-score.el (gnus-score-body): Message fix. + + * gnus-group.el (gnus-group-highlight-line): Use it. + + * gnus-util.el + (gnus-put-text-properties-excluding-characters-with-faces): New + function. + +Sat Jun 27 08:56:08 1998 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.6.20 is released. + +Sat Jun 27 08:49:51 1998 Arne Georg Gleditsch + + * gnus-sum.el (gnus-parent-headers): Check better for headers. + +Sat Jun 27 08:45:09 1998 Lars Magne Ingebrigtsen + + * message.el (message-check-news-body-syntax): Buggy checksum + check. + +Sat Jun 27 07:59:22 1998 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.6.19 is released. + +Sat Jun 27 07:50:50 1998 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.6.18 is released. + +Sat Jun 27 03:18:57 1998 Lars Magne Ingebrigtsen + + * gnus-soup.el (gnus-soup-save-areas): Made interactive. + + * nnfolder.el (nnfolder-request-replace-article): Check all X-From + headers. + + * gnus-sum.el (gnus-update-marks): Don't nix out cache lists. + + * nngateway.el (nngateway-mail2news-header-transformation): + Changed semantics. + + * message.el (message-check-news-body-syntax): Don't look at + buffer size to see whether text has been added. + +Fri Jun 26 15:46:05 1998 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.6.16 is released. + +Fri Jun 26 15:36:25 1998 Lars Magne Ingebrigtsen + + * gnus-util.el (gnus-delete-assq): Removed. + (gnus-delete-assoc): Ditto. + + * gnus.el: Use throughout. + + * gnus-util.el (gnus-pull): New macro. + +1998-06-26 Simon Josefsson + + * gnus-sum.el (gnus-get-newsgroup-headers): parse Chars: headers + +Fri Jun 26 13:45:24 1998 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-update-marks): Use it. + + * gnus-util.el (gnus-delete-alist): New function. + + * gnus-sum.el (gnus-update-marks): Don't save list of cached + articles. + + * message.el (message-mode-menu): Include kill-buffer. + + * nnmail.el (nnmail-purge-split-history): Use it. + + * gnus-util.el (gnus-delete-if): New function. + + * nnmail.el (nnmail-article-group): Use gnus-remove-duplicates. + +Fri Jun 26 13:45:09 1998 Richard Stallman + + * gnus-util.el (gnus-remove-duplicates): New function. + +Fri Jun 26 13:30:42 1998 Kevin Christian + + * gnus-score.el (gnus-score-string): Do updating of scores after + fuzzies. + +Fri Jun 26 07:26:03 1998 Lars Magne Ingebrigtsen + + * message.el (message-mode): Don't do the intern dance. + +Fri Jun 26 07:13:49 1998 Richard Stallman + + * message.el (message-mode): Adaptive fill changes. + +Fri Jun 26 04:29:44 1998 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-mode-line-format-alist): Allow article + score. + + * gnus-score.el (gnus-score-load-file): Would ignore all score + files without un-advanced rules. + + * gnus-ems.el ((fboundp 'split-string)): Use it where it exists. + Fri Jun 26 04:23:12 1998 Lars Magne Ingebrigtsen * gnus.el: Gnus v5.6.15 is released. diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 2cd3f7b..ff0c5bd 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -2020,9 +2020,9 @@ If ALL-HEADERS is non-nil, no headers are hidden." (when (and (boundp 'transient-mark-mode) transient-mark-mode) (setq mark-active nil)) - (if (not (setq result - (let ((buffer-read-only nil)) - (gnus-request-original-article article group)))) + (if (not (setq result (let ((buffer-read-only nil)) + (gnus-request-article-this-buffer + article group)))) ;; There is no such article. (save-excursion (when (and (numberp article) @@ -2463,149 +2463,6 @@ If given a prefix, show the hidden text instead." (assq article gnus-newsgroup-reads))) gnus-canceled-mark)) nil) - ;; We first check `gnus-original-article-buffer'. - ((and (get-buffer gnus-original-article-buffer) - (numberp article) - (save-excursion - (set-buffer gnus-original-article-buffer) - (and (equal (car gnus-original-article) group) - (eq (cdr gnus-original-article) article)))) - (insert-buffer-substring gnus-original-article-buffer) - 'article) - ;; Check the backlog. - ((and gnus-keep-backlog - (gnus-backlog-request-article group article (current-buffer))) - 'article) - ;; Check asynchronous pre-fetch. - ((gnus-async-request-fetched-article group article (current-buffer)) - (gnus-async-prefetch-next group article gnus-summary-buffer) - (when (and (numberp article) gnus-keep-backlog) - (gnus-backlog-enter-article group article (current-buffer))) - 'article) - ;; Check the cache. - ((and gnus-use-cache - (numberp article) - (gnus-cache-request-article article group)) - 'article) - ;; Get the article and put into the article buffer. - ((or (stringp article) (numberp article)) - (let ((gnus-override-method - (and (stringp article) gnus-refer-article-method)) - (buffer-read-only nil)) - (erase-buffer) - (gnus-kill-all-overlays) - (gnus-check-group-server) - (when (gnus-request-article article group (current-buffer)) - (when (numberp article) - (gnus-async-prefetch-next group article gnus-summary-buffer) - (when gnus-keep-backlog - (gnus-backlog-enter-article - group article (current-buffer)))) - '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) - (equal (buffer-name (current-buffer)) - (buffer-name (get-buffer gnus-article-buffer)))) - (save-excursion - (if (get-buffer gnus-original-article-buffer) - (set-buffer gnus-original-article-buffer) - (set-buffer (get-buffer-create gnus-original-article-buffer)) - (buffer-disable-undo (current-buffer)) - (setq major-mode 'gnus-original-article-mode) - (setq buffer-read-only t) - (gnus-add-current-to-buffer-list)) - (let (buffer-read-only) - (erase-buffer) - (insert-buffer-substring gnus-article-buffer)) - (setq gnus-original-article (cons group article)))) - - ;; Update sparse articles. - (when (and do-update-line - (or (numberp article) - (stringp article))) - (let ((buf (current-buffer))) - (set-buffer gnus-summary-buffer) - (gnus-summary-update-article do-update-line) - (gnus-summary-goto-subject do-update-line nil t) - (set-window-point (get-buffer-window (current-buffer) t) - (point)) - (set-buffer buf)))))) - -(defun gnus-request-original-article (article group) - "Get an article and insert it into original article buffer." - (let (do-update-line) - (prog1 - (save-excursion - (erase-buffer) - (gnus-kill-all-overlays) - (setq group (or group gnus-newsgroup-name)) - - ;; Using `gnus-request-article' directly will insert the article into - ;; `nntp-server-buffer' - so we'll save some time by not having to - ;; copy it from the server buffer into the article buffer. - - ;; We only request an article by message-id when we do not have the - ;; headers for it, so we'll have to get those. - (when (stringp article) - (let ((gnus-override-method gnus-refer-article-method)) - (gnus-read-header article))) - - ;; If the article number is negative, that means that this article - ;; doesn't belong in this newsgroup (possibly), so we find its - ;; message-id and request it by id instead of number. - (when (and (numberp article) - gnus-summary-buffer - (get-buffer gnus-summary-buffer) - (gnus-buffer-exists-p gnus-summary-buffer)) - (save-excursion - (set-buffer gnus-summary-buffer) - (let ((header (gnus-summary-article-header article))) - (when (< article 0) - (cond - ((memq article gnus-newsgroup-sparse) - ;; This is a sparse gap article. - (setq do-update-line article) - (setq article (mail-header-id header)) - (let ((gnus-override-method gnus-refer-article-method)) - (gnus-read-header article)) - (setq gnus-newsgroup-sparse - (delq article gnus-newsgroup-sparse))) - ((vectorp header) - ;; It's a real article. - (setq article (mail-header-id header))) - (t - ;; It is an extracted pseudo-article. - (setq article 'pseudo) - (gnus-request-pseudo-article header)))) - - (let ((method (gnus-find-method-for-group - gnus-newsgroup-name))) - (when (and (eq (car method) 'nneething) - (vectorp header)) - (let ((dir (concat (file-name-as-directory (nth 1 method)) - (mail-header-subject header)))) - (when (file-directory-p dir) - (setq article 'nneething) - (gnus-group-enter-directory dir)))))))) - - (cond - ;; Refuse to select canceled articles. - ((and (numberp article) - gnus-summary-buffer - (get-buffer gnus-summary-buffer) - (gnus-buffer-exists-p gnus-summary-buffer) - (eq (cdr (save-excursion - (set-buffer gnus-summary-buffer) - (assq article gnus-newsgroup-reads))) - gnus-canceled-mark)) - nil) ;; Check the backlog. ((and gnus-keep-backlog (gnus-backlog-request-article group article (current-buffer))) @@ -3203,14 +3060,6 @@ specified by `gnus-button-alist'." (match-string 3 address) "nntp"))))))) -(defun gnus-split-string (string pattern) - "Return a list of substrings of STRING which are separated by PATTERN." - (let (parts (start 0)) - (while (string-match pattern string start) - (setq parts (cons (substring string start (match-beginning 0)) parts) - start (match-end 0))) - (nreverse (cons (substring string start) parts)))) - (defun gnus-url-parse-query-string (query &optional downcase) (let (retval pairs cur key val) (setq pairs (gnus-split-string query "&")) @@ -3401,10 +3250,6 @@ forbidden in URL encoding." 'gnus-original-article-mode #'mime-preview-quitting-method-for-gnus) -(set-alist 'mime-view-show-summary-method - 'gnus-original-article-mode - #'mime-preview-quitting-method-for-gnus) - (defun gnus-following-method (buf) (set-buffer buf) (message-followup) diff --git a/lisp/gnus-demon.el b/lisp/gnus-demon.el index 594bc9f..0015a90 100644 --- a/lisp/gnus-demon.el +++ b/lisp/gnus-demon.el @@ -32,6 +32,7 @@ (require 'nnheader) (require 'nntp) (require 'nnmail) +(require 'gnus-util) (eval-and-compile (if (string-match "XEmacs" (emacs-version)) (require 'itimer) @@ -97,9 +98,7 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's." (defun gnus-demon-remove-handler (function &optional no-init) "Remove the handler FUNCTION from the list of handlers." - (setq gnus-demon-handlers - (delq (assq function gnus-demon-handlers) - gnus-demon-handlers)) + (gnus-pull function gnus-demon-handlers) (unless no-init (gnus-demon-init))) diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el index 24b240a..7328093 100644 --- a/lisp/gnus-ems.el +++ b/lisp/gnus-ems.el @@ -315,6 +315,16 @@ (goto-char (point-min)) (sit-for 0)))))) +(if (fboundp 'split-string) + (fset 'gnus-split-string 'split-string) + (defun gnus-split-string (string pattern) + "Return a list of substrings of STRING which are separated by PATTERN." + (let (parts (start 0)) + (while (string-match pattern string start) + (setq parts (cons (substring string start (match-beginning 0)) parts) + start (match-end 0))) + (nreverse (cons (substring string start) parts))))) + (provide 'gnus-ems) ;; Local Variables: diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index d4bfd54..3d9fc88 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -1127,7 +1127,7 @@ If REGEXP, only list groups matching REGEXP." (setq list (cdr list))) (let ((face (cdar list))) (unless (eq face (get-text-property beg 'face)) - (gnus-put-text-property + (gnus-put-text-property-excluding-characters-with-faces beg end 'face (setq face (if (boundp face) (symbol-value face) face))) (gnus-extent-start-open beg))) @@ -3333,7 +3333,7 @@ and the second element is the address." (if force (if (null articles) (setcar (nthcdr 3 info) - (delq (assq type (car marked)) (car marked))) + (gnus-delete-alist type (car marked))) (setcdr m (gnus-compress-sequence articles t))) (setcdr m (gnus-compress-sequence (sort (nconc (gnus-uncompress-range (cdr m)) diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index b01a970..0f236e2 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -414,6 +414,7 @@ header line with the old Message-ID." (if post (message-news (or to-group group)) (set-buffer gnus-article-copy) + (gnus-msg-treat-broken-reply-to) (message-followup (if (or newsgroup-p force-news) nil to-group))) ;; The is mail. (if post diff --git a/lisp/gnus-salt.el b/lisp/gnus-salt.el index 9a56f37..0dbf148 100644 --- a/lisp/gnus-salt.el +++ b/lisp/gnus-salt.el @@ -638,7 +638,7 @@ Two predefined functions are available: (not (eval (caar list)))) (setq list (cdr list))))) (unless (eq (setq face (cdar list)) (get-text-property beg 'face)) - (gnus-put-text-property + (gnus-put-text-property-excluding-characters-with-faces beg end 'face (if (boundp face) (symbol-value face) face))))) diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index 08bf0f0..68f9c69 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -1089,9 +1089,13 @@ SCORE is the score to add." found) (while a ;; Downcase all header names. - (when (stringp (caar a)) + (cond + ((stringp (caar a)) (setcar (car a) (downcase (caar a))) (setq found t)) + ;; Advanced scoring. + ((consp (caar a)) + (setq found t))) (pop a)) ;; If there are actual scores in the alist, we add it to the ;; return value of this function. @@ -1307,7 +1311,7 @@ SCORE is the score to add." (and (file-exists-p file) (not (file-writable-p file)))) () - (setq score (setcdr entry (delq (assq 'touched score) score))) + (setq score (setcdr entry (gnus-delete-alist 'touched score))) (erase-buffer) (let (emacs-lisp-mode-hook) (if (string-match @@ -1647,7 +1651,7 @@ SCORE is the score to add." (setq request-func 'gnus-request-article)) (while articles (setq article (mail-header-number (caar articles))) - (gnus-message 7 "Scoring on article %s of %s..." article last) + (gnus-message 7 "Scoring article %s of %s..." article last) (when (funcall request-func article gnus-newsgroup-name) (widen) (goto-char (point-min)) @@ -1861,7 +1865,7 @@ SCORE is the score to add." (while (setq art (pop articles)) (setq this (aref (car art) gnus-score-index)) (if simplify - (setq this (gnus-map-function gnus-simplify-subject-functions this))) + (setq this (gnus-map-function gnus-simplify-subject-functions this))) (if (equal last this) ;; O(N*H) cons-cells used here, where H is the number of ;; headers. @@ -1894,7 +1898,7 @@ SCORE is the score to add." (mt (aref (symbol-name type) 0)) (case-fold-search (not (memq mt '(?R ?S ?E ?F)))) (dmt (downcase mt)) - ; Assume user already simplified regexp and fuzzies + ; Assume user already simplified regexp and fuzzies (match (if (and simplify (not (memq dmt '(?f ?r)))) (gnus-map-function gnus-simplify-subject-functions @@ -1908,10 +1912,12 @@ SCORE is the score to add." (cond ;; Fuzzy matches. We save these for later. ((= dmt ?f) - (push (cons entries alist) fuzzies)) + (push (cons entries alist) fuzzies) + (setq entries (cdr entries))) ;; Word matches. Save these for even later. ((= dmt ?w) - (push (cons entries alist) words)) + (push (cons entries alist) words) + (setq entries (cdr entries))) ;; Exact matches. ((= dmt ?e) ;; Do exact matching. @@ -1936,7 +1942,26 @@ SCORE is the score to add." gnus-score-trace)) (while (setq art (pop arts)) (setcdr art (+ score (cdr art))))))) - (forward-line 1))) + (forward-line 1)) + ;; Update expiry date + (if trace + (setq entries (cdr entries)) + (cond + ;; Permanent entry. + ((null date) + (setq entries (cdr entries))) + ;; We have a match, so we update the date. + ((and found gnus-update-score-entry-dates) + (gnus-score-set 'touched '(t) alist) + (setcar (nthcdr 2 kill) now) + (setq entries (cdr entries))) + ;; This entry has expired, so we remove it. + ((and expire (< date expire)) + (gnus-score-set 'touched '(t) alist) + (setcdr entries (cddr entries))) + ;; No match; go to next entry. + (t + (setq entries (cdr entries)))))) ;; Regexp and substring matching. (t (goto-char (point-min)) @@ -1955,26 +1980,26 @@ SCORE is the score to add." gnus-score-trace)) (while (setq art (pop arts)) (setcdr art (+ score (cdr art))))) - (forward-line 1)))) - ;; Update expiry date - (if trace - (setq entries (cdr entries)) - (cond - ;; Permanent entry. - ((null date) - (setq entries (cdr entries))) - ;; We have a match, so we update the date. - ((and found gnus-update-score-entry-dates) - (gnus-score-set 'touched '(t) alist) - (setcar (nthcdr 2 kill) now) - (setq entries (cdr entries))) - ;; This entry has expired, so we remove it. - ((and expire (< date expire)) - (gnus-score-set 'touched '(t) alist) - (setcdr entries (cddr entries))) - ;; No match; go to next entry. - (t - (setq entries (cdr entries)))))))) + (forward-line 1)) + ;; Update expiry date + (if trace + (setq entries (cdr entries)) + (cond + ;; Permanent entry. + ((null date) + (setq entries (cdr entries))) + ;; We have a match, so we update the date. + ((and found gnus-update-score-entry-dates) + (gnus-score-set 'touched '(t) alist) + (setcar (nthcdr 2 kill) now) + (setq entries (cdr entries))) + ;; This entry has expired, so we remove it. + ((and expire (< date expire)) + (gnus-score-set 'touched '(t) alist) + (setcdr entries (cddr entries))) + ;; No match; go to next entry. + (t + (setq entries (cdr entries)))))))))) ;; Find fuzzy matches. (when fuzzies @@ -2006,18 +2031,19 @@ SCORE is the score to add." (setcdr art (+ score (cdr art)))))) (forward-line 1)) ;; Update expiry date - (cond - ;; Permanent. - ((null date) - ) - ;; Match, update date. - ((and found gnus-update-score-entry-dates) - (gnus-score-set 'touched '(t) (cdar fuzzies)) - (setcar (nthcdr 2 kill) now)) - ;; Old entry, remove. - ((and expire (< date expire)) - (gnus-score-set 'touched '(t) (cdar fuzzies)) - (setcdr (caar fuzzies) (cddaar fuzzies)))) + (if (not trace) + (cond + ;; Permanent. + ((null date) + ) + ;; Match, update date. + ((and found gnus-update-score-entry-dates) + (gnus-score-set 'touched '(t) (cdar fuzzies)) + (setcar (nthcdr 2 kill) now)) + ;; Old entry, remove. + ((and expire (< date expire)) + (gnus-score-set 'touched '(t) (cdar fuzzies)) + (setcdr (caar fuzzies) (cddaar fuzzies))))) (setq fuzzies (cdr fuzzies))))) (when words @@ -2043,18 +2069,19 @@ SCORE is the score to add." (while (setq art (pop arts)) (setcdr art (+ score (cdr art)))))) ;; Update expiry date - (cond - ;; Permanent. - ((null date) - ) - ;; Match, update date. - ((and found gnus-update-score-entry-dates) - (gnus-score-set 'touched '(t) (cdar words)) - (setcar (nthcdr 2 kill) now)) - ;; Old entry, remove. - ((and expire (< date expire)) - (gnus-score-set 'touched '(t) (cdar words)) - (setcdr (caar words) (cddaar words)))) + (if (not trace) + (cond + ;; Permanent. + ((null date) + ) + ;; Match, update date. + ((and found gnus-update-score-entry-dates) + (gnus-score-set 'touched '(t) (cdar words)) + (setcar (nthcdr 2 kill) now)) + ;; Old entry, remove. + ((and expire (< date expire)) + (gnus-score-set 'touched '(t) (cdar words)) + (setcdr (caar words) (cddaar words))))) (setq words (cdr words)))))) nil)) diff --git a/lisp/gnus-soup.el b/lisp/gnus-soup.el index 645601f..0b9b337 100644 --- a/lisp/gnus-soup.el +++ b/lisp/gnus-soup.el @@ -310,6 +310,8 @@ If NOT-ALL, don't pack ticked articles." (or (mail-header-lines header) "0")))) (defun gnus-soup-save-areas () + "Write all SOUP buffers." + (interactive) (gnus-soup-write-areas) (save-excursion (let (buf) diff --git a/lisp/gnus-spec.el b/lisp/gnus-spec.el index 138dff8..9163180 100644 --- a/lisp/gnus-spec.el +++ b/lisp/gnus-spec.el @@ -237,9 +237,10 @@ (defvar gnus-face-4 'bold) (defun gnus-face-face-function (form type) - `(gnus-put-text-property + `(gnus-add-text-properties (point) (progn ,@form (point)) - 'face ',(symbol-value (intern (format "gnus-face-%d" type))))) + '(gnus-face t + face ',(symbol-value (intern (format "gnus-face-%d" type)))))) (defun gnus-tilde-max-form (el max-width) "Return a form that limits EL to MAX-WIDTH." @@ -307,7 +308,8 @@ (let ((number (if (match-beginning 1) (match-string 1) "0")) (delim (aref (match-string 2) 0))) - (if (or (= delim ?\() (= delim ?\{)) + (if (or (= delim ?\() + (= delim ?\{)) (replace-match (concat "\"(" (if (= delim ?\() "mouse" "face") " " number " \"")) (replace-match "\")\"")))) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index da62750..3814d83 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -513,6 +513,7 @@ with some simple extensions: %G Group name %p Unprefixed group name %A Current article number +%z Current article score %V Gnus version %U Number of unread articles in the group %e Number of unselected articles in the group @@ -874,6 +875,7 @@ variable (string, integer, character, etc).") (?d (length gnus-newsgroup-dormant) ?d) (?t (length gnus-newsgroup-marked) ?d) (?r (length gnus-newsgroup-reads) ?d) + (?z (gnus-summary-article-score gnus-tmp-article-number) ?d) (?E gnus-newsgroup-expunged-tally ?d) (?s (gnus-current-score-file-nondirectory) ?s))) @@ -2423,7 +2425,7 @@ marks of articles." (setq gnus-tmp-name gnus-tmp-from)) (unless (numberp gnus-tmp-lines) (setq gnus-tmp-lines 0)) - (gnus-put-text-property + (gnus-put-text-property-excluding-characters-with-faces (point) (progn (eval gnus-summary-line-format-spec) (point)) 'gnus-number gnus-tmp-number) @@ -3278,13 +3280,13 @@ If LINE, insert the rebuilt thread starting on line LINE." (headers in-headers) references) (while (and parent - headers (not (zerop generation)) (setq references (mail-header-references headers))) - (when (and references - (setq parent (gnus-parent-id references)) - (setq headers (car (gnus-id-to-thread parent)))) - (decf generation))) + (setq headers (if (and references + (setq parent (gnus-parent-id references))) + (car (gnus-id-to-thread parent)) + nil)) + (decf generation)) (and (not (eq headers in-headers)) headers))) @@ -3772,7 +3774,7 @@ or a straight list of headers." (setq gnus-tmp-name gnus-tmp-from)) (unless (numberp gnus-tmp-lines) (setq gnus-tmp-lines 0)) - (gnus-put-text-property + (gnus-put-text-property-excluding-characters-with-faces (point) (progn (eval gnus-summary-line-format-spec) (point)) 'gnus-number number) @@ -4371,8 +4373,8 @@ The resulting hash table is returned, or nil if no Xrefs were found." (subst-char-in-region (point-min) (point-max) ?\t ? t) (gnus-run-hooks 'gnus-parse-headers-hook) (let ((case-fold-search t) - in-reply-to header p lines - rawtext decoded) + rawtext decoded + in-reply-to header p lines chars) (goto-char (point-min)) ;; Search to the beginning of the next header. Error messages ;; do not begin with 2 or 3. @@ -4473,7 +4475,12 @@ The resulting hash table is returned, or nil if no Xrefs were found." (setq ref ref2)))) (setq ref nil)))) ;; Chars. - 0 + (progn + (goto-char p) + (if (search-forward "\nchars: " nil t) + (if (numberp (setq chars (ignore-errors (read cur)))) + chars 0) + 0)) ;; Lines. (progn (goto-char p) @@ -5465,6 +5472,7 @@ If FORCE, also allow jumping to articles not currently shown." (gnus-message 3 "Can't find article %d" article)) nil) (goto-char (gnus-data-pos data)) + (gnus-summary-position-point) article))) ;; Walking around summary lines with displaying articles. @@ -6946,7 +6954,7 @@ and `request-accept' functions." ((eq action 'copy) (save-excursion (set-buffer copy-buf) - (when (gnus-request-original-article article gnus-newsgroup-name) + (when (gnus-request-article-this-buffer article gnus-newsgroup-name) (gnus-request-accept-article to-newsgroup select-method (not articles))))) ;; Crosspost the article. @@ -6967,7 +6975,7 @@ and `request-accept' functions." (save-excursion (set-buffer copy-buf) ;; First put the article in the destination group. - (gnus-request-original-article article gnus-newsgroup-name) + (gnus-request-article-this-buffer article gnus-newsgroup-name) (when (consp (setq art-group (gnus-request-accept-article to-newsgroup select-method (not articles)))) @@ -7060,7 +7068,7 @@ and `request-accept' functions." (when (eq action 'crosspost) (save-excursion (set-buffer copy-buf) - (gnus-request-original-article article gnus-newsgroup-name) + (gnus-request-article-this-buffer article gnus-newsgroup-name) (nnheader-replace-header "Xref" new-xref) (gnus-request-replace-article article gnus-newsgroup-name (current-buffer))))) @@ -7324,55 +7332,58 @@ groups." "Make edits to the current article permanent." (interactive) ;; Replace the article. - (if (and (not read-only) - (not (gnus-request-replace-article - (cdr gnus-article-current) (car gnus-article-current) - (current-buffer)))) - (error "Couldn't replace article") - ;; Update the summary buffer. - (if (and references - (equal (message-tokenize-header references " ") - (message-tokenize-header - (or (message-fetch-field "references") "") " "))) - ;; We only have to update this line. - (save-excursion - (save-restriction - (message-narrow-to-head) - (let ((head (buffer-string)) - header) - (nnheader-temp-write nil - (insert (format "211 %d Article retrieved.\n" - (cdr gnus-article-current))) - (insert head) - (insert ".\n") - (let ((nntp-server-buffer (current-buffer))) - (setq header (car (gnus-get-newsgroup-headers - (save-excursion - (set-buffer gnus-summary-buffer) - gnus-newsgroup-dependencies) - t)))) - (save-excursion - (set-buffer gnus-summary-buffer) - (gnus-data-set-header - (gnus-data-find (cdr gnus-article-current)) - header) - (gnus-summary-update-article-line - (cdr gnus-article-current) header)))))) - ;; Update threads. - (set-buffer (or buffer gnus-summary-buffer)) - (gnus-summary-update-article (cdr gnus-article-current))) - ;; Prettify the article buffer again. - (unless no-highlight - (save-excursion - (set-buffer gnus-article-buffer) - (gnus-run-hooks 'gnus-article-display-hook) - (set-buffer gnus-original-article-buffer) - (gnus-request-article - (cdr gnus-article-current) - (car gnus-article-current) (current-buffer)))) - ;; Prettify the summary buffer line. - (when (gnus-visual-p 'summary-highlight 'highlight) - (gnus-run-hooks 'gnus-visual-mark-article-hook)))) + (let ((buf (current-buffer))) + (nnheader-temp-write nil + (insert-buffer buf) + (if (and (not read-only) + (not (gnus-request-replace-article + (cdr gnus-article-current) (car gnus-article-current) + (current-buffer)))) + (error "Couldn't replace article") + ;; Update the summary buffer. + (if (and references + (equal (message-tokenize-header references " ") + (message-tokenize-header + (or (message-fetch-field "references") "") " "))) + ;; We only have to update this line. + (save-excursion + (save-restriction + (message-narrow-to-head) + (let ((head (buffer-string)) + header) + (nnheader-temp-write nil + (insert (format "211 %d Article retrieved.\n" + (cdr gnus-article-current))) + (insert head) + (insert ".\n") + (let ((nntp-server-buffer (current-buffer))) + (setq header (car (gnus-get-newsgroup-headers + (save-excursion + (set-buffer gnus-summary-buffer) + gnus-newsgroup-dependencies) + t)))) + (save-excursion + (set-buffer gnus-summary-buffer) + (gnus-data-set-header + (gnus-data-find (cdr gnus-article-current)) + header) + (gnus-summary-update-article-line + (cdr gnus-article-current) header)))))) + ;; Update threads. + (set-buffer (or buffer gnus-summary-buffer)) + (gnus-summary-update-article (cdr gnus-article-current))) + ;; Prettify the article buffer again. + (unless no-highlight + (save-excursion + (set-buffer gnus-article-buffer) + (gnus-run-hooks 'gnus-article-display-hook) + (set-buffer gnus-original-article-buffer) + (gnus-request-article + (cdr gnus-article-current) + (car gnus-article-current) (current-buffer)))) + ;; Prettify the summary buffer line. + (when (gnus-visual-p 'summary-highlight 'highlight) + (gnus-run-hooks 'gnus-visual-mark-article-hook)))))) (defun gnus-summary-edit-wash (key) "Perform editing command KEY in the article buffer." @@ -7670,9 +7681,7 @@ returned." (push article gnus-newsgroup-dormant)) (t (push article gnus-newsgroup-unreads))) - (setq gnus-newsgroup-reads - (delq (assq article gnus-newsgroup-reads) - gnus-newsgroup-reads)) + (gnus-pull article gnus-newsgroup-reads) ;; See whether the article is to be put in the cache. (and gnus-use-cache @@ -7813,9 +7822,7 @@ marked." (push article gnus-newsgroup-dormant)) (t (push article gnus-newsgroup-unreads))) - (setq gnus-newsgroup-reads - (delq (assq article gnus-newsgroup-reads) - gnus-newsgroup-reads)) + (gnus-pull article gnus-newsgroup-reads) t))) (defalias 'gnus-summary-mark-as-unread-forward @@ -8874,7 +8881,7 @@ save those articles instead." (setq list (cdr list)))) (let ((face (cdar list))) (unless (eq face (get-text-property beg 'face)) - (gnus-put-text-property + (gnus-put-text-property-excluding-characters-with-faces beg end 'face (setq face (if (boundp face) (symbol-value face) face))) (when gnus-summary-highlight-line-function @@ -8970,7 +8977,7 @@ save those articles instead." (set-buffer (get-buffer-create " *Partial Article*")) (erase-buffer) (setq mime-preview-buffer mother) - (gnus-request-original-article number group) + (gnus-request-article-this-buffer number group) (mime-parse-buffer) ))) diff --git a/lisp/gnus-topic.el b/lisp/gnus-topic.el index 15e036b..1f404ba 100644 --- a/lisp/gnus-topic.el +++ b/lisp/gnus-topic.el @@ -31,6 +31,7 @@ (require 'gnus) (require 'gnus-group) (require 'gnus-start) +(require 'gnus-util) (defgroup gnus-topic nil "Group topics." @@ -348,7 +349,7 @@ If TOPIC, start with that topic." (when (atom param) (setq param (cons param t))) ;; Override any old versions of this param. - (setq out (delq (assq (car param) out) out)) + (gnus-pull (car param) out) (push param out))) ;; Return the resulting parameter list. out)) diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index 1665191..82e7f94 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -603,14 +603,6 @@ Bind `print-quoted' and `print-readably' to t while printing." ;; Write the buffer. (write-region (point-min) (point-max) file nil 'quietly)) -(defmacro gnus-delete-assq (key list) - `(let ((listval (eval ,list))) - (setq ,list (delq (assq ,key listval) listval)))) - -(defmacro gnus-delete-assoc (key list) - `(let ((listval ,list)) - (setq ,list (delq (assoc ,key listval) listval)))) - (defun gnus-delete-file (file) "Delete FILE if it exists." (when (file-exists-p file) @@ -629,10 +621,22 @@ Bind `print-quoted' and `print-readably' to t while printing." (save-restriction (goto-char beg) (while (re-search-forward "[ \t]*\n" end 'move) - (put-text-property beg (match-beginning 0) prop val) + (gnus-put-text-property beg (match-beginning 0) prop val) (setq beg (point))) - (put-text-property beg (point) prop val))))) - + (gnus-put-text-property beg (point) prop val))))) + +(defun gnus-put-text-property-excluding-characters-with-faces (beg end + prop val) + "The same as `put-text-property', but don't put props on characters with the `gnus-face' property." + (let ((b beg)) + (while (/= b end) + (when (get-text-property b 'gnus-face) + (setq b (next-single-property-change b 'gnus-face nil end))) + (when (/= b end) + (gnus-put-text-property + b (setq b (next-single-property-change b 'gnus-face nil end)) + prop val))))) + ;;; Protected and atomic operations. dmoore@ucsd.edu 21.11.1996 ;;; The primary idea here is to try to protect internal datastructures ;;; from becoming corrupted when the user hits C-g, or if a hook or @@ -933,6 +937,35 @@ ARG is passed to the first function." (set-buffer gnus-group-buffer) (eq major-mode 'gnus-group-mode)))) +(defun gnus-remove-duplicates (list) + (let (new (tail list)) + (while tail + (or (member (car tail) new) + (setq new (cons (car tail) new))) + (setq tail (cdr tail))) + (nreverse new))) + +(defun gnus-delete-if (predicate list) + "Delete elements from LIST that satisfy PREDICATE." + (let (out) + (while list + (when (funcall predicate (car list)) + (push (car list) out)) + (pop list)) + (nreverse out))) + +(defun gnus-delete-alist (key alist) + "Delete all entries in ALIST that have a key eq to KEY." + (let (entry) + (while (setq entry (assq key alist)) + (setq alist (delq entry alist))) + alist)) + +(defmacro gnus-pull (key alist) + "Modify ALIST to be without KEY." + (unless (symbolp alist) + (error "Not a symbol: %s" alist)) + `(setq ,alist (delq (assq ,key ,alist) ,alist))) (provide 'gnus-util) diff --git a/lisp/gnus.el b/lisp/gnus.el index f9bf1e6..f3e34da 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -250,11 +250,11 @@ is restarted, and sometimes reloaded." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "6.7.2" +(defconst gnus-version-number "6.7.4" "Version number for this version of gnus.") (defconst gnus-version - (format "Semi-gnus %s (based on Gnus 5.6.15; for SEMI 1.8)" + (format "Semi-gnus %s (based on Gnus 5.6.21; for SEMI 1.8)" gnus-version-number) "Version string for this version of gnus.") @@ -1105,7 +1105,7 @@ commands will still require prompting." `gnus-extract-address-components' is a quite fast, and too simplistic. `mail-extract-address-components' works much better, but is slower. -`std11-extract-address-components' also works better, but much slower." +`std11-extract-address-components' also works better, and less slower." :group 'gnus-summary-format :type '(radio (function-item gnus-extract-address-components) (function-item mail-extract-address-components) @@ -2462,7 +2462,7 @@ also examines the topic parameters." (when params (setq params (delq name params)) (while (assq name params) - (setq params (delq (assq name params) params))) + (gnus-pull name params)) (gnus-info-set-params info params)))))) (defun gnus-group-add-score (group &optional score) diff --git a/lisp/lpath.el b/lisp/lpath.el index b4b458c..c8ee274 100644 --- a/lisp/lpath.el +++ b/lisp/lpath.el @@ -35,7 +35,7 @@ make-char-table set-char-table-range font-create-object x-color-values widget-make-intangible error-message-string w3-form-encode-xwfu gnus-mule-get-coding-system - decode-coding-string)) + decode-coding-string mail-aliases-setup)) (maybe-bind '(global-face-data mark-active transient-mark-mode mouse-selection-click-count mouse-selection-click-count-buffer buffer-display-table @@ -58,7 +58,8 @@ set-glyph-property event-glyph glyph-property event-point device-on-window-system-p make-gui-button Info-goto-node pp-to-string color-name - gnus-mule-get-coding-system decode-coding-string))) + gnus-mule-get-coding-system decode-coding-string + mail-aliases-setup))) (setq load-path (cons "." load-path)) (require 'custom) diff --git a/lisp/message.el b/lisp/message.el index 0e255e0..b0466e7 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -1327,7 +1327,8 @@ Return the number of headers removed." ["Spellcheck" ispell-message t] "----" ["Send Message" message-send-and-exit t] - ["Abort Message" message-dont-send t])) + ["Abort Message" message-dont-send t] + ["Kill Message" message-kill-buffer t])) (easy-menu-define message-mode-field-menu message-mode-map "" @@ -1404,19 +1405,18 @@ C-c C-r message-caesar-buffer-body (rot13 the message body)." facemenu-remove-face-function t) (make-local-variable 'paragraph-separate) (make-local-variable 'paragraph-start) + ;; `-- ' precedes the signature. `-----' appears at the start of the + ;; lines that delimit forwarded messages. + ;; Lines containing just >= 3 dashes, perhaps after whitespace, + ;; are also sometimes used and should be separators. (setq paragraph-start (concat (regexp-quote mail-header-separator) - "$\\|[ \t]*[-_][-_][-_]+$\\|" - "-- $\\|" + "$\\|[ \t]*[a-z0-9A-Z]*>+[ \t]*$\\|[ \t]*$\\|" + "-- $\\|---+$\\|" + page-delimiter ;;!!! Uhm... shurely this can't be right? - "[> " (regexp-quote message-yank-prefix) "]+$\\|" - paragraph-start)) - (setq paragraph-separate - (concat (regexp-quote mail-header-separator) - "$\\|[ \t]*[-_][-_][-_]+$\\|" - "-- $\\|" - "[> " (regexp-quote message-yank-prefix) "]+$\\|" - paragraph-separate)) + "[> " (regexp-quote message-yank-prefix) "]+$")) + (setq paragraph-separate paragraph-start) (make-local-variable 'message-reply-headers) (setq message-reply-headers nil) (make-local-variable 'message-user-agent) @@ -1435,7 +1435,7 @@ C-c C-r message-caesar-buffer-body (rot13 the message body)." (when (eq message-mail-alias-type 'abbrev) (if (fboundp 'mail-abbrevs-setup) (mail-abbrevs-setup) - (funcall (intern "mail-aliases-setup")))) + (mail-aliases-setup))) (message-set-auto-save-file-name) (unless (string-match "XEmacs" emacs-version) (set (make-local-variable 'font-lock-defaults) @@ -1836,7 +1836,7 @@ prefix, and don't delete any headers." (unless (bolp) (insert ?\n)) (unless modified - (setq message-checksum (cons (message-checksum) (buffer-size))))))) + (setq message-checksum (message-checksum)))))) (defun message-cite-original-without-signature () "Cite function in the standard Message manner." @@ -2608,8 +2608,7 @@ to find out how to use this." (message-check 'new-text (or (not message-checksum) - (not (and (eq (message-checksum) (car message-checksum)) - (eq (buffer-size) (cdr message-checksum)))) + (not (eq (message-checksum) message-checksum)) (y-or-n-p "It looks like no new text has been added. Really post? "))) ;; Check the length of the signature. diff --git a/lisp/nndoc.el b/lisp/nndoc.el index 96b45d5..0092ac0 100644 --- a/lisp/nndoc.el +++ b/lisp/nndoc.el @@ -616,9 +616,7 @@ as the last checked definition, if t or `first', add as the first definition, and if any other symbol, add after that symbol in the alist." ;; First remove any old instances. - (setq nndoc-type-alist - (delq (assq (car definition) nndoc-type-alist) - nndoc-type-alist)) + (gnus-pull (car definition) nndoc-type-alist) ;; Then enter the new definition in the proper place. (cond ((or (null position) (eq position 'last)) diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index 5f399d8..db9666b 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -397,10 +397,15 @@ time saver for large mailboxes.") (save-excursion (set-buffer buffer) (goto-char (point-min)) - (if (looking-at "X-From-Line: ") - (replace-match "From ") - (unless (looking-at message-unix-mail-delimiter) - (insert "From nobody " (current-time-string) "\n"))) + (let (xfrom) + (while (re-search-forward "^X-From-Line: \\(.*\\)$" nil t) + (setq xfrom (match-string 1)) + (gnus-delete-line)) + (goto-char (point-min)) + (if xfrom + (insert "From " xfrom "\n") + (unless (looking-at message-unix-mail-delimiter) + (insert "From nobody " (current-time-string) "\n")))) (nnfolder-normalize-buffer) (set-buffer nnfolder-current-buffer) (goto-char (point-min)) diff --git a/lisp/nngateway.el b/lisp/nngateway.el index 6b59be5..2139885 100644 --- a/lisp/nngateway.el +++ b/lisp/nngateway.el @@ -81,7 +81,7 @@ parameter -- the gateway address.") (message-remove-header "to") (message-remove-header "cc") (goto-char (point-min)) - (insert "To: mail2news@" gateway "\n")) + (insert "To: " gateway "\n")) (nnoo-define-skeleton nngateway) diff --git a/lisp/nnmail.el b/lisp/nnmail.el index 5ae4d74..e761868 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -25,7 +25,7 @@ ;;; Code: -(require 'cl) +(eval-when-compile (require 'cl)) (require 'nnheader) (require 'timezone) @@ -1096,7 +1096,7 @@ FUNC will be called with the group name to determine the article number." "Error in `nnmail-split-methods'; using `bogus' mail group") (sit-for 1) '("bogus"))))) - (setq split (remove-duplicates split :test 'equal)) + (setq split (gnus-remove-duplicates split)) ;; The article may be "cross-posted" to `junk'. What ;; to do? Just remove the `junk' spec. Don't really ;; see anything else to do... @@ -1758,8 +1758,8 @@ If ARGS, PROMPT is used as an argument to `format'." (let ((history nnmail-split-history) prev) (while history - (setcar history (delete-if (lambda (e) (string= (car e) group)) - (car history))) + (setcar history (gnus-delete-if (lambda (e) (string= (car e) group)) + (car history))) (pop history)) (setq nnmail-split-history (delq nil nnmail-split-history)))) diff --git a/lisp/nnweb.el b/lisp/nnweb.el index 9c4251d..321508c 100644 --- a/lisp/nnweb.el +++ b/lisp/nnweb.el @@ -206,7 +206,7 @@ (deffoo nnweb-request-delete-group (group &optional force server) (nnweb-possibly-change-server group server) - (gnus-delete-assoc group nnweb-group-alist) + (gnus-pull group nnweb-group-alist) (gnus-delete-file (nnweb-overview-file group)) t) diff --git a/readme b/readme deleted file mode 100644 index e3064ef..0000000 --- a/readme +++ /dev/null @@ -1,52 +0,0 @@ -This package contains a beta version of Gnus. The lisp directory -contains the source lisp files, and the texi directory contains a -draft of the Gnus info pages. - -To use Gnus you first have to unpack the files, which you've obviously -done, because you are reading this. - -You should definitely byte-compile the source files. To do that, you -can simply say "./configure; make" in this directory. If you are -using XEmacs, you *must* say "make EMACS=xemacs". In that case you -may also want to pull down the package of nice glyphs from -. It should be installed -into the "gnus-5.4.53/etc" directory. - -Then you have to tell Emacs where Gnus is. You might put something -like - - (setq load-path (cons (expand-file-name "~/gnus-5.4.53/lisp") load-path)) - -in your .emacs file, or wherever you keep such things. - -To enable reading the Gnus manual, you could say something like: - - (setq Info-default-directory-list - (cons "~/gnus-5.4.53/texi" Info-default-directory-list)) - -Note that Gnus and GNUS can't coexist in a single Emacs. They both use -the same function and variable names. If you have been running GNUS -in your Emacs, you should probably exit that Emacs and start a new one -to fire up Gnus. - -Gnus does absolutely not work with anything older than Emacs 19.33 or -XEmacs 19.14. So you definitely need a new Emacs. - -Then you do a `M-x gnus', and everything should... uhm... it should -work, but it might not. Set `debug-on-error' to t, and mail me the -backtraces, or, better yet, find out why Gnus does something wrong, -fix it, and send me the diffs. :-) - -There are four main things I want your help and input on: - -1) Startup. Does everything go smoothly, and why not? - -2) Any errors while you read news normally? - -3) Any errors if you do anything abnormal? - -4) Features you do not like, or do like, but would like to tweak a - bit, and features you would like to see. - -Send any comments and all your bug fixes/complaints to -`bugs@gnus.org'. diff --git a/texi/ChangeLog b/texi/ChangeLog index ac91f20..ae2a27f 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,18 @@ +Sat Jun 27 04:37:14 1998 Lars Magne Ingebrigtsen + + * gnus.texi (Mail-To-News Gateways): Addition. + (Mail-To-News Gateways): Typo. + +Fri Jun 26 13:33:00 1998 Yoshiki Hayashi + + * gnus.texi (Summary Buffer Lines): Typo fix. + +Fri Jun 26 05:53:22 1998 Lars Magne Ingebrigtsen + + * gnus.texi (Score File Format): Addition. + (Mode Line Formatting): New. + (Summary Buffer Mode Line): Addition. + Thu Jun 25 11:24:14 1998 Lars Magne Ingebrigtsen * gnus.texi (Summary Score Commands): Deletia. diff --git a/texi/gnus.texi b/texi/gnus.texi index d5c5e7e..a303db6 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus -@settitle Semi-gnus 6.7.2 Manual +@settitle Semi-gnus 6.7.4 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -316,7 +316,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Semi-gnus 6.7.2 Manual +@title Semi-gnus 6.7.4 Manual @author by Lars Magne Ingebrigtsen @page @@ -359,7 +359,7 @@ internationalization/localization and multiscript features based on MULE API. So Semi-gnus does not discriminate various language communities. Oh, if you are a Klingon, please wait Unicode Next Generation. -This manual corresponds to Semi-gnus 6.7.2. +This manual corresponds to Semi-gnus 6.7.4. @end ifinfo @@ -1258,7 +1258,7 @@ group, or a bogus native group. @vindex gnus-group-mode-line-format The mode line can be changed by setting -@code{gnus-group-mode-line-format} (@pxref{Formatting Variables}). It +@code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}). It doesn't understand that many format specifiers: @table @samp @@ -3291,7 +3291,7 @@ Score as a number (@pxref{Scoring}). @vindex gnus-summary-zcore-fuzz Zcore, @samp{+} if above the default level and @samp{-} if below the default level. If the difference between -@code{gnus-summary-default-level} and the score is less than +@code{gnus-summary-default-score} and the score is less than @code{gnus-summary-zcore-fuzz}, this spec will not be used. @item V Total thread score. @@ -3343,9 +3343,9 @@ This restriction may disappear in later versions of gnus. @subsection Summary Buffer Mode Line @vindex gnus-summary-mode-line-format -You can also change the format of the summary mode bar. Set -@code{gnus-summary-mode-line-format} to whatever you like. The default -is @samp{Gnus: %%b [%A] %Z}. +You can also change the format of the summary mode bar (@pxref{Mode Line +Formatting}). Set @code{gnus-summary-mode-line-format} to whatever you +like. The default is @samp{Gnus: %%b [%A] %Z}. Here are the elements you can play with: @@ -3356,6 +3356,8 @@ Group name. Unprefixed group name. @item A Current article number. +@item z +Current article score. @item V Gnus version. @item U @@ -6325,7 +6327,8 @@ Cleaner, perhaps. @kindex W l (Summary) @findex gnus-summary-stop-page-breaking Remove page breaks from the current article -(@code{gnus-summary-stop-page-breaking}). +(@code{gnus-summary-stop-page-breaking}). @xref{Misc Article} for page +delimiters. @item W r @kindex W r (Summary) @@ -6995,9 +6998,9 @@ A hook called in all tree mode buffers. @item gnus-tree-mode-line-format @vindex gnus-tree-mode-line-format -A format string for the mode bar in the tree mode buffers. The default -is @samp{Gnus: %%b %S %Z}. For a list of valid specs, @pxref{Summary -Buffer Mode Line}. +A format string for the mode bar in the tree mode buffers (@pxref{Mode +Line Formatting}). The default is @samp{Gnus: %%b %S %Z}. For a list +of valid specs, @pxref{Summary Buffer Mode Line}. @item gnus-selected-tree-face @vindex gnus-selected-tree-face @@ -7983,8 +7986,9 @@ Syntax table used in article buffers. It is initialized from @vindex gnus-article-mode-line-format @item gnus-article-mode-line-format This variable is a format string along the same lines as -@code{gnus-summary-mode-line-format}. It accepts the same -format specifications as that variable, with one extension: +@code{gnus-summary-mode-line-format} (@pxref{Mode Line Formatting}). It +accepts the same format specifications as that variable, with one +extension: @table @samp @item w @@ -8564,8 +8568,8 @@ The opened/closed/denied status of the server. @vindex gnus-server-mode-line-format The mode line can also be customized by using the -@code{gnus-server-mode-line-format} variable. The following specs are -understood: +@code{gnus-server-mode-line-format} variable (@pxref{Mode Line +Formatting}). The following specs are understood: @table @samp @item S @@ -11068,7 +11072,16 @@ Creates a @code{To} header that looks like @item nngateway-mail2news-header-transformation Creates a @code{To} header that looks like -@samp{mail2news}@@@code{nngateway-address}. +@code{nngateway-address}. + +Here's an example: + +@lisp +(setq gnus-post-method + '(nngateway "mail2news@@replay.com" + (nngateway-header-transformation + nngateway-mail2news-header-transformation))) +@end lisp @end table @@ -11529,7 +11542,7 @@ The number of groups in the category. @item gnus-category-mode-line-format @vindex gnus-category-mode-line-format -Format of the category mode line. +Format of the category mode line (@pxref{Mode Line Formatting}). @item gnus-agent-short-article @vindex gnus-agent-short-article @@ -12345,11 +12358,31 @@ instead, if you feel like. @item Lines, Chars These two headers use different match types: @code{<}, @code{>}, -@code{=}, @code{>=} and @code{<=}. When matching on @code{Lines}, be -careful because some backends (like @code{nndir}) do not generate -@code{Lines} header, so every article ends up being marked as having 0 -lines. This can lead to strange results if you happen to lower score of -the articles with few lines. +@code{=}, @code{>=} and @code{<=}. + +These predicates are true if + +@example +(PREDICATE HEADER MATCH) +@end example + +evaluates to non-@code{nil}. For instance, the advanced match +@code{("lines" 4 <)} (@pxref{Advanced Scoring}) will result in the +following form: + +@lisp +(< header-value 4) +@end lisp + +Or to put it another way: When using @code{<} on @code{Lines} with 4 as +the match, we get the score added if the article has less than 4 lines. +(It's easy to get confused and think it's the other way around. But +it's not. I think.) + +When matching on @code{Lines}, be careful because some backends (like +@code{nndir}) do not generate @code{Lines} header, so every article ends +up being marked as having 0 lines. This can lead to strange results if +you happen to lower score of the articles with few lines. @item Date For the Date header we have three kinda silly match types: @@ -13644,7 +13677,8 @@ Interactive}. @section Formatting Variables @cindex formatting variables -Throughout this manual you've probably noticed lots of variables called things like @code{gnus-group-line-format} and +Throughout this manual you've probably noticed lots of variables called +things like @code{gnus-group-line-format} and @code{gnus-summary-mode-line-format}. These control how Gnus is to output lines in the various buffers. There's quite a lot of them. Fortunately, they all use the same syntax, so there's not that much to @@ -13656,6 +13690,7 @@ lots of percentages everywhere. @menu * Formatting Basics:: A formatting variable is basically a format string. +* Mode Line Formatting:: Some rules about mode line formatting variables. * Advanced Formatting:: Modifying output in various ways. * User-Defined Specs:: Having Gnus call your own functions. * Formatting Fonts:: Making the formatting look colorful and nice. @@ -13702,6 +13737,31 @@ means that the field will never be more than 6 characters wide and never less than 4 characters wide. +@node Mode Line Formatting +@subsection Mode Line Formatting + +Mode line formatting variables (e.g., +@code{gnus-summary-mode-line-format}) follow the same rules as other, +buffer line oriented formatting variables (@pxref{Formatting Basics}) +with the following two differences: + +@enumerate + +@item +There must be no newline (@samp{\n}) at the end. + +@item +The special @samp{%%b} spec can be used to display the buffer name. +Well, it's no spec at all, really---@samp{%%} is just a way to quote +@samp{%} to allow it to pass through the formatting machinery unmangled, +so that Emacs receives @samp{%b}, which is something the Emacs mode line +display interprets to mean ``show the buffer name''. For a full list of +mode line specs Emacs understands, see the documentation of the +@code{mode-line-format} variable. + +@end enumerate + + @node Advanced Formatting @subsection Advanced Formatting @@ -15607,6 +15667,7 @@ Also thanks to the following for patches and stuff: Jari Aalto, Adrian Aichner, +Vladimir Alexiev, Russ Allbery, Peter Arius, Matt Armstrong, @@ -15625,7 +15686,9 @@ Alastair Burt, Joao Cachopo, Zlatko Calusic, Massimo Campostrini, +Castor, Dan Christensen, +Kevin Christian, Michael R. Cook, Glenn Coombs, Frank D. Cringle, @@ -15644,6 +15707,7 @@ Luc Van Eycken, Sam Falkner, Nelson Jose dos Santos Ferreira, Sigbjorn Finne, +Decklin Foster, Gary D. Foster, Paul Franklin, Guy Geens, @@ -15726,6 +15790,7 @@ Loren Schall, Dan Schmidt, Ralph Schleicher, Philippe Schnoebelen, +Andreas Schwab, Randal L. Schwartz, Justin Sheehy, Danny Siu, @@ -15737,6 +15802,7 @@ Michael Sperber, Darren Stalder, Richard Stallman, Greg Stark, +Sam Steingold, Paul Stodghill, Kurt Swanson, Samuel Tardieu, @@ -15776,7 +15842,7 @@ actually are people who are using Gnus. Who'd'a thunk it! * 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.15. +* Quassia Gnus:: Two times two is four, or Gnus 5.6.21. @end menu These lists are, of course, just @emph{short} overviews of the @@ -16311,7 +16377,7 @@ Emphasized text can be properly fontisized: @node Quassia Gnus @subsubsection Quassia Gnus -New features in Gnus 5.6.15: +New features in Gnus 5.6.21: @itemize @bullet diff --git a/texi/message.texi b/texi/message.texi index 069ee96..8abddd6 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Message 5.6.15 Manual +@settitle Message 5.6.21 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Message 5.6.15 Manual +@title Message 5.6.21 Manual @author by Lars Magne Ingebrigtsen @page @@ -83,7 +83,7 @@ Message mode buffers. * Key Index:: List of Message mode keys. @end menu -This manual corresponds to Message 5.6.15. Message is distributed with +This manual corresponds to Message 5.6.21. Message is distributed with the Gnus distribution bearing the same version number as this manual has.