From ab9cfed2f47b4a4cba7846de5e63d0b148dd6053 Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Wed, 5 Mar 1997 05:36:56 +0000 Subject: [PATCH] *** empty log message *** --- lisp/ChangeLog | 76 +++++++++++++++++++++++++ lisp/gnus-art.el | 79 ++++---------------------- lisp/gnus-group.el | 10 ++-- lisp/gnus-msg.el | 7 +++ lisp/gnus-start.el | 5 +- lisp/gnus-topic.el | 2 +- lisp/gnus-util.el | 136 +++++++++++++++++++++++++++++++++++++++------ lisp/gnus-xmas.el | 14 ++++- lisp/gnus.el | 132 +++++++++++++++++++++++++++---------------- lisp/message.el | 26 ++++++--- lisp/nnml.el | 7 ++- lisp/nntp.el | 14 ++--- lisp/smiley.el | 13 ++++- 13 files changed, 354 insertions(+), 167 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 393e893f5..00baf05d5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,79 @@ +Sat Feb 1 14:19:54 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.9 is released. + +Sat Feb 1 13:30:33 1997 Hrvoje Niksic + + * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Insert + "-*- emacs-lisp -*-" at the first line. + +Sat Feb 1 13:23:19 1997 Mark Borges + + * gnus-xmas.el (gnus-xmas-define): Do the right characterp thing. + +Sat Feb 1 12:28:33 1997 Lars Magne Ingebrigtsen + + * smiley.el (smiley-mouse-face): New variable. + (smiley-buffer): Use it. + + * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Use gnus-prin1. + + * gnus-util.el (gnus-prin1): Bind print-level and print-length to + nil + + * gnus-art.el (gnus-button-alist): Let mailto: be less greedy. + (gnus-button-alist): Ditto with news:. + + * gnus-topic.el (gnus-topic-unmark-topic): Let groups be unmarked. + + * gnus.el (gnus-read-group): Place point at bol. + + * gnus-util.el ((fboundp 'point-at-bol)): Use the functions if + they exist. + + * gnus-msg.el (gnus-summary-supersede-article): Mark article as + canceled. + +Wed Jan 29 22:28:44 1997 Steven L Baur + + * gnus-xmas.el (gnus-xmas-define): Correct XEmacs version test to + handle v20. + +Sat Feb 1 12:19:14 1997 Katsumi Yamaoka + + * nnml.el (nnml-generate-active-info): Don't bug out. + +Sat Feb 1 00:52:03 1997 Lars Magne Ingebrigtsen + + * message.el (message-fcc-handler-function): Changed default. + (message-output): New function. + (message-do-fcc): Use it. + + * gnus-util.el (gnus-convert-article-to-rmail, + gnus-output-to-rmail): Moved here. + + * message.el (message-check-news-header-syntax): Allow trailing + periods. + (message-check-news-header-syntax): Don't allow trailing periods. + +Fri Jan 31 22:18:03 1997 Lars Magne Ingebrigtsen + + * message.el (message-resend): Rename "From ". + + * nntp.el (nntp-accept-process-output): Use nnheader-message. + +Fri Jan 31 11:51:18 1997 Katsumi Yamaoka + + * nnml.el (nnml-generate-nov-databases-1): Sort the file alist. + +Thu Jan 30 13:13:39 1997 Per Abrahamsen + + * gnus.el: More cleanup of customization groups. + +Thu Jan 30 04:33:01 1997 Sudish Joseph + + * gnus-xmas.el (gnus-xmas-define): Use `char-or-char-int-p'. + Thu Jan 30 04:15:28 1997 Lars Magne Ingebrigtsen * gnus.el: Gnus v5.4.8 is released. diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 2053daee9..a47beb03f 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -1453,10 +1453,10 @@ Directory to save to is default to `gnus-article-save-directory'." (save-excursion (save-restriction (widen) - (if (and (file-readable-p filename) (mail-file-babyl-p filename)) - (gnus-output-to-rmail filename) - (let ((mail-use-rfc822 t)) - (rmail-output filename 1 t t)))))) + (if (and (file-readable-p filename) + (mail-file-babyl-p filename)) + (gnus-output-to-rmail filename t) + (gnus-output-to-mail filename t))))) ;; Remember the directory name to save articles. (setq gnus-newsgroup-last-mail filename))) @@ -1953,56 +1953,6 @@ Provided for backwards compatibility." ;;; Article savers. -(defun gnus-output-to-rmail (file-name) - "Append the current article to an Rmail file named FILE-NAME." - (require 'rmail) - ;; Most of these codes are borrowed from rmailout.el. - (setq file-name (expand-file-name file-name)) - (setq rmail-default-rmail-file file-name) - (let ((artbuf (current-buffer)) - (tmpbuf (get-buffer-create " *Gnus-output*"))) - (save-excursion - (or (get-file-buffer file-name) - (file-exists-p file-name) - (if (gnus-yes-or-no-p - (concat "\"" file-name "\" does not exist, create it? ")) - (let ((file-buffer (create-file-buffer file-name))) - (save-excursion - (set-buffer file-buffer) - (rmail-insert-rmail-file-header) - (let ((require-final-newline nil)) - (gnus-write-buffer file-name))) - (kill-buffer file-buffer)) - (error "Output file does not exist"))) - (set-buffer tmpbuf) - (buffer-disable-undo (current-buffer)) - (erase-buffer) - (insert-buffer-substring artbuf) - (gnus-convert-article-to-rmail) - ;; Decide whether to append to a file or to an Emacs buffer. - (let ((outbuf (get-file-buffer file-name))) - (if (not outbuf) - (append-to-file (point-min) (point-max) file-name) - ;; File has been visited, in buffer OUTBUF. - (set-buffer outbuf) - (let ((buffer-read-only nil) - (msg (and (boundp 'rmail-current-message) - (symbol-value 'rmail-current-message)))) - ;; If MSG is non-nil, buffer is in RMAIL mode. - (when msg - (widen) - (narrow-to-region (point-max) (point-max))) - (insert-buffer-substring tmpbuf) - (when msg - (goto-char (point-min)) - (widen) - (search-backward "\^_") - (narrow-to-region (point) (point-max)) - (goto-char (1+ (point-min))) - (rmail-count-new-messages t) - (rmail-show-message msg)))))) - (kill-buffer tmpbuf))) - (defun gnus-output-to-file (file-name) "Append the current article to a file named FILE-NAME." (let ((artbuf (current-buffer))) @@ -2014,18 +1964,6 @@ Provided for backwards compatibility." (insert "\n") (append-to-file (point-min) (point-max) file-name)))) -(defun gnus-convert-article-to-rmail () - "Convert article in current buffer to Rmail message format." - (let ((buffer-read-only nil)) - ;; Convert article directly into Babyl format. - ;; Suggested by Rob Austein - (goto-char (point-min)) - (insert "\^L\n0, unseen,,\n*** EOOH ***\n") - (while (search-forward "\n\^_" nil t) ;single char - (replace-match "\n^_" t t)) ;2 chars: "^" and "_" - (goto-char (point-max)) - (insert "\^_"))) - (defun gnus-narrow-to-page (&optional arg) "Narrow the article buffer to a page. If given a numerical ARG, move forward ARG pages." @@ -2517,13 +2455,16 @@ groups." :type 'regexp) (defcustom gnus-button-alist - `(("\\(\\b\n\t ]*\\)>?\\)" 1 t + `(("\\(\\b<\\(url: ?\\)?news:\\([^>\n\t ]*\\)>\\)" 1 t gnus-button-message-id 3) - ("\\(\\b\n\t ]*\\)>?\\)" 1 t + ("\\bnews:\\([^\n\t ]+\\)" 0 t gnus-button-message-id 1) + ("\\(\\b<\\(url: ?\\)?news:\\(//\\)?\\([^>\n\t ]*\\)>\\)" 1 t gnus-button-fetch-group 4) + ("\\bnews:\\(//\\)?\\([^>\n\t ]+\\)" 0 t gnus-button-fetch-group 2) ("\\bin\\( +article\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2 t gnus-button-message-id 3) - ("\\( \n\t]+\\)>?" 0 t gnus-url-mailto 2) + ("\\( \n\t]+\\)>" 0 t gnus-url-mailto 1) + ("\\bmailto:\\([^ \n\t]+\\)" 0 t gnus-url-mailto 2) ;; This is how URLs _should_ be embedded in text... ("]*\\)>" 0 t gnus-button-embedded-url 1) ;; Raw URLs. diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index 4f8c2dcb8..b6798d1af 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -46,8 +46,7 @@ :group 'gnus-group-foreign :type 'directory) -;; Suggested by Andrew Eskilsson . -(defcustom gnus-no-groups-message "No news is horrible news" +(defcustom gnus-no-groups-message "No news is no news" "*Message displayed by Gnus when no groups are available." :group 'gnus-start :type 'string) @@ -1827,15 +1826,14 @@ and NEW-NAME will be prompted for." (unless (gnus-check-backend-function 'request-rename-group (gnus-group-group-name)) (error "This backend does not support renaming groups")) - (gnus-read-group "Rename group to: " (gnus-group-group-name))))) + (gnus-read-group "Rename group to: " + (gnus-group-real-name (gnus-group-group-name)))))) (unless (gnus-check-backend-function 'request-rename-group group) (error "This backend does not support renaming groups")) (unless group (error "No group to rename")) - (when (string-match "^[ \t]*$" new-name) - (error "Not a valid group name")) - (when (equal group new-name) + (when (equal (gnus-group-real-name group) new-name) (error "Can't rename to the same name")) ;; We find the proper prefixed name. diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index cdcbd68d7..7d72d5462 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -309,6 +309,13 @@ header line with the old Message-ID." (push `((lambda () (gnus-cache-possibly-remove-article ,article nil nil nil t))) + message-send-actions) + (push + `((lambda () + (when (buffer-name (get-buffer ,gnus-summary-buffer)) + (save-excursion + (set-buffer (get-buffer ,gnus-summary-buffer)) + (gnus-summary-mark-as-read ,article gnus-canceled-mark))))) message-send-actions)))) diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index 6e24f9070..ef715fbdf 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -2183,6 +2183,7 @@ If FORCE is non-nil, the .newsrc file is read." (defun gnus-gnus-to-quick-newsrc-format () "Insert Gnus variables such as gnus-newsrc-alist in lisp format." (let ((print-quoted t)) + (insert ";; -*- emacs-lisp -*-\n") (insert ";; Gnus startup file.\n") (insert ";; Never delete this file - touch .newsrc instead to force Gnus\n") @@ -2201,15 +2202,13 @@ If FORCE is non-nil, the .newsrc file is read." (delq 'gnus-killed-list (copy-sequence gnus-variable-list)))) ;; Peel off the "dummy" group. (gnus-newsrc-alist (cdr gnus-newsrc-alist)) - ;; Make sure the printing isn't abbreviated. - (print-length nil) variable) ;; Insert the variables into the file. (while variables (when (and (boundp (setq variable (pop variables))) (symbol-value variable)) (insert "(setq " (symbol-name variable) " '") - (prin1 (symbol-value variable) (current-buffer)) + (gnus-prin1 (symbol-value variable)) (insert ")\n")))))) (defun gnus-strip-killed-list () diff --git a/lisp/gnus-topic.el b/lisp/gnus-topic.el index 4f22227b6..894d80bad 100644 --- a/lisp/gnus-topic.el +++ b/lisp/gnus-topic.el @@ -1147,7 +1147,7 @@ If COPYP, copy the groups instead." "Remove the process mark from all groups in the topic." (interactive (list (gnus-group-topic-name))) (if (not topic) - (call-interactively 'gnus-group-mark-group) + (call-interactively 'gnus-group-unmark-group) (gnus-topic-mark-topic topic t))) (defun gnus-topic-get-new-news-this-topic (&optional n) diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index 5953306f0..d3f9f3869 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -102,21 +102,25 @@ (when (gnus-buffer-exists-p buf) (kill-buffer buf)))) -(defsubst gnus-point-at-bol () - "Return point at the beginning of the line." - (let ((p (point))) - (beginning-of-line) - (prog1 - (point) - (goto-char p)))) - -(defsubst gnus-point-at-eol () - "Return point at the end of the line." - (let ((p (point))) - (end-of-line) - (prog1 - (point) - (goto-char p)))) +(if (fboundp 'point-at-bol) + (fset 'gnus-point-at-bol 'point-at-bol) + (defsubst gnus-point-at-bol () + "Return point at the beginning of the line." + (let ((p (point))) + (beginning-of-line) + (prog1 + (point) + (goto-char p))))) + +(if (fboundp 'point-at-eol) + (fset 'gnus-point-at-eol 'point-at-eol) + (defsubst gnus-point-at-eol () + "Return point at the end of the line." + (let ((p (point))) + (end-of-line) + (prog1 + (point) + (goto-char p))))) (defun gnus-delete-first (elt list) "Delete by side effect the first occurrence of ELT as a member of LIST." @@ -570,7 +574,8 @@ Timezone package is used." (defun gnus-prin1 (form) "Use `prin1' on FORM in the current buffer. Bind `print-quoted' to t while printing." - (let ((print-quoted t)) + (let ((print-quoted t) + print-level print-length) (prin1 form (current-buffer)))) (defun gnus-prin1-to-string (form) @@ -697,6 +702,105 @@ with potentially long computations." ;(put 'gnus-atomic-setq 'edebug-form-spec '(body)) +;;; Functions for saving to babyl/mail files. + +(defun gnus-output-to-rmail (filename &optional ask) + "Append the current article to an Rmail file named FILENAME." + (require 'rmail) + ;; Most of these codes are borrowed from rmailout.el. + (setq filename (expand-file-name filename)) + (setq rmail-default-rmail-file filename) + (let ((artbuf (current-buffer)) + (tmpbuf (get-buffer-create " *Gnus-output*"))) + (save-excursion + (or (get-file-buffer filename) + (file-exists-p filename) + (if (or (not ask) + (gnus-yes-or-no-p + (concat "\"" filename "\" does not exist, create it? "))) + (let ((file-buffer (create-file-buffer filename))) + (save-excursion + (set-buffer file-buffer) + (rmail-insert-rmail-file-header) + (let ((require-final-newline nil)) + (gnus-write-buffer filename))) + (kill-buffer file-buffer)) + (error "Output file does not exist"))) + (set-buffer tmpbuf) + (erase-buffer) + (insert-buffer-substring artbuf) + (gnus-convert-article-to-rmail) + ;; Decide whether to append to a file or to an Emacs buffer. + (let ((outbuf (get-file-buffer filename))) + (if (not outbuf) + (append-to-file (point-min) (point-max) filename) + ;; File has been visited, in buffer OUTBUF. + (set-buffer outbuf) + (let ((buffer-read-only nil) + (msg (and (boundp 'rmail-current-message) + (symbol-value 'rmail-current-message)))) + ;; If MSG is non-nil, buffer is in RMAIL mode. + (when msg + (widen) + (narrow-to-region (point-max) (point-max))) + (insert-buffer-substring tmpbuf) + (when msg + (goto-char (point-min)) + (widen) + (search-backward "\^_") + (narrow-to-region (point) (point-max)) + (goto-char (1+ (point-min))) + (rmail-count-new-messages t) + (rmail-show-message msg)))))) + (kill-buffer tmpbuf))) + +(defun gnus-output-to-mail (filename &optional ask) + "Append the current article to a mail file named FILENAME." + (setq filename (expand-file-name filename)) + (let ((artbuf (current-buffer)) + (tmpbuf (get-buffer-create " *Gnus-output*"))) + (save-excursion + ;; Create the file, if it doesn't exist. + (when (and (not (get-file-buffer filename)) + (not (file-exists-p filename))) + (if (or (not ask) + (gnus-yes-or-no-p + (concat "\"" filename "\" does not exist, create it? "))) + (let ((file-buffer (create-file-buffer filename))) + (save-excursion + (set-buffer file-buffer) + (let ((require-final-newline nil)) + (gnus-write-buffer filename))) + (kill-buffer file-buffer)) + (error "Output file does not exist"))) + (set-buffer tmpbuf) + (erase-buffer) + (insert-buffer-substring artbuf) + (goto-char (point-min)) + (unless (looking-at "From ") + (insert "From nobody " (current-time-string) "\n")) + ;; Decide whether to append to a file or to an Emacs buffer. + (let ((outbuf (get-file-buffer filename))) + (if (not outbuf) + (append-to-file (point-min) (point-max) filename) + ;; File has been visited, in buffer OUTBUF. + (set-buffer outbuf) + (let ((buffer-read-only nil)) + (goto-char (point-max)) + (insert-buffer-substring tmpbuf))))) + (kill-buffer tmpbuf))) + +(defun gnus-convert-article-to-rmail () + "Convert article in current buffer to Rmail message format." + (let ((buffer-read-only nil)) + ;; Convert article directly into Babyl format. + (goto-char (point-min)) + (insert "\^L\n0, unseen,,\n*** EOOH ***\n") + (while (search-forward "\n\^_" nil t) ;single char + (replace-match "\n^_" t t)) ;2 chars: "^" and "_" + (goto-char (point-max)) + (insert "\^_"))) + (provide 'gnus-util) ;;; gnus-util.el ends here diff --git a/lisp/gnus-xmas.el b/lisp/gnus-xmas.el index ee3bc3638..581f81927 100644 --- a/lisp/gnus-xmas.el +++ b/lisp/gnus-xmas.el @@ -381,7 +381,14 @@ call it with the value of the `gnus-data' text property." (unless (face-differs-from-default-p 'underline) (funcall (intern "set-face-underline-p") 'underline t)) - (fset 'gnus-characterp 'characterp) + (cond + ((fboundp 'char-or-char-int-p) + ;; Handle both types of marks for XEmacs-20.x. + (fset 'gnus-characterp 'char-or-char-int-p)) + ;; V19 of XEmacs, probably. + (t + (fset 'gnus-characterp 'characterp))) + (fset 'gnus-make-overlay 'make-extent) (fset 'gnus-overlay-put 'set-extent-property) (fset 'gnus-move-overlay 'gnus-xmas-move-overlay) @@ -391,8 +398,9 @@ call it with the value of the `gnus-data' text property." (fset 'gnus-put-text-property 'gnus-xmas-put-text-property) (require 'text-props) - (when (< emacs-minor-version 14) - (fset 'gnus-set-text-properties 'gnus-xmas-set-text-properties)) + (if (and (<= emacs-major-version 19) + (< emacs-minor-version 14)) + (fset 'gnus-set-text-properties 'gnus-xmas-set-text-properties)) (when (fboundp 'turn-off-scroll-in-place) (add-hook 'gnus-article-mode-hook 'turn-off-scroll-in-place)) diff --git a/lisp/gnus.el b/lisp/gnus.el index 395e46dd2..041eab732 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -133,20 +133,59 @@ :link '(custom-manual "(gnus)Various Summary Stuff") :group 'gnus-summary) -;; Belongs to to gnus-uu.el +;; Belongs to gnus-uu.el (defgroup gnus-extract-view nil "Viewing extracted files." :link '(custom-manual "(gnus)Viewing Files") :group 'gnus-extract) -;; Other +;; Belongs to gnus-score.el (defgroup gnus-score nil "Score and kill file handling." - :group 'gnus ) + :group 'gnus) -(defgroup gnus-exit nil - "Exiting gnus." - :link '(custom-manual "(gnus)Exiting Gnus") +(defgroup gnus-score-kill nil + "Kill files." + :group 'gnus-score) + +(defgroup gnus-score-adapt nil + "Adaptive score files." + :group 'gnus-score) + +(defgroup gnus-score-files nil + "Score and kill file names." + :group 'gnus-score + :group 'gnus-files) + +(defgroup gnus-score-various nil + "Various scoring and killing options." + :group 'gnus-score) + +;; Other +(defgroup gnus-visual nil + "Options controling the visual fluff." + :group 'gnus) + +(defgroup gnus-mail-expire nil + "Expiring articles in mail backends." + :group 'gnus-mail) + +(defgroup gnus-files nil + "Files used by Gnus." + :group 'gnus) + +(defgroup gnus-server nil + "Options related to newsservers and other servers used by Gnus." + :group 'gnus) + +(defgroup gnus-message '((message custom-group)) + "Composing replies and followups in Gnus." + :group 'gnus) + +(defgroup gnus-meta nil + "Meta variables controling major portions of Gnus. +In general, modifying these variables does not take affect until Gnus +is restarted, and sometimes reloaded." :group 'gnus) (defgroup gnus-various nil @@ -154,7 +193,12 @@ :link '(custom-manual "(gnus)Various Various") :group 'gnus) -(defconst gnus-version-number "5.4.8" +(defgroup gnus-exit nil + "Exiting gnus." + :link '(custom-manual "(gnus)Exiting Gnus") + :group 'gnus) + +(defconst gnus-version-number "5.4.9" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) @@ -640,20 +684,14 @@ be set in `.emacs' instead." (require 'gnus-util) (require 'nnheader) -(defgroup gnus-meta nil - "Meta variables controling major portions of Gnus. -In general, modifying these variables does not take affect until Gnus -is restarted, and sometimes reloaded." - :group 'gnus) - (defcustom gnus-directory (or (getenv "SAVEDIR") "~/News/") "Directory variable from which all other Gnus file variables are derived." - :group 'gnus-meta + :group 'gnus-files :type 'directory) (defcustom gnus-default-directory nil "*Default directory for all Gnus buffers." - :group 'gnus-start + :group 'gnus-files :type '(choice (const :tag "current" nil) directory)) @@ -678,7 +716,8 @@ used to 899, you would say something along these lines: (defcustom gnus-nntpserver-file "/etc/nntpserver" "A file with only the name of the nntp server in it." - :group 'gnus-start + :group 'gnus-files + :group 'gnus-server :type 'file) ;; This function is used to check both the environment variable @@ -728,7 +767,7 @@ If you use this variable, you must set `gnus-nntp-server' to nil. There is a lot more to know about select methods and virtual servers - see the manual for details." - :group 'gnus-start + :group 'gnus-server :type 'gnus-select-method) (defcustom gnus-message-archive-method @@ -745,13 +784,10 @@ This should be a mail method. It's probably not a very effective to change this variable once you've run Gnus once. After doing that, you must edit this server from the server buffer." - :group 'gnus-start + :group 'gnus-server + :group 'gnus-message :type 'gnus-select-method) -(defgroup gnus-message '((message custom-group)) - "Interface from gnus to message mode." - :group 'gnus) - (defcustom gnus-message-archive-group nil "*Name of the group in which to save the messages you've written. This can either be a string, a list of strings; or an alist @@ -780,14 +816,14 @@ that case, just return a fully prefixed name of the group -- "List of NNTP servers that the user can choose between interactively. To make Gnus query you for a server, you have to give `gnus' a non-numeric prefix - `C-u M-x gnus', in short." - :group 'gnus-start + :group 'gnus-server :type '(repeat string)) (defcustom gnus-nntp-server nil "*The name of the host running the NNTP server. This variable is semi-obsolete. Use the `gnus-select-method' variable instead." - :group 'gnus-start + :group 'gnus-server :type '(choice (const :tag "disable" nil) string)) @@ -800,7 +836,7 @@ If, for instance, you want to read your mail with the nnml backend, you could set this variable: \(setq gnus-secondary-select-methods '((nnml \"\")))" -:group 'gnus-start +:group 'gnus-server :type '(repeat gnus-select-method)) (defvar gnus-backup-default-subscribed-newsgroups @@ -813,7 +849,7 @@ Should be set in paths.el, and shouldn't be touched by the user.") The DOMAINNAME environment variable is used instead if it is defined. If the `system-name' function returns the full Internet name, there is no need to set this variable." - :group 'gnus-start + :group 'gnus-message :type '(choice (const :tag "default" nil) string)) @@ -827,7 +863,7 @@ return a string. In any case, if the string (either in the variable, in the environment variable, or returned by the function) is a file name, the contents of this file will be used as the organization." - :group 'gnus-start + :group 'gnus-message :type '(choice (const :tag "default" nil) string)) @@ -841,7 +877,7 @@ nntp method, you might get acceptable results. The value of this variable must be a valid select method as discussed in the documentation of `gnus-select-method'." - :group 'gnus-start + :group 'gnus-server :type '(choice (const :tag "default" nil) gnus-select-method)) @@ -890,7 +926,7 @@ If the default site is too slow, try one of these: If nil, ignore cross references. If t, mark articles as read in subscribed newsgroups. If neither t nor nil, mark as read in all newsgroups." - :group 'gnus-start + :group 'gnus-server :type '(choice (const :tag "off" nil) (const :tag "subscribed" t) (sexp :format "all" @@ -898,12 +934,13 @@ newsgroups." (defcustom gnus-process-mark ?# "*Process mark." - :group 'gnus-start + :group 'gnus-group-visual + :group 'gnus-summary-marks :type 'character) (defcustom gnus-asynchronous nil "*If non-nil, Gnus will supply backends with data needed for async article fetching." - :group 'gnus-start + :group 'gnus-asynchronous :type 'boolean) (defcustom gnus-large-newsgroup 200 @@ -931,12 +968,13 @@ to nil while on all other systems it defaults to t." (defcustom gnus-kill-files-directory gnus-directory "*Name of the directory where kill files will be stored (default \"~/News\")." - :group 'gnus-score + :group 'gnus-score-files + :group 'gnus-score-kill :type 'directory) (defcustom gnus-save-score nil "*If non-nil, save group scoring info." - :group 'gnus-score + :group 'gnus-score-various :group 'gnus-start :type 'boolean) @@ -951,6 +989,7 @@ If a list, then the values `word' and `line' are meaningful. The former will perform adaption on individual words in the subject header while `line' will perform adaption on several headers." :group 'gnus-meta + :group 'gnus-score-adapt :type '(set (const word) (const line))) (defcustom gnus-use-cache 'passive @@ -1046,7 +1085,7 @@ Two pre-defined function exist: `gnus-extract-address-components', which is the default, quite fast, and too simplistic solution, and `mail-extract-address-components', which works much better, but is slower." - :group 'gnus-start + :group 'gnus-summary-format :type '(radio (function-item gnus-extract-address-components) (function-item mail-extract-address-components) (function :tag "Other"))) @@ -1058,7 +1097,7 @@ slower." (defcustom gnus-shell-command-separator ";" "String used to separate to shell commands." - :group 'gnus-start + :group 'gnus-files :type 'string) (defcustom gnus-valid-select-methods @@ -1085,7 +1124,7 @@ this method (i. e., `post', `mail', `none' or whatever) or other properties that this method has (like being respoolable). If you implement a new select method, all you should have to change is this variable. I think." - :group 'gnus-start + :group 'gnus-server :type '(repeat (group (string :tag "Name") (radio-button-choice (const :format "%v " post) (const :format "%v " mail) @@ -1116,7 +1155,7 @@ The list may contain the symbols `group', `article', `tree' and `summary'. If the corresponding symbol is present, Gnus will keep that mode line updated with information that may be pertinent. If this variable is nil, screen refresh may be quicker." - :group 'gnus-start + :group 'gnus-various :type '(set (const group) (const article) (const summary) @@ -1127,7 +1166,7 @@ If this variable is nil, screen refresh may be quicker." "*Max length of mode-line non-string contents. If this is nil, Gnus will take space as is needed, leaving the rest of the modeline intact." - :group 'gnus-start + :group 'gnus-various :type '(choice (const nil) integer)) @@ -1135,7 +1174,7 @@ of the modeline intact." "*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 'gnus-mail + :group 'gnus-mail-expire :type '(choice (const nil) regexp)) @@ -1145,7 +1184,7 @@ 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 'gnus-mail + :group 'gnus-mail-expire :type '(choice (const nil) regexp)) @@ -1183,22 +1222,18 @@ following hook: (cond ((string-match \"control\" gnus-newsgroup-name) (gnus-kill \"Subject\" \"rmgroup\") (gnus-expunge \"X\"))))))" - :group 'gnus-score + :group 'gnus-score-kill :options '(gnus-apply-kill-file) :type 'hook) (defcustom gnus-group-change-level-function nil "Function run when a group level is changed. It is called with three parameters -- GROUP, LEVEL and OLDLEVEL." - :group 'gnus-start + :group 'gnus-group-level :type 'function) ;;; Face thingies. -(defgroup gnus-visual nil - "Options controling the visual fluff." - :group 'gnus) - (defcustom gnus-visual '(summary-highlight group-highlight article-highlight mouse-face @@ -2272,7 +2307,8 @@ Returns the number of articles marked as read." (defcustom gnus-kill-file-name "KILL" "Suffix of the kill files." - :group 'gnus-score + :group 'gnus-score-kill + :group 'gnus-score-files :type 'string) (defun gnus-newsgroup-kill-file (newsgroup) @@ -2393,7 +2429,7 @@ Disallow illegal group names." (when (string-match "[: `'\"/]\\|^$" (setq group (read-string (concat prefix prompt) - (or default "") + (cons (or default "") 0) 'gnus-group-history))) (setq prefix (format "Illegal group name: \"%s\". " group) group nil))) diff --git a/lisp/message.el b/lisp/message.el index de5481f4d..a4416d76c 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -109,7 +109,7 @@ :type 'function) ;;;###autoload -(defcustom message-fcc-handler-function 'rmail-output +(defcustom message-fcc-handler-function 'message-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 @@ -725,7 +725,9 @@ The cdr of ech entry is a function for applying the face to a region.") (eval-and-compile (autoload 'message-setup-toolbar "messagexmas") - (autoload 'mh-send-letter "mh-comp")) + (autoload 'mh-send-letter "mh-comp") + (autoload 'gnus-output-to-mail "gnus-util") + (autoload 'gnus-output-to-rmail "gnus-util")) @@ -2139,15 +2141,17 @@ to find out how to use this." (setq file (expand-file-name file)) (unless (file-exists-p (file-name-directory file)) (make-directory (file-name-directory file) t)) - (if (and message-fcc-handler-function - (not (eq message-fcc-handler-function 'rmail-output))) - (funcall message-fcc-handler-function file) - (if (and (file-readable-p file) (mail-file-babyl-p file)) - (rmail-output file 1 nil t) - (let ((mail-use-rfc822 t)) - (rmail-output file 1 t t)))))) + (funcall message-fcc-handler-function file))) + (kill-buffer (current-buffer))))) +(defun message-output (filename) + "Append this article to Unix/babyl mail file.." + (if (and (file-readable-p filename) + (mail-file-babyl-p filename)) + (gnus-output-to-rmail filename t) + (gnus-output-to-mail filename t))) + (defun message-cleanup-headers () "Do various automatic cleanups of the headers." ;; Remove empty lines in the header. @@ -3183,6 +3187,10 @@ Optional NEWS will use news to forward instead of mail." (while (re-search-backward "^\\(Also-\\)?Resent-" beg t) (beginning-of-line) (insert "Also-")) + ;; Quote any "From " lines at the beginning. + (goto-char beg) + (when (looking-at "From ") + (replace-match "X-From-Line: ")) ;; Send it. (message-send-mail) (kill-buffer (current-buffer))) diff --git a/lisp/nnml.el b/lisp/nnml.el index 62c9fd5a0..72ba080b2 100644 --- a/lisp/nnml.el +++ b/lisp/nnml.el @@ -710,7 +710,8 @@ all. This may very well take some time.") (file-directory-p dir)) (nnml-generate-nov-databases-1 dir seen)))) ;; Do this directory. - (let ((files (nreverse (nnheader-article-to-file-alist dir)))) + (let ((files (sort (nnheader-article-to-file-alist dir) + (lambda (a b) (< (car a) (car b)))))) (when files (funcall nnml-generate-active-function dir) ;; Generate the nov file. @@ -724,10 +725,10 @@ all. This may very well take some time.") (setq nnml-group-alist (delq (assoc group nnml-group-alist) nnml-group-alist)) (push (list group - (cons (cdaar files) + (cons (caar files) (let ((f files)) (while (cdr f) (setq f (cdr f))) - (cdaar f)))) + (caar f)))) nnml-group-alist))) (defun nnml-generate-nov-file (dir files) diff --git a/lisp/nntp.el b/lisp/nntp.el index 6ece559b2..39147f894 100644 --- a/lisp/nntp.el +++ b/lisp/nntp.el @@ -225,8 +225,8 @@ server there that you can connect to. See also `nntp-open-connection-function'" (and (numberp nntp-large-newsgroup) (> number nntp-large-newsgroup) (zerop (% received 20)) - (message "NNTP: Receiving headers... %d%%" - (/ (* received 100) number))) + (nnheader-message 6 "NNTP: Receiving headers... %d%%" + (/ (* received 100) number))) (nntp-accept-response)))) ;; Wait for text of last command. (goto-char (point-max)) @@ -238,7 +238,7 @@ server there that you can connect to. See also `nntp-open-connection-function'" (nntp-accept-response))) (and (numberp nntp-large-newsgroup) (> number nntp-large-newsgroup) - (message "NNTP: Receiving headers...done")) + (nnheader-message 6 "NNTP: Receiving headers...done")) ;; Now all of replies are received. Fold continuation lines. (nnheader-fold-continuation-lines) @@ -353,12 +353,12 @@ server there that you can connect to. See also `nntp-open-connection-function'" (and (numberp nntp-large-newsgroup) (> number nntp-large-newsgroup) (zerop (% received 20)) - (message "NNTP: Receiving articles... %d%%" - (/ (* received 100) number))) + (nnheader-message 6 "NNTP: Receiving articles... %d%%" + (/ (* received 100) number))) (nntp-accept-response)))) (and (numberp nntp-large-newsgroup) (> number nntp-large-newsgroup) - (message "NNTP: Receiving headers...done")) + (nnheader-message 6 "NNTP: Receiving headers...done")) ;; Now we have all the responses. We go through the results, ;; washes it and copies it over to the server buffer. @@ -823,7 +823,7 @@ It will prompt for a password." (let ((len (/ (point-max) 1024))) (unless (< len 10) (setq nntp-have-messaged t) - (message "nntp read: %dk" len))) + (nnheader-message 7 "nntp read: %dk" len))) (accept-process-output process 1))) (defun nntp-accept-response () diff --git a/lisp/smiley.el b/lisp/smiley.el index b9449a720..ebf7cb2f8 100644 --- a/lisp/smiley.el +++ b/lisp/smiley.el @@ -131,6 +131,15 @@ If this is a symbol, take its value." :type 'string :group 'smiley) +(defcustom smiley-mouse-face 'highlight + "Face used for mouse highlighting in the smiley buffer. + +Smiley buttons will be displayed in this face when the cursor is +above them." + :type 'face + :group 'smiley) + + (defvar smiley-glyph-cache nil) (defvar smiley-running-xemacs (string-match "XEmacs" emacs-version)) @@ -215,10 +224,10 @@ If this is a symbol, take its value." (set-extent-property ext 'start-open t) (set-extent-property ext 'invisible t) (set-extent-property ext 'keymap smiley-map) - (set-extent-property ext 'mouse-face gnus-article-mouse-face) + (set-extent-property ext 'mouse-face 'smiley-mouse-face) (set-extent-property ext 'intangible t) ;; set annotation params - (set-extent-property ant 'mouse-face gnus-article-mouse-face) + (set-extent-property ant 'mouse-face 'smiley-mouse-face) (set-extent-property ant 'keymap smiley-map) ;; remember each other (set-extent-property ant 'smiley-extent ext) -- 2.25.1