;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
;; Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
+;; Yoshiki Hayashi <t90553@mail.ecc.u-tokyo.ac.jp>
;; Keywords: news, mail
;; This file is part of GNU Emacs.
(eval '(run-hooks 'gnus-load-hook))
(eval-when-compile (require 'cl))
-(require 'mm-util)
+(eval-when-compile (require 'static))
(require 'custom)
(eval-and-compile
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "0.89"
+(defconst gnus-product-name "T-gnus"
+ "Product name of this version of gnus.")
+
+(defconst gnus-version-number "6.14.0"
+ "Version number for this version of gnus.")
+
+(defconst gnus-revision-number "11"
+ "Revision number for this version of gnus.")
+
+(defconst gnus-original-version-number "5.8.2"
"Version number for this version of Gnus.")
-(defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number)
- "Version string for this version of Gnus.")
+(provide 'running-pterodactyl-gnus-0_73-or-later)
+
+(defconst gnus-original-product-name "Gnus"
+ "Product name of the original version of Gnus.")
+
+(defconst gnus-version
+ (format "%s %s r%s (based on %s v%s ; for SEMI 1.13, FLIM 1.13)"
+ gnus-product-name gnus-version-number gnus-revision-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.
()))
"Face used for normal interest unread articles.")
+(defface gnus-summary-incorporated-face
+ '((t
+ ()))
+ "Face used for incorporated articles.")
+
(defface gnus-summary-high-read-face
'((((class color)
(background dark))
"Insert startup message in current buffer."
;; Insert the message.
(erase-buffer)
- (insert
- (format " %s
+ (insert "
_ ___ _ _
_ ___ __ ___ __ _ ___
__ _ ___ __ ___
__
"
- ""))
+ )
+ (goto-char (point-min))
+ (insert gnus-product-name " " gnus-version-number
+ (if (zerop (string-to-number gnus-revision-number))
+ ""
+ (concat " (r" gnus-revision-number ")"))
+ " based on " gnus-original-product-name " v"
+ gnus-original-version-number)
+ (goto-char (point-min))
+ (insert-char ?\ ; space
+ (max 0 (/ (- (window-width) (gnus-point-at-eol)) 2)))
+ (forward-line 1)
;; And then hack it.
- (gnus-indent-rigidly (point-min) (point-max)
+ (gnus-indent-rigidly (point) (point-max)
(/ (max (- (window-width) (or x 46)) 0) 2))
(goto-char (point-min))
(forward-line 1)
(kill-buffer (current-buffer))))))))
(defcustom gnus-select-method
- (ignore-errors
- (nconc
- (list 'nntp (or (ignore-errors
- (gnus-getenv-nntpserver))
- (when (and gnus-default-nntp-server
- (not (string= gnus-default-nntp-server "")))
- gnus-default-nntp-server)
- "news"))
- (if (or (null gnus-nntp-service)
- (equal gnus-nntp-service "nntp"))
- nil
- (list gnus-nntp-service))))
+ (condition-case nil
+ (nconc
+ (list 'nntp (or (condition-case nil
+ (gnus-getenv-nntpserver)
+ (error nil))
+ (when (and gnus-default-nntp-server
+ (not (string= gnus-default-nntp-server "")))
+ gnus-default-nntp-server)
+ "news"))
+ (if (or (null gnus-nntp-service)
+ (equal gnus-nntp-service "nntp"))
+ nil
+ (list gnus-nntp-service)))
+ (error nil))
"*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.
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'."
+in the documentation of `gnus-select-method'.
+
+It can also be a list of select methods, as well as the special symbol
+`current', which means to use the current select method. If it is a
+list, Gnus will try all the methods in the list until it finds a match."
:group 'gnus-server
:type '(choice (const :tag "default" nil)
- gnus-select-method))
+ (const :tag "DejaNews" (nnweb "refer" (nnweb-type dejanews)))
+ gnus-select-method
+ (repeat :menu-tag "Try multiple"
+ :tag "Multiple"
+ :value (current (nnweb "refer" (nnweb-type dejanews)))
+ (choice :tag "Method"
+ (const current)
+ (const :tag "DejaNews"
+ (nnweb "refer" (nnweb-type dejanews)))
+ gnus-select-method))))
(defcustom gnus-group-faq-directory
'("/ftp@mirrors.aol.com:/pub/rtfm/usenet/"
: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
("nnfolder" mail respool address)
("nngateway" post-mail address prompt-address physical-address)
("nnweb" none)
+ ("nnslashdot" post)
+ ("nnultimate" none)
+ ("nnwarchive" none)
("nnlistserv" none)
- ("nnagent" post-mail))
+ ("nnagent" post-mail)
+ ("nnimap" post-mail address prompt-address physical-address))
"*An alist of valid select methods.
The first element of each list lists should be a string with the name
of the select method. The other elements may be the category of
(define-widget 'gnus-select-method 'list
"Widget for entering a select method."
+ :value '(nntp "")
+ :tag "Select Method"
:args `((choice :tag "Method"
,@(mapcar (lambda (entry)
(list 'const :format "%v\n"
(defvar gnus-have-read-active-file nil)
(defconst gnus-maintainer
- "bugs@gnus.org (The Gnus Bugfixing Girls + Boys)"
- "The mail address of the Gnus maintainers.")
+ "semi-gnus-ja@meadow.scphys.kyoto-u.ac.jp (T-gnus Bugfixing Girls + Boys)"
+ "The mail address of the T-gnus maintainers.")
+
+(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*")
(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.
(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)
("message" :interactive t
message-send-and-exit message-yank-original)
+ ("babel" babel-as-string)
("nnmail" nnmail-split-fancy nnmail-article-group)
("nnvirtual" nnvirtual-catchup-group nnvirtual-convert-headers)
("rmailout" rmail-output rmail-output-to-rmail-file)
(gnus-summary-score-map keymap) gnus-score-save gnus-score-headers
gnus-current-score-file-nondirectory gnus-score-adaptive
gnus-score-find-trace gnus-score-file-name)
- ("gnus-cus" :interactive t gnus-group-customize gnus-score-customize)
+ ("gnus-cus" :interactive t gnus-custom-mode gnus-group-customize
+ gnus-score-customize)
("gnus-topic" :interactive t gnus-topic-mode)
- ("gnus-topic" gnus-topic-remove-group gnus-topic-set-parameters)
+ ("gnus-topic" gnus-topic-remove-group gnus-topic-set-parameters
+ gnus-subscribe-topics)
("gnus-salt" :interactive t gnus-pick-mode gnus-binary-mode)
("gnus-uu" (gnus-uu-extract-map keymap) (gnus-uu-mark-map keymap))
("gnus-uu" :interactive t
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-article-mail gnus-copy-article-buffer gnus-extended-version
+ gnus-following-method)
("gnus-msg" :interactive t
gnus-group-post-news gnus-group-mail gnus-summary-post-news
gnus-summary-followup gnus-summary-followup-with-original
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)
+ ("smiley" smiley-toggle-buffer)
("gnus-win" gnus-configure-windows gnus-add-configuration)
("gnus-sum" gnus-summary-insert-line gnus-summary-read-group
gnus-list-of-unread-articles gnus-list-of-read-articles
gnus-offer-save-summaries gnus-make-thread-indent-array
gnus-summary-exit gnus-update-read-articles gnus-summary-last-subject
gnus-summary-skip-intangible gnus-summary-article-number
- gnus-data-header gnus-data-find)
+ gnus-data-header gnus-data-find gnus-summary-jump-to-other-group)
("gnus-group" gnus-group-insert-group-line gnus-group-quit
gnus-group-list-groups gnus-group-first-unread-group
gnus-group-set-mode-line gnus-group-set-info gnus-group-save-newsrc
gnus-article-hide-headers gnus-article-hide-boring-headers
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-show-all-headers gnus-article-show-all
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)
("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-set-interval-time
+ gnus-offline-agent-expire)
+ ("miee" :interactive t gnspool-get-news
+ mail-spool-send news-spool-post)
+ ("international/mw32misc" define-process-argument-editing
+ general-process-argument-editing-function)
("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
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))))
+
+(eval-and-compile
+ (unless (featurep 'xemacs)
+ (autoload 'gnus-smiley-display "gnus-bitmap" nil t)
+ (autoload 'smiley-toggle-buffer "gnus-bitmap")
+ (autoload 'x-face-mule-gnus-article-display-x-face "x-face-mule")))
;;; gnus-sum.el thingies
"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))))))
(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)))
"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 ()
(setq skip (match-end 0)
depth (+ depth 1)))
depth))))
- ;; separate foreign select method from group name and collapse.
- ;; if method contains a server, collapse to non-domain server name,
- ;; otherwise collapse to select method
- (let* ((colon (string-match ":" group))
+ ;; Separate foreign select method from group name and collapse.
+ ;; If method contains a server, collapse to non-domain server name,
+ ;; otherwise collapse to select method.
+ (let* ((colon (string-match ":" group))
(server (and colon (substring group 0 colon)))
- (plus (and server (string-match "+" server))))
+ (plus (and server (string-match "+" server))))
(when server
- (cond (plus
- (setq foreign (substring server (+ 1 plus)
- (string-match "\\." server))
- group (substring group (+ 1 colon))))
- (t
- (setq foreign server
- group (substring group (+ 1 colon)))))
- (setq foreign (concat foreign ":"))))
- ;; collapse group name leaving LEVELS uncollapsed elements
- (while group
- (if (and (string-match "\\." group) (> levels 0))
- (setq name (concat name (substring group 0 1))
- group (substring group (match-end 0))
- levels (- levels 1)
- name (concat name "."))
- (setq name (concat foreign name group)
- group nil)))
- name))
+ (if plus
+ (setq foreign (substring server (+ 1 plus)
+ (string-match "\\." server))
+ group (substring group (+ 1 colon)))
+ (setq foreign server
+ group (substring group (+ 1 colon))))
+ (setq foreign (concat foreign ":")))
+ ;; Collapse group name leaving LEVELS uncollapsed elements
+ (let* ((glist (split-string group "\\."))
+ (glen (length glist))
+ res)
+ (setq levels (- glen levels))
+ (dolist (g glist)
+ (push (if (>= (decf levels) 0)
+ (if (zerop (length g))
+ ""
+ (substring g 0 1))
+ g)
+ res))
+ (concat foreign (mapconcat 'identity (nreverse res) "."))))))
(defun gnus-narrow-to-body ()
"Narrow to the body of an article."
(or gnus-override-method
(and (not group)
gnus-select-method)
+ (and (not (gnus-group-entry group)) ;; a new group
+ (gnus-group-name-to-method group))
(let ((info (or info (gnus-get-info group)))
method)
(if (or (not info)
Allow completion over sensible values."
(let* ((servers
(append gnus-valid-select-methods
+ (mapcar (lambda (i) (list (format "%s:%s" (caar i)
+ (cadar i))))
+ gnus-opened-servers)
gnus-predefined-server-alist
gnus-server-alist))
(method
((equal method "")
(setq method gnus-select-method))
((assoc method gnus-valid-select-methods)
- (list (intern method)
- (if (memq 'prompt-address
- (assoc method gnus-valid-select-methods))
- (read-string "Address: ")
- "")))
+ (let ((address (if (memq 'prompt-address
+ (assoc method gnus-valid-select-methods))
+ (read-string "Address: ")
+ "")))
+ (or (let ((opened gnus-opened-servers))
+ (while (and opened
+ (not (equal (format "%s:%s" method address)
+ (format "%s:%s" (caaar opened)
+ (cadaar opened)))))
+ (pop opened))
+ (caar opened))
+ (list (intern method) address))))
((assoc method servers)
method)
(t
(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)))
- (t
- (other-frame 1))))
- (gnus arg))
+ (static-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)