From ffa582faa6501cc6df658db6268ce9791b98f003 Mon Sep 17 00:00:00 2001 From: yamaoka Date: Wed, 7 Jan 2004 22:20:07 +0000 Subject: [PATCH] Synch to No Gnus 200401072023. --- lisp/ChangeLog | 42 +++++++++++++ lisp/gnus-score.el | 95 ++++++++++++++-------------- lisp/message.el | 16 +++-- lisp/mml.el | 8 +-- lisp/nnmail.el | 8 +-- lisp/spam.el | 174 ++++++++++++++++++++++++++++++++++------------------ texi/ChangeLog | 11 ++++ texi/dir | 3 + texi/gnus-ja.texi | 18 +++--- texi/gnus.texi | 20 +++--- texi/sasl.texi | 13 ++-- 11 files changed, 254 insertions(+), 154 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 56b99b2..c48580b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,45 @@ +2004-01-07 Reiner Steib + + * gnus-score.el (gnus-score-find-trace): Add `k' (kill-buffer). + +2004-01-07 Teodor Zlatanov + + * spam.el (spam-split): do not require spam-use-CHECK to be + enabled if that check is passed to spam-split explicitly; also + fix so 'spam doesn't get converted to spam-split-group when + spam-split-symbolic-return is t + (spam-find-spam): find registrations of the article and use those + instead of re-running spam-split to find the spam/ham + classification of the article + (spam-log-processing-to-registry, spam-log-registered-p) + (spam-log-unregistration-needed-p, spam-log-undo-registration): + use gnus-error instead of gnus-message + (spam-log-registration-type): new function to determine the + classification of a message based on registry entries; will + return nil if both 'spam and 'ham are found + (spam-check-BBDB): expand all the BBDB macros here so we can have + a reasonably fast local cache without the loading errors + (spam-cache-lookups): set to t by default + (spam-find-spam): don't try to guess spam-cache-lookups + (spam-enter-whitelist, spam-enter-blacklist): also clear the + spam-caches entry + (spam-filelist-build-cache, spam-filelist-check-cache): better + caching of whitelist/blacklist entries + (spam-check-whitelist, spam-check-blacklist): invoke + spam-from-listed-p with a type, not a cache variable + (spam-from-listed-p): wrap around spam-filelist-check-cache + +2004-01-07 Jesper Harder + + * message.el (message-cite-prefix-regexp): Use with-syntax-table. + + * nnmail.el (nnmail-split-fancy): do. + + * mml.el (mml-parse): do. + + * gnus-score.el (gnus-enter-score-words-into-hashtb) + (gnus-score-adaptive): do. + 2004-01-07 Katsumi Yamaoka * gnus-art.el (gnus-treat-emphasize): Ignore Emacs version number. diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index e88ae87..6a337ab 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -2222,23 +2222,19 @@ score in `gnus-newsgroup-scored' by SCORE." (defun gnus-enter-score-words-into-hashtb (hashtb) ;; Find all the words in the buffer and enter them into ;; the hashtable. - (let ((syntab (syntax-table)) - word val) + (let (word val) (goto-char (point-min)) - (unwind-protect - (progn - (set-syntax-table gnus-adaptive-word-syntax-table) - (while (re-search-forward "\\b\\w+\\b" nil t) - (setq val - (gnus-gethash - (setq word (downcase (buffer-substring - (match-beginning 0) (match-end 0)))) - hashtb)) - (gnus-sethash - word - (append (get-text-property (point-at-eol) 'articles) val) - hashtb))) - (set-syntax-table syntab)) + (with-syntax-table gnus-adaptive-word-syntax-table + (while (re-search-forward "\\b\\w+\\b" nil t) + (setq val + (gnus-gethash + (setq word (downcase (buffer-substring + (match-beginning 0) (match-end 0)))) + hashtb)) + (gnus-sethash + word + (append (get-text-property (point-at-eol) 'articles) val) + hashtb))) ;; Make all the ignorable words ignored. (let ((ignored (append gnus-ignored-adaptive-words (if gnus-adaptive-word-no-group-words @@ -2341,39 +2337,35 @@ score in `gnus-newsgroup-scored' by SCORE." (let* ((hashtb (gnus-make-hashtable 1000)) (date (date-to-day (current-time-string))) (data gnus-newsgroup-data) - (syntab (syntax-table)) word d score val) - (unwind-protect - (progn - (set-syntax-table gnus-adaptive-word-syntax-table) - ;; Go through all articles. - (while (setq d (pop data)) - (when (and - (not (gnus-data-pseudo-p d)) - (setq score - (cdr (assq - (gnus-data-mark d) - gnus-adaptive-word-score-alist)))) - ;; This article has a mark that should lead to - ;; adaptive word rules, so we insert the subject - ;; and find all words in that string. - (insert (mail-header-subject (gnus-data-header d))) - (downcase-region (point-min) (point-max)) - (goto-char (point-min)) - (while (re-search-forward "\\b\\w+\\b" nil t) - ;; Put the word and score into the hashtb. - (setq val (gnus-gethash (setq word (match-string 0)) - hashtb)) - (when (or (not gnus-adaptive-word-length-limit) - (> (length word) - gnus-adaptive-word-length-limit)) - (setq val (+ score (or val 0))) - (if (and gnus-adaptive-word-minimum - (< val gnus-adaptive-word-minimum)) - (setq val gnus-adaptive-word-minimum)) - (gnus-sethash word val hashtb))) - (erase-buffer)))) - (set-syntax-table syntab)) + (with-syntax-table gnus-adaptive-word-syntax-table + ;; Go through all articles. + (while (setq d (pop data)) + (when (and + (not (gnus-data-pseudo-p d)) + (setq score + (cdr (assq + (gnus-data-mark d) + gnus-adaptive-word-score-alist)))) + ;; This article has a mark that should lead to + ;; adaptive word rules, so we insert the subject + ;; and find all words in that string. + (insert (mail-header-subject (gnus-data-header d))) + (downcase-region (point-min) (point-max)) + (goto-char (point-min)) + (while (re-search-forward "\\b\\w+\\b" nil t) + ;; Put the word and score into the hashtb. + (setq val (gnus-gethash (setq word (match-string 0)) + hashtb)) + (when (or (not gnus-adaptive-word-length-limit) + (> (length word) + gnus-adaptive-word-length-limit)) + (setq val (+ score (or val 0))) + (if (and gnus-adaptive-word-minimum + (< val gnus-adaptive-word-minimum)) + (setq val gnus-adaptive-word-minimum)) + (gnus-sethash word val hashtb))) + (erase-buffer)))) ;; Make all the ignorable words ignored. (let ((ignored (append gnus-ignored-adaptive-words (if gnus-adaptive-word-no-group-words @@ -2429,6 +2421,11 @@ score in `gnus-newsgroup-scored' by SCORE." (interactive) (bury-buffer nil) (gnus-summary-expand-window))) + (local-set-key "k" + (lambda () + (interactive) + (kill-buffer (current-buffer)) + (gnus-summary-expand-window))) (local-set-key "e" (lambda () "Run `gnus-score-edit-file-at-point'." (interactive) @@ -2457,7 +2454,7 @@ score in `gnus-newsgroup-scored' by SCORE." Type `e' to edit score file corresponding to the score rule on current line, `f' to format (pretty print) the score file and edit it, `t' toggle to truncate long lines in this buffer, -`q' to quit. +`q' to quit, `k' to kill score trace buffer. The first sexp on each line is the score rule, followed by the file name of the score file and its full name, including the directory.") diff --git a/lisp/message.el b/lisp/message.el index b4bd3bb..c6559e4 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -662,15 +662,13 @@ Done before generating the new subject of a forward." (if (string-match "[[:digit:]]" "1") ;; support POSIX? "\\([ \t]*[-_.[:word:]]+>+\\|[ \t]*[]>|}+]\\)+" ;; ?-, ?_ or ?. MUST NOT be in syntax entry w. - (let ((old-table (syntax-table)) - non-word-constituents) - (set-syntax-table text-mode-syntax-table) - (setq non-word-constituents - (concat - (if (string-match "\\w" "-") "" "-") - (if (string-match "\\w" "_") "" "_") - (if (string-match "\\w" ".") "" "."))) - (set-syntax-table old-table) + (let (non-word-constituents) + (with-syntax-table text-mode-syntax-table + (setq non-word-constituents + (concat + (if (string-match "\\w" "-") "" "-") + (if (string-match "\\w" "_") "" "_") + (if (string-match "\\w" ".") "" ".")))) (if (equal non-word-constituents "") "\\([ \t]*\\(\\w\\)+>+\\|[ \t]*[]>|}+]\\)+" (concat "\\([ \t]*\\(\\w\\|[" diff --git a/lisp/mml.el b/lisp/mml.el index a7ee8de..a889abe 100644 --- a/lisp/mml.el +++ b/lisp/mml.el @@ -137,12 +137,8 @@ one charsets.") "Parse the current buffer as an MML document." (save-excursion (goto-char (point-min)) - (let ((table (syntax-table))) - (unwind-protect - (progn - (set-syntax-table mml-syntax-table) - (mml-parse-1)) - (set-syntax-table table))))) + (with-syntax-table mml-syntax-table + (mml-parse-1)))) (defun mml-parse-1 () "Parse the current buffer as an MML document." diff --git a/lisp/nnmail.el b/lisp/nnmail.el index 03cdc17..847861b 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -1310,12 +1310,8 @@ to actually put the message in the right group." (defun nnmail-split-fancy () "Fancy splitting method. See the documentation for the variable `nnmail-split-fancy' for details." - (let ((syntab (syntax-table))) - (unwind-protect - (progn - (set-syntax-table nnmail-split-fancy-syntax-table) - (nnmail-split-it nnmail-split-fancy)) - (set-syntax-table syntab)))) + (with-syntax-table nnmail-split-fancy-syntax-table + (nnmail-split-it nnmail-split-fancy))) (defvar nnmail-split-cache nil) ;; Alist of split expressions their equivalent regexps. diff --git a/lisp/spam.el b/lisp/spam.el index 0b9e9e2..66372f7 100644 --- a/lisp/spam.el +++ b/lisp/spam.el @@ -428,7 +428,7 @@ spamoracle database." "Msx" gnus-summary-mark-as-spam "\M-d" gnus-summary-mark-as-spam) -(defvar spam-cache-lookups nil +(defvar spam-cache-lookups t "Whether spam.el will try to cache lookups using spam-caches.") (defvar spam-caches (make-hash-table @@ -906,9 +906,11 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." decision) (while (and list-of-checks (not decision)) (let ((pair (pop list-of-checks))) - (when (and (symbol-value (car pair)) - (or (null specific-checks) - (memq (car pair) specific-checks))) + (when (or + ;; either, given specific checks, this is one of them + (and specific-checks (memq (car pair) specific-checks)) + ;; or, given no specific checks, spam-use-CHECK is set + (and (null specific-checks) (symbol-value (car pair)))) (gnus-message 5 "spam-split: calling the %s function" (symbol-name (cdr pair))) (setq decision (funcall (cdr pair))) @@ -917,8 +919,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (setq spam-split-last-successful-check (car pair))) (when (eq decision 'spam) - (if spam-split-symbolic-return - (setq decision spam-split-group) + (unless spam-split-symbolic-return (gnus-error 5 (format "spam-split got %s but %s is nil" @@ -938,8 +939,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (first-method (nth 0 methods)) (articles (if spam-autodetect-recheck-messages gnus-newsgroup-articles - gnus-newsgroup-unseen)) - (spam-cache-lookups (< 2 (length articles)))) + gnus-newsgroup-unseen))) (when (and autodetect (not (equal first-method 'none))) @@ -947,35 +947,48 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (lambda (article) (let ((id (spam-fetch-field-message-id-fast article)) (subject (spam-fetch-field-subject-fast article)) - (sender (spam-fetch-field-from-fast article))) - (unless (and spam-log-to-registry - (spam-log-registered-p id 'incoming)) - (let* ((spam-split-symbolic-return t) - (spam-split-symbolic-return-positive t) - (split-return - (with-temp-buffer - (gnus-request-article-this-buffer - article - group) - (if (or (null first-method) - (equal first-method 'default)) - (spam-split) - (apply 'spam-split methods))))) - (if (equal split-return 'spam) - (gnus-summary-mark-article article gnus-spam-mark)) - - (when (and split-return spam-log-to-registry) - (when (zerop (gnus-registry-group-count id)) - (gnus-registry-add-group - id group subject sender)) + (sender (spam-fetch-field-from-fast article)) + registry-lookup) + + (unless id + (gnus-error 5 "Article %d has no message ID!" article)) + + (when (and id spam-log-to-registry) + (setq registry-lookup (spam-log-registration-type id 'incoming)) + (when registry-lookup + (gnus-message + 9 + "spam-find-spam: message %s was already registered incoming" + id))) + + (let* ((spam-split-symbolic-return t) + (spam-split-symbolic-return-positive t) + (split-return + (or registry-lookup + (with-temp-buffer + (gnus-request-article-this-buffer + article + group) + (if (or (null first-method) + (equal first-method 'default)) + (spam-split) + (apply 'spam-split methods)))))) + (if (equal split-return 'spam) + (gnus-summary-mark-article article gnus-spam-mark)) + + (when (and id split-return spam-log-to-registry) + (when (zerop (gnus-registry-group-count id)) + (gnus-registry-add-group + id group subject sender)) + (unless registry-lookup (spam-log-processing-to-registry id 'incoming split-return spam-split-last-successful-check group)))))) - articles)))) + articles)))) (defvar spam-registration-functions ;; first the ham register, second the spam register function @@ -1122,8 +1135,8 @@ functions") type cell-list)) - (gnus-message 5 (format "%s called with bad ID, type, classification, check, or group" - "spam-log-processing-to-registry"))))) + (gnus-error 5 (format "%s called with bad ID, type, classification, check, or group" + "spam-log-processing-to-registry"))))) ;;; check if a ham- or spam-processor registration has been done (defun spam-log-registered-p (id type) @@ -1132,10 +1145,26 @@ functions") (spam-process-type-valid-p type)) (cdr-safe (gnus-registry-fetch-extra id type)) (progn - (gnus-message 5 (format "%s called with bad ID, type, classification, or check" - "spam-log-registered-p")) + (gnus-error 5 (format "%s called with bad ID, type, classification, or check" + "spam-log-registered-p")) nil)))) +;;; check what a ham- or spam-processor registration says +;;; returns nil if conflicting registrations are found +(defun spam-log-registration-type (id type) + (let ((count 0) + decision) + (dolist (reg (spam-log-registered-p id type)) + (let ((classification (nth 0 reg))) + (when (spam-classification-valid-p classification) + (when (and decision + (not (eq classification decision))) + (setq count (+ 1 count))) + (setq decision classification)))) + (if (< 0 count) + nil + decision))) + ;;; check if a ham- or spam-processor registration needs to be undone (defun spam-log-unregistration-needed-p (id type classification check) (when spam-log-to-registry @@ -1152,8 +1181,8 @@ functions") (setq found t)))) found) (progn - (gnus-message 5 (format "%s called with bad ID, type, classification, or check" - "spam-log-unregistration-needed-p")) + (gnus-error 5 (format "%s called with bad ID, type, classification, or check" + "spam-log-unregistration-needed-p")) nil)))) @@ -1176,8 +1205,8 @@ functions") type new-cell-list)) (progn - (gnus-message 5 (format "%s called with bad ID, type, check, or group" - "spam-log-undo-registration")) + (gnus-error 5 (format "%s called with bad ID, type, check, or group" + "spam-log-undo-registration")) nil)))) ;;; set up IMAP widening if it's necessary @@ -1339,19 +1368,26 @@ functions") (spam-split-group (if spam-split-symbolic-return 'spam spam-split-group)) - bbdb-cache) + bbdb-cache bbdb-hashtable) (when spam-cache-lookups (setq bbdb-cache (gethash 'spam-use-BBDB spam-caches)) (unless bbdb-cache - (setq bbdb-cache (bbdb-hashtable)) + (setq bbdb-cache + ;; this is the expanded (bbdb-hashtable) macro + ;; without the debugging support + (with-current-buffer (bbdb-buffer) + (save-excursion + (save-window-excursion + (bbdb-records nil t) + bbdb-hashtable)))) (puthash 'spam-use-BBDB bbdb-cache spam-caches))) - (when who (setq who (nth 1 (gnus-extract-address-components who))) (if (if spam-cache-lookups - (bbdb-gethash who bbdb-cache) + (symbol-value + (intern-soft who bbdb-cache)) (bbdb-search-simple nil who)) t (if spam-use-BBDB-exclusive @@ -1360,8 +1396,8 @@ functions") (file-error (progn (defalias 'bbdb-search-simple 'ignore) - (defalias 'bbdb-hashtable 'ignore) - (defalias 'bbdb-gethash 'ignore) + (defalias 'bbdb-records 'ignore) + (defalias 'bbdb-buffer 'ignore) (defalias 'spam-check-BBDB 'ignore) (defalias 'spam-BBDB-register-routine 'ignore) (defalias 'spam-enter-ham-BBDB 'ignore) @@ -1522,7 +1558,8 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)." With a non-nil REMOVE, remove them." (interactive "sAddress: ") (spam-enter-list address spam-whitelist remove) - (setq spam-whitelist-cache nil)) + (setq spam-whitelist-cache nil) + (spam-clear-cache 'spam-use-whitelist)) ;;; address can be a list, too (defun spam-enter-blacklist (address &optional remove) @@ -1530,7 +1567,8 @@ With a non-nil REMOVE, remove them." With a non-nil REMOVE, remove them." (interactive "sAddress: ") (spam-enter-list address spam-blacklist remove) - (setq spam-blacklist-cache nil)) + (setq spam-blacklist-cache nil) + (spam-clear-cache 'spam-use-whitelist)) (defun spam-enter-list (addresses file &optional remove) "Enter ADDRESSES into the given FILE. @@ -1559,6 +1597,32 @@ REMOVE not nil, remove the ADDRESSES." (insert a "\n"))))) (save-buffer)))) +(defun spam-filelist-build-cache (type) + (let ((cache (if (eq type 'spam-use-blacklist) + spam-blacklist-cache + spam-whitelist-cache)) + parsed-cache) + (unless (gethash type spam-caches) + (while cache + (let ((address (pop cache))) + (unless (zerop (length address)) ; 0 for a nil address too + (setq address (regexp-quote address)) + ;; fix regexp-quote's treatment of user-intended regexes + (while (string-match "\\\\\\*" address) + (setq address (replace-match ".*" t t address)))) + (push address parsed-cache))) + (puthash type parsed-cache spam-caches)))) + +(defun spam-filelist-check-cache (type from) + (when (stringp from) + (spam-filelist-build-cache type) + (let (found) + (dolist (address (gethash type spam-caches)) + (when (and address (string-match address from)) + (setq found t) + (return))) + found))) + ;;; returns t if the sender is in the whitelist, nil or ;;; spam-split-group otherwise (defun spam-check-whitelist () @@ -1568,7 +1632,7 @@ REMOVE not nil, remove the ADDRESSES." spam-split-group))) (unless spam-whitelist-cache (setq spam-whitelist-cache (spam-parse-list spam-whitelist))) - (if (spam-from-listed-p spam-whitelist-cache) + (if (spam-from-listed-p 'spam-use-whitelist) t (if spam-use-whitelist-exclusive spam-split-group @@ -1581,7 +1645,7 @@ REMOVE not nil, remove the ADDRESSES." spam-split-group))) (unless spam-blacklist-cache (setq spam-blacklist-cache (spam-parse-list spam-blacklist))) - (and (spam-from-listed-p spam-blacklist-cache) spam-split-group))) + (and (spam-from-listed-p 'spam-use-blacklist) spam-split-group))) (defun spam-parse-list (file) (when (file-readable-p file) @@ -1597,20 +1661,10 @@ REMOVE not nil, remove the ADDRESSES." (push (or pure-address address) contents))))) (nreverse contents)))) -(defun spam-from-listed-p (cache) +(defun spam-from-listed-p (type) (let ((from (nnmail-fetch-field "from")) found) - (while cache - (let ((address (pop cache))) - (unless (zerop (length address)) ; 0 for a nil address too - (setq address (regexp-quote address)) - ;; fix regexp-quote's treatment of user-intended regexes - (while (string-match "\\\\\\*" address) - (setq address (replace-match ".*" t t address)))) - (when (and address (string-match address from)) - (setq found t - cache nil)))) - found)) + (spam-filelist-check-cache type from))) (defun spam-filelist-register-routine (articles blacklist &optional unregister) (let ((de-symbol (if blacklist 'spam-use-whitelist 'spam-use-blacklist)) diff --git a/texi/ChangeLog b/texi/ChangeLog index 65f2584..fc010ed 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,14 @@ +2004-01-07 Jesper Harder + + * dir: Add SASL. + + * sasl.texi: Markup fixes. + + * gnus.texi (Fancy Mail Splitting, SpamAssassin) + (Spam ELisp Package Sequence of Events) + (Spam ELisp Package Global Variables) + (Spam ELisp Package Configuration Examples): do. + 2004-01-07 Lars Magne Ingebrigtsen * gnus.texi (Summary Mail Commands): S D e. diff --git a/texi/dir b/texi/dir index 57e9dec..9f24d00 100644 --- a/texi/dir +++ b/texi/dir @@ -17,7 +17,10 @@ File: dir Node: Top This is the Gnus Info tree * Menu: * Gnus: (gnus). The news reader Gnus. +* Gnus: (gnus-ja). The news reader Gnus (Japanese). * Message: (message). The Message sending thingamabob. +* Message: (message-ja). The Message sending thingamabob (Japanese). * Emacs MIME: (emacs-mime). Libraries for handling MIME. * Sieve: (sieve). Managing Sieve scripts in Emacs. * PGG: (pgg). Emacs interface to various PGP implementations. +* SASL: (sasl). The Emacs SASL library. diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index 2a94d5c..cd728de 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -13245,8 +13245,9 @@ UNDELETED} $B$O$*$=$i$/$?$$$F$$$N?M$K$O:GNI$NA*Br$G$7$g$&$,!"$H$-$I(B $B$9!#$=$l$,>e5-$NNc$G(B @code{save-excursion} $B$H(B @code{save-restriction} $B$N(B $B8e$G(B @code{(widen)} $B$,8F$P$l$kI,MW$,$"$kM}M3$G$9!#$5$i$K(B nnimap $B%P%C%/%((B $B%s%I$N>l9g!"%G%#%U%)%k%H$G$O5-;v$N%\%G%#$,%@%&%s%m!<%I$5$l$J$$$3$H$KCm0U(B -$B$7$F2<$5$$!#$=$l$r$9$k$?$a$K$O(B @code{nnimap-split-download-body} $B$r(B t $B$K(B -$B@_Dj$9$kI,MW$,$"$j$^$9(B (@pxref{Splitting in IMAP})$B!#(B +$B$7$F2<$5$$!#$=$l$r$9$k$?$a$K(B +$B$O(B @code{nnimap-split-download-body} $B$r(B @code{t} $B$K@_Dj$9$kI,MW$,$"$j$^(B +$B$9(B (@pxref{Splitting in IMAP})$B!#(B @item (! @var{func} @var{split}) $BJ,3d$,%j%9%H$G!":G=i$NMWAG$,(B @code{!} $B$G$"$k$H(B @var{split} $B$,l9g!"%G%#%U%)%k%H$G$O5-;v$N%\%G%#$,%@%&%s%m!<(B $B%I$5$l$J$$$3$H$KCm0U$7$F2<$5$$!#$=$l$r$9$k$?$a$K$O!"(B -@code{nnimap-split-download-body} $B$r(B t $B$K@_Dj$9$kI,MW$,$"$j$^(B +@code{nnimap-split-download-body} $B$r(B @code{t} $B$K@_Dj$9$kI,MW$,$"$j$^(B $B$9(B (@pxref{Splitting in IMAP})$B!#(B $B0J>e$,$3$l$K4X$9$k$3$H$G$9!#$$$/$D$+$N(B spam $B$O$I$&$7$F$bAGDL$j$7$F$7$^$&(B @@ -21779,7 +21780,8 @@ Variables}) $B$K4p$E$$$F(B ham $B$^$?$O(B spam $B%0%k!<%W$H9M$($i$l$k$+!"L$ $B$F(B @code{ham-process-destination} $B$+(B @code{spam-process-destination} $B$K(B $B0\F0$5$;$i$l$^$9!#(B@code{ham-process-destination} $B$^$?(B $B$O(B @code{spam-process-destination} $B$N$I$A$i$+$,(B ($BLuCp(B: $B0\F0@h$H$7$F(B) $BE,(B -$B@Z$G!"$=$l$i$,(B nil $B$@$C$?>l9g!"$=$N5-;v$O8=:_$N%0%k!<%W$K;D$5$l$^$9!#(B +$B@Z$G!"$=$l$i$,(B @code{nil} $B$@$C$?>l9g!"$=$N5-;v$O8=:_$N%0%k!<%W$K;D$5$l$^(B +$B$9!#(B $B$I$l$+$N%0%k!<%W$G(B spam $B$,8+$D$+$C$?$i(B ($BHs(B-spam $B%0%k!<%W$K8B$C(B $B$F(B @code{spam-move-spam-nonspam-groups-only} $B$GJQ992D(B)$B!"%0%k!<%W$rH4$1$k(B @@ -21790,8 +21792,8 @@ Package Global Variables}) $B$K0\F0$5$;$i$l$^$9!#(BSpam $B$,:F;0=hM}$5$l$k$3$ $B$rK>$^$J$$$J$i$P!"(B@file{gnus-registry.el} $B%Q%C%1!<%8$rFI$_9~$_!"(B @code{spam-log-to-registry} $BJQ?t$rM-8z$K$7$J$1$l$P$J$j$^$;$s!#$3$N$h$&(B $B$K(B spam $B$O$I$3$G$b8!CN$5$l=hM}$5$l$^$9!#$=$l$O$[$H$s$I$N?M!9$,K>$`$b$N$G(B -$B$9!#(B@code{spam-process-destination} $B$,(B nil $B$@$C$?>l9g!"(Bspam $B$K$O4|8B@Z$l(B -$B>C5n$N0u$,IU$1$i$l$^$9!#IaDL$=$l$O@5$7$$9T$J$$$G$9!#(B +$B$9!#(B@code{spam-process-destination} $B$,(B @code{nil} $B$@$C$?>l9g!"(Bspam $B$K$O(B +$B4|8B@Z$l>C5n$N0u$,IU$1$i$l$^$9!#IaDL$=$l$O@5$7$$9T$J$$$G$9!#(B Spam $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B NNTP $B$N$h$&$JFI$_9~$_@lMQ%P%C%/%(%s%I$N(B $B$?$a$K(B)$B!"$=$l$O%3%T!<$5$l$^$9!#(B @@ -22076,7 +22078,7 @@ Ham $B$H(B spam $B$K4X$9$kLdBj$O!"(BGnus $B$,%G%#%U%)%k%H$G$O$3$N=hM}$rDI@W @vindex spam-mark-only-unseen-as-spam Spam $B%0%k!<%W$K$"$k!"$^$@FI$^$l$?$3$H$,L5$$5-;v$@$1$K(B spam $B$N0u$rIU$1$?(B $B$$>l9g$O!"$3$NJQ?t$r%;%C%H$7$F2<$5$$!#%G%#%U%)%k%H$G$O%;%C%H$5$l$F$$$^$9!#(B -$B$3$l$r(B nil $B$K$9$k$H!"L$FI$N5-;v$K$b(B spam $B0u$,IU$1$i$l$^$9!#(B +$B$3$l$r(B @code{nil} $B$K$9$k$H!"L$FI$N5-;v$K$b(B spam $B0u$,IU$1$i$l$^$9!#(B @vindex spam-mark-ham-unread-before-move-from-spam-group Ham $B$,(B spam $B%0%k!<%W$+$i0\F0$5$l$kA0$K0u$r>C$7$?$$>l9g$O!"$3$NJQ?t$r%;%C(B @@ -22250,7 +22252,7 @@ groups as spam and reports the to Gmane at group exit: (spam-process (gnus-group-spam-exit-processor-report-gmane))) @end lisp -Additionally, I use `(setq spam-report-gmane-use-article-number nil)' +Additionally, I use @code{(setq spam-report-gmane-use-article-number nil)} because I don't read the groups directly from news.gmane.org, but through my local news server (leafnode). I.e. the article numbers are not the same as on news.gmane.org, thus @code{spam-report.el} has to check diff --git a/texi/gnus.texi b/texi/gnus.texi index c40a0a6..06b3dc2 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -14000,8 +14000,8 @@ is run. That's why @code{(widen)} needs to be called after @code{save-excursion} and @code{save-restriction} in the example above. Also note that with the nnimap backend, message bodies will not be downloaded by default. You need to set -@code{nnimap-split-download-body} to t to do that (@pxref{Splitting in -IMAP}). +@code{nnimap-split-download-body} to @code{t} to do that +(@pxref{Splitting in IMAP}). @item (! @var{func} @var{split}) If the split is a list, and the first element is @code{!}, then @@ -22424,8 +22424,8 @@ call the external tools during splitting. Example fancy split method: Note that with the nnimap backend, message bodies will not be downloaded by default. You need to set -@code{nnimap-split-download-body} to t to do that (@pxref{Splitting in -IMAP}). +@code{nnimap-split-download-body} to @code{t} to do that +(@pxref{Splitting in IMAP}). That is about it. As some spam is likely to get through anyway, you might want to have a nifty function to call when you happen to read @@ -22661,8 +22661,8 @@ any are set, and the processed mail is moved to the @code{ham-process-destination} or the @code{spam-process-destination} depending on the article's classification. If the @code{ham-process-destination} or the @code{spam-process-destination}, -whichever is appropriate, are nil, the article is left in the current -group. +whichever is appropriate, are @code{nil}, the article is left in the +current group. If a spam is found in any group (this can be changed to only non-spam groups with @code{spam-move-spam-nonspam-groups-only}), it is @@ -22674,7 +22674,7 @@ You have to load the @code{gnus-registry.el} package and enable the @code{spam-log-to-registry} variable if you want spam to be processed no more than once. Thus, spam is detected and processed everywhere, which is what most people want. If the -@code{spam-process-destination} is nil, the spam is marked as +@code{spam-process-destination} is @code{nil}, the spam is marked as expired, which is usually the right thing to do. If spam can not be moved - because of a read-only backend such as NNTP, @@ -22960,8 +22960,8 @@ entries, this won't work as well as it does without a limit. @vindex spam-mark-only-unseen-as-spam Set this variable if you want only unseen articles in spam groups to -be marked as spam. By default, it is set. If you set it to nil, -unread articles will also be marked as spam. +be marked as spam. By default, it is set. If you set it to +@code{nil}, unread articles will also be marked as spam. @vindex spam-mark-ham-unread-before-move-from-spam-group Set this variable if you want ham to be unmarked before it is moved @@ -23136,7 +23136,7 @@ groups as spam and reports the to Gmane at group exit: (spam-process (gnus-group-spam-exit-processor-report-gmane))) @end lisp -Additionally, I use `(setq spam-report-gmane-use-article-number nil)' +Additionally, I use @code{(setq spam-report-gmane-use-article-number nil)} because I don't read the groups directly from news.gmane.org, but through my local news server (leafnode). I.e. the article numbers are not the same as on news.gmane.org, thus @code{spam-report.el} has to check diff --git a/texi/sasl.texi b/texi/sasl.texi index 4e538d5..8d73326 100644 --- a/texi/sasl.texi +++ b/texi/sasl.texi @@ -4,6 +4,7 @@ @set VERSION 0.2 +@dircategory Emacs @direntry * SASL: (sasl). The Emacs SASL library. @end direntry @@ -118,7 +119,7 @@ A list of mechanism names. @defun sasl-find-mechanism mechanisms Retrieve an apropriate mechanism. -This function compares MECHANISMS and @code{sasl-mechanisms} then +This function compares @var{mechanisms} and @code{sasl-mechanisms} then returns apropriate @code{sasl-mechanism} object. @example @@ -203,19 +204,19 @@ Return the whole property list of client configuration. @section Steps A step (@code{sasl-step} object) is an abstraction of authentication -"step" which holds the response value and the next entry point for the +``step'' which holds the response value and the next entry point for the authentication process (the latter is not accessible). @defun sasl-step-data step -Return the data which STEP holds, a string. +Return the data which @var{step} holds, a string. @end defun @defun sasl-step-set-data step data -Store DATA string to STEP. +Store @var{data} string to @var{step}. @end defun To get the initial response, you should call the function -@code{sasl-next-step} with the second argument nil. +@code{sasl-next-step} with the second argument @code{nil}. @example (setq name (sasl-mechanism-name mechanism)) @@ -237,7 +238,7 @@ To go on with the authentication process, all you have to do is call @defun sasl-next-step client step Perform the authentication step. -At the first time STEP should be set to nil. +At the first time @var{step} should be set to @code{nil}. @end defun @node Backend drivers -- 1.7.10.4