X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fgnus.el;h=f412e7aa4954d9651b23c384f15676c303c164dd;hb=505a1c2ee29dfbeaa008c4cd257c60103b07cade;hp=2ec45156843298f4c4f52ce6e3b0899d17952fc1;hpb=c971b856674f06a000b973ef6ac5e5e7134cd705;p=elisp%2Fgnus.git- diff --git a/lisp/gnus.el b/lisp/gnus.el index 2ec4515..f412e7a 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -1,8 +1,10 @@ ;;; gnus.el --- a newsreader for GNU Emacs -;; Copyright (C) 1987,88,89,90,93,94,95,96,97,98,99 Free Software Foundation, Inc. +;; Copyright (C) 1987-1990,1993-1999 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen +;; Tatsuya Ichikawa +;; Yoshiki Hayashi ;; Keywords: news, mail ;; This file is part of GNU Emacs. @@ -259,11 +261,28 @@ is restarted, and sometimes reloaded." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "0.71" - "Version number for this version of Gnus.") +(defconst gnus-product-name "T-gnus" + "Product name of this version of gnus.") -(defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number) - "Version string for this version of Gnus.") +(defconst gnus-version-number "6.10.072" + "Version number for this version of gnus.") + +(defconst gnus-revision-number "01" + "Revision number for this version of gnus.") + +(defconst gnus-original-version-number "0.95" + "Version number for this version of Gnus.") + +(provide 'running-pterodactyl-gnus-0_73-or-later) + +(defconst gnus-original-product-name "Pterodactyl Gnus" + "Product name of the original version of Gnus.") + +(defconst gnus-version + (format "%s %s (based on %s v%s ; for SEMI 1.12/1.13, FLIM 1.12)" + gnus-product-name gnus-version-number + gnus-original-product-name gnus-original-version-number) + "Version string for this version of gnus.") (defcustom gnus-inhibit-startup-message nil "If non-nil, the startup message will not be displayed. @@ -859,17 +878,16 @@ used to 899, you would say something along these lines: (insert-file-contents gnus-nntpserver-file) (let ((name (buffer-string))) (prog1 - (if (string-match "^[ \t\n]*$" name) + (if (string-match "\\'[ \t\n]*$" name) nil name) (kill-buffer (current-buffer)))))))) (defcustom gnus-select-method - (condition-case nil + (ignore-errors (nconc - (list 'nntp (or (condition-case nil - (gnus-getenv-nntpserver) - (error nil)) + (list 'nntp (or (ignore-errors + (gnus-getenv-nntpserver)) (when (and gnus-default-nntp-server (not (string= gnus-default-nntp-server ""))) gnus-default-nntp-server) @@ -877,8 +895,7 @@ used to 899, you would say something along these lines: (if (or (null gnus-nntp-service) (equal gnus-nntp-service "nntp")) nil - (list gnus-nntp-service))) - (error nil)) + (list gnus-nntp-service)))) "*Default method for selecting a newsgroup. This variable should be a list, where the first element is how the news is to be fetched, the second is the address. @@ -1161,7 +1178,7 @@ articles. This is not a good idea." :type 'boolean) (defcustom gnus-use-picons nil - "*If non-nil, display picons." + "*If non-nil, display picons in a frame of their own." :group 'gnus-meta :type 'boolean) @@ -1205,6 +1222,7 @@ slower." :group 'gnus-summary-format :type '(radio (function-item gnus-extract-address-components) (function-item mail-extract-address-components) + (function-item std11-extract-address-components) (function :tag "Other"))) (defcustom gnus-carpal nil @@ -1350,7 +1368,7 @@ following 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-group-level + :group 'gnus-group-levels :type 'function) ;;; Face thingies. @@ -1488,7 +1506,7 @@ If nil, no default charset is assumed when posting." ,(nnheader-concat gnus-cache-directory "active")))) "List of predefined (convenience) servers.") -(defvar gnus-topic-indentation "") ;; Obsolete variable. +(defvar gnus-topic-indentation "");; Obsolete variable. (defconst gnus-article-mark-lists '((marked . tick) (replied . reply) @@ -1512,13 +1530,29 @@ If nil, no default charset is assumed when posting." "bugs@gnus.org (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") +(defconst semi-gnus-developers + "Semi-gnus Developers: + semi-gnus-en@meadow.scphys.kyoto-u.ac.jp (In English),\ + semi-gnus-ja@meadow.scphys.kyoto-u.ac.jp (In Japanese);" + "The mail address of the Semi-gnus developers.") + +(defcustom gnus-info-filename nil + "*Controls language of gnus Info. +If nil and current-language-environment is Japanese, go to gnus-ja. +Otherwise go to corresponding Info. +This variable can be nil, gnus or gnus-ja." + :group 'gnus-start + :type '(choice (const nil) + (const :tag "English" gnus) + (const :tag "Japanese" gnus-ja))) + (defvar gnus-info-nodes - '((gnus-group-mode "(gnus)The Group Buffer") - (gnus-summary-mode "(gnus)The Summary Buffer") - (gnus-article-mode "(gnus)The Article Buffer") - (gnus-server-mode "(gnus)The Server Buffer") - (gnus-browse-mode "(gnus)Browse Foreign Server") - (gnus-tree-mode "(gnus)Tree Display")) + '((gnus-group-mode "The Group Buffer") + (gnus-summary-mode "The Summary Buffer") + (gnus-article-mode "The Article Buffer") + (gnus-server-mode "The Server Buffer") + (gnus-browse-mode "Browse Foreign Server") + (gnus-tree-mode "Tree Display")) "Alist of major modes and related Info nodes.") (defvar gnus-group-buffer "*Group*") @@ -1579,6 +1613,11 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") (defvar gnus-dead-summary nil) +(defvar gnus-article-display-hook nil + "Controls how the article buffer will look. This is an obsolete variable; +use the article treating faculties instead. Is is described in Info node +`Customizing Articles'.") + ;;; End of variables. ;; Define some autoload functions Gnus might use. @@ -1599,10 +1638,8 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") (if (eq (nth 1 package) ':interactive) (cdddr package) (cdr package))))) - '(("metamail" metamail-buffer) - ("info" Info-goto-node) + '(("info" Info-goto-node) ("pp" pp pp-to-string pp-eval-expression) - ("qp" quoted-printable-decode-region quoted-printable-decode-string) ("ps-print" ps-print-preprint) ("mail-extr" mail-extract-address-components) ("browse-url" browse-url) @@ -1682,7 +1719,8 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view gnus-uu-decode-binhex-view gnus-uu-unmark-thread gnus-uu-mark-over gnus-uu-post-news) - ("gnus-uu" gnus-uu-delete-work-dir gnus-uu-unmark-thread) + ("gnus-uu" gnus-uu-delete-work-dir gnus-quote-arg-for-sh-or-csh + gnus-uu-unmark-thread) ("gnus-msg" (gnus-summary-send-map keymap) gnus-article-mail gnus-copy-article-buffer gnus-extended-version) ("gnus-msg" :interactive t @@ -1698,8 +1736,8 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") gnus-summary-post-forward gnus-summary-wide-reply-with-original gnus-summary-post-forward) ("gnus-picon" :interactive t gnus-article-display-picons - gnus-group-display-picons gnus-picons-article-display-x-face - gnus-picons-display-x-face) + gnus-group-display-picons) + ("gnus-picon" gnus-picons-buffer-name) ("gnus-gl" bbb-login bbb-logout bbb-grouplens-group-p gnus-grouplens-mode) ("smiley" :interactive t gnus-smiley-display) @@ -1715,8 +1753,7 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") gnus-group-set-mode-line gnus-group-set-info gnus-group-save-newsrc gnus-group-setup-buffer gnus-group-get-new-news gnus-group-make-help-group gnus-group-update-group - gnus-clear-inboxes-moved gnus-group-iterate - gnus-group-group-name) + gnus-group-iterate gnus-group-group-name) ("gnus-bcklg" gnus-backlog-request-article gnus-backlog-enter-article gnus-backlog-remove-article) ("gnus-art" gnus-article-read-summary-keys gnus-article-save @@ -1727,18 +1764,18 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") gnus-article-delete-invisible-text gnus-treat-article) ("gnus-art" :interactive t gnus-article-hide-headers gnus-article-hide-boring-headers - gnus-article-treat-overstrike gnus-article-word-wrap + gnus-article-treat-overstrike gnus-article-remove-cr gnus-article-remove-trailing-blank-lines - gnus-article-display-x-face gnus-article-de-quoted-unreadable + gnus-article-display-x-face gnus-article-hide-pgp gnus-article-hide-pem gnus-article-hide-signature gnus-article-strip-leading-blank-lines gnus-article-date-local gnus-article-date-original gnus-article-date-lapsed gnus-article-show-all-headers gnus-article-edit-mode gnus-article-edit-article - gnus-article-edit-done gnus-article-decode-encoded-words + gnus-article-edit-done article-decode-encoded-words gnus-start-date-timer gnus-stop-date-timer - gnus-mime-view-all-parts) + gnus-article-toggle-headers) ("gnus-int" gnus-request-type) ("gnus-start" gnus-newsrc-parse-options gnus-1 gnus-no-server-1 gnus-dribble-enter gnus-read-init-file gnus-dribble-touch) @@ -1753,6 +1790,19 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") ("gnus-async" gnus-async-request-fetched-article gnus-async-prefetch-next gnus-async-prefetch-article gnus-async-prefetch-remove-group gnus-async-halt-prefetch) + ("gnus-offline" + gnus-offline-setup) + ("gnus-offline" :interactive t + gnus-offline-toggle-plugged + gnus-offline-set-unplugged-state + gnus-offline-toggle-auto-hangup + gnus-offline-toggle-on/off-send-mail + gnus-offline-toggle-articles-to-fetch + gnus-offline-toggle-movemail-program + gnus-offline-set-interval-time + gnus-offline-agent-expire) + ("pop3-fma" :interactive t + pop3-fma-set-pop3-password) ("gnus-agent" gnus-open-agent gnus-agent-get-function gnus-agent-save-groups gnus-agent-save-active gnus-agent-method-p gnus-agent-get-undownloaded-list gnus-agent-fetch-session @@ -1761,7 +1811,10 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") gnus-unplugged gnus-agentize gnus-agent-batch) ("gnus-vm" :interactive t gnus-summary-save-in-vm gnus-summary-save-article-vm) - ("gnus-draft" :interactive t gnus-draft-mode gnus-group-send-drafts)))) + ("gnus-draft" :interactive t gnus-draft-mode gnus-group-send-drafts) + ("gnus-mlspl" gnus-group-split gnus-group-split-fancy) + ("gnus-mlspl" :interactive t gnus-group-split-setup + gnus-group-split-update)))) ;;; gnus-sum.el thingies @@ -1818,7 +1871,7 @@ such area. The %U (status), %R (replied) and %z (zcore) specs have to be handled with care. For reasons of efficiency, Gnus will compute what column these characters will end up in, and \"hard-code\" that. This means that -it is illegal to have these specs after a variable-length spec. Well, +it is invalid to have these specs after a variable-length spec. Well, you might not be arrested, but your summary buffer will look strange, which is bad enough. @@ -2039,8 +2092,8 @@ If ARG, insert string at point." "4.99" (+ 5 (* 0.02 (abs - (- (mm-char-int (aref (downcase alpha) 0)) - (mm-char-int ?t)))) + (- (char-int (aref (downcase alpha) 0)) + (char-int ?t)))) -0.01)) minor least) (format "%d.%02d%02d" major minor least)))))) @@ -2050,7 +2103,12 @@ If ARG, insert string at point." (interactive) ;; Enlarge info window if needed. (let (gnus-info-buffer) - (Info-goto-node (cadr (assq major-mode gnus-info-nodes))) + (Info-goto-node + (format "(%s)%s" + (or gnus-info-filename + (get-language-info current-language-environment 'gnus-info) + "gnus") + (cadr (assq major-mode gnus-info-nodes)))) (setq gnus-info-buffer (current-buffer)) (gnus-configure-windows 'info))) @@ -2225,14 +2283,7 @@ that that variable is buffer-local to the summary buffers." "Return non-nil if GROUP (and ARTICLE) come from a news server." (or (gnus-member-of-valid 'post group) ; Ordinary news group. (and (gnus-member-of-valid 'post-mail group) ; Combined group. - (if (or (null article) - (not (< article 0))) - (eq (gnus-request-type group article) 'news) - (if (not (vectorp article)) - nil - ;; It's a real article. - (eq (gnus-request-type group (mail-header-id article)) - 'news)))))) + (eq (gnus-request-type group article) 'news)))) ;; Returns a list of writable groups. (defun gnus-writable-groups () @@ -2349,6 +2400,15 @@ that that variable is buffer-local to the summary buffers." (setq s1 (cdr s1))) (null s1)))))) +(defun gnus-methods-equal-p (m1 m2) + (let ((m1 (or m1 gnus-select-method)) + (m2 (or m2 gnus-select-method))) + (or (equal m1 m2) + (and (eq (car m1) (car m2)) + (or (not (memq 'address (assoc (symbol-name (car m1)) + gnus-valid-select-methods))) + (equal (nth 1 m1) (nth 1 m2))))))) + (defun gnus-server-equal (m1 m2) "Say whether two methods are equal." (let ((m1 (cond ((null m1) gnus-select-method) @@ -2439,7 +2499,7 @@ You should probably use `gnus-find-method-for-group' instead." (let ((methods gnus-secondary-select-methods) (gmethod (gnus-server-get-method nil method))) (while (and methods - (not (gnus-method-equal + (not (gnus-method-equal (gnus-server-get-method nil (car methods)) gmethod))) (setq methods (cdr methods))) @@ -2447,12 +2507,14 @@ You should probably use `gnus-find-method-for-group' instead." (defun gnus-method-simplify (method) "Return the shortest uniquely identifying string or method for METHOD." - (cond ((gnus-native-method-p method) - nil) - ((gnus-secondary-method-p method) - (format "%s:%s" (nth 0 method) (nth 1 method))) - (t - method))) + (cond ((stringp method) + method) + ((gnus-native-method-p method) + nil) + ((gnus-secondary-method-p method) + (format "%s:%s" (nth 0 method) (nth 1 method))) + (t + method))) (defun gnus-groups-from-server (server) "Return a list of all groups that are fetched from SERVER." @@ -2553,7 +2615,6 @@ If SCORE is nil, add 1 to the score of GROUP." (when info (gnus-info-set-score info (+ (gnus-info-score info) (or score 1)))))) -;; Function written by Stainless Steel Rat (defun gnus-short-group-name (group &optional levels) "Collapse GROUP name LEVELS. Select methods are stripped and any remote host name is stripped down to @@ -2563,6 +2624,7 @@ just the host name." (depth 0) (skip 1) (levels (or levels + gnus-group-uncollapsed-levels (progn (while (string-match "\\." group skip) (setq skip (match-end 0) @@ -2739,7 +2801,7 @@ If NEWSGROUP is nil, return the global kill file name instead." (defun gnus-read-group (prompt &optional default) "Prompt the user for a group name. -Disallow illegal group names." +Disallow invalid group names." (let ((prefix "") group) (while (not group) @@ -2748,7 +2810,7 @@ Disallow illegal group names." (setq group (read-string (concat prefix prompt) (cons (or default "") 0) 'gnus-group-history))) - (setq prefix (format "Illegal group name: \"%s\". " group) + (setq prefix (format "Invalid group name: \"%s\". " group) group nil))) group)) @@ -2802,18 +2864,42 @@ As opposed to `gnus', this command will not connect to the local server." (interactive "P") (gnus arg nil 'slave)) +(defcustom gnus-frame-properties nil + "The properties of the frame in which gnus is displayed. Under XEmacs, +the variable `toolbar-news-frame-plist' will be refered instead." + :type '(repeat (cons :format "%v" + (symbol :tag "Parameter") + (sexp :tag "Value"))) + :group 'gnus) + +(defvar gnus-frame nil + "The frame in which gnus is displayed. It is not used under XEmacs.") + ;;;###autoload (defun gnus-other-frame (&optional arg) "Pop up a frame to read news." (interactive "P") - (let ((window (get-buffer-window gnus-group-buffer))) - (cond (window - (select-frame (window-frame window))) - ((= (length (frame-list)) 1) - (select-frame (make-frame))) - (t - (other-frame 1)))) - (gnus arg)) + (if (featurep 'xemacs) + (let ((toolbar-news-use-separate-frame t)) + (toolbar-gnus)) + (if (frame-live-p gnus-frame) + (raise-frame gnus-frame) + (setq gnus-frame (make-frame gnus-frame-properties)) + (if (and (gnus-buffer-live-p gnus-group-buffer) + (save-current-buffer + (set-buffer gnus-group-buffer) + (eq 'gnus-group-mode major-mode))) + (progn + (select-frame gnus-frame) + (switch-to-buffer gnus-group-buffer)) + (add-hook 'gnus-exit-gnus-hook + (lambda () + (when (and (frame-live-p gnus-frame) + (cdr (frame-list))) + (delete-frame gnus-frame)) + (setq gnus-frame nil))) + (select-frame gnus-frame) + (gnus arg))))) ;;;###autoload (defun gnus (&optional arg dont-connect slave)