*** pub/rgnus/lisp/article.el Fri Nov 22 00:07:20 1996 --- rgnus/lisp/article.el Mon Nov 25 10:54:29 1996 *************** *** 237,242 **** --- 237,249 ---- (while (setq b (text-property-any b (point-max) 'article-type type)) (delete-region b (incf b)))))) + (defun article-delete-invisible-text () + "Delete all invisible text in the current buffer." + (save-excursion + (let ((b (point-min))) + (while (setq b (text-property-any b (point-max) 'invisible t)) + (delete-region b (incf b)))))) + (defun article-text-type-exists-p (type) "Say whether any text of type TYPE exists in the buffer." (text-property-any (point-min) (point-max) 'article-type type)) *** pub/rgnus/lisp/custom-edit.el Sat Nov 23 20:08:24 1996 --- rgnus/lisp/custom-edit.el Tue Nov 26 02:28:31 1996 *************** *** 4,10 **** ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces ! ;; Version: 1.02 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: --- 4,10 ---- ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces ! ;; Version: 1.04 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: *************** *** 160,166 **** ;;;###autoload (defun customize-face (symbol) "Customize FACE." ! (interactive (list (completing-read "Customize face: " obarray 'facep))) (unless (symbolp symbol) (error "Should be a symbol %S" symbol)) (custom-buffer-create (list (list symbol 'custom-face)))) --- 160,169 ---- ;;;###autoload (defun customize-face (symbol) "Customize FACE." ! (interactive (list (completing-read "Customize face: " ! obarray 'custom-facep))) ! (if (stringp symbol) ! (setq symbol (intern symbol))) (unless (symbolp symbol) (error "Should be a symbol %S" symbol)) (custom-buffer-create (list (list symbol 'custom-face)))) *************** *** 172,178 **** (let ((found nil)) (mapatoms (lambda (symbol) (and (get symbol 'saved-face) ! (facep symbol) (setq found (cons (list symbol 'custom-face) found))) (and (get symbol 'saved-value) (boundp symbol) --- 175,181 ---- (let ((found nil)) (mapatoms (lambda (symbol) (and (get symbol 'saved-face) ! (custom-facep symbol) (setq found (cons (list symbol 'custom-face) found))) (and (get symbol 'saved-value) (boundp symbol) *************** *** 193,199 **** (when (string-match regexp (symbol-name symbol)) (when (get symbol 'custom-group) (setq found (cons (list symbol 'custom-group) found))) ! (when (facep symbol) (setq found (cons (list symbol 'custom-face) found))) (when (and (boundp symbol) (or (get symbol 'saved-value) --- 196,202 ---- (when (string-match regexp (symbol-name symbol)) (when (get symbol 'custom-group) (setq found (cons (list symbol 'custom-group) found))) ! (when (custom-facep symbol) (setq found (cons (list symbol 'custom-face) found))) (when (and (boundp symbol) (or (get symbol 'saved-value) *************** *** 283,289 **** (t t))))) (widget-put (get 'menu-choice 'widget-type) :custom-show t) ! ;;; The `custom-magic' Widget (define-widget 'custom-magic 'item "Status feedback for customization option." --- 286,298 ---- (t t))))) (widget-put (get 'menu-choice 'widget-type) :custom-show t) ! ;;; The `custom-manual' Widget. ! ! (define-widget 'custom-manual 'info-link ! "Link to the manual entry for this customization option." ! :tag "Manual") ! ! ;;; The `custom-magic' Widget. (define-widget 'custom-magic 'item "Status feedback for customization option." *************** *** 420,426 **** (define-widget 'custom 'default "Customize a user option." :convert-widget 'widget-item-convert-widget ! :format "%l%[%t%]: %v%m %h" :format-handler 'custom-format-handler :notify 'custom-notify :custom-level 1 --- 429,435 ---- (define-widget 'custom 'default "Customize a user option." :convert-widget 'widget-item-convert-widget ! :format "%l%[%t%]: %v%m %h%a" :format-handler 'custom-format-handler :notify 'custom-notify :custom-level 1 *************** *** 461,466 **** --- 470,497 ---- (widget-put widget :custom-magic magic) (push magic buttons) (widget-put widget :buttons buttons))) + ((eq escape ?a) + (let* ((symbol (widget-get widget :value)) + (links (get symbol 'custom-links)) + (many (> (length links) 2))) + (when links + (and (eq (preceding-char) ?\n) + (widget-get widget :indent) + (insert-char ? (widget-get widget :indent))) + (insert "See also ") + (while links + (push (widget-create-child-and-convert widget (car links)) + buttons) + (setq links (cdr links)) + (cond ((null links) + (insert ".\n")) + ((null (cdr links)) + (if many + (insert ", and ") + (insert " and "))) + (t + (insert ", ")))) + (widget-put widget :buttons buttons)))) (t (widget-default-format-handler widget escape))))) *************** *** 501,507 **** (define-widget 'custom-variable 'custom "Customize variable." ! :format "%l%v%m %h" :help-echo "Push me to set or reset this variable." :documentation-property 'variable-documentation :custom-state nil --- 532,538 ---- (define-widget 'custom-variable 'custom "Customize variable." ! :format "%l%v%m %h%a" :help-echo "Push me to set or reset this variable." :documentation-property 'variable-documentation :custom-state nil *************** *** 761,767 **** (define-widget 'custom-face 'custom "Customize face." ! :format "%l%[%t%]: %s%m %h%v" :format-handler 'custom-face-format-handler :help-echo "Push me to set or reset this face." :documentation-property 'face-documentation --- 792,798 ---- (define-widget 'custom-face 'custom "Customize face." ! :format "%l%[%t%]: %s%m %h%a%v" :format-handler 'custom-face-format-handler :help-echo "Push me to set or reset this face." :documentation-property 'face-documentation *************** *** 954,960 **** (define-widget 'custom-group 'custom "Customize group." ! :format "%l%[%t%]: %L\n%m %h%v" :documentation-property 'group-documentation :help-echo "Push me to set or reset all members of this group." :value-create 'custom-group-value-create --- 985,991 ---- (define-widget 'custom-group 'custom "Customize group." ! :format "%l%[%t%]: %L\n%m %h%a%v" :documentation-property 'group-documentation :help-echo "Push me to set or reset all members of this group." :value-create 'custom-group-value-create *************** *** 1113,1119 **** (princ " ") (prin1 value) (if (or (get symbol 'factory-face) ! (and (not (facep symbol)) (not (get symbol 'force-face)))) (princ ")") (princ " t)")))))) --- 1144,1150 ---- (princ " ") (prin1 value) (if (or (get symbol 'factory-face) ! (and (not (custom-facep symbol)) (not (get symbol 'force-face)))) (princ ")") (princ " t)")))))) *** pub/rgnus/lisp/custom.el Sat Nov 23 20:08:19 1996 --- rgnus/lisp/custom.el Tue Nov 26 02:28:26 1996 *************** *** 4,10 **** ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces ! ;; Version: 1.02 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: --- 4,10 ---- ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces ! ;; Version: 1.04 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: *************** *** 19,25 **** (require 'widget) ! (define-widget-keywords :options :type :group) ;; These autoloads should be deleted when the file is added to Emacs (autoload 'customize "custom-edit" nil t) --- 19,25 ---- (require 'widget) ! (define-widget-keywords :link :options :type :group) ;; These autoloads should be deleted when the file is added to Emacs (autoload 'customize "custom-edit" nil t) *************** *** 74,79 **** --- 74,92 ---- (list (cons 'background-mode mode))) mode)) + ;; XEmacs and Emacs have two different definitions of `facep'. + (cond ((not (fboundp 'facep)) + (defun custom-facep (face) + "No faces" + nil)) + ((string-match "XEmacs" emacs-version) + (defun custom-facep (face) + "Face symbol or object." + (or (facep face) + (find-face face)))) + (t + (defalias 'custom-facep 'facep))) + ;;; The `defcustom' Macro. ;;;###autoload *************** *** 109,117 **** (put symbol 'custom-options (copy-list value)))) ((eq keyword :group) (custom-add-to-group value symbol 'custom-variable)) (t ! (error "Unknown keyword %s" symbol)))))) ! (run-hooks 'custom-define-hook)) ;;;###autoload (defmacro defcustom (symbol value doc &rest args) --- 122,133 ---- (put symbol 'custom-options (copy-list value)))) ((eq keyword :group) (custom-add-to-group value symbol 'custom-variable)) + ((eq keyword :link) + (custom-add-link symbol value)) (t ! (error "Unknown keyword %s" keyword)))))) ! (run-hooks 'custom-define-hook) ! symbol) ;;;###autoload (defmacro defcustom (symbol value doc &rest args) *************** *** 143,149 **** "Like `defface', but FACE is evaluated as a normal argument." (put face 'factory-face spec) (when (fboundp 'facep) ! (unless (and (facep face) (not (get face 'saved-face))) ;; If the user has already created the face, respect that. (let ((value (or (get face 'saved-face) spec))) --- 159,165 ---- "Like `defface', but FACE is evaluated as a normal argument." (put face 'factory-face spec) (when (fboundp 'facep) ! (unless (and (custom-facep face) (not (get face 'saved-face))) ;; If the user has already created the face, respect that. (let ((value (or (get face 'saved-face) spec))) *************** *** 162,170 **** (setq args (cdr args)) (cond ((eq keyword :group) (custom-add-to-group value face 'custom-face)) (t (error "Unknown keyword %s" face)))))) ! (run-hooks 'custom-define-hook)) ;;;###autoload (defmacro defface (face spec doc &rest args) --- 178,189 ---- (setq args (cdr args)) (cond ((eq keyword :group) (custom-add-to-group value face 'custom-face)) + ((eq keyword :link) + (custom-add-link face value)) (t (error "Unknown keyword %s" face)))))) ! (run-hooks 'custom-define-hook) ! face) ;;;###autoload (defmacro defface (face spec doc &rest args) *************** *** 234,242 **** (setq args (cdr args)) (cond ((eq keyword :group) (custom-add-to-group value symbol 'custom-group)) (t (error "Unknown keyword %s" symbol)))))) ! (run-hooks 'custom-define-hook)) ;;;###autoload (defmacro defgroup (symbol members doc &rest args) --- 253,264 ---- (setq args (cdr args)) (cond ((eq keyword :group) (custom-add-to-group value symbol 'custom-group)) + ((eq keyword :link) + (custom-add-link symbol value)) (t (error "Unknown keyword %s" symbol)))))) ! (run-hooks 'custom-define-hook) ! symbol) ;;;###autoload (defmacro defgroup (symbol members doc &rest args) *************** *** 273,279 **** (setcar (cdr old) widget) (put group 'custom-group (nconc members (list (list option widget))))))) ! ;;; Options (defun custom-add-option (symbol option) "To the variable SYMBOL add OPTION. --- 295,301 ---- (setcar (cdr old) widget) (put group 'custom-group (nconc members (list (list option widget))))))) ! ;;; Properties. (defun custom-add-option (symbol option) "To the variable SYMBOL add OPTION. *************** *** 284,289 **** --- 306,317 ---- (unless (member option options) (put symbol 'custom-options (cons option options))))) + (defun custom-add-link (symbol widget) + "To the custom option SYMBOL add the link WIDGET." + (let ((links (get symbol 'custom-links))) + (unless (member widget links) + (put symbol 'custom-links (cons widget links))))) + ;;; Face Utilities. (and (fboundp 'make-face) *************** *** 490,499 **** ;;; Meta Customization (defgroup emacs nil ! "Customization of the One True Editor.") (defgroup customize nil "Customization of the Customization support." :group 'emacs) (defcustom custom-define-hook nil --- 518,531 ---- ;;; Meta Customization (defgroup emacs nil ! "Customization of the One True Editor." ! :link '(custom-manual "(emacs)Top")) (defgroup customize nil "Customization of the Customization support." + :link '(custom-manual "(custom)Top") + :link '(url-link :tag "Development Page" + "http://www.dina.kvl.dk/~abraham/custom/") :group 'emacs) (defcustom custom-define-hook nil *** pub/rgnus/lisp/gnus-art.el Sat Nov 23 04:58:16 1996 --- rgnus/lisp/gnus-art.el Sun Nov 24 02:34:53 1996 *************** *** 1490,1496 **** ;;; Internal Variables: ! (defcustom gnus-button-url-regexp "\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?[-\\wa-zA-Z0-9_=!?#$@~`%&*+|\\/:;.,]*[-\\wa-zA-Z0-9_=#$@~`%&*+|\\/]" "Regular expression that matches URLs." :group 'article :type 'regexp) --- 1490,1496 ---- ;;; Internal Variables: ! (defcustom gnus-button-url-regexp "\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?\\([-a-zA-Z0-9_=!?#$@~`%&*+|\\/:;.,]\\|\\w\\)*\\([-a-zA-Z0-9_=#$@~`%&*+|\\/]\\|\\w\\)" "Regular expression that matches URLs." :group 'article :type 'regexp) *** pub/rgnus/lisp/gnus-group.el Sat Nov 23 20:28:17 1996 --- rgnus/lisp/gnus-group.el Mon Nov 25 22:49:35 1996 *************** *** 768,780 **** ["Set group level" gnus-group-set-current-level (gnus-group-group-name)] ["Select quick" gnus-group-quick-select-group (gnus-group-group-name)] ("Edit" ["Parameters" gnus-group-edit-group-parameters (gnus-group-group-name)] ["Select method" gnus-group-edit-group-method (gnus-group-group-name)] ["Info" gnus-group-edit-group (gnus-group-group-name)] - ["Customize" gnus-group-customize t] ["Local kill file" gnus-group-edit-local-kill (gnus-group-group-name)] ["Global kill file" gnus-group-edit-global-kill t]) )) --- 768,780 ---- ["Set group level" gnus-group-set-current-level (gnus-group-group-name)] ["Select quick" gnus-group-quick-select-group (gnus-group-group-name)] + ["Customize" gnus-group-customize (gnus-group-group-name)] ("Edit" ["Parameters" gnus-group-edit-group-parameters (gnus-group-group-name)] ["Select method" gnus-group-edit-group-method (gnus-group-group-name)] ["Info" gnus-group-edit-group (gnus-group-group-name)] ["Local kill file" gnus-group-edit-local-kill (gnus-group-group-name)] ["Global kill file" gnus-group-edit-global-kill t]) )) *** pub/rgnus/lisp/gnus-sum.el Sat Nov 23 20:57:06 1996 --- rgnus/lisp/gnus-sum.el Tue Nov 26 03:31:23 1996 *************** *** 1426,1432 **** "r" gnus-summary-refer-parent-article "R" gnus-summary-refer-references "g" gnus-summary-show-article ! "s" gnus-summary-isearch-article) (gnus-define-keys (gnus-summary-wash-map "W" gnus-summary-mode-map) "b" gnus-article-add-buttons --- 1426,1433 ---- "r" gnus-summary-refer-parent-article "R" gnus-summary-refer-references "g" gnus-summary-show-article ! "s" gnus-summary-isearch-article ! "P" gnus-summary-print-article) (gnus-define-keys (gnus-summary-wash-map "W" gnus-summary-mode-map) "b" gnus-article-add-buttons *************** *** 1695,1701 **** ["Save in RMAIL mbox" gnus-summary-save-article-rmail t] ["Save body in file" gnus-summary-save-article-body-file t] ["Pipe through a filter" gnus-summary-pipe-output t] ! ["Add to SOUP packet" gnus-soup-add-article t]) ("Backend" ["Respool article..." gnus-summary-respool-article t] ["Move article..." gnus-summary-move-article --- 1696,1703 ---- ["Save in RMAIL mbox" gnus-summary-save-article-rmail t] ["Save body in file" gnus-summary-save-article-body-file t] ["Pipe through a filter" gnus-summary-pipe-output t] ! ["Add to SOUP packet" gnus-soup-add-article t] ! ["Print" gnus-summary-print-article t]) ("Backend" ["Respool article..." gnus-summary-respool-article t] ["Move article..." gnus-summary-move-article *************** *** 6359,6364 **** --- 6361,6380 ---- (when gnus-break-pages (gnus-narrow-to-page)))) + (defun gnus-summary-print-article () + "Generate and print a PostScript image of the article buffer." + (interactive) + (gnus-summary-select-article) + (gnus-eval-in-buffer-window gnus-article-buffer + (let ((buffer (generate-new-buffer " *print*"))) + (unwind-protect + (progn + (copy-to-buffer buffer (point-min) (point-max)) + (set-buffer buffer) + (article-delete-invisible-text) + (ps-print-buffer-with-faces)) + (kill-buffer buffer))))) + (defun gnus-summary-show-article (&optional arg) "Force re-fetching of the current article. If ARG (the prefix) is non-nil, show the raw article without any *************** *** 6483,6488 **** --- 6499,6506 ---- (unless action (setq action 'move)) (gnus-set-global-variables) + (save-window-excursion + (gnus-summary-select-article)) ;; Check whether the source group supports the required functions. (cond ((and (eq action 'move) (not (gnus-check-backend-function *************** *** 8116,8122 **** (setq result (eval match))))) (setq split-name (append (cdr method) split-name)) (cond ((stringp result) ! (push result split-name)) ((consp result) (setq split-name (append result split-name))))))))) split-name)) --- 8134,8142 ---- (setq result (eval match))))) (setq split-name (append (cdr method) split-name)) (cond ((stringp result) ! (push (expand-file-name ! result gnus-article-save-directory) ! split-name)) ((consp result) (setq split-name (append result split-name))))))))) split-name)) *** pub/rgnus/lisp/gnus-topic.el Fri Nov 22 05:14:20 1996 --- rgnus/lisp/gnus-topic.el Mon Nov 25 22:36:18 1996 *************** *** 42,48 **** :type 'hook :group 'gnus-topic) ! (defvar gnus-topic-line-format "%i[ %(%{%n%}%) -- %A ]%v\n" "Format of topic lines. It works along the same lines as a normal formatting string, with some simple extensions. --- 42,48 ---- :type 'hook :group 'gnus-topic) ! (defcustom gnus-topic-line-format "%i[ %(%{%n%}%) -- %A ]%v\n" "Format of topic lines. It works along the same lines as a normal formatting string, with some simple extensions. *************** *** 53,59 **** %g Number of groups in the topic. %a Number of unread articles in the groups in the topic. %A Number of unread articles in the groups in the topic and its subtopics. ! ") (defcustom gnus-topic-indent-level 2 "*How much each subtopic should be indented." --- 53,61 ---- %g Number of groups in the topic. %a Number of unread articles in the groups in the topic. %A Number of unread articles in the groups in the topic and its subtopics. ! " ! :type 'string ! :group 'gnus-topic) (defcustom gnus-topic-indent-level 2 "*How much each subtopic should be indented." *** pub/rgnus/lisp/gnus.el Sat Nov 23 07:38:41 1996 --- rgnus/lisp/gnus.el Mon Nov 25 22:36:47 1996 *************** *** 42,48 **** "Score and kill file handling." :group 'gnus ) ! (defconst gnus-version-number "0.70" "Version number for this version of Gnus.") (defconst gnus-version (format "Red Gnus v%s" gnus-version-number) --- 42,48 ---- "Score and kill file handling." :group 'gnus ) ! (defconst gnus-version-number "0.71" "Version number for this version of Gnus.") (defconst gnus-version (format "Red Gnus v%s" gnus-version-number) *************** *** 62,76 **** ;;; Kludges to help the transition from the old `custom.el'. - ;; XEmacs and Emacs 19.29 facep does different things. - (defalias 'custom-facep - (cond ((fboundp 'find-face) - 'find-face) - ((fboundp 'facep) - 'facep) - (t - 'ignore))) - (unless (featurep 'gnus-xmas) (defalias 'gnus-make-overlay 'make-overlay) (defalias 'gnus-overlay-put 'overlay-put) --- 62,67 ---- *************** *** 857,863 **** :type 'hook :options '(gnus-article-add-buttons gnus-article-add-buttons-to-head - gnus-article-treat-overstrike gnus-article-emphasize gnus-article-fill-cited-article gnus-article-remove-cr --- 848,853 ---- *************** *** 885,891 **** gnus-article-remove-trailing-blank-lines gnus-article-strip-leading-blank-lines gnus-article-strip-multiple-blank-lines ! gnus-article-strip-blank-lines)) ;;; Internal variables --- 875,883 ---- gnus-article-remove-trailing-blank-lines gnus-article-strip-leading-blank-lines gnus-article-strip-multiple-blank-lines ! gnus-article-strip-blank-lines ! gnus-article-treat-overstrike ! )) ;;; Internal variables *** pub/rgnus/lisp/message.el Sun Nov 24 00:16:47 1996 --- rgnus/lisp/message.el Tue Nov 26 01:43:02 1996 *************** *** 41,77 **** (require 'mail-abbrevs) (require 'mailabbrev)) ! (defgroup message nil "Mail and news message composing." :group 'emacs) (defcustom message-directory "~/Mail/" "*Directory from which all other mail file variables are derived." ! :group 'message :type 'directory) (defcustom message-max-buffers 10 "*How many buffers to keep before starting to kill them off." ! :group 'message :type 'integer) (defcustom message-send-rename-function nil "Function called to rename the buffer after sending it." ! :group 'message :type 'function) ;;;###autoload ! (defvar message-fcc-handler-function 'rmail-output "*A function called to save outgoing articles. This function will be called with the name of the file to store the article in. The default function is `rmail-output' which saves in Unix ! mailbox format.") ! (put 'message-fcc-handler-function ! 'custom-type '(radio (function-item rmail-output) ! (function :tag "Other"))) ! (put 'message-fcc-handler-function ! 'factory-value '('rmail-output)) ! (custom-add-to-group 'message 'message-fcc-handler-function 'custom-variable) (defcustom message-courtesy-message "The following message is a courtesy copy of an article\nthat has been posted to %s as well.\n\n" --- 41,122 ---- (require 'mail-abbrevs) (require 'mailabbrev)) ! (defgroup message '((user-mail-address custom-variable) ! (user-full-name custom-variable)) "Mail and news message composing." + :link '(custom-manual "(message)Top") :group 'emacs) + (put 'user-mail-address 'custom-type 'string) + (put 'user-full-name 'custom-type 'string) + + (defgroup message-various nil + "Various Message Variables" + :link '(custom-manual "(message)Various Message Variables") + :group 'message) + + (defgroup message-buffers nil + "Message Buffers" + :link '(custom-manual "(message)Message Buffers") + :group 'message) + + (defgroup message-sending nil + "Message Sending" + :link '(custom-manual "(message)Sending Variables") + :group 'message) + + (defgroup message-interface nil + "Message Interface" + :link '(custom-manual "(message)Interface") + :group 'message) + + (defgroup message-forwarding nil + "Message Forwarding" + :link '(custom-manual "(message)Forwarding") + :group 'message-interface) + + (defgroup message-insertion nil + "Message Insertion" + :link '(custom-manual "(message)Insertion") + :group 'message) + + (defgroup message-headers nil + "Message Headers" + :link '(custom-manual "(message)Message Headers") + :group 'message) + + (defgroup message-news nil + "Composing News Messages" + :group 'message) + + (defgroup message-mail nil + "Composing Mail Messages" + :group 'message) + (defcustom message-directory "~/Mail/" "*Directory from which all other mail file variables are derived." ! :group 'message-various :type 'directory) (defcustom message-max-buffers 10 "*How many buffers to keep before starting to kill them off." ! :group 'message-buffers :type 'integer) (defcustom message-send-rename-function nil "Function called to rename the buffer after sending it." ! :group 'message-buffers :type 'function) ;;;###autoload ! (defcustom message-fcc-handler-function 'rmail-output "*A function called to save outgoing articles. This function will be called with the name of the file to store the article in. The default function is `rmail-output' which saves in Unix ! mailbox format." ! :type '(radio (function-item rmail-output) ! (function :tag "Other")) ! :group 'message-sending) (defcustom message-courtesy-message "The following message is a courtesy copy of an article\nthat has been posted to %s as well.\n\n" *************** *** 79,94 **** If the string contains the format spec \"%s\", the Newsgroups the article has been posted to will be inserted there. If this variable is nil, no such courtesy message will be added." ! :group 'message :type 'string) (defcustom message-ignored-bounced-headers "^\\(Received\\|Return-Path\\):" "*Regexp that matches headers to be removed in resent bounced mail." ! :group 'message :type 'regexp) ;;;###autoload ! (defvar message-from-style 'default "*Specifies how \"From\" headers look. If `nil', they contain just the return address like: --- 124,139 ---- If the string contains the format spec \"%s\", the Newsgroups the article has been posted to will be inserted there. If this variable is nil, no such courtesy message will be added." ! :group 'message-sending :type 'string) (defcustom message-ignored-bounced-headers "^\\(Received\\|Return-Path\\):" "*Regexp that matches headers to be removed in resent bounced mail." ! :group 'message-interface :type 'regexp) ;;;###autoload ! (defcustom message-from-style 'default "*Specifies how \"From\" headers look. If `nil', they contain just the return address like: *************** *** 99,115 **** Elvis Parsley Otherwise, most addresses look like `angles', but they look like ! `parens' if `angles' would need quoting and `parens' would not.") ! (put 'message-from-style ! 'custom-type '(choice (const :tag "simple" nil) ! (const parens) ! (const angles) ! (const default))) ! (put 'message-from-style ! 'factory-value '('default)) ! (custom-add-to-group 'message 'message-from-style 'custom-variable) ! (defvar message-syntax-checks nil ;; Guess this one shouldn't be easy to customize... "Controls what syntax checks should not be performed on outgoing posts. To disable checking of long signatures, for instance, add --- 144,157 ---- Elvis Parsley Otherwise, most addresses look like `angles', but they look like ! `parens' if `angles' would need quoting and `parens' would not." ! :type '(choice (const :tag "simple" nil) ! (const parens) ! (const angles) ! (const default)) ! :group 'message-headers) ! (defcustom message-syntax-checks nil ;; Guess this one shouldn't be easy to customize... "Controls what syntax checks should not be performed on outgoing posts. To disable checking of long signatures, for instance, add *************** *** 120,126 **** Checks include subject-cmsg multiple-headers sendsys message-id from long-lines control-chars size new-text redirected-followup signature approved sender empty empty-headers message-id from subject ! shorten-followup-to existing-newsgroups.") (defcustom message-required-news-headers '(From Newsgroups Subject Date Message-ID --- 162,169 ---- Checks include subject-cmsg multiple-headers sendsys message-id from long-lines control-chars size new-text redirected-followup signature approved sender empty empty-headers message-id from subject ! shorten-followup-to existing-newsgroups." ! :group 'message-news) (defcustom message-required-news-headers '(From Newsgroups Subject Date Message-ID *************** *** 131,138 **** Message-ID. Organization, Lines, In-Reply-To, Expires, and X-Newsreader are optional. If don't you want message to insert some header, remove it from this list." ! :group 'message ! :type 'sexp) (defcustom message-required-mail-headers '(From Subject Date (optional . In-Reply-To) Message-ID Lines --- 174,182 ---- Message-ID. Organization, Lines, In-Reply-To, Expires, and X-Newsreader are optional. If don't you want message to insert some header, remove it from this list." ! :group 'message-news ! :group 'message-headers ! :type '(repeat sexp)) (defcustom message-required-mail-headers '(From Subject Date (optional . In-Reply-To) Message-ID Lines *************** *** 140,184 **** "Headers to be generated or prompted for when mailing a message. RFC822 required that From, Date, To, Subject and Message-ID be included. Organization, Lines and X-Mailer are optional." ! :group 'message ! :type 'sexp) (defcustom message-deletable-headers '(Message-ID Date Lines) "Headers to be deleted if they already exist and were generated by message previously." ! :group 'message :type 'sexp) (defcustom message-ignored-news-headers "^NNTP-Posting-Host:\\|^Xref:\\|^Bcc:\\|^Gcc:\\|^Fcc:\\|^Resent-Fcc:" "*Regexp of headers to be removed unconditionally before posting." ! :group 'message :type 'regexp) (defcustom message-ignored-mail-headers "^Gcc:\\|^Fcc:\\|^Resent-Fcc:" "*Regexp of headers to be removed unconditionally before mailing." ! :group 'message :type 'regexp) (defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|Return-Path:\\|^Supersedes:" "*Header lines matching this regexp will be deleted before posting. It's best to delete old Path and Date headers before posting to avoid any confusion." ! :group 'message :type 'regexp) ;;;###autoload ! (defvar message-signature-separator "^-- *$" ! "Regexp matching the signature separator.") ! (put 'message-signature-separator ! 'custom-type 'regexp) ! (put 'message-signature-separator ! 'factory-value '("^-- *$")) ! (custom-add-to-group 'message 'message-signature-separator 'custom-variable) (defcustom message-interactive nil "Non-nil means when sending a message wait for and display errors. nil means let mailer mail back a message to report errors." ! :group 'message :type 'boolean) (defcustom message-generate-new-buffers t --- 184,229 ---- "Headers to be generated or prompted for when mailing a message. RFC822 required that From, Date, To, Subject and Message-ID be included. Organization, Lines and X-Mailer are optional." ! :group 'message-mail ! :group 'message-headers ! :type '(repeat sexp)) (defcustom message-deletable-headers '(Message-ID Date Lines) "Headers to be deleted if they already exist and were generated by message previously." ! :group 'message-headers :type 'sexp) (defcustom message-ignored-news-headers "^NNTP-Posting-Host:\\|^Xref:\\|^Bcc:\\|^Gcc:\\|^Fcc:\\|^Resent-Fcc:" "*Regexp of headers to be removed unconditionally before posting." ! :group 'message-news ! :group 'message-headers :type 'regexp) (defcustom message-ignored-mail-headers "^Gcc:\\|^Fcc:\\|^Resent-Fcc:" "*Regexp of headers to be removed unconditionally before mailing." ! :group 'message-mail ! :group 'message-headers :type 'regexp) (defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|Return-Path:\\|^Supersedes:" "*Header lines matching this regexp will be deleted before posting. It's best to delete old Path and Date headers before posting to avoid any confusion." ! :group 'message-interface :type 'regexp) ;;;###autoload ! (defcustom message-signature-separator "^-- *$" ! "Regexp matching the signature separator." ! :type 'regexp ! :group 'message-various) (defcustom message-interactive nil "Non-nil means when sending a message wait for and display errors. nil means let mailer mail back a message to report errors." ! :group 'message-sending ! :group 'message-mail :type 'boolean) (defcustom message-generate-new-buffers t *************** *** 186,199 **** If this is a function, call that function with three parameters: The type, the to address and the group name. (Any of these may be nil.) The function should return the new buffer name." ! :group 'message :type '(choice (const :tag "off" nil) (const :tag "on" t) (function fun))) (defcustom message-kill-buffer-on-exit nil "*Non-nil means that the message buffer will be killed after sending a message." ! :group 'message :type 'boolean) (defvar gnus-local-organization) --- 231,244 ---- If this is a function, call that function with three parameters: The type, the to address and the group name. (Any of these may be nil.) The function should return the new buffer name." ! :group 'message-buffers :type '(choice (const :tag "off" nil) (const :tag "on" t) (function fun))) (defcustom message-kill-buffer-on-exit nil "*Non-nil means that the message buffer will be killed after sending a message." ! :group 'message-buffers :type 'boolean) (defvar gnus-local-organization) *************** *** 204,312 **** t) "*String to be used as an Organization header. If t, use `message-user-organization-file'." ! :group 'message :type '(choice string (const :tag "consult file" t))) ;;;###autoload ! (defvar message-user-organization-file "/usr/lib/news/organization" ! "*Local news organization file.") ! (put 'message-user-organization-file ! 'custom-type 'file) ! (put 'message-user-organization-file ! 'factory-value '("/usr/lib/news/organization")) ! (custom-add-to-group 'message 'message-user-organization-file 'custom-variable) (defcustom message-autosave-directory "~/" ; (concat (file-name-as-directory message-directory) "drafts/") "*Directory where message autosaves buffers. If nil, message won't autosave." ! :group 'message :type 'directory) (defcustom message-forward-start-separator "------- Start of forwarded message -------\n" "*Delimiter inserted before forwarded messages." ! :group 'message :type 'string) (defcustom message-forward-end-separator "------- End of forwarded message -------\n" "*Delimiter inserted after forwarded messages." ! :group 'message :type 'string) (defcustom message-signature-before-forwarded-message t "*If non-nil, put the signature before any included forwarded message." ! :group 'message :type 'boolean) (defcustom message-included-forward-headers "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-\\|^Message-ID:\\|^References:" "*Regexp matching headers to be included in forwarded messages." ! :group 'message :type 'regexp) (defcustom message-ignored-resent-headers "^Return-receipt" "*All headers that match this regexp will be deleted when resending a message." ! :group 'message :type 'regexp) (defcustom message-ignored-cited-headers "." "*Delete these headers from the messages you yank." ! :group 'message :type 'regexp) (defcustom message-cancel-message "I am canceling my own article." "Message to be inserted in the cancel message." ! :group 'message :type 'string) ;; Useful to set in site-init.el ;;;###autoload ! (defvar message-send-mail-function 'message-send-mail-with-sendmail "Function to call to send the current buffer as mail. The headers should be delimited by a line whose contents match the variable `mail-header-separator'. Legal values include `message-send-mail-with-sendmail' (the default), ! `message-send-mail-with-mh' and `message-send-mail-with-qmail'.") ! (put 'message-send-mail-function ! 'custom-type '(radio (function-item message-send-mail-with-sendmail) ! (function-item message-send-mail-with-mh) ! (function-item message-send-mail-with-qmail) ! (function :tag "Other"))) ! (put 'message-send-mail-function ! 'factory-value '('rmail-output)) ! (custom-add-to-group 'message 'message-send-mail-function 'custom-variable) ! (defcustom message-send-news-function 'message-send-news "Function to call to send the current buffer as news. The headers should be delimited by a line whose contents match the variable `mail-header-separator'." ! :group 'message :type 'function) (defcustom message-reply-to-function nil "Function that should return a list of headers. This function should pick out addresses from the To, Cc, and From headers and respond with new To and Cc headers." ! :group 'message :type 'function) (defcustom message-wide-reply-to-function nil "Function that should return a list of headers. This function should pick out addresses from the To, Cc, and From headers and respond with new To and Cc headers." ! :group 'message :type 'function) (defcustom message-followup-to-function nil "Function that should return a list of headers. This function should pick out addresses from the To, Cc, and From headers and respond with new To and Cc headers." ! :group 'message :type 'function) (defcustom message-use-followup-to 'ask --- 249,352 ---- t) "*String to be used as an Organization header. If t, use `message-user-organization-file'." ! :group 'message-headers :type '(choice string (const :tag "consult file" t))) ;;;###autoload ! (defcustom message-user-organization-file "/usr/lib/news/organization" ! "*Local news organization file." ! :type 'file ! :group 'message-headers) (defcustom message-autosave-directory "~/" ; (concat (file-name-as-directory message-directory) "drafts/") "*Directory where message autosaves buffers. If nil, message won't autosave." ! :group 'message-buffers :type 'directory) (defcustom message-forward-start-separator "------- Start of forwarded message -------\n" "*Delimiter inserted before forwarded messages." ! :group 'message-forwarding :type 'string) (defcustom message-forward-end-separator "------- End of forwarded message -------\n" "*Delimiter inserted after forwarded messages." ! :group 'message-forwarding :type 'string) (defcustom message-signature-before-forwarded-message t "*If non-nil, put the signature before any included forwarded message." ! :group 'message-forwarding :type 'boolean) (defcustom message-included-forward-headers "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-\\|^Message-ID:\\|^References:" "*Regexp matching headers to be included in forwarded messages." ! :group 'message-forwarding :type 'regexp) (defcustom message-ignored-resent-headers "^Return-receipt" "*All headers that match this regexp will be deleted when resending a message." ! :group 'message-interface :type 'regexp) (defcustom message-ignored-cited-headers "." "*Delete these headers from the messages you yank." ! :group 'message-insertion :type 'regexp) (defcustom message-cancel-message "I am canceling my own article." "Message to be inserted in the cancel message." ! :group 'message-interface :type 'string) ;; Useful to set in site-init.el ;;;###autoload ! (defcustom message-send-mail-function 'message-send-mail-with-sendmail "Function to call to send the current buffer as mail. The headers should be delimited by a line whose contents match the variable `mail-header-separator'. Legal values include `message-send-mail-with-sendmail' (the default), ! `message-send-mail-with-mh' and `message-send-mail-with-qmail'." ! :type '(radio (function-item message-send-mail-with-sendmail) ! (function-item message-send-mail-with-mh) ! (function-item message-send-mail-with-qmail) ! (function :tag "Other")) ! :group 'message-sending ! :group 'message-mail) (defcustom message-send-news-function 'message-send-news "Function to call to send the current buffer as news. The headers should be delimited by a line whose contents match the variable `mail-header-separator'." ! :group 'message-sending ! :group 'message-news :type 'function) (defcustom message-reply-to-function nil "Function that should return a list of headers. This function should pick out addresses from the To, Cc, and From headers and respond with new To and Cc headers." ! :group 'message-interface :type 'function) (defcustom message-wide-reply-to-function nil "Function that should return a list of headers. This function should pick out addresses from the To, Cc, and From headers and respond with new To and Cc headers." ! :group 'message-interface :type 'function) (defcustom message-followup-to-function nil "Function that should return a list of headers. This function should pick out addresses from the To, Cc, and From headers and respond with new To and Cc headers." ! :group 'message-interface :type 'function) (defcustom message-use-followup-to 'ask *************** *** 315,321 **** using the \"poster\" value. If it is the symbol `ask', query the user whether to ignore the \"poster\" value. If it is the symbol `use', always use the value." ! :group 'message :type '(choice (const :tag "ignore" nil) (const use) (const ask))) --- 355,361 ---- using the \"poster\" value. If it is the symbol `ask', query the user whether to ignore the \"poster\" value. If it is the symbol `use', always use the value." ! :group 'message-interface :type '(choice (const :tag "ignore" nil) (const use) (const ask))) *************** *** 323,329 **** ;; qmail-related stuff (defcustom message-qmail-inject-program "/var/qmail/bin/qmail-inject" "Location of the qmail-inject program." ! :group 'message :type 'file) (defcustom message-qmail-inject-args nil --- 363,369 ---- ;; qmail-related stuff (defcustom message-qmail-inject-program "/var/qmail/bin/qmail-inject" "Location of the qmail-inject program." ! :group 'message-sending :type 'file) (defcustom message-qmail-inject-args nil *************** *** 333,339 **** For e.g., if you wish to set the envelope sender address so that bounces go to the right place or to deal with listserv's usage of that address, you might set this variable to '(\"-f\" \"you@some.where\")." ! :group 'message :type '(repeat string)) (defvar gnus-post-method) --- 373,379 ---- For e.g., if you wish to set the envelope sender address so that bounces go to the right place or to deal with listserv's usage of that address, you might set this variable to '(\"-f\" \"you@some.where\")." ! :group 'message-sending :type '(repeat string)) (defvar gnus-post-method) *************** *** 346,480 **** gnus-select-method) (t '(nnspool ""))) "Method used to post news." ! :group 'message ;; This should be the `gnus-select-method' widget, but that might ;; create a dependence to `gnus.el'. :type 'sexp) (defcustom message-generate-headers-first nil "*If non-nil, generate all possible headers before composing." ! :group 'message :type 'boolean) (defcustom message-setup-hook nil "Normal hook, run each time a new outgoing message is initialized. The function `message-setup' runs this hook." ! :group 'message :type 'hook) (defcustom message-signature-setup-hook nil "Normal hook, run each time a new outgoing message is initialized. It is run after the headers have been inserted and before the signature is inserted." ! :group 'message :type 'hook) (defcustom message-mode-hook nil "Hook run in message mode buffers." ! :group 'message :type 'hook) (defcustom message-header-hook nil "Hook run in a message mode buffer narrowed to the headers." ! :group 'message :type 'hook) (defcustom message-header-setup-hook nil "Hook called narrowed to the headers when setting up a message buffer." ! :group 'message :type 'hook) ;;;###autoload ! (defvar message-citation-line-function 'message-insert-citation-line ! "*Function called to insert the \"Whomever writes:\" line.") ! (put 'message-citation-line-function ! 'custom-type 'function) ! (put 'message-citation-line-function ! 'factory-value '('message-insert-citation-line)) ! (custom-add-to-group 'message 'message-citation-line-function 'custom-variable) ! ;;;###autoload ! (defvar message-yank-prefix "> " "*Prefix inserted on the lines of yanked messages. ! nil means use indentation.") ! (put 'message-yank-prefix ! 'custom-type 'string) ! (put 'message-yank-prefix ! 'factory-value '("> ")) ! (custom-add-to-group 'message 'message-yank-prefix 'custom-variable) (defcustom message-indentation-spaces 3 "*Number of spaces to insert at the beginning of each cited line. Used by `message-yank-original' via `message-yank-cite'." ! :group 'message :type 'integer) ;;;###autoload ! (defvar message-cite-function (if (and (boundp 'mail-citation-hook) mail-citation-hook) mail-citation-hook 'message-cite-original) ! "*Function for citing an original message.") ! (put 'message-cite-function ! 'custom-type '(radio (function-item message-cite-original) ! (function-item sc-cite-original) ! (function :tag "Other"))) ! (put 'message-cite-function ! 'factory-value '('message-cite-original)) ! (custom-add-to-group 'message 'message-cite-function 'custom-variable) ;;;###autoload ! (defvar message-indent-citation-function 'message-indent-citation "*Function for modifying a citation just inserted in the mail buffer. This can also be a list of functions. Each function can find the citation between (point) and (mark t). And each function should leave ! point and mark around the citation text as modified.") ! (put 'message-indent-citation-function ! 'custom-type 'function) ! (put 'message-indent-citation-function ! 'factory-value '('message-indent-citation)) ! (custom-add-to-group 'message 'message-indent-citation-function 'custom-variable) (defvar message-abbrevs-loaded nil) ;;;###autoload ! (defvar message-signature t "*String to be inserted at the end of the message buffer. If t, the `message-signature-file' file will be inserted instead. If a function, the result from the function will be used instead. ! If a form, the result from the form will be used instead.") ! (put 'message-signature ! 'custom-type 'sexp) ! (put 'message-signature ! 'factory-value '(t)) ! (custom-add-to-group 'message 'message-signature 'custom-variable) ;;;###autoload ! (defvar message-signature-file "~/.signature" ! "*File containing the text inserted at end of message buffer.") ! (put 'message-signature-file ! 'custom-type 'file) ! (put 'message-signature-file ! 'factory-value '("~/.signature")) ! (custom-add-to-group 'message 'message-signature-file 'custom-variable) (defcustom message-distribution-function nil "*Function called to return a Distribution header." ! :group 'message :type 'function) (defcustom message-expires 14 ! "*Number of days before your article expires." ! :group 'message :type 'integer) (defcustom message-user-path nil "If nil, use the NNTP server name in the Path header. If stringp, use this; if non-nil, use no host name (user name only)." ! :group 'message :type '(choice (const :tag "nntp" nil) (string :tag "name") (sexp :tag "none" :format "%t" t))) --- 386,507 ---- gnus-select-method) (t '(nnspool ""))) "Method used to post news." ! :group 'message-news ! :group 'mesage-sending ;; This should be the `gnus-select-method' widget, but that might ;; create a dependence to `gnus.el'. :type 'sexp) (defcustom message-generate-headers-first nil "*If non-nil, generate all possible headers before composing." ! :group 'message-headers :type 'boolean) (defcustom message-setup-hook nil "Normal hook, run each time a new outgoing message is initialized. The function `message-setup' runs this hook." ! :group 'message-various :type 'hook) (defcustom message-signature-setup-hook nil "Normal hook, run each time a new outgoing message is initialized. It is run after the headers have been inserted and before the signature is inserted." ! :group 'message-various :type 'hook) (defcustom message-mode-hook nil "Hook run in message mode buffers." ! :group 'message-various :type 'hook) (defcustom message-header-hook nil "Hook run in a message mode buffer narrowed to the headers." ! :group 'message-various :type 'hook) (defcustom message-header-setup-hook nil "Hook called narrowed to the headers when setting up a message buffer." ! :group 'message-various :type 'hook) ;;;###autoload ! (defcustom message-citation-line-function 'message-insert-citation-line ! "*Function called to insert the \"Whomever writes:\" line." ! :type 'function ! :group 'message-insertion) ;;;###autoload ! (defcustom message-yank-prefix "> " "*Prefix inserted on the lines of yanked messages. ! nil means use indentation." ! :type 'string ! :group 'message-insertion) (defcustom message-indentation-spaces 3 "*Number of spaces to insert at the beginning of each cited line. Used by `message-yank-original' via `message-yank-cite'." ! :group 'message-insertion :type 'integer) ;;;###autoload ! (defcustom message-cite-function (if (and (boundp 'mail-citation-hook) mail-citation-hook) mail-citation-hook 'message-cite-original) ! "*Function for citing an original message." ! :type '(radio (function-item message-cite-original) ! (function-item sc-cite-original) ! (function :tag "Other")) ! :group 'message-insertion) ;;;###autoload ! (defcustom message-indent-citation-function 'message-indent-citation "*Function for modifying a citation just inserted in the mail buffer. This can also be a list of functions. Each function can find the citation between (point) and (mark t). And each function should leave ! point and mark around the citation text as modified." ! :type 'function ! :group 'message-insertion) (defvar message-abbrevs-loaded nil) ;;;###autoload ! (defcustom message-signature t "*String to be inserted at the end of the message buffer. If t, the `message-signature-file' file will be inserted instead. If a function, the result from the function will be used instead. ! If a form, the result from the form will be used instead." ! :type 'sexp ! :group 'message-insertion) ;;;###autoload ! (defcustom message-signature-file "~/.signature" ! "*File containing the text inserted at end of message buffer." ! :type 'file ! :group 'message-insertion) (defcustom message-distribution-function nil "*Function called to return a Distribution header." ! :group 'message-news ! :group 'message-headers :type 'function) (defcustom message-expires 14 ! "Number of days before your article expires." ! :group 'message-news ! :group 'message-headers ! :link '(custom-manual "(message)News Headers") :type 'integer) (defcustom message-user-path nil "If nil, use the NNTP server name in the Path header. If stringp, use this; if non-nil, use no host name (user name only)." ! :group 'message-news ! :group 'message-headers ! :link '(custom-manual "(message)News Headers") :type '(choice (const :tag "nntp" nil) (string :tag "name") (sexp :tag "none" :format "%t" t))) *************** *** 498,515 **** "*A string containing header lines to be inserted in outgoing messages. It is inserted before you edit the message, so you can edit or delete these lines." ! :group 'message :type 'string) (defcustom message-default-mail-headers "" "*A string of header lines to be inserted in outgoing mails." ! :group 'message :type 'string) (defcustom message-default-news-headers "" "*A string of header lines to be inserted in outgoing news articles." ! :group 'message :type 'string) ;; Note: could use /usr/ucb/mail instead of sendmail; --- 525,544 ---- "*A string containing header lines to be inserted in outgoing messages. It is inserted before you edit the message, so you can edit or delete these lines." ! :group 'message-headers :type 'string) (defcustom message-default-mail-headers "" "*A string of header lines to be inserted in outgoing mails." ! :group 'message-headers ! :group 'message-mail :type 'string) (defcustom message-default-news-headers "" "*A string of header lines to be inserted in outgoing news articles." ! :group 'message-headers ! :group 'message-news :type 'string) ;; Note: could use /usr/ucb/mail instead of sendmail; *************** *** 536,544 **** \(This problem exists on Sunos 4 when sendmail is run in remote mode.) The value should be an expression to test whether the problem will actually occur." ! :group 'message :type 'sexp) ;;; Internal variables. ;;; Well, not really internal. --- 565,578 ---- \(This problem exists on Sunos 4 when sendmail is run in remote mode.) The value should be an expression to test whether the problem will actually occur." ! :group 'message-sending :type 'sexp) + (ignore-errors + (define-mail-user-agent 'message-user-agent + 'message-mail 'message-send-and-exit + 'message-kill-buffer 'message-send-hook)) + ;;; Internal variables. ;;; Well, not really internal. *************** *** 579,601 **** (defcustom message-send-hook nil "Hook run before sending messages." ! :group 'message :options '(ispell-message) :type 'hook) (defcustom message-send-mail-hook nil "Hook run before sending mail messages." ! :group 'message :type 'hook) (defcustom message-send-news-hook nil "Hook run before sending news messages." ! :group 'message :type 'hook) (defcustom message-sent-hook nil "Hook run after sending messages." ! :group 'message :type 'hook) ;;; Internal variables. --- 613,635 ---- (defcustom message-send-hook nil "Hook run before sending messages." ! :group 'message-various :options '(ispell-message) :type 'hook) (defcustom message-send-mail-hook nil "Hook run before sending mail messages." ! :group 'message-various :type 'hook) (defcustom message-send-news-hook nil "Hook run before sending news messages." ! :group 'message-various :type 'hook) (defcustom message-sent-hook nil "Hook run after sending messages." ! :group 'message-various :type 'hook) ;;; Internal variables. *** pub/rgnus/lisp/nnfolder.el Tue Nov 19 20:50:20 1996 --- rgnus/lisp/nnfolder.el Mon Nov 25 22:31:36 1996 *************** *** 653,658 **** --- 653,659 ---- (set-buffer (setq nnfolder-current-buffer (nnheader-find-file-noselect file))) (buffer-disable-undo (current-buffer)) + (setq buffer-read-only nil) ;; If the file hasn't been touched since the last time we scanned it, ;; don't bother doing anything with it. (let ((delim (concat "^" message-unix-mail-delimiter)) *** pub/rgnus/lisp/nntp.el Sat Nov 16 18:07:37 1996 --- rgnus/lisp/nntp.el Mon Nov 25 09:32:45 1996 *************** *** 159,164 **** --- 159,165 ---- (defvoo nntp-status-string "") (defconst nntp-version "nntp 5.0") (defvoo nntp-inhibit-erase nil) + (defvoo nntp-inhibit-output nil) (defvoo nntp-server-xover 'try) (defvoo nntp-server-list-active-group 'try) *************** *** 478,484 **** (defun nntp-send-command (wait-for &rest strings) "Send STRINGS to server and wait until WAIT-FOR returns." ! (unless nnheader-callback-function (save-excursion (set-buffer nntp-server-buffer) (erase-buffer))) --- 479,486 ---- (defun nntp-send-command (wait-for &rest strings) "Send STRINGS to server and wait until WAIT-FOR returns." ! (when (and (not nnheader-callback-function) ! (not nntp-inhibit-output)) (save-excursion (set-buffer nntp-server-buffer) (erase-buffer))) *************** *** 496,502 **** (defun nntp-send-command-and-decode (wait-for &rest strings) "Send STRINGS to server and wait until WAIT-FOR returns." ! (unless nnheader-callback-function (save-excursion (set-buffer nntp-server-buffer) (erase-buffer))) --- 498,505 ---- (defun nntp-send-command-and-decode (wait-for &rest strings) "Send STRINGS to server and wait until WAIT-FOR returns." ! (when (and (not nnheader-callback-function) ! (not nntp-inhibit-output)) (save-excursion (set-buffer nntp-server-buffer) (erase-buffer))) *************** *** 507,513 **** (defun nntp-send-buffer (wait-for) "Send the current buffer to server and wait until WAIT-FOR returns." ! (unless nnheader-callback-function (save-excursion (set-buffer (nntp-find-connection-buffer nntp-server-buffer)) (erase-buffer))) --- 510,517 ---- (defun nntp-send-buffer (wait-for) "Send the current buffer to server and wait until WAIT-FOR returns." ! (when (and (not nnheader-callback-function) ! (not nntp-inhibit-output)) (save-excursion (set-buffer (nntp-find-connection-buffer nntp-server-buffer)) (erase-buffer))) *************** *** 746,760 **** (when group (let ((entry (nntp-find-connection-entry nntp-server-buffer))) (when (not (equal group (caddr entry))) - (nntp-request-group group) (save-excursion ! (set-buffer nntp-server-buffer) ! (if nnheader-callback-function ! (progn ! (goto-char (point-max)) ! (forward-line -1) ! (gnus-delete-line)) ! (erase-buffer))))))) (defun nntp-decode-text (&optional cr-only) "Decode the text in the current buffer." --- 750,762 ---- (when group (let ((entry (nntp-find-connection-entry nntp-server-buffer))) (when (not (equal group (caddr entry))) (save-excursion ! (set-buffer (process-buffer (car entry))) ! (erase-buffer) ! (nntp-send-string (car entry) (concat "GROUP " group)) ! (nntp-wait-for-string "^2.*\n") ! (setcar (cddr entry) group) ! (erase-buffer)))))) (defun nntp-decode-text (&optional cr-only) "Decode the text in the current buffer." *** pub/rgnus/lisp/widget-edit.el Sat Nov 23 20:08:31 1996 --- rgnus/lisp/widget-edit.el Tue Nov 26 02:28:37 1996 *************** *** 4,10 **** ;; ;; Author: Per Abrahamsen ;; Keywords: extensions ! ;; Version: 1.02 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: --- 4,10 ---- ;; ;; Author: Per Abrahamsen ;; Keywords: extensions ! ;; Version: 1.04 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: *************** *** 51,56 **** --- 51,59 ---- (defgroup widgets nil "Customization support for the Widget Library." + :link '(custom-manual "(widget)Top") + :link '(url-link :tag "Development Page" + "http://www.dina.kvl.dk/~abraham/custom/") :group 'emacs) (defface widget-documentation-face '((t ())) *** pub/rgnus/lisp/widget.el Sat Nov 23 20:08:27 1996 --- rgnus/lisp/widget.el Tue Nov 26 02:28:34 1996 *************** *** 4,10 **** ;; ;; Author: Per Abrahamsen ;; Keywords: help, extensions, faces, hypermedia ! ;; Version: 1.02 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: --- 4,10 ---- ;; ;; Author: Per Abrahamsen ;; Keywords: help, extensions, faces, hypermedia ! ;; Version: 1.04 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: *** pub/rgnus/lisp/ChangeLog Sun Nov 24 00:16:39 1996 --- rgnus/lisp/ChangeLog Tue Nov 26 01:42:44 1996 *************** *** 1,3 **** --- 1,55 ---- + Tue Nov 26 00:58:25 1996 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-get-split-value): Expand file names in save + dir. + + Mon Nov 25 22:50:19 1996 Jens Lautenbacher + + * gnus-group.el (gnus-group-make-menu-bar): Moved customize. + + Mon Nov 25 15:27:41 1996 Per Abrahamsen + + * gnus.el (custom-facep): Removed. + + * gnus-topic.el (gnus-topic-line-format): Added customize + support. + + * gnus.el (gnus-article-display-hook): Moved + `gnus-article-treat-overstrike' last. + + Mon Nov 25 04:17:03 1996 Lars Magne Ingebrigtsen + + * nnfolder.el (nnfolder-read-folder): Make buffer read/write. + + * gnus-sum.el (gnus-summary-print-article): Delete invisible text + first. + + * article.el (article-delete-invisible-text): New function. + + * nntp.el (nntp-possibly-change-group): Would abort async + fetches. + + * gnus-sum.el (gnus-summary-print-article): New command and + keystroke. + (gnus-summary-move-article): Select the article first. + + * message.el (message-user-agent): Define the message mail user + agent. + + Sun Nov 24 02:28:56 1996 Lars Magne Ingebrigtsen + + * nntp.el (nntp-possibly-change-group): Would get confused. + + * gnus-art.el (gnus-button-url-regexp): Allow all word-constituent + characters to be part of urls. + + * nntp.el (nntp-possibly-change-group): Wait until the status line + arrives and delete it. + + Sun Nov 24 01:36:45 1996 Lars Magne Ingebrigtsen + + * gnus.el: Red Gnus v0.70 is released. + Sat Nov 23 23:22:27 1996 Per Abrahamsen * message.el (message-mode-menu): Added `message-caesar-region'. *** pub/rgnus/texi/gnus.texi Sun Nov 24 01:31:12 1996 --- rgnus/texi/gnus.texi Tue Nov 26 04:26:35 1996 *************** *** 1,7 **** \input texinfo @c -*-texinfo-*- @setfilename gnus ! @settitle Red Gnus 0.70 Manual @synindex fn cp @synindex vr cp @synindex pg cp --- 1,7 ---- \input texinfo @c -*-texinfo-*- @setfilename gnus ! @settitle Red Gnus 0.71 Manual @synindex fn cp @synindex vr cp @synindex pg cp *************** *** 287,293 **** @tex @titlepage ! @title Red Gnus 0.70 Manual @author by Lars Magne Ingebrigtsen @page --- 287,293 ---- @tex @titlepage ! @title Red Gnus 0.71 Manual @author by Lars Magne Ingebrigtsen @page *************** *** 323,329 **** spool or your mbox file. All at the same time, if you want to push your luck. ! This manual corresponds to Red Gnus 0.70 @end ifinfo --- 323,329 ---- spool or your mbox file. All at the same time, if you want to push your luck. ! This manual corresponds to Red Gnus 0.71 @end ifinfo *************** *** 2994,2999 **** --- 2994,3000 ---- * Saving Articles:: Ways of customizing article saving. * Decoding Articles:: Gnus can treat series of (uu)encoded articles. * Article Treatment:: The article buffer can be mangled at will. + * Article Commands:: Doing various things with the article buffer. * Summary Sorting:: Sorting the summary buffer in various ways. * Finding the Parent:: No child support? Get the parent. * Alternative Approaches:: Reading using non-default summaries. *************** *** 6125,6130 **** --- 6126,6147 ---- This variable can also be a list where the elements may be of the types listed above. + + + @node Article Commands + @section Article Commands + + @table @kbd + + @item A P + @cindex PostScript + @cindex printing + @kindex A P (Summary) + @findex gnus-summary-print-article + Generate and print a PostScript image of the article buffer + (@code{gnus-summary-print-article}). + + @end table @node Summary Sorting