+2000-12-26 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * lisp/gnus.el: Bind `:parameter-type', `:parameter-document',
+ `:function', `:function-document', `:variable',
+ `:variable-document', `:variable-group', `:variable-type' and
+ `:variable-default' for old Emacsen.
+
2000-12-22 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/gnus-vers.el (gnus-revision-number): Increment to 01.
distclean: clean
rm -rf *~
- for i in lisp texi; do (cd $$i; $(MAKE) distclean); done
+ for i in lisp texi etc; do (cd $$i; $(MAKE) distclean); done
rm -f config.log config.status config.cache Makefile
config.status: $(srcdir)/configure
cd .. \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+distclean:
+ rm -f *~ Makefile
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
+2000-12-25 00:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * dgnushack.el (dgnushack-compile): elc is in the current directory.
+
+ * qp.el (quoted-printable-encode-region): Don't check multibyte in
+ XEmacs.
+
+2000-12-25 Lloyd Zusman <ljz@asfast.com>
+
+ * mml.el (mml-read-tag): Save tag location.
+
+2000-12-25 Simon Josefsson <simon@josefsson.org>
+
+ * starttls.el: Sync with Emacs 21.
+
+2000-12-24 11:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * message.el (message-mail): Support yank-action.
+
+ * message.el (message-setup): Revoke the last change.
+
+2000-12-24 01:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * message.el (message-setup): Use cons. Suggested by Johan Vromans
+ <jvromans@squirrel.nl>.
+
+2000-12-24 Simon Josefsson <sj@extundo.com>
+
+ * mm-bodies.el (mm-decode-content-transfer-encoding): Preserve
+ mailing list junk at end of part.
+
+2000-12-23 Simon Josefsson <sj@extundo.com>
+
+ * nnimap.el (nnimap-expiry-target): New function.
+ (nnimap-request-expire-articles): Use it.
+
+2000-12-22 21:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus.el (gnus-group-parameters-more): New variable.
+ * gnus-cus.el (gnus-group-customize): Use it.
+
+ * gnus.el (gnus-define-group-parameter): New macro.
+ (auto-expire): Use it
+ (total-expire): Use it.
+ * gnus-art.el (banner): Use it.
+
+ * mml.el (mml-parse): save-excursion. Suggested by Lloyd Zusman
+ <ljz@asfast.com>.
+
+2000-12-22 12:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus-topic.el (gnus-topic-create-topic): Use list.
+
+ * gnus-vm.el (gnus-summary-save-article-vm): Require gnus-art
+ before binding gnus-default-article-saver.
+
+ * gnus-sum.el (gnus-summary-save-article):
+ (gnus-summary-pipe-output):
+ (gnus-summary-save-article-mail):
+ (gnus-summary-save-article-rmail):
+ (gnus-summary-save-article-file):
+ (gnus-summary-write-article-file):
+ (gnus-summary-save-article-body-file): Ditto.
+
+ * gnus-mh.el (gnus-summary-save-article-folder): Ditto.
+
+2000-12-22 10:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus-art.el (gnus-mime-security-button-map):
+ (gnus-mime-button-map): Add parent.
+
+2000-12-22 09:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * messagexmas.el (message-xmas-redefine): New function.
+
+ * message.el: Use it.
+
+ * gnus-art.el (gnus-article-check-hidden-text): Return t.
+
+ * gnus-util.el (gnus-remove-text-properties-when): Return t.
+
2000-12-22 03:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
* mm-decode.el (mm-dissect-multipart): Avoid errors owing to
(dolist (file dgnushack-exporting-files)
(setq file (expand-file-name file srcdir))
- (when (and (file-exists-p (setq elc (concat file "c")))
+ (when (and (file-exists-p
+ (setq elc (concat (file-name-nondirectory file) "c")))
(file-newer-than-file-p file elc))
(delete-file elc)))
file elc)
(while (setq file (pop files))
(setq file (expand-file-name file srcdir))
- (when (or (not (file-exists-p (setq elc (concat file "c"))))
+ (when (or (not (file-exists-p
+ (setq elc (concat (file-name-nondirectory file) "c"))))
(file-newer-than-file-p file elc))
(ignore-errors
(byte-compile-file file))))))
:type '(repeat (cons symbol regexp))
:group 'gnus-article-washing)
+(gnus-define-group-parameter
+ banner
+ :variable-document
+ "Alist of regexps (to match group names) and banner."
+ :variable-group gnus-article-washing
+ :parameter-type
+ '(choice :tag "Banner"
+ :value nil
+ (const :tag "Remove signature" signature)
+ (symbol :tag "Item in `gnus-article-banner-alist'" none)
+ regexp
+ (const :tag "None" nil))
+ :parameter-document
+ "If non-nil, specify how to remove `banners' from articles.
+
+Symbol `signature' means to remove signatures delimited by
+`gnus-signature-separator'. Any other symbol is used to look up a
+regular expression to match the banner in `gnus-article-banner-alist'.
+A string is used as a regular expression to match the banner
+directly.")
+
(defcustom gnus-emphasis-alist
(let ((format
"\\(\\s-\\|^\\|[-\"]\\|\\s(\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\\(\\s-\\|[-,;:\"]\\s-\\|[?!.]+\\s-\\|\\s)\\)")
(save-excursion
(save-restriction
(let ((inhibit-point-motion-hooks t)
- (banner (gnus-group-find-parameter gnus-newsgroup-name 'banner))
+ (banner (gnus-parameter-banner gnus-newsgroup-name))
(gnus-signature-limit nil)
buffer-read-only beg end)
(when banner
(> arg 0))
nil)
((< arg 0)
- (gnus-article-show-hidden-text type))
+ (gnus-article-show-hidden-text type)
+ t)
(t
(if (eq hide 'hidden)
- (gnus-article-show-hidden-text type)
+ (progn
+ (gnus-article-show-hidden-text type)
+ t)
nil)))))))
(defun gnus-article-hidden-text-p (type)
(defvar gnus-mime-button-map
(let ((map (make-sparse-keymap)))
- ;; Not for Emacs 21: fixme better.
- ;; (set-keymap-parent map gnus-article-mode-map)
+ (unless (>= (string-to-number emacs-version) 21)
+ ;; XEmacs doesn't care.
+ (set-keymap-parent map gnus-article-mode-map))
(define-key map gnus-mouse-2 'gnus-article-push-button)
(define-key map gnus-down-mouse-3 'gnus-mime-button-menu)
(dolist (c gnus-mime-button-commands)
(defvar gnus-mime-security-button-map
(let ((map (make-sparse-keymap)))
- ;; Not for Emacs 21: fixme better.
- ;;(set-keymap-parent map gnus-article-mode-map)
+ (unless (>= (string-to-number emacs-version) 21)
+ (set-keymap-parent map gnus-article-mode-map))
(define-key map gnus-mouse-2 'gnus-article-push-button)
(define-key map "\r" 'gnus-article-press-button)
map))
;;; Code:
(require 'wid-edit)
+(require 'gnus)
(require 'gnus-score)
(require 'gnus-topic)
+(require 'gnus-art)
;;; Widgets:
`gcc' header (this symbol takes precedence over any default `Gcc'
rules as described later).")
- (banner (choice :tag "Banner"
- :value nil
- (const :tag "Remove signature" signature)
- (symbol :tag "Item in `gnus-article-banner-alist'" none)
- regexp
- (const :tag "None" nil)) "\
-If non-nil, specify how to remove `banners' from articles.
-
-Symbol `signature' means to remove signatures delimited by
-`gnus-signature-separator'. Any other symbol is used to look up a
-regular expression to match the banner in `gnus-article-banner-alist'.
-A string is used as a regular expression to match the banner
-directly.")
-
- (auto-expire (const :tag "Automatic Expire" t) "\
-All articles that are read will be marked as expirable.")
-
- (total-expire (const :tag "Total Expire" t) "\
-All read articles will be put through the expiry process
-
-This happens even if they are not marked as expirable.
-Use with caution.")
-
(expiry-wait (choice :tag "Expire Wait"
:value never
(const never)
(const :format "" ,(nth 0 entry))
,(nth 1 entry)))
(append gnus-group-parameters
+ (reverse gnus-group-parameters-more)
(if group
gnus-extra-group-parameters
gnus-extra-topic-parameters)))))
If N is nil and any articles have been marked with the process mark,
save those articles instead."
(interactive "P")
+ (require 'gnus-art)
(let ((gnus-default-article-saver 'gnus-summary-save-in-folder))
(gnus-summary-save-article arg)))
If N is nil and any articles have been marked with the process mark,
pipe those articles instead."
(interactive "P")
+ (require 'gnus-art)
(let ((gnus-default-article-saver 'gnus-summary-save-in-pipe))
(gnus-summary-save-article arg t))
(gnus-configure-windows 'pipe))
If N is nil and any articles have been marked with the process mark,
save those articles instead."
(interactive "P")
+ (require 'gnus-art)
(let ((gnus-default-article-saver 'gnus-summary-save-in-mail))
(gnus-summary-save-article arg)))
If N is nil and any articles have been marked with the process mark,
save those articles instead."
(interactive "P")
+ (require 'gnus-art)
(let ((gnus-default-article-saver 'gnus-summary-save-in-rmail))
(gnus-summary-save-article arg)))
If N is nil and any articles have been marked with the process mark,
save those articles instead."
(interactive "P")
+ (require 'gnus-art)
(let ((gnus-default-article-saver 'gnus-summary-save-in-file))
(gnus-summary-save-article arg)))
If N is nil and any articles have been marked with the process mark,
save those articles instead."
(interactive "P")
+ (require 'gnus-art)
(let ((gnus-default-article-saver 'gnus-summary-write-to-file))
(gnus-summary-save-article arg)))
If N is nil and any articles have been marked with the process mark,
save those articles instead."
(interactive "P")
+ (require 'gnus-art)
(let ((gnus-default-article-saver 'gnus-summary-save-body-in-file))
(gnus-summary-save-article arg)))
(unless parent
(setq parent (caar gnus-topic-topology)))
(let ((top (cdr (gnus-topic-find-topology parent)))
- (full-topic (or full-topic `((,topic visible)))))
+ (full-topic (or full-topic (list (list topic 'visible nil nil)))))
(unless top
(error "No such parent topic: %s" parent))
(if previous
(remove-text-properties start point properties object)
(setq start (text-property-any point end property value)))
(if start
- (remove-text-properties start end properties object))))
+ (remove-text-properties start end properties object))
+ t))
(provide 'gnus-util)
(require 'gnus-util)
(require 'nnheader)
+(defvar gnus-group-parameters-more nil)
+
+(condition-case nil
+ :symbol-for-testing-whether-colon-keyword-is-available-or-not
+ (void-variable
+ ;; Bind keywords.
+ (dolist (keyword '(:parameter-type
+ :parameter-document :function :function-document
+ :variable :variable-document :variable-group
+ :variable-type :variable-default))
+ (set keyword keyword))))
+
+(defmacro gnus-define-group-parameter (param &rest rest)
+ "Define a group parameter PARAM.
+REST is a plist of following:
+:type One of `bool', `list' or `nil'.
+:function The name of the function.
+:function-document The document of the function.
+:parameter-type The type for customizing the parameter.
+:parameter-document The document for the parameter.
+:variable The name of the variable.
+:variable-document The document for the variable.
+:variable-group The group for customizing the variable.
+:variable-type The type for customizing the variable.
+:variable-default The default value of the variable."
+ (let* ((type (plist-get rest :type))
+ (parameter-type (plist-get rest :parameter-type))
+ (parameter-document (plist-get rest :parameter-document))
+ (function (or (plist-get rest :function)
+ (intern (format "gnus-parameter-%s" param))))
+ (function-document (or (plist-get rest :function-document) ""))
+ (variable (or (plist-get rest :variable)
+ (intern (format "gnus-parameter-%s-alist" param))))
+ (variable-document (or (plist-get rest :variable-document) ""))
+ (variable-group (plist-get rest :variable-group))
+ (variable-type (or (plist-get rest :variable-type)
+ `(quote (repeat (list (regexp :tag "Group")
+ ,parameter-type)))))
+ (variable-default (plist-get rest :variable-default)))
+ (list
+ 'progn
+ `(defcustom ,variable ,variable-default
+ ,variable-document
+ :group 'gnus-group-parameter
+ :group ',variable-group
+ :type ,variable-type)
+ `(setq gnus-group-parameters-more
+ (delq (assq ',param gnus-group-parameters-more)
+ gnus-group-parameters-more))
+ `(add-to-list 'gnus-group-parameters-more
+ (list ',param
+ ,parameter-type
+ ,parameter-document))
+ (if (eq type 'bool)
+ `(defun ,function (group)
+ ,function-document
+ (let ((params (gnus-group-find-parameter group))
+ val)
+ (cond
+ ((memq ',param params)
+ t)
+ ((setq val (assq ',param params))
+ (cdr val))
+ (,variable
+ (string-match ,variable group)))))
+ `(defun ,function (name)
+ ,function-document
+ (and name
+ (or (gnus-group-find-parameter name ',param)
+ (let ((alist ,variable)
+ elem value)
+ (while (setq elem (pop alist))
+ (when (and name
+ (string-match (car elem) name))
+ (setq alist nil
+ value (cdr elem))))
+ ,(if type
+ 'value
+ '(if (consp value) (car value) value))))))))))
+
(defcustom gnus-home-directory "~/"
"Directory variable that specifies the \"home\" directory.
All other Gnus path variables are initialized from this variable."
:type '(choice (const nil)
integer))
-(defcustom gnus-auto-expirable-newsgroups nil
+(gnus-define-group-parameter
+ auto-expire
+ :type bool
+ :function gnus-group-auto-expirable-p
+ :function-document
+ "Check whether GROUP is auto-expirable or not."
+ :variable gnus-auto-expirable-newsgroups
+ :variable-default nil
+ :variable-document
"*Groups in which to automatically mark read articles as expirable.
If non-nil, this should be a regexp that should match all groups in
which to perform auto-expiry. This only makes sense for mail groups."
- :group 'nnmail-expire
- :type '(choice (const nil)
- regexp))
-
-(defcustom gnus-total-expirable-newsgroups nil
- "*Groups in which to perform expiry of all read articles.
+ :variable-group nnmail-expire
+ :variable-type '(choice (const nil)
+ regexp)
+ :parameter-type '(const :tag "Automatic Expire" t)
+ :parameter-document
+ "All articles that are read will be marked as expirable.")
+
+(gnus-define-group-parameter
+ total-expire
+ :type bool
+ :function gnus-group-total-expirable-p
+ :function-document
+ "Check whether GROUP is total-expirable or not."
+ :variable gnus-total-expirable-newsgroups
+ :variable-default nil
+ :variable-document
+ "*Groups in which to perform expiry of all read articles.
Use with extreme caution. All groups that match this regexp will be
expiring - which means that all read articles will be deleted after
\(say) one week. (This only goes for mail groups and the like, of
course.)"
- :group 'nnmail-expire
- :type '(choice (const nil)
- regexp))
+ :variable-group nnmail-expire
+ :variable-type '(choice (const nil)
+ regexp)
+ :parameter-type '(const :tag "Total Expire" t)
+ :parameter-document
+ "All read articles will be put through the expiry process
+
+This happens even if they are not marked as expirable.
+Use with caution.")
(defcustom gnus-group-uncollapsed-levels 1
"Number of group name elements to leave alone when making a short group name."
(let ((group (or group gnus-newsgroup-name)))
(not (gnus-check-backend-function 'request-replace-article group))))
-(defun gnus-group-total-expirable-p (group)
- "Check whether GROUP is total-expirable or not."
- (let ((params (gnus-group-find-parameter group))
- val)
- (cond
- ((memq 'total-expire params)
- t)
- ((setq val (assq 'total-expire params)) ; (auto-expire . t)
- (cdr val))
- (gnus-total-expirable-newsgroups ; Check var.
- (string-match gnus-total-expirable-newsgroups group)))))
-
-(defun gnus-group-auto-expirable-p (group)
- "Check whether GROUP is auto-expirable or not."
- (let ((params (gnus-group-find-parameter group))
- val)
- (cond
- ((memq 'auto-expire params)
- t)
- ((setq val (assq 'auto-expire params)) ; (auto-expire . t)
- (cdr val))
- (gnus-auto-expirable-newsgroups ; Check var.
- (string-match gnus-auto-expirable-newsgroups group)))))
-
(defun gnus-virtual-group-p (group)
"Say whether GROUP is virtual or not."
(memq 'virtual (assoc (symbol-name (car (gnus-find-method-for-group group)))
find-image font-create-object gnus-mule-get-coding-system
font-lock-set-defaults
image-size image-type-available-p insert-image
- make-temp-file
+ make-temp-file message-xmas-redefine
mail-aliases-setup mm-copy-tree
mule-write-region-no-coding-system put-image
ring-elements
"Start editing a mail message to be sent.
OTHER-HEADERS is an alist of header/value pairs."
(interactive)
- (let ((message-this-is-mail t))
+ (let ((message-this-is-mail t) replybuffer)
(unless (message-mail-user-agent)
(message-pop-to-buffer (message-buffer-name "mail" to)))
+ ;; FIXME: message-mail should do something if YANK-ACTION is not
+ ;; insert-buffer.
+ (and (consp yank-action) (eq (car yank-action) 'insert-buffer)
+ (setq replybuffer (nth 1 yank-action)))
(message-setup
(nconc
`((To . ,(or to "")) (Subject . ,(or subject "")))
- (when other-headers other-headers)))))
+ (when other-headers other-headers))
+ replybuffer)
+ ;; FIXME: Should return nil if failure.
+ t))
;;;###autoload
(defun message-news (&optional newsgroups subject)
(defalias 'message-exchange-point-and-mark 'exchange-point-and-mark)
;; Support for toolbar
-(if (featurep 'xemacs)
- (require 'messagexmas))
-
(eval-when-compile
(defvar tool-bar-map)
(defvar tool-bar-mode))
(mail-strip-quoted-names
(message-fetch-field "to")))))
+(when (featurep 'xemacs)
+ (require 'messagexmas)
+ (message-xmas-redefine))
+
(defun message-save-drafts ()
"Postponing the message."
(interactive)
"Exchange point and mark, but allow for XEmacs' optional argument."
(exchange-point-and-mark message-xmas-dont-activate-region))
-(defalias 'message-exchange-point-and-mark
- 'message-xmas-exchange-point-and-mark)
-
(defun message-xmas-maybe-fontify ()
(when (featurep 'font-lock)
(font-lock-set-defaults)))
(substring table a (+ a n))
(substring table (+ a 26) 255))))
-(when (>= emacs-major-version 20)
- (defalias 'message-make-caesar-translation-table
- 'message-xmas-make-caesar-translation-table))
-
(add-hook 'message-mode-hook 'message-xmas-maybe-fontify)
+(defun message-xmas-redefine ()
+ "Redefine message functions for XEmacs."
+ (defalias 'message-exchange-point-and-mark
+ 'message-xmas-exchange-point-and-mark)
+
+ (when (>= emacs-major-version 20)
+ (defalias 'message-make-caesar-translation-table
+ 'message-xmas-make-caesar-translation-table)))
+
+(message-xmas-redefine)
+
(provide 'messagexmas)
;;; messagexmas.el ends here
(delete-region (match-beginning 0) (match-end 0)))
(goto-char (point-max))
(when (re-search-backward "^[A-Za-z0-9+/]+=*[\t ]*$" nil t)
- (forward-line)
- (delete-region (point) (point-max)))
- (point-max))))
+ (forward-line))
+ (point))))
((memq encoding '(7bit 8bit binary))
;; Do nothing.
)
(defun mml-parse ()
"Parse the current buffer as an MML document."
- (goto-char (point-min))
- (let ((table (syntax-table)))
- (unwind-protect
- (progn
- (set-syntax-table mml-syntax-table)
- (mml-parse-1))
- (set-syntax-table table))))
+ (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)))))
(defun mml-parse-1 ()
"Parse the current buffer as an MML document."
(defun mml-read-tag ()
"Read a tag and return the contents."
- (let (contents name elem val)
+ (let ((orig-point (point))
+ contents name elem val)
(forward-char 2)
(setq name (buffer-substring-no-properties
(point) (progn (forward-sexp 1) (point))))
(goto-char (match-end 0))
;; Don't skip the leading space.
;;(skip-chars-forward " \t\n")
+ ;; Put the tag location into the returned contents
+ (setq contents (append (list (cons 'tag-location orig-point)) contents))
(cons (intern name) (nreverse contents))))
(defun mml-read-part (&optional mml)
(gnus-message 5 "nnimap: Marking article %d for deletion..."
imap-current-message))
+
+(defun nnimap-expiry-target (arts group server)
+ (unless (eq nnmail-expiry-target 'delete)
+ (with-current-buffer nntp-server-buffer
+ (dolist (art (gnus-uncompress-sequence arts))
+ (nnimap-request-article art group server)
+ ;; hints for optimization in `nnimap-request-accept-article'
+ (let ((nnimap-current-move-article art)
+ (nnimap-current-move-group group)
+ (nnimap-current-move-server server))
+ (nnmail-expiry-target-group nnmail-expiry-target group))))))
+
;; Notice that we don't actually delete anything, we just mark them deleted.
(deffoo nnimap-request-expire-articles (articles group &optional server force)
(let ((artseq (gnus-compress-sequence articles)))
(when (and artseq (nnimap-possibly-change-group group server))
(with-current-buffer nnimap-server-buffer
(if force
- (and (imap-message-flags-add
- (imap-range-to-message-set artseq) "\\Deleted")
- (setq articles nil))
+ (progn
+ (nnimap-expiry-target artseq group server)
+ (when (imap-message-flags-add (imap-range-to-message-set artseq)
+ "\\Deleted")
+ (setq articles nil)))
(let ((days (or (and nnmail-expiry-wait-function
(funcall nnmail-expiry-wait-function group))
nnmail-expiry-wait)))
(cond ((eq days 'immediate)
- (and (imap-message-flags-add
- (imap-range-to-message-set artseq) "\\Deleted")
- (setq articles nil)))
+ (nnimap-expiry-target artseq group server)
+ (when (imap-message-flags-add
+ (imap-range-to-message-set artseq) "\\Deleted")
+ (setq articles nil)))
((numberp days)
(let ((oldarts (imap-search
(format "UID %s NOT SINCE %s"
(nnimap-date-days-ago days))))
(imap-fetch-data-hook
'(nnimap-request-expire-articles-progress)))
+ (nnimap-expiry-target oldarts group server)
(and oldarts
(imap-message-flags-add
(imap-range-to-message-set
(save-restriction
(narrow-to-region from to)
(mm-with-unibyte-current-buffer-mule4
- ;; Fixme: what should this do in XEmacs/Mule?
- (if (fboundp 'find-charset-region) ; else XEmacs, non-Mule
+ (if (and (not (featurep 'xemacs)) ;; Don't check XEmacs Mule.
+ (fboundp 'find-charset-region))
(if (delq 'unknown ; Emacs 20 unibyte
(delq 'eight-bit-graphic ; Emacs 21
(delq 'eight-bit-control
;; Author: Daiki Ueno <ueno@unixuser.org>
;; Created: 1999/11/20
-;; Keywords: TLS, SSL, OpenSSL
+;; Keywords: TLS, SSL, OpenSSL, mail, news
-;; This file is not part of any package.
+;; This file is part of GNU Emacs.
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
(defgroup starttls nil
"Support for `Transport Layer Security' protocol."
- :group 'ssl)
+ :version "21.1"
+ :group 'mail)
(defcustom starttls-program "starttls"
"The program to run in a subprocess to open an TLSv1 connection."
+ :type 'string
:group 'starttls)
(defcustom starttls-extra-args nil
- "Extra arguments to `starttls-program'"
+ "Extra arguments to `starttls-program'."
+ :type '(repeat string)
:group 'starttls)
(defun starttls-negotiate (process)
+2000-12-22 Christopher Splinter <chris@splinter.inka.de>
+
+ * gnus.texi (Group Parameters): Add documentation for the `banner'
+ group parameter.
+
+2000-12-22 11:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus.texi (Adaptive Scoring): Use setq by Thomas Seck
+ <tmseck@web.de>.
+
2000-12-21 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
* gnus.texi (Article Washing): Doc addition by Paul Stevenson
(signature "Funky Signature"))
@end example
+@item banner
+@code{(banner . "regex")} \e$B$N$h$&$J9`L\$O!"5-;v$N$9$Y$F$N>l=j$G@55,I=\e(B
+\e$B8=\e(B "regex" \e$B$K%^%C%A$9$k$b$N$r:o=|$7$^$9!#\e(B"regex" \e$B$NBe$o$j$K%7%s%\\e(B
+\e$B%k\e(B @code{signature} (\e$B:G8e$N=pL>$r:o\e(B
+\e$B=|\e(B) \e$B$dO"A[%j%9%H\e(B @code{gnus-article-banner-alist} \e$B$N3FMWAG$r;H$&$3$H$b$G\e(B
+\e$B$-$^$9!#\e(B
+
@end table
\e$B%0%k!<%W%Q%i%a!<%?$N=$@5$K$O\e(B @kbd{G p} \e$BL?Na$r;H$C$F$/$@$5$$!#%H%T%C%/%Q\e(B
\e$B9~$^$l$?8e$G$"$kI,MW$,$"$k$G$7$g$&\e(B)
@lisp
-(defvar gnus-category-predicate-alist
- (append gnus-category-predicate-alist
- '((old . my-article-old-p))))
+(setq gnus-category-predicate-alist
+ (append gnus-category-predicate-alist
+ '((old . my-article-old-p))))
@end lisp
\e$B$=$7$F!"C1$K<!$N$h$&$K=R8l$r;XDj$7$^$9\e(B:
\e$B%9%3%"IU$1$N=hM}$r40A4$K@)8f$G$-$^$9!#Nc$($P!"$3$N$h$&$J46$8$K$J$j$^$9!#\e(B
@lisp
-(defvar gnus-default-adaptive-score-alist
- '((gnus-unread-mark)
- (gnus-ticked-mark (from 4))
- (gnus-dormant-mark (from 5))
- (gnus-del-mark (from -4) (subject -1))
- (gnus-read-mark (from 4) (subject 2))
- (gnus-expirable-mark (from -1) (subject -1))
- (gnus-killed-mark (from -1) (subject -3))
- (gnus-kill-file-mark)
- (gnus-ancient-mark)
- (gnus-low-score-mark)
- (gnus-catchup-mark (from -1) (subject -1))))
+(setq gnus-default-adaptive-score-alist
+ '((gnus-unread-mark)
+ (gnus-ticked-mark (from 4))
+ (gnus-dormant-mark (from 5))
+ (gnus-del-mark (from -4) (subject -1))
+ (gnus-read-mark (from 4) (subject 2))
+ (gnus-expirable-mark (from -1) (subject -1))
+ (gnus-killed-mark (from -1) (subject -3))
+ (gnus-kill-file-mark)
+ (gnus-ancient-mark)
+ (gnus-low-score-mark)
+ (gnus-catchup-mark (from -1) (subject -1))))
@end lisp
\e$B8+$F$*J,$+$j$N$h$&$K!"$3$NO"A[%j%9%H$N3FMWAG$O!"%-!<$H$7$F0u\e(B (\e$BJQ?tL>$+$b\e(B
(signature "Funky Signature"))
@end example
+@item banner
+An item like @code{(banner . "regex")} causes any part of an article
+that matches the regular expression "regex" to be stripped. Instead of
+"regex", you can also use the symbol @code{signature} which strips the
+last signature or any of the elements of the alist
+@code{gnus-article-banner-alist}.
+
@end table
Use the @kbd{G p} command to edit group parameters of a group. You
@code{gnus-agent} has been loaded via @code{(gnus-agentize)})
@lisp
-(defvar gnus-category-predicate-alist
+(setq gnus-category-predicate-alist
(append gnus-category-predicate-alist
'((old . my-article-old-p))))
@end lisp
might look something like this:
@lisp
-(defvar gnus-default-adaptive-score-alist
+(setq gnus-default-adaptive-score-alist
'((gnus-unread-mark)
(gnus-ticked-mark (from 4))
(gnus-dormant-mark (from 5))