From 04dd7f60c8b498fb77fd4de6e5bea13806eff076 Mon Sep 17 00:00:00 2001 From: shuhei-k Date: Thu, 16 Jul 1998 11:55:58 +0000 Subject: [PATCH] Sync up with Semi-gnus 6.8.1. --- ChangeLog | 41 ++ GNUS-NEWS | 2 + README.semi | 31 +- lisp/ChangeLog | 102 +-- lisp/gnus-ems.el | 50 +- lisp/gnus-int.el | 7 +- lisp/gnus-msg.el | 74 ++ lisp/gnus-range.el | 2 +- lisp/gnus-salt.el | 60 +- lisp/gnus-sum.el | 30 +- lisp/gnus-topic.el | 2 + lisp/gnus-util.el | 92 +-- lisp/gnus-win.el | 5 + lisp/gnus.el | 9 +- lisp/message.el | 50 +- lisp/nnmail.el | 175 +++-- lisp/nntp.el | 13 +- texi/ChangeLog | 16 + texi/gnus-ja.texi | 1996 ++++++++++++++++++++++++++++++++++++++++++++++++++-- texi/gnus.texi | 302 ++++---- texi/message.texi | 6 +- 21 files changed, 2597 insertions(+), 468 deletions(-) diff --git a/ChangeLog b/ChangeLog index c42b533..80748cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,39 @@ +1998-07-16 Shuhei KOBAYASHI + + * Sync up with Semi-gnus 6.8.1. + +1998-07-16 Shuhei KOBAYASHI + + * lisp/gnus.el (gnus-version-number): Update to 6.8.1. + + * Sync up with Gnus 5.6.24. + +1998-07-10 Keiichi Suzuki + + * lisp/gnus-ems.el (gnus-mule-cite-add-face): Fix problem when multi + bytes charactors are used in cite prefix. (for Emacs 20.1 and 20.2) + (gnus-ems-redefine): for Emacs 20.1 and 20.2 + + * lisp/gnus-cite.el (gnus-cite-add-face): Abolish my last bogus change. + +1998-07-09 Keiichi Suzuki + + * lisp/gnus-cite.el (gnus-cite-add-face): Fix problem when multi + bytes charactors are used in cite prefix. + +1998-07-07 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "The End". + +1998-07-06 Keisuke Mori + + * texi/gnus-ja.texi: Add "Various". + +1998-07-06 Yoshiki Hayashi + + * texi/gnus-ja.texi: Add "Various". + * texi/gnus-ja.texi: Sync up with Gnus 5.6.22 + 1998-07-03 Shuhei KOBAYASHI * lisp/gnus-msg.el (gnus-extended-version): Add comments. @@ -10,6 +46,11 @@ * Sync up with Semi-gnus 6.8.0 and Gnus 5.6.23. +1998-07-02 MORIOKA Tomohiko + + * lisp/message.el (message-header-format-alist): Repair to use + `message-fill-references' for References. + 1998-07-01 MORIOKA Tomohiko * lisp/gnus-art.el (gnus-article-header-presentation-method): diff --git a/GNUS-NEWS b/GNUS-NEWS index 71e58c7..0c5b11a 100644 --- a/GNUS-NEWS +++ b/GNUS-NEWS @@ -98,3 +98,5 @@ updated by the `gnus-start-date-timer' command. *** Old dejanews archives can now be read by nnweb. *** Byte-compilation of user-specs now works under XEmacs. + +*** `gnus-posting-styles' has been re-activated. diff --git a/README.semi b/README.semi index b297fe7..48fb454 100644 --- a/README.semi +++ b/README.semi @@ -35,39 +35,18 @@ How to get? (via CVS) % cvs update [-r TAG] -Major tags are following: - - semi-gnus assigned to the latest stable version. It is - very conservative. - - for-semi-N1_N2 assigned to the latest stable version for SEMI - API N1.N2 (N1 and N2 are natural number). - (e.g. `for-semi-1_3' is for SEMI API 1.3) - - gnus-N1_N2_N3 assigned to gnus(Gnus) N1.N2.N3 - (e.g. `gnus-6_2_1' means gnus 6.2.1). - - larsi Original Gnus - - himi himi branch - - ichikawa ichikawa branch - - akr akr branch - - shuhei-k shuhei-k branch - Mail-Followup-To/Mail-Reply-To, gnus-cache fix. + See `README.branch' for information about branches and their tags. How to get? (via ftp) ===================== - Semi-daily snapshots are also available from + Snapshots are also available from - ftp://ftp.jaist.ac.jp/pub/GNU/elisp/semi-gnus/ + ftp://ftp.jaist.ac.jp/pub/GNU/elisp/semi-gnus/snapshots/ - NOTE: These snapshots are automatically created from our repository -if something was changed within a day, and will usually not be tested. + NOTE: These snapshots are automatically created from our repository, +and will usually not be tested. How to join development diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8113211..252c5dc 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,78 +1,96 @@ -Wed Jul 1 13:33:26 1998 Lars Magne Ingebrigtsen +Sat Jul 11 03:03:53 1998 Lars Magne Ingebrigtsen - * gnus.el: Gnus v5.6.23 is released. + * gnus.el: Gnus v5.6.24 is released. -Wed Jul 1 12:52:32 1998 Lars Magne Ingebrigtsen +Fri Jul 10 04:23:24 1998 Hallvard B. Furuseth - * nntp.el (nntp-record-command): Give more precise time info. - (nntp-next-result-arrived-p): Look for the end of error lines. + * gnus-util.el (gnus-parse-netrc): Allow "default" values. -Wed Jul 1 12:24:06 1998 François Pinard +Fri Jul 10 04:15:35 1998 Lars Magne Ingebrigtsen - * gnus-util.el (gnus-delete-if): Would do the opposite. + * nntp.el (nntp-server-opened-hook): Doc change. -Wed Jul 1 01:53:31 1998 Lars Magne Ingebrigtsen +Fri Jul 10 03:03:48 1998 François Pinard - * gnus-sum.el (gnus-build-sparse-threads): Didn't work at all. + * gnus-sum.el (gnus-summary-respool-trace): New command and + keystroke. -Tue Jun 30 15:56:54 1998 Lars Magne Ingebrigtsen +Fri Jul 10 02:18:01 1998 Lars Magne Ingebrigtsen - * nntp.el (nntp-send-authinfo): Store the user name. - (nntp-authinfo-user): New variable. + * gnus-util.el (gnus-prin1): Bind print-escape-multibyte to nil. - * gnus-sum.el (gnus-summary-limit-mark-excluded-as-read): Would - mark some articles as unread. +Mon Jul 6 01:02:59 1998 Simon Josefsson - * gnus-agent.el (gnus-agent-expire): Don't sort lines. + * gnus-range.el (gnus-sorted-complement): Fix comments. -Tue Jun 30 15:56:31 1998 Mike McEwan +Thu Jul 2 11:16:14 1998 Lars Magne Ingebrigtsen - * gnus-agent.el (gnus-agent-expire): Use a fresh hash table. + * gnus-sum.el (gnus-summary-iterate): New macro. -Mon Jun 29 22:49:49 1998 Lars Magne Ingebrigtsen + * message.el (message-pop-to-buffer): Clone locals. - * gnus.el: Gnus v5.6.22 is released. + * gnus-msg.el (gnus-posting-styles): Reinstated. + (gnus-posting-style-alist): Ditto. -Mon Jun 29 21:22:46 1998 Lars Magne Ingebrigtsen +Wed Jul 1 18:02:31 1998 Lars Magne Ingebrigtsen - * gnus-salt.el (gnus-pick-mode-map): Remove gnus-mouse. + * gnus-int.el (gnus-get-function): Set funct to nil. - * gnus-sum.el (gnus-dependencies-add-header): `debug' left in. - Eh. Eh. +1998-07-01 16:57:38 Simon Josefsson - * gnus-salt.el (gnus-summary-pick-line-format): Missing %.- + * gnus-int.el (gnus-get-function): returned non-nil when + function wasn't bound, if noerror=t - * gnus-topic.el (gnus-topic-rename): Fix error message. +Wed Jul 1 17:30:41 1998 Lars Magne Ingebrigtsen -Sun Jun 28 14:32:08 1998 Lars Magne Ingebrigtsen + * gnus-topic.el (gnus-topic-mode-map): Bind TAB and M-TAB. - * gnus-spec.el (gnus-face-face-function): Double quoting removed. + * gnus-sum.el (gnus-build-sparse-threads): Make sure no dates are + nil. + (gnus-summary-limit-mark-excluded-as-read): Use the intersection. -Sun Jun 28 09:54:52 1998 Lars Magne Ingebrigtsen + * gnus-msg.el (gnus-setup-message): Clone all local variables from + the summary buffer. - * gnus.el: Gnus v5.6.21 is released. +Wed Jul 1 14:03:52 1998 Richard Stallman -Sun Jun 28 08:51:39 1998 Lars Magne Ingebrigtsen + * message.el (message-cite-original): Use mail-citation-hook. + (message-cite-function): Ditto. - * gnus-sum.el (gnus-summary-edit-article-done): Copy the buffer to - a temp buffer before replacing. +Wed Jul 1 14:00:53 1998 Rajappa Iyer - * gnus-msg.el (gnus-post-news): Treat broken-reply-to in - followups. + * gnus-salt.el (gnus-pick-mode-map): Changed keymap. - * gnus-sum.el (gnus-summary-goto-subject): Position point. +Wed Jul 1 13:33:26 1998 Lars Magne Ingebrigtsen -Sat Jun 27 09:19:20 1998 Lars Magne Ingebrigtsen + * gnus.el: Gnus v5.6.23 is released. - * gnus-demon.el (gnus-util): Required. +Wed Jul 1 12:52:32 1998 Lars Magne Ingebrigtsen - * gnus-score.el (gnus-score-body): Message fix. + * nntp.el (nntp-record-command): Give more precise time info. + (nntp-next-result-arrived-p): Look for the end of error lines. - * gnus-group.el (gnus-group-highlight-line): Use it. +Wed Jul 1 12:24:06 1998 François Pinard - * gnus-util.el - (gnus-put-text-properties-excluding-characters-with-faces): New - function. + * gnus-util.el (gnus-delete-if): Would do the opposite. + +Wed Jul 1 01:53:31 1998 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-build-sparse-threads): Didn't work at all. + +Tue Jun 30 15:56:54 1998 Lars Magne Ingebrigtsen + + * nntp.el (nntp-send-authinfo): Store the user name. + (nntp-authinfo-user): New variable. + + * gnus-sum.el (gnus-summary-limit-mark-excluded-as-read): Would + mark some articles as unread. + + * gnus-agent.el (gnus-agent-expire): Don't sort lines. + +Tue Jun 30 15:56:31 1998 Mike McEwan + + * gnus-agent.el (gnus-agent-expire): Use a fresh hash table. Mon Jun 29 22:49:49 1998 Lars Magne Ingebrigtsen diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el index 7328093..8138113 100644 --- a/lisp/gnus-ems.el +++ b/lisp/gnus-ems.el @@ -58,9 +58,7 @@ from to) (goto-line number) (unless (eobp) ; Sometimes things become confused (broken). - (if (boundp 'MULE) - (forward-char (chars-in-string prefix)) - (forward-char (length prefix))) + (forward-char (chars-in-string prefix)) (skip-chars-forward " \t") (setq from (point)) (end-of-line 1) @@ -224,12 +222,8 @@ ;; `emacs-version'. In this case, implementation for XEmacs/mule ;; may be able to share between XEmacs and XEmacs/mule. - (defalias 'gnus-truncate-string 'truncate-string) - (defvar gnus-summary-display-table nil "Display table used in summary mode buffers.") - (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face) - (fset 'gnus-max-width-function 'gnus-mule-max-width-function) (fset 'gnus-summary-set-display-table (lambda ())) (fset 'gnus-encode-coding-string 'encode-coding-string) (fset 'gnus-decode-coding-string 'decode-coding-string) @@ -245,23 +239,31 @@ (delq 'long-lines (delq 'control-chars gnus-check-before-posting)))) - (defun gnus-summary-line-format-spec () - (insert gnus-tmp-unread gnus-tmp-replied - gnus-tmp-score-char gnus-tmp-indentation) - (put-text-property - (point) - (progn - (insert - gnus-tmp-opening-bracket - (format "%4d: %-20s" - gnus-tmp-lines - (if (> (length gnus-tmp-name) 20) - (truncate-string gnus-tmp-name 20) - gnus-tmp-name)) - gnus-tmp-closing-bracket) - (point)) - gnus-mouse-face-prop gnus-mouse-face) - (insert " " gnus-tmp-subject-or-nil "\n")) + (unless (and (fboundp 'set-buffer-multibyte) + (subrp (symbol-function 'set-buffer-multibyte))) + ;; For Emacs 20.1 and 20.2 + (defalias 'gnus-truncate-string 'truncate-string) + (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face) + (fset 'gnus-max-width-function 'gnus-mule-max-width-function) + + (defun gnus-summary-line-format-spec () + (insert gnus-tmp-unread gnus-tmp-replied + gnus-tmp-score-char gnus-tmp-indentation) + (put-text-property + (point) + (progn + (insert + gnus-tmp-opening-bracket + (format "%4d: %-20s" + gnus-tmp-lines + (if (> (length gnus-tmp-name) 20) + (truncate-string gnus-tmp-name 20) + gnus-tmp-name)) + gnus-tmp-closing-bracket) + (point)) + gnus-mouse-face-prop gnus-mouse-face) + (insert " " gnus-tmp-subject-or-nil "\n")) + ) ))) (defun gnus-region-active-p () diff --git a/lisp/gnus-int.el b/lisp/gnus-int.el index 3246bb4..6a641aa 100644 --- a/lisp/gnus-int.el +++ b/lisp/gnus-int.el @@ -150,9 +150,10 @@ If it is down, start it up (again)." ;; Maybe complain if there is no function. (unless (fboundp func) (require (car method)) - (when (and (not (fboundp func)) - (not noerror)) - (error "No such function: %s" func))) + (when (not (fboundp func)) + (if noerror + (setq func nil) + (error "No such function: %s" func)))) func)) diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index 261494f..3a11671 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -98,6 +98,17 @@ the second with the current group name.") (defvar gnus-bug-create-help-buffer t "*Should we create the *Gnus Help Bug* buffer?") +(defvar gnus-posting-styles nil + "*Alist of styles to use when posting.") + +(defvar gnus-posting-style-alist + '((organization . message-user-organization) + (signature . message-signature) + (signature-file . message-signature-file) + (address . user-mail-address) + (name . user-full-name)) + "*Mapping from style parameters to variables.") + ;;; Internal variables. (defvar gnus-message-buffer "*Mail Gnus*") @@ -178,6 +189,7 @@ Thank you for your help in stamping out bugs. (copy-sequence message-header-setup-hook))) (add-hook 'message-header-setup-hook 'gnus-inews-insert-gcc) (add-hook 'message-header-setup-hook 'gnus-inews-insert-archive-gcc) + (add-hook 'message-mode-hook 'gnus-configure-posting-styles) (unwind-protect (progn ,@forms) @@ -1022,6 +1034,68 @@ this is a reply." (insert " "))) (insert "\n"))))))) +;;; Posting styles. + +(defun gnus-configure-posting-styles () + "Configure posting styles according to `gnus-posting-styles'." + (let ((styles gnus-posting-styles) + (gnus-newsgroup-name (or gnus-newsgroup-name "")) + style match variable attribute value value-value) + ;; Go through all styles and look for matches. + (while styles + (setq style (pop styles) + match (pop style)) + (when (cond ((stringp match) + ;; Regexp string match on the group name. + (string-match match gnus-newsgroup-name)) + ((or (symbolp match) + (gnus-functionp match)) + (cond ((gnus-functionp match) + ;; Function to be called. + (funcall match)) + ((boundp match) + ;; Variable to be checked. + (symbol-value match)))) + ((listp match) + ;; This is a form to be evaled. + (eval match))) + ;; We have a match, so we set the variables. + (while style + (setq attribute (pop style) + value (cadr attribute) + variable nil) + ;; We find the variable that is to be modified. + (if (and (not (stringp (car attribute))) + (not (setq variable (cdr (assq (car attribute) + gnus-posting-style-alist))))) + (message "Couldn't find attribute %s" (car attribute)) + ;; We get the value. + (setq value-value + (cond ((stringp value) + value) + ((or (symbolp value) + (gnus-functionp value)) + (cond ((gnus-functionp value) + (funcall value)) + ((boundp value) + (symbol-value value)))) + ((listp value) + (eval value)))) + (if variable + (progn + ;; This is an ordinary variable. + (make-local-variable variable) + (set variable value-value)) + ;; This is a header to be added to the headers when + ;; posting. + (when value-value + (make-local-variable message-required-mail-headers) + (make-local-variable message-required-news-headers) + (push (cons (car attribute) value-value) + message-required-mail-headers) + (push (cons (car attribute) value-value) + message-required-news-headers))))))))) + ;;; Allow redefinition of functions. (gnus-ems-redefine) diff --git a/lisp/gnus-range.el b/lisp/gnus-range.el index 799e883..672e726 100644 --- a/lisp/gnus-range.el +++ b/lisp/gnus-range.el @@ -55,7 +55,7 @@ list1)) (defun gnus-sorted-complement (list1 list2) - "Return a list of elements of LIST1 that do not appear in LIST2. + "Return a list of elements that are in LIST1 or LIST2 but not both. Both lists have to be sorted over <." (let (out) (if (or (null list1) (null list2)) diff --git a/lisp/gnus-salt.el b/lisp/gnus-salt.el index c8280b2..00ca021 100644 --- a/lisp/gnus-salt.el +++ b/lisp/gnus-salt.el @@ -73,21 +73,10 @@ It accepts the same format specs that `gnus-summary-line-format' does." (gnus-define-keys gnus-pick-mode-map " " gnus-pick-next-page - "u" gnus-summary-unmark-as-processable - "." gnus-pick-article + "u" gnus-pick-unmark-article-or-thread + "." gnus-pick-article-or-thread gnus-down-mouse-2 gnus-pick-mouse-pick-region "\r" gnus-pick-start-reading - "t" gnus-uu-mark-thread - "T" gnus-uu-unmark-thread - "U" gnus-summary-unmark-all-processable - "v" gnus-uu-mark-over - "r" gnus-uu-mark-region - "R" gnus-uu-unmark-region - "e" gnus-uu-mark-by-regexp - "E" gnus-uu-mark-by-regexp - "b" gnus-uu-mark-buffer - "B" gnus-uu-unmark-buffer - "X" gnus-pick-start-reading )) (defun gnus-pick-make-menu-bar () @@ -172,21 +161,48 @@ If given a prefix, mark all unpicked articles as read." (gnus-summary-next-group))) (error "No articles have been picked")))) +(defun gnus-pick-goto-article (arg) + "Go to the article number indicated by ARG. If ARG is an invalid +article number, then stay on current line." + (let (pos) + (save-excursion + (goto-char (point-min)) + (when (zerop (forward-line (1- (prefix-numeric-value arg)))) + (setq pos (point)))) + (if (not pos) + (gnus-error 2 "No such line: %s" arg) + (goto-char pos)))) + (defun gnus-pick-article (&optional arg) - "Pick the article on the current line. + "Pick the article on the current line. If ARG, pick the article on that line instead." (interactive "P") (when arg - (let (pos) - (save-excursion - (goto-char (point-min)) - (when (zerop (forward-line (1- (prefix-numeric-value arg)))) - (setq pos (point)))) - (if (not pos) - (gnus-error 2 "No such line: %s" arg) - (goto-char pos)))) + (gnus-pick-goto-article arg)) (gnus-summary-mark-as-processable 1)) +(defun gnus-pick-article-or-thread (&optional arg) + "If gnus-thread-hide-subtree is t, then pick the thread on the current line. +Otherwise pick the article on the current line. +If ARG, pick the article/thread on that line instead." + (interactive "P") + (when arg + (gnus-pick-goto-article arg)) + (if gnus-thread-hide-subtree + (gnus-uu-mark-thread) + (gnus-summary-mark-as-processable 1))) + +(defun gnus-pick-unmark-article-or-thread (&optional arg) + "If gnus-thread-hide-subtree is t, then unmark the thread on current line. +Otherwise unmark the article on current line. +If ARG, unmark thread/article on that line instead." + (interactive "P") + (when arg + (gnus-pick-goto-article arg)) + (if gnus-thread-hide-subtree + (gnus-uu-unmark-thread) + (gnus-summary-unmark-as-processable 1))) + (defun gnus-pick-mouse-pick (e) (interactive "e") (mouse-set-point e) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index cd14b36..a713715 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -1436,6 +1436,7 @@ increase the score of each group you read." "c" gnus-summary-copy-article "B" gnus-summary-crosspost-article "q" gnus-summary-respool-query + "t" gnus-summary-respool-trace "i" gnus-summary-import-article "p" gnus-summary-article-posted-p) @@ -1557,6 +1558,7 @@ increase the score of each group you read." (gnus-check-backend-function 'request-expire-articles gnus-newsgroup-name)] ["Query respool" gnus-summary-respool-query t] + ["Trace respool" gnus-summary-respool-trace t] ["Delete expirable articles" gnus-summary-expire-articles-now (gnus-check-backend-function 'request-expire-articles gnus-newsgroup-name)]) @@ -2984,7 +2986,7 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise." (when (gnus-dependencies-add-header (make-full-mail-header gnus-reffed-article-number - (nth 3 relation) "" (nth 4 relation) + (nth 3 relation) "" (or (nth 4 relation) "") (nth 1 relation) (or (nth 2 relation) "") 0 0 "") gnus-newsgroup-dependencies nil) @@ -4688,6 +4690,19 @@ current article will be taken into consideration." ;; Just return the current article. (list (gnus-summary-article-number)))))) +(defmacro gnus-summary-iterate (arg &rest forms) + "Iterate over the process/prefixed articles and do FORMS. +ARG is the interactive prefix given to the command. FORMS will be +executed with point over the summary line of the articles." + (let ((articles (make-symbol "gnus-summary-iterate-articles"))) + `(let ((,articles (gnus-summary-work-articles ,arg))) + (while ,articles + (gnus-summary-goto-subject (car ,articles)) + ,@forms)))) + +(put 'gnus-summary-iterate 'lisp-indent-function 1) +(put 'gnus-summary-iterate 'edebug-form-spec '(form body)) + (defun gnus-summary-save-process-mark () "Push the current set of process marked articles on the stack." (interactive) @@ -6089,8 +6104,7 @@ If ALL, mark even excluded ticked and dormants as read." (sort gnus-newsgroup-limit '<))) article) (setq gnus-newsgroup-unreads - (delete-duplicates (append gnus-newsgroup-unreads - gnus-newsgroup-limit))) + (gnus-intersection gnus-newsgroup-unreads gnus-newsgroup-limit)) (if all (setq gnus-newsgroup-dormant nil gnus-newsgroup-marked nil @@ -7399,7 +7413,7 @@ groups." ;;; Respooling -(defun gnus-summary-respool-query (&optional silent) +(defun gnus-summary-respool-query (&optional silent trace) "Query where the respool algorithm would put this article." (interactive) (let (gnus-mark-article-hook) @@ -7408,7 +7422,7 @@ groups." (set-buffer gnus-original-article-buffer) (save-restriction (message-narrow-to-head) - (let ((groups (nnmail-article-group 'identity))) + (let ((groups (nnmail-article-group 'identity trace))) (unless silent (if groups (message "This message would go to %s" @@ -7416,6 +7430,12 @@ groups." (message "This message would go to no groups")) groups)))))) +(defun gnus-summary-respool-trace () + "Trace where the respool algorithm would put this article. +Display a buffer showing all fancy splitting patterns which matched." + (interactive) + (gnus-summary-respool-query nil t)) + ;; Summary marking commands. (defun gnus-summary-kill-same-subject-and-select (&optional unmark) diff --git a/lisp/gnus-topic.el b/lisp/gnus-topic.el index 6880f63..e9f7ee5 100644 --- a/lisp/gnus-topic.el +++ b/lisp/gnus-topic.el @@ -904,6 +904,8 @@ articles in the topic and its subtopics." "Gp" gnus-topic-edit-parameters "#" gnus-topic-mark-topic "\M-#" gnus-topic-unmark-topic + [tab] gnus-topic-indent + [M-tab] gnus-topic-unindent gnus-mouse-2 gnus-mouse-pick-topic) ;; Define a new submap. diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index 09dc5c9..23dd313 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -580,6 +580,7 @@ Timezone package is used." Bind `print-quoted' and `print-readably' to t while printing." (let ((print-quoted t) (print-readably t) + (print-escape-multibyte nil) print-level print-length) (prin1 form (current-buffer)))) @@ -878,50 +879,59 @@ ARG is passed to the first function." "password" "account" "macdef" "force")) alist elem result pair) (nnheader-set-temp-buffer " *netrc*") - (set-syntax-table gnus-netrc-syntax-table) - (insert-file-contents file) - (goto-char (point-min)) - ;; Go through the file, line by line. - (while (not (eobp)) - (narrow-to-region (point) (gnus-point-at-eol)) - ;; For each line, get the tokens and values. - (while (not (eobp)) - (skip-chars-forward "\t ") - (unless (eobp) - (setq elem (buffer-substring - (point) (progn (forward-sexp 1) (point)))) - (cond - ((equal elem "macdef") - ;; We skip past the macro definition. + (unwind-protect + (progn + (set-syntax-table gnus-netrc-syntax-table) + (insert-file-contents file) + (goto-char (point-min)) + ;; Go through the file, line by line. + (while (not (eobp)) + (narrow-to-region (point) (gnus-point-at-eol)) + ;; For each line, get the tokens and values. + (while (not (eobp)) + (skip-chars-forward "\t ") + (unless (eobp) + (setq elem (buffer-substring + (point) (progn (forward-sexp 1) (point)))) + (cond + ((equal elem "macdef") + ;; We skip past the macro definition. + (widen) + (while (and (zerop (forward-line 1)) + (looking-at "$"))) + (narrow-to-region (point) (point))) + ((member elem tokens) + ;; Tokens that don't have a following value are ignored, + ;; except "default". + (when (and pair (or (cdr pair) + (equal (car pair) "default"))) + (push pair alist)) + (setq pair (list elem))) + (t + ;; Values that haven't got a preceding token are ignored. + (when pair + (setcdr pair elem) + (push pair alist) + (setq pair nil)))))) + (if alist + (push (nreverse alist) result)) + (setq alist nil + pair nil) (widen) - (while (and (zerop (forward-line 1)) - (looking-at "$"))) - (narrow-to-region (point) (point))) - ((member elem tokens) - ;; Tokens that don't have a following value are ignored. - (when (and pair (cdr pair)) - (push pair alist)) - (setq pair (list elem))) - (t - ;; Values that haven't got a preceding token are ignored. - (when pair - (setcdr pair elem) - (push pair alist) - (setq pair nil)))))) - (push alist result) - (setq alist nil - pair nil) - (widen) - (forward-line 1)) - result)))) + (forward-line 1)) + (nreverse result)) + (kill-buffer " *netrc*")))))) (defun gnus-netrc-machine (list machine) - "Return the netrc values from LIST for MACHINE." - (while (and list - (not (equal (cdr (assoc "machine" (car list))) machine))) - (pop list)) - (when list - (car list))) + "Return the netrc values from LIST for MACHINE or for the default entry." + (let ((rest list)) + (while (and list + (not (equal (cdr (assoc "machine" (car list))) machine))) + (pop list)) + (car (or list + (progn (while (and rest (not (assoc "default" (car rest)))) + (pop rest)) + rest))))) (defun gnus-netrc-get (alist type) "Return the value of token TYPE from ALIST." diff --git a/lisp/gnus-win.el b/lisp/gnus-win.el index 5c4eb52..803d2ea 100644 --- a/lisp/gnus-win.el +++ b/lisp/gnus-win.el @@ -154,6 +154,10 @@ (vertical 1.0 (summary 0.5 point) ("*Score Words*" 1.0))) + (split-trace + (vertical 1.0 + (summary 0.5 point) + ("*Split Trace*" 1.0))) (category (vertical 1.0 (category 1.0))) @@ -185,6 +189,7 @@ See the Gnus manual for an explanation of the syntax used.") (picons . gnus-picons-buffer-name) (tree . gnus-tree-buffer) (score-trace . "*Score Trace*") + (split-trace . "*Split Trace*") (info . gnus-info-buffer) (category . gnus-category-buffer) (article-copy . gnus-article-copy) diff --git a/lisp/gnus.el b/lisp/gnus.el index 3bcaec3..ca68c38 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -250,11 +250,11 @@ is restarted, and sometimes reloaded." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "6.8.0" +(defconst gnus-version-number "6.8.1" "Version number for this version of gnus.") (defconst gnus-version - (format "Semi-gnus %s (based on Gnus 5.6.23; for SEMI 1.8/FLIM 1.8)" + (format "Semi-gnus %s (based on Gnus 5.6.24; for SEMI 1.8/FLIM 1.8)" gnus-version-number) "Version string for this version of gnus.") @@ -1624,8 +1624,9 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") gnus-uu-decode-binhex gnus-uu-decode-uu-view gnus-uu-decode-uu-and-save-view gnus-uu-decode-unshar-view gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view - gnus-uu-decode-binhex-view) - ("gnus-uu" gnus-uu-delete-work-dir gnus-quote-arg-for-sh-or-csh) + gnus-uu-decode-binhex-view 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 diff --git a/lisp/message.el b/lisp/message.el index 43b745b..69a8593 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -555,16 +555,12 @@ Used by `message-yank-original' via `message-yank-cite'." :type 'integer) ;;;###autoload -(defcustom message-cite-function - (if (and (boundp 'mail-citation-hook) - mail-citation-hook) - mail-citation-hook - 'message-cite-original) +(defcustom message-cite-function 'message-cite-original "*Function for citing an original message. -Pre-defined functions include `message-cite-original' and -`message-cite-original-without-signature'." +Predefined functions include `message-cite-original' and +`message-cite-original-without-signature'. +Note that `message-cite-original' uses `mail-citation-hook' if that is non-nil." :type '(radio (function-item message-cite-original) - (function-item message-cite-original-without-signature) (function-item sc-cite-original) (function :tag "Other")) :group 'message-insertion) @@ -1860,19 +1856,22 @@ prefix, and don't delete any headers." (defun message-cite-original () "Cite function in the standard Message manner." - (let ((start (point)) - (functions - (when message-indent-citation-function - (if (listp message-indent-citation-function) - message-indent-citation-function - (list message-indent-citation-function))))) - (goto-char start) - (while functions - (funcall (pop functions))) - (when message-citation-line-function - (unless (bolp) - (insert "\n")) - (funcall message-citation-line-function)))) + (if (and (boundp 'mail-citation-hook) + mail-citation-hook) + (run-hooks 'mail-citation-hook) + (let ((start (point)) + (functions + (when message-indent-citation-function + (if (listp message-indent-citation-function) + message-indent-citation-function + (list message-indent-citation-function))))) + (goto-char start) + (while functions + (funcall (pop functions))) + (when message-citation-line-function + (unless (bolp) + (insert "\n")) + (funcall message-citation-line-function))))) (defun message-insert-citation-line () "Function that inserts a simple citation line." @@ -3241,7 +3240,8 @@ Headers already prepared in the buffer are not modified." (defun message-pop-to-buffer (name) "Pop to buffer NAME, and warn if it already exists and is modified." - (let ((buffer (get-buffer name))) + (let ((buffer (get-buffer name)) + (cur (current-buffer))) (if (and buffer (buffer-name buffer)) (progn @@ -3250,9 +3250,9 @@ Headers already prepared in the buffer are not modified." (not (y-or-n-p "Message already being composed; erase? "))) (error "Message being composed"))) - (set-buffer (pop-to-buffer name)))) - (erase-buffer) - (message-mode)) + (set-buffer (pop-to-buffer name))) + (erase-buffer) + (message-mode))) (defun message-do-send-housekeeping () "Kill old message buffers." diff --git a/lisp/nnmail.el b/lisp/nnmail.el index f44cb70..e70b065 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -468,6 +468,9 @@ parameter. It should return nil, `warn' or `delete'." (defvar nnmail-internal-password nil) +(defvar nnmail-split-tracing nil) +(defvar nnmail-split-trace nil) + (defconst nnmail-version "nnmail 1.0" @@ -1043,7 +1046,7 @@ FUNC will be called with the buffer narrowed to each mail." (funcall exit-func)) (kill-buffer (current-buffer))))) -(defun nnmail-article-group (func) +(defun nnmail-article-group (func &optional trace) "Look at the headers and return an alist of groups that match. FUNC will be called with the group name to determine the article number." (let ((methods nnmail-split-methods) @@ -1082,6 +1085,8 @@ FUNC will be called with the group name to determine the article number." ;; Allow washing. (goto-char (point-min)) (run-hooks 'nnmail-split-hook) + (when (setq nnmail-split-tracing trace) + (setq nnmail-split-trace nil)) (if (and (symbolp nnmail-split-methods) (fboundp nnmail-split-methods)) (let ((split @@ -1141,6 +1146,18 @@ FUNC will be called with the group name to determine the article number." (setq group-art (list (cons (car method) (funcall func (car method))))))))) + ;; Produce a trace if non-empty. + (when (and trace nnmail-split-trace) + (let ((trace (nreverse nnmail-split-trace)) + (restore (current-buffer))) + (nnheader-set-temp-buffer "*Split Trace*") + (gnus-add-current-to-buffer-list) + (while trace + (insert (car trace) "\n") + (setq trace (cdr trace))) + (goto-char (point-min)) + (gnus-configure-windows 'split-trace) + (set-buffer restore))) ;; See whether the split methods returned `junk'. (if (equal group-art '(junk)) nil @@ -1237,81 +1254,87 @@ See the documentation for the variable `nnmail-split-fancy' for documentation." (defun nnmail-split-it (split) ;; Return a list of groups matching SPLIT. - (cond - ;; nil split - ((null split) - nil) - - ;; A group name. Do the \& and \N subs into the string. - ((stringp split) - (list (nnmail-expand-newtext split))) - - ;; Junk the message. - ((eq split 'junk) - (list 'junk)) - - ;; Builtin & operation. - ((eq (car split) '&) - (apply 'nconc (mapcar 'nnmail-split-it (cdr split)))) - - ;; Builtin | operation. - ((eq (car split) '|) - (let (done) - (while (and (not done) (cdr split)) - (setq split (cdr split) - done (nnmail-split-it (car split)))) - done)) - - ;; Builtin : operation. - ((eq (car split) ':) - (nnmail-split-it (save-excursion (eval (cdr split))))) - - ;; Check the cache for the regexp for this split. - ;; FIX FIX FIX could avoid calling assq twice here - ((assq split nnmail-split-cache) - (goto-char (point-max)) - ;; FIX FIX FIX problem with re-search-backward is that if you have - ;; a split: (from "foo-\\(bar\\|baz\\)@gnus.org "mail.foo.\\1") - ;; and someone mails a message with 'To: foo-bar@gnus.org' and - ;; 'CC: foo-baz@gnus.org', we'll pick 'mail.foo.baz' as the group - ;; if the cc line is a later header, even though the other choice - ;; is probably better. Also, this routine won't do a crosspost - ;; when there are two different matches. - ;; I guess you could just make this more determined, and it could - ;; look for still more matches prior to this one, and recurse - ;; on each of the multiple matches hit. Of course, then you'd - ;; want to make sure that nnmail-article-group or nnmail-split-fancy - ;; removed duplicates, since there might be more of those. - ;; I guess we could also remove duplicates in the & split case, since - ;; that's the only thing that can introduce them. - (when (re-search-backward (cdr (assq split nnmail-split-cache)) nil t) - ;; Someone might want to do a \N sub on this match, so get the - ;; correct match positions. - (goto-char (match-end 0)) - (let ((value (nth 1 split))) - (re-search-backward (if (symbolp value) - (cdr (assq value nnmail-split-abbrev-alist)) - value) - (match-end 1))) - (nnmail-split-it (nth 2 split)))) - - ;; Not in cache, compute a regexp for the field/value pair. - (t - (let* ((field (nth 0 split)) - (value (nth 1 split)) - (regexp (concat "^\\(\\(" - (if (symbolp field) - (cdr (assq field nnmail-split-abbrev-alist)) - field) - "\\):.*\\)\\<\\(" - (if (symbolp value) - (cdr (assq value nnmail-split-abbrev-alist)) - value) - "\\)\\>"))) - (push (cons split regexp) nnmail-split-cache) - ;; Now that it's in the cache, just call nnmail-split-it again - ;; on the same split, which will find it immediately in the cache. - (nnmail-split-it split))))) + (let (cached-pair) + (cond + ;; nil split + ((null split) + nil) + + ;; A group name. Do the \& and \N subs into the string. + ((stringp split) + (when nnmail-split-tracing + (push (format "\"%s\"" split) nnmail-split-trace)) + (list (nnmail-expand-newtext split))) + + ;; Junk the message. + ((eq split 'junk) + (when nnmail-split-tracing + (push "junk" nnmail-split-trace)) + (list 'junk)) + + ;; Builtin & operation. + ((eq (car split) '&) + (apply 'nconc (mapcar 'nnmail-split-it (cdr split)))) + + ;; Builtin | operation. + ((eq (car split) '|) + (let (done) + (while (and (not done) (cdr split)) + (setq split (cdr split) + done (nnmail-split-it (car split)))) + done)) + + ;; Builtin : operation. + ((eq (car split) ':) + (nnmail-split-it (save-excursion (eval (cdr split))))) + + ;; Check the cache for the regexp for this split. + ((setq cached-pair (assq split nnmail-split-cache)) + (goto-char (point-max)) + ;; FIX FIX FIX problem with re-search-backward is that if you have + ;; a split: (from "foo-\\(bar\\|baz\\)@gnus.org "mail.foo.\\1") + ;; and someone mails a message with 'To: foo-bar@gnus.org' and + ;; 'CC: foo-baz@gnus.org', we'll pick 'mail.foo.baz' as the group + ;; if the cc line is a later header, even though the other choice + ;; is probably better. Also, this routine won't do a crosspost + ;; when there are two different matches. + ;; I guess you could just make this more determined, and it could + ;; look for still more matches prior to this one, and recurse + ;; on each of the multiple matches hit. Of course, then you'd + ;; want to make sure that nnmail-article-group or nnmail-split-fancy + ;; removed duplicates, since there might be more of those. + ;; I guess we could also remove duplicates in the & split case, since + ;; that's the only thing that can introduce them. + (when (re-search-backward (cdr cached-pair) nil t) + (when nnmail-split-tracing + (push (cdr cached-pair) nnmail-split-trace)) + ;; Someone might want to do a \N sub on this match, so get the + ;; correct match positions. + (goto-char (match-end 0)) + (let ((value (nth 1 split))) + (re-search-backward (if (symbolp value) + (cdr (assq value nnmail-split-abbrev-alist)) + value) + (match-end 1))) + (nnmail-split-it (nth 2 split)))) + + ;; Not in cache, compute a regexp for the field/value pair. + (t + (let* ((field (nth 0 split)) + (value (nth 1 split)) + (regexp (concat "^\\(\\(" + (if (symbolp field) + (cdr (assq field nnmail-split-abbrev-alist)) + field) + "\\):.*\\)\\<\\(" + (if (symbolp value) + (cdr (assq value nnmail-split-abbrev-alist)) + value) + "\\)\\>"))) + (push (cons split regexp) nnmail-split-cache) + ;; Now that it's in the cache, just call nnmail-split-it again + ;; on the same split, which will find it immediately in the cache. + (nnmail-split-it split)))))) (defun nnmail-expand-newtext (newtext) (let ((len (length newtext)) diff --git a/lisp/nntp.el b/lisp/nntp.el index 763c614..970f56b 100644 --- a/lisp/nntp.el +++ b/lisp/nntp.el @@ -45,13 +45,11 @@ (defvoo nntp-server-opened-hook '(nntp-send-mode-reader) "*Hook used for sending commands to the server at startup. The default value is `nntp-send-mode-reader', which makes an innd -server spawn an nnrpd server. Another useful function to put in this -hook might be `nntp-send-authinfo', which will prompt for a password -to allow posting from the server. Note that this is only necessary to -do on servers that use strict access control.") +server spawn an nnrpd server.") (defvoo nntp-authinfo-function 'nntp-send-authinfo - "Function used to send AUTHINFO to the server.") + "Function used to send AUTHINFO to the server. +It is called with no parameters.") (defvoo nntp-server-action-alist '(("nntpd 1\\.5\\.11t" @@ -749,7 +747,10 @@ reading." "Send the AUTHINFO to the nntp server. It will look in the \"~/.authinfo\" file for matching entries. If nothing suitable is found there, it will prompt for a user name -and a password." +and a password. + +If SEND-IF-FORCE, only send authinfo to the server if the +.authinfo file has the FORCE token." (let* ((list (gnus-parse-netrc nntp-authinfo-file)) (alist (gnus-netrc-machine list nntp-address)) (force (gnus-netrc-get alist "force")) diff --git a/texi/ChangeLog b/texi/ChangeLog index 8738e9d..f54aabe 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,19 @@ +Fri Jul 10 04:26:23 1998 Lars Magne Ingebrigtsen + + * gnus.texi (NNTP): Addition. + +Sat Jul 4 14:24:29 1998 Lars Magne Ingebrigtsen + + * gnus.texi (Gnus Utility Functions): Addition. + +Thu Jul 2 11:37:51 1998 Lars Magne Ingebrigtsen + + * gnus.texi (Posting Styles): Ununcommented. + +Wed Jul 1 17:57:54 1998 Lars Magne Ingebrigtsen + + * gnus.texi (Topic Commands): Addition. + Tue Jun 30 16:11:27 1998 Lars Magne Ingebrigtsen * gnus.texi (Topic Commands): Addition. diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index c0dee20..a3b1c77 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus-ja -@settitle Semi-gnus 6.7.7 Manual +@settitle Semi-gnus 6.8.0 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -342,7 +342,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Semi-gnus 6.7.7 Manual +@title Semi-gnus 6.8.0 Manual @author by Lars Magne Ingebrigtsen @author by members of Semi-gnus mailing-list @@ -396,7 +396,7 @@ Semi-gnus $B$O!"Bg$-$J3($,F~$C$F$$$?$j$5$^$6$^$J7A<0$rMQ$$$?$j$7$F$$$k$A$g$C(B $B$J8@8l7w$r:9JL$7$^$;$s!#$"$"!"%/%j%s%4%s$NJ}$O(B Unicode Next Generation$B$r(B $B$*BT$A$/$@$5$$!#(B -$B$3$N@bL@=q$O(B Semi-gnus 6.7.7 $B$KBP1~$7$^$9!#(B +$B$3$N@bL@=q$O(B Semi-gnus 6.8.0 $B$KBP1~$7$^$9!#(B @end ifinfo @@ -980,6 +980,11 @@ gnus $B$O%U%!%$%k(B@file{.newsrc} $B$NCV$+$l$F$$$k%G%#%l%/%H%j(B ($B$3$l$OI $BMQu%U%!%$%k(B @@ -1289,9 +1294,9 @@ gnus $B$,$=$l$rD4$Y$k$3$H$O$"$j$^$;$s!#(BGnus $B$OI,MW$H$9$kA4$F$NpJs$r!"% @cindex group modeline @vindex gnus-group-mode-line-format -$B%b!<%I9T$O(B @code{gnus-group-mode-line-format} (@pxref{Formatting -Variables}) $B$r@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s(B -$B$^$j$?$/$5$sCN$C$F$^$;$s!#(B +$B%b!<%I9T$O(B @code{gnus-group-mode-line-format} (@pxref{Mode Line +Formatting}) $B$r@_Dj$9$k$3$H$GJQ99$G$-$^$9!#$3$$$D$O;XDjJ8;z$r$"$s$^$j$?(B +$B$/$5$sCN$C$F$^$;$s!#(B @table @samp @item S @@ -1987,7 +1992,9 @@ alt.sysadmin.recovery shaving} $B$N$h$&$J%^%C%A$9$kJ8;zNs$rMQ$$$k$3$H$K$h$C(B $B$b$7(B @code{gnus-activate-foreign-newsgroups} $B$,@5$N?t$G$"$l$P!"(Bgnus $B$O5/(B $BF0;~$K!"$3$N?t$+$=$l$h$j$b>.$5$$%l%Y%k$N30It%0%k!<%W$rA4$F%A%'%C%/$7$^$9!#(B $B$3$l$OFC$K0c$C$?(B @sc{nntp} $B%5!<%P$+$i$?$/$5$s$N%0%k!<%W$r9XFI$7$F$$$k>l(B -$B9g$J$I!"$7$P$i$/;~4V$,$+$+$k$+$b$7$l$^$;$s!#(B +$B9g$J$I!"$7$P$i$/;~4V$,$+$+$k$+$b$7$l$^$;$s!#(B@pxref{Group Levels} $B$b;2>H(B +$B$7$F2<$5$$!#(B@code{gnus-activate-level} $B$b30It%K%e!<%9%0%k!<%W$N3hF02=$K(B +$B1F6A$r5Z$\$7$^$9!#(B @node Group Parameters @@ -2687,9 +2694,10 @@ Gnus @item T D @kindex T D (Topic) @findex gnus-topic-remove-group -$B%0%k!<%W$r8=:_$N%H%T%C%/$+$i:o=|$7$^$9(B -(@code{gnus-topic-remove-group})$B!#$3$N%3%^%s%I$O%W%m%;%9%^!<%/!&(B -$B%W%l%U%#%C%/%9%k!<%k$K=>$$$^$9(B (@pxref{Process/Prefix})$B!#(B +$B%0%k!<%W$r8=:_$N%H%T%C%/$+$i:o=|$7$^$9(B(@code{gnus-topic-remove-group})$B!#(B +$B$3$NL?Na$O$$$^$9(B (@pxref{Process/Prefix})$B!#(B @item T M @kindex T M (Topic) @@ -3323,7 +3331,7 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From @vindex gnus-summary-zcore-fuzz $B$3$l$O!"(Bzcore $B$G%G%#%U%)%k%H$N%l%Y%k$h$j$b>e$G$"$l$P(B @samp{+} $B$G!"%G%#%U%)(B $B%k%H$N%l%Y%k$h$j$b2<$G$"$l$P(B @samp{-} $B$G$9!#(B -@code{gnus-summary-default-zcore}$B$H$N:9$,(B@code{gnus-summary-zcore-fuzz} +@code{gnus-summary-default-score} $B$H$N:9$,(B @code{gnus-summary-zcore-fuzz} $B$h$j$b>.$5$$$H!"$3$N;EMM$O;H$o$l$^$;$s!#(B @item V $B%9%l%C%IA4BN$N%9%3%"!#(B @@ -3373,9 +3381,9 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From @subsection $B35N,%P%C%U%!$N%b!<%I9T(B @vindex gnus-summary-mode-line-format -$B35N,$N%b!<%I9T$NMM<0$bJQ99$9$k$3$H$,$G$-$^$9!#(B -@code{gnus-summary-mode-line-format} $B$r2?$G$b9%$-$J$b$N$KJQ99$7$F$/$@$5(B -$B$$!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b [%A] %Z} $B$G$9!#(B +$B35N,$N%b!<%I9T$NMM<0$bJQ99$9$k$3$H$,$G$-$^$9(B (@pxref{Mode Line +Formatting})$B!#(B@code{gnus-summary-mode-line-format} $B$r2?$G$b9%$-$J$b$N$K(B +$BJQ99$7$F$/$@$5$$!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b [%A] %Z} $B$G$9!#(B $B0J2<$,$"$J$?$,M7$V$3$H$N$G$-$k$=$l$>$l$NMWAG$G$9!'(B @@ -3386,6 +3394,8 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From $B@\F,8l$rA0!#(B @item A $B8=:_$N5-;vHV9f!#(B +@item z +$B8=:_$N5-;v%9%3%"!#(B @item V Gnus $B%P!<%8%g%s!#(B @item U @@ -6256,7 +6266,8 @@ Highlighting} $B$b;2>H$7$F$/$@$5$$!#(B @kindex W l $B!J35N,!K(B @findex gnus-summary-stop-page-breaking $B%Z!<%8$N6h@Z$j$r8=:_$N5-;v$+$iH$7$F2<$5$$!#(B @item W r @kindex W r $B!J35N,!K(B @@ -6904,9 +6915,9 @@ gnus $B$N5-;vA*Br4X?t$r5-;v72$r(B uudecode $B$7$=$N7k2L$rI=<($9$k$h$&$KJQ99$9 @item gnus-tree-mode-line-format @vindex gnus-tree-mode-line-format -$BLZ%b!<%I%P%C%U%!$G$N%b!<%I9T$N$?$a$N%U%)!<%^%C%HJ8;zNs$G$9!#%G%#%U%)%k%H(B -$B$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG=$J;XDj$O(B -@pxref{Summary Buffer ModeLine} $B$r;2>H$7$F$/$@$5$$!#(B +$BLZ%b!<%I%P%C%U%!$G$N%b!<%I9T$N$?$a$N%U%)!<%^%C%HJ8;zNs$G$9(B (@pxref{Mode +Line Formatting})$B!#%G%#%U%)%k%H$O(B @samp{Gnus: %%b %S %Z} $B$G$9!#;HMQ2DG=(B +$B$J;XDj$O(B @pxref{Summary Buffer ModeLine} $B$r;2>H$7$F$/$@$5$$!#(B @item gnus-selected-tree-face @vindex gnus-selected-tree-face @@ -7805,7 +7816,7 @@ Washing}, @pxref{Article Buttons}, @pxref{Article Date} $B$r;2>H$7$F$/$@$5$$!# @item C-c ^ @kindex C-c ^ (Article) @findex gnus-article-refer-article -$B%+!<%=%k0LCV$,(B @code{Message-ID} $B$N6aJU$K$"$k$H$-$K(B @kbd{r} $B$r2!(B +$B%+!<%=%k0LCV$,(B @code{Message-ID} $B$N6aJU$K$"$k$H$-$K(B @kbd{C-c ^} $B$r2!(B $B$9$H!"(Bgnus $B$O%5!<%P!<$+$i$=$N5-;v$rH$7$F$/$@$5$$!# @vindex gnus-article-mode-line-format @item gnus-article-mode-line-format -$B$3$NJQ?t$O(B @code{gnus-summary-mode-line-format} $B$HF1$89T$K=>$C$?(B -$BMM<0J8;zNs$G$9!#$3$l$O0J2<$N0l$D$N3HD%$r=|$$$F!"$=$NJQ?t$HF1$8MM(B -$B<0;XDj$r$C$?MM<0J8;z(B +$BNs$G$9(B (@pxref{Mode Line Formatting})$B!#$3$l$O0J2<$N0l$D$N3HD%$r=|$$$F!"(B +$B$=$NJQ?t$HF1$8MM<0;XDj$r$N$b$K@\B3$7$^$9!#(B + +@item nntp-open-rlogin +@samp{rlogin} $B$r1s3V%7%9%F%`$K9T$C$F!"$=$3$+$i;EMM2DG=$J(B @sc{nntp} $B%5!<(B +$B%P!<$K(B @samp{telnet} $B$r$7$^$9!#(B @code{nntp-open-rlogin} $B$K4XO"$7$?JQ?t$G$9(B: @@ -8913,6 +8927,10 @@ machine nntp.ifi.uio.no login larsi force yes @end table +@item nntp-open-telnet +$B1s3V%7%9%F%`$K(B @samp{telnet} $B$r$7$F!"(B@sc{nntp} $B%5!<%P!<$K$?$I$jCe$/$?$a(B +$B$K$b$&0lEY(B @code{telnet} $B$r$7$^$9!#(B + @code{nntp-open-telnet} $B$K4XO"$7$?JQ?t$G$9(B: @table @code @@ -8950,6 +8968,26 @@ machine nntp.ifi.uio.no login larsi force yes @end table +@findex nntp-open-ssl-stream +@item nntp-open-ssl-stream +$B%5!<%P!<$K(B @dfn{$B0BA4$J(B} $B%A%c%s%M%k$r;H$C$F%5!<%P!<$K@\B3$7$^$9!#$3$l$r;H(B +$B$&$?$a$K$O!"(BSSLay $B$,%$%s%9%H!<%k$5$l$F$$$J$1$l$P$J$j$^$;$s(B +(@file{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL} $B$H!"(B@file{ssl.el} ($BNc$($P!"(B +W3 $B$NG[I[$+$i(B) $B$,I,MW$K$J$j$^$9(B)$B!#$=$l$+$i%5!<%P!<$rl9g$ @item @samp{group}: $B$b$7J,3d$,J8;zNs$G$"$k$H!"$=$l$O%0%k!<%WL>$H$7$F$_$J$5$l$^(B -$B$9!#(B +$B$9!#IaDL$N@55,I=8=$N9gCW$,$J$5$l$^$9!#Nc$O2<$NJ}$r8+$F2<$5$$!#(B @item @var{(FIELD VALUE SPLIT)}: $B$b$7J,3d$,%j%9%H$G!":G=i$NMWAG$,J8;zNs$G$"$j!"(B @@ -9475,6 +9513,10 @@ table) $B$K=>$C$F40A4$K9gCW$7$J$1$l$P$J$j$^$;$s!#@55,I=8=$G%U%#!<%k%IL>$+(B (any "debian-\\(\\w*\\)@@lists.debian.org" "mail.debian.\\1") @end example +$B$b$7J8;zNs$,MWAG(B @samp{\&} $B$r4^$s$G$$$k$H!"Be$o$j$KA0$G9gCW$7$?J8;zNs$,(B +$B;H$o$l$^$9!#F1MM$K!"MWAG(B @samp{\1} $B$+$i(B @samp{\9} $B$^$G$O%0%k!<%WIU$1(B 1 +$B$+$i(B 9 $B$^$G$G9gCW$7$?J8;zJ8$GBeBX$5$l$^$9!#(B + @node Mail and Procmail @subsection $B%a!<%k$H(B Procmail @cindex procmail @@ -10868,6 +10910,32 @@ Newsgroups: alt.religion.emacs To: alt-religion-emacs@@GATEWAY @end example +$B0J2<$N4{@=4X?t$,B8:_$7$^$9(B: + +@findex nngateway-simple-header-transformation +@table @code + +@item nngateway-simple-header-transformaton +@var{nesgroup}@@@code{nngateway-address} $B$N$h$&$J(B @code{To} $B%X%C%@!<$r$D(B +$B$/$j$^$9!#(B + +@findex nngateway-mail2news-header-transformation + +@item nngateway-mail2news-header-transformation +@code{nngateway-address} $B$N$h$&$J(B @code{To} $B%X%C%@!<$r$D$/$j$^$9!#(B + +$B$3$3$KNc$,$"$j$^$9!#(B + +@lisp +(setq gnus-post-method + '(nngateway "mail2news@@replay.com" + (nngateway-header-transformation + nngateway-mail2news-header-transformation))) +@end lisp + +@end table + + @end table $B$D$^$j!"$3$l$r;H$&$K$O!"$3$s$JIw$K$9$k$@$1$G$9!#(B @@ -11335,7 +11403,7 @@ gnus $B%(!<%8%'%s%H$,$=$N5-;v$r(B SPAM $B$@$H8+Pv$7$?$i??!#$3$NH/8+E*(B @item gnus-category-mode-line-format @vindex gnus-category-mode-line-format -$BJ,N`%b!<%I9T$NMM<0!#(B +$BJ,N`%b!<%I9T$NMM<0(B (@pxref{Mode Line Formatting})$B!#(B @item gnus-agent-short-article @vindex gnus-agent-short-article @@ -11630,7 +11698,7 @@ Gnus $B$O35N,%P%C%U%!$r:n@.$9$kA0$K!"8=:_$N%0%k!<%W$KE,MQ$5$l$k$I$s$J(B * Scoring Tips:: $B$I$&$d$C$F8z2LE*$K%9%3%"$rIU$1$k$+!#(B * Reverse Scoring:: $B8E$$$b$N$N;R$G$"$k$H$$$&LdBj$OLdBj$G$O$J$$!#(B * Global Score Files:: $BCO$r$D$+$_!"<*$r@Z$jNv$/%9%3%"%U%!%$%k!#(B -* Kill Files:: $B$=$l$i$O$^$@$3$3$K$"$j$^$9$,!"L5;k$9$k;v$,$G$-$^$9!#(B +* Kill Files:: $B$=$l$i$O$^$@$3$3$K$"$j$^$9$,!"L5;k$9$k;v$,$G$-$k!#(B * Converting Kill Files:: $B:o=|%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k!#(B * GroupLens:: $B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k!#(B * Advanced Scoring:: $B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&!#(B @@ -11681,12 +11749,6 @@ Gnus $B$O35N,%P%C%U%!$r:n@.$9$kA0$K!"8=:_$N%0%k!<%W$KE,MQ$5$l$k$I$s$J(B gnus $B$N8e$m$G$$$m$$$m$H%9%3%"%U%!%$%k$GM7$s$G!"$=$l$N8z2L$r8+$?$$$H$-$K(B $BLrN)$D$+$b$7$l$^$;$s!#(B -@item V a -@kindex V a ($B35N,(B) -@findex gnus-summary-score-entry -$B?7$7$$%9%3%"EPO?$rIU$12C$(!"A4$F$NMWAG$N;XDj$r5v2D$7$^$9(B -(@code{gnus-summary-score-entry})$B!#(B - @item V c @kindex V c ($B35N,(B) @findex gnus-score-change-score-file @@ -12146,11 +12208,31 @@ Gnus $B$O0lHLE*$J%9%3%"%U%!%$%k$rFCDj$N%9%3%"%U%!%$%k8~$1$N$b$N$h$jA0$KE,(B @item Lines, Chars $B$3$l$i$N(B2$B$D$N%X%C%@!<$O0c$C$?9gCW$N7?$r;H$$$^$9(B: @code{<}$B!"(B@code{>}$B!"(B -@code{=}$B!"(B@code{>=}$B!"(B@code{<=} $B$G$9!#9gCW$,(B @code{Lines} $B$G$J$5$l$F$$$k(B -$B$H!"$$$/$D$+$N%P%C%/%(%s%I(B (@code{nndir}$B$N$h$&$J$b$N(B) $B$O(B @code{Lines} $B%X%C(B -$B%@!<$r:n@.$7$J$$$?$a$KA4$F$N5-;v$,(B0$B9T$G$"$k$H$7$F07$o$l$k;v$K5$$rIU$1$F(B -$B$/$@$5$$!#$3$l$O$b$7>/$7$N9T$7$+$J$$5-;v$N%9%3%"$r2<$2$F$$$k$N$J$i!"JQ$J(B -$B7k2L$,5/$3$jF@$k;v$K$J$j$^$9!#(B +@code{=}$B!"(B@code{>=}$B!"(B@code{<=} $B$G$9!#(B + +$B$3$l$i$N=R8l$O$b$7(B + +@example +(PREDICATE HEADER MATCH) +@end example + +$B$NI>2A$,(B @code{nil} $B$G$J$$$H!"??$H$J$j$^$9!#Nc$($P!">e5i9gCW(B +@code{("lines" 4 <)} (@pxref{Advanced Scoring}) $B$O7k2L$H$7$F0J2<$N<0$K$J(B +$B$j$^$9!#(B + +@lisp +(< header-value 4) +@end lisp + +$B$b$7$/$OB>$NJ}K!$K$7$^$7$g$&(B: @code{<} $B$r(B @code{Lines} $B$G(B 4 $B$r9gCW$H$7$F(B +$B;H$C$F$$$k$H$-$O!"5-;v$,(B4$B9T$h$j$b>/$J$$$H$-$K%9%3%"$,DI2C$5$l$^$9!#(B($B:.Mp(B +$B$7$F!"H?BP$G$O$J$$$+$H9M$(0W$$$G$9!#$G$b!"$=$&$G$O$J$$$N$G$9!#;d$,;W$&$K!#(B) + +$B9gCW$,(B @code{Lines} $B$G$J$5$l$F$$$k$H!"$$$/$D$+$N%P%C%/%(%s%I(B +(@code{nndir}$B$N$h$&$J$b$N(B) $B$O(B @code{Lines} $B%X%C%@!<$r:n@.$7$J$$$?$a$KA4(B +$B$F$N5-;v$,(B 0 $B9T$G$"$k$H$7$F07$o$l$k;v$K5$$rIU$1$F$/$@$5$$!#$3$l$O$b$7>/(B +$B$7$N9T$7$+$J$$5-;v$N%9%3%"$r2<$2$F$$$k$N$J$i!"JQ$J7k2L$,5/$3$jF@$k;v$K$J(B +$B$j$^$9!#(B @item Date Date ($BF|IU(B) $B%X%C%@!<$K$O(B3$B$D$N$J$s$H$J$/$P$+$2$F$$$k9gCW$N7?$,$"$j$^$9(B: @@ -12894,7 +12976,7 @@ GNUS $B>C5n%U%!%$%k$rJT=8$9$k$?$a$NFs$D$N35N,%P%C%U%!4X?t$,$"$j$^(B $B>C5n%U%!%$%k$+$i%9%3%"%U%!%$%k$X$NJQ49%Q%C%1!<%8$O!"I8=`$G$O(B gnus $B$K$O4^$^$l$^$;$s!#(B -@file{http://www.ifi.uio.no/~larsi/ding-other/gnus-kill-to-score} +@file{http://www.stud.ifi.uio.no/~larsi/ding-other/gnus-kill-to-score} $B$+$iF~C5n%U%!%$%k$,Hs>o$KJ#;($J$b$N$G$"$l$P(B --- $B$=$l$K(B @@ -13307,3 +13389,1825 @@ Gnus $B$O(B1$BF|$K(B1$B2s%9%3%"$rIeGT$5$;$h$&$H$7$^$9!#Nc$($P!"$b$7(B gnus $B9T$7$F$$$J$$$H!"(Bgnus $B$O(B4$B2s%9%3%"$rIe$i$;$^$9!#(B +@node Various +@chapter $B$$$m$$$m(B + +@menu +* Process/Prefix:: $BB?$/$N07$$L?Na$G;H$o$l$k=,47!#(B +* Interactive:: Gnus $B$KB?$/$Ne$2$k$+!#(B +* Mode Lines:: $B%b!<%I9T$K>pJs$rI=<($9$k!#(B +* Highlighting and Menus:: $B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k!#(B +* Buttons:: $B4JC1$J(B10$BJb$G%"%-%l%9g'$rF@$k!#(B +* Daemons:: Gnus $B$O$"$J$?$NN"$GJ*;v$r$NB@$j$d$9$$?);v$rHr$1$kJ}K!!#(B +* Undo:: $B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k!#(B +* Moderation:: $B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+!#(B +* XEmacs Enhancements:: XEmacs $B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_$9$k!#(B +* Fuzzy Matching:: $BBg$-$JLJLS$C$F2?!)(B +* Thwarting Email Spam:: $BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!!#(B +* Various Various:: $BK\Ev$K$$$m$$$m$J$b$N!#(B +@end menu + + +@node Process/Prefix +@section $B%W%m%;%9(B/$B@\F,0z?t(B +@cindex process/prefix convention + +$BB?$/$N4X?t!"$=$NCf$G$b5-;v$N0\F0!"I|9f2=!"J]B8$r$9$k$?$a$N4X?t$O!"(B +@dfn{$B%W%m%;%9(B/$B@\F,0z?t$N=,47(B} $B$H$7$FCN$i$l$F$$$k$b$N$r;H$$$^$9!#(B + +$B$3$l$OMxMQl(B +$B9g$O!"%W%m%;%90u$NIU$$$F$$$k5-;v$K:n6H$,l9g$O!"8=:_$N5-;v$K$@$1:n(B +$B6H$ro$K4JC1$G$9$,!"6CC2$rHr$1$i$l$k$h$&$K>\:Y$rL@$i$+$K$7$F$*(B +$B$/I,MW$,$"$k$N$G$9!#(B + +$B%W%m%;%90u$KH?1~$9$k5-;v$O8=:_$N%W%m%;%90u$NIU$$$F$$$k5-;v$N%j%9%H$r%9%?%C(B +$B%/$K@Q$_!"A4$F$N%W%m%;%90u$N5-;v$N%j%9%H$r>C5n$7$^$9!#A02s$N@_Dj$r(B +@kbd{M P y} $B$GI|5l$5$;$k;v$,$G$-$^$9(B (@pxref{Setting Process Marks})$B!#(B + +@vindex gnus-summary-goto-unread +$BB?$/$N?M!9$r6C$+$;!"62$,$i$;$k$H;W$o$l$k$3$H$O!"Nc$($P!"(B@kbd{3 d} $B$OK\Ev(B +$B$K(B @kbd{d} @kbd{d} @kbd{d} $B$HF1$8;v$r$9$k;v$G$9!#$=$l$>$l$N(B @kbd{d} ($B$3(B +$B$l$O8=:_$N5-;v$K4{FI$N0u$rIU$1$^$9(B) $B$O=i4|@_Dj$G$O0u$rIU$1$?8e$Ko$K?5=E$J?M$G!"$3$l$OK\Ev$KNI$$;v$G$9!#2?$+4m81$J;v$r(B +$B$9$kA0$K!"(B``$BK\Ev$K$3$l$r$7$?$$$N$G$9$+!)(B'' $B$H$$$&$h$&$Jo$KB?$/$N(B Emacs $B$NL?Na$O(B ($B?tCM(B) $B@\F,0z?t$KH?1~$7$^$9!#Nc$($P!"(B +@kbd{C-u 4 C-f} $B$O%]%$%s%H$r(B4$BJ8;z@h$K0\F0$7!"(B@kbd{C-u 9 0 0 I s s p} $B$O(B +$B1JB3(B @code{Suject} $BJ8;zNs$N0lIt%9%3%"K!B'$N(B900$B$r8=:_$N5-;v$K2C$($^$9!#(B + +$B$3$l$OAGE($GNI$$$N$G$9$,!"L?Na$K$b$&>/$7DI2C$N>pJs$rM?$($?$$$H$-$O$I$&$9(B +$B$l$PNI$$$N$G$7$g$&!)$(!<$H!"$?$$$F$$$NL?Na$,$7$F$$$k;v$O!"(B``$B@8$N(B'' $B@\F,(B +$B0z?t$rFCJL$JJ}K!$G2r$`$@$1B?(B +$B$/$N(B @kbd{M-i} $B@\F,8l$r@Q$_=E$M$k;v$,$G$-$^$9!#(B@kbd{M-i a M-C-u} $B$O(B ``$BL?(B +$BNa(B @kbd{M-C-u} $B$K%7%s%\%k@\F,0z?t(B @code{a} $B$rM?$($k(B'' $B$H$$$&$3$H$G$9!#(B +@kbd{M-i a M-i b M-C-u} $B$OL?Na(B @kbd{M-C-u} $B$K%7%s%\%k@\F,0z?t(B @code{a} +@code{b} $B$rM?$($k(B'' $B$H$$$&;v$G$9!#o$K$?$/$5$s$N$b$N$,$"$j$^$9!#9,1?$J;v$K!"$=$l(B +$B$i$O$9$Y$FF1$89=J8$r;H$$$^$9$N$G!"$"$^$j7y$JL\$K$O2q$o$J$$$G$7$g$&!#(B + +$B=qK!;EMM(B (format) $B;XDj$NNc$,$"$j$^$9(B ($B%0%k!<%W%P%C%U%!$h$j(B): +@samp{%M%S%5y: %(%g%)\n}$B!#$=$l$Oo$K=9$/!"$?$/$5$s$N%Q!<%;%s%H5-(B +$B9f$,$I$3$K$G$b$"$j$^$9!#(B + +@menu +* Formatting Basics:: $B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"$k!#(B +* Mode Line Formatting:: $B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N5,B'!#(B +* Advanced Formatting:: $B?'!9$JJ}K!$G=PNO$r=$@5$9$k!#(B +* User-Defined Specs:: Gnus $B$K$"$J$?<+?H$N4X?t$r8F$P$;$k!#(B +* Formatting Fonts:: $B;EMM$rB?:L$GAGE($K8+$;$k!#(B +@end menu + +$B8=:_$N$H$3$m!"(Bgnus $B$O0J2<$N=qK!;EMMJQ?t$r;H$$$^$9(B: +@code{gnus-group-line-format}$B!"(B@code{gnus-summary-line-format}$B!"(B +@code{gnus-server-line-format}$B!"(B@code{gnus-topic-line-format}$B!"(B +@code{gnus-group-mode-line-format}$B!"(B@code{gnus-summary-mode-line-format}$B!"(B +@code{gnus-article-mode-line-format}$B!"(B +@code{gnus-server-mode-line-format}$B!"(B +@code{gnus-summary-pick-line-format}$B!#(B + +$B$3$l$iA4$F$N=qK!;EMMJQ?t$OG$0U$N(B elisp $B<0$G$"$k;v$b$G$-$^$9!#$=$N>l9g$O!"(B +$B$=$l$i$OMW5a$5$l$k9T$KA^F~$9$k$?$a$K(B @code{$BI>2A(B} $B$5$l$^$9!#(B + +@kindex M-x gnus-update-format +@findex gnus-update-format +Gnus $B$O$"$J$?<+?H$N=qK!;EMM;XDj$r:n$k2A(B} $B$7!"Ev$N;XDj$r99?7(B +$B$7!"7k2L$N(B lisp $B<0$r$l$NMWAG(B @samp{%} $B$OEv$N%P%C%U%!$,:n@.$5$l$k$H$-$K2?$i$+$NJ8;zNs$d(B +$BB>$N$b$N$GCV$-49$($i$l$^$9!#(B@samp{%5y} $B$O(B ``@samp{y} $B;XDj$rA^F~$7!"(B5$BJ8;z(B +$B$N>l=j$rF@$k$?$a$K6uGr$rF~$l$J$5$$(B'' $B$H$$$&;v$G$9!#(B + +$BIaDL$N(B C $B$d(B Emacs Lisp $B$N=qK!;EMM(B (format) $BJ8;zNs$HF1$8$h$&$K!"(B@samp{%} +$B$H=qK!;EMM$N7?$NJ8;z$N4V$N?tCM=$>~;R$O>o$K>/$J$/$H$b$=$ND9$5$K$J$k$h$&$K!"(B +$B=PNO$K(B @dfn{$B5M$a(B} $B$l$i$l$^$9!#(B@samp{%5y} $B$O$=$NItJ,$r>o$K(B ($B>/$J$/$H$b(B) 5 +$BJ8;z$ND9$5$K$J$k$h$&$K!":8$K6uGr$r5M$a$^$9!#$b$7(B @samp{%-5y} $B$H$9$l$P!"(B +$BBe$o$j$K1&B&$K5M$a9~$_$^$9!#(B + +$BFC$KD9$$CM$+$i$=$NItJ,$rJ]8n$9$k$?$a$K!"D9$5$r@)8B$7$?$$$H$b;W$&$G$7$g$&!#(B +$B$=$N$?$a$K$O!"(B@samp{%4,6y} $B$H$9$k;v$,$G$-$F!"$3$l$O$=$NNN0h$O7h$7$F(B6$BJ8;z(B +$B$rD6$($kD9$5$K$O$J$i$:!"(B4$BJ8;z$h$j>/$J$$D9$5$K$J$i$J$$$H$$$&;v$G$9!#(B + + +@node Mode Line Formatting +@subsection $B%b!<%I9T=qK!;EMM(B + +$B%b!<%I9T=qK!;EMMJQ?t(B ($B$9$J$o$A!"(B@code{gnus-summary-mode-line-format}) $B$O(B +$B0J2<$N(B2$B$D$N0c$$0J30$O!"%P%C%U%!9T$K4p$E$/=qK!;EMMJQ?t$H(B +(@pxref{Formatting Basics}) $BF1$8$h$&$J5,B'$K=>$$$^$9(B: + +@enumerate + +@item +$B:G8e$K2~9T(B (@samp{\n}) $B$,$"$C$F$O$J$j$^$;$s!#(B + +@item +$BFCJL$J(B @samp{%%b} $B;XDj$r%P%C%U%!L>$rI=<($9$k$?$a$K;H$&$3$H$,$G$-$^$9!#$(!<(B +$B$H!"K\Ev$O$=$l$O;XDj$G$O$J$$$N$G$9(B---@samp{%%} $B$OC1$K=qK!;EMM$,5!3#E*$K(B +$B@Z$jNv$/$N$r@Z$jH4$1$F(B @samp{%} $B$r$=$N$^$^EO$9$?$a$NJ}K!$G!"(BEmacs $B$,(B +@samp{%b} $B$r(B +$B$rI=<($7$J$5$$(B'' $B$H2re5i=qK!;EMM(B + +$B2?$i$+$NJ}K!$GNN0h$r8e$G=hM}$9$k$N$OIQHK$KLr$KN)$A$^$9!#ItJ,$r5M$a9~$`!"(B +$B@)8B$9$k!"@Z$j~;R(B} $B$r;H(B +$B$&;v$K$h$jC#@.$5$l$^$9!#$h$/$"$k%A%k%@;XDj$O$3$N$h$&$K8+$($k$+$b$7$l$^$;(B +$B$s(B @samp{%~(cut 3)~(ignore "0")y}$B!#(B + +$B$3$l$i$OM-8z$J=$>~;R$G$9(B: + +@table @code +@item pad +@itemx pad-left +$BMW5a$5$l$?D9$5$K$J$k$^$G!"NN0h$K6uGr$r:8B&$+$i5M$a9~$_$^$9!#(B + +@item pad-right +$BMW5a$5$l$?D9$5$K$J$k$^$G!"NN0h$K6uGr$r1&B&$+$i5M$a9~$_$^$9!#(B + +@item max +@itemx max-left +$B;XDj$5$l$?D9$5$K$J$k$h$&$K!"J8;z$r:8B&$+$i@Z$j.7?$N(B ISO0861 $BMM(B +$B<0$NF|IU$rJV$7$^$9(B---@samp{19960809T230410} $B$G$9!#$3$l$OH/2;$7$K$/$$$N$G!"(B +$B@$5*$rI=$9?t$H;~4V$r:o$.Mn$H$7$F!"(B6$BJ8;z$NF|IU$r;D$7$?$$$H;W$$$^$9!#$=$l(B +$B$O(B @samp{%~(cut-left 2)~(max-right 6)~(pad 6)o} $B$H$J$k$G$7$g$&!#(B($B@Z$jMn(B +$B$H$7(B (cutting) $B$O(B $B:GBg8B(B (maxing) $B$h$j@h$K$J$5$l$^$9$N$G!"7e$GAGE($K8+$((B +$B$k$h$&$K$9$k$?$a$KF|IU$,(B6$BJ8;z$h$j>/$J$/L5$/$J$i$J$$;v$rJ]>Z$9$k$?$a$K5M(B +$B$a9~$_(B (padding) $B$,I,MW$K$J$j$^$9!#(B) + +$BL5;k(B (ignore) $B$,:G=i$K$J$5$l$^$9!#$=$l$+$i@Z$jMn$H$7(B (cut) $B$,9T$o$l$^$9!#(B +$B$=$7$F!"$=$l$+$i:G8e$NA`:n!"5M$a9~$_(B (pad) $B$,9T$o$l$^$9!#(B + +$B$b$7$3$l$i$N>e5i;2>H$r$?$/$5$s;H$C$F$$$k$J$i!"(Bgnus $B$,$H$F$bCY$/$J$k$N$,(B +$B$o$+$k$G$7$g$&!#$3$l$O$"$J$?$N9T$N308+$KK~B-$7$?$H$-$K(B @kbd{M-x +gnus-compile} $B$r$N;XDj$+$i$N>pJs$HA4$/F1$8$h$&$K%P%C%U%!$K(B +$BA^F~$5$l$^$9!#4X?t$O0UL#$NL5$$CM$H6&$K8F$P$l$k;v$b$"$j$($^$9$N$G!"$=$l$N(B +$BBP:v$r$9$k$Y$-$G$9!#(B + +$B?7$7$$4X?t$rDj5A$7$J$$$G$b!"%A%k%@=$>~;R(B (@pxref{Advanced Formattin}) $B$r(B +$B;H$C$F$[$H$s$IF1$8;v$rC#@.$9$k;v$,$G$-$^$9!#Nc$G$9(B: @samp{%~(form +(count-lines (point-min) (point)))@@}$B!#$3$3$GM?$($i$l$?<0$OI>2A$5$l$F!"(B +$B8=:_$N9T?t$r$b$?$i$7!"$=$l$+$iA^F~$5$l$^$9!#(B + + +@node Formatting Fonts +@subsection $B=qK!;EMM%U%)%s%H(B + +$B%O%$%i%$%H$N$?$a$N;XDj$,$"$j!"$=$l$i$OA4$F$N=qK!;EMMJQ?t$K$h$C$F6&M-$5$l(B +$B$F$$$^$9!#(B@samp{%(} $B$H(B @samp{%)} $B;XDj$N4V$NJ8>O$OFCJL$J(B +@code{mouse-face} $B%W%m%Q%F%#$,@_Dj$5$l!"$=$l$O$=$3$K%^%&%9$N%]%$%s%?!<$r(B +$B$"$o$;$?$H$-$K(B (@code{gnus-mouse-face} $B$K$h$C$F(B) $B%O%$%i%$%H$5$l$k$3$H$K(B +$B$J$j$^$9!#(B + + +@samp{%@{} $B$H(B @samp{%@}} $B;XDj$N4V$NJ8>O$O(B @code{gnus-face-0} $B$r;H$C$FIa(B +$BDL$N%U%'%$%9$,@_Dj$5$l!"$=$l$O=i4|@_Dj$G(B @code{bold} $B$G$9!#$b$7(B +@samp{%@{1} $B$H$7$?$J$i!"Be$o$j$K(B @code{gnus-face-1} $B$rF@!"0J2eEy$N=qK!;EMM$r@_Dj$9$k!#(B +(setq gnus-group-line-format + "%M%S%3@{%5y%@}%2[:%] %(%1@{%g%@}%)\n") +@end lisp + +$B$"$J$?$,$3$N0F$r;H$C$F40A4$KFI$a$J$/$FHs>o$K2(B +$B$N%&%#%s%I%&$r>C$7$F!"(BEmacs $B$N2hLLA4BN$r@jM-$7$^$9!#$3$l$O=i4|@_Dj$G(B +@code{t} $B$G$9!#(B + +@vindex gnus-buffer-configuration +@code{gnus-buffer-configuration} $B$O$=$l$>$l$N(B gnus $B$N%P%C%U%!$,$I$N$/$i(B +$B$$$N6u4V$rM?$($i$l$k$Y$-$+$r8=$7$^$9!#$3$l$O$3$NJQ?t$NH4?h$G$9(B: + +@lisp +((group (vertical 1.0 (group 1.0 point) + (if gnus-carpal (group-carpal 4)))) + (article (vertical 1.0 (summary 0.25 point) + (article 1.0)))) +@end lisp + +$B$3$l$OO"A[%j%9%H$G$9!#(B@dfn{$B%-!<(B} $B$O2?$i$+$NF0:n$dB>$N$b$N$rG$L?$9$k%7%s(B +$B%\%k$G$9!#Nc$($P!"%0%k!<%W%P%C%U%!$rI=<($9$k$H$-$O!"%&%#%s%I%&@_Dj4X?t$O(B +@code{group} $B$r%-!<$H$7$F;H$$$^$9!#;HMQ2DG=$JL>A0$N40A4$J0lMw$O2<$K5s$2(B +$B$i$l$F$$$^$9!#(B + +@dfn{$BCM(B} ($B$9$J$o$A!"(B@dfn{$BJ,3d(B}) $B$O$=$l$>$l$N%P%C%U%!$,$I$l$/$i$$$r@j$a$k(B +$B$Y$-$+$r;XDj$7$^$9!#(B@code{article} $BJ,3d$rNc$Ke$N(B 25% $B$r@j$a(B +$B$k$Y$-$G!"$=$l$O5-;v%P%C%U%!(B (article buffer) $B$N>e$KG[CV$5$l$^$9!#$*5$$E(B +$B$-$NDL$j!"(B100% + 25% $B$OJN,2DG=$J(B3$B$DL\$NMWAG!"(B@code{point} $B$r;}$D%P%C%U%!$KCV$+$l$^$9!#(B +@code{frame} $BJ,3d$G$O!"%?%0(B @code{frame-focus} $B$,9=@.MWAG$G$"$k(B ($B$9$J$o(B +$B$A!"(B@code{point} $B%?%0$,B8:_$9$k$+$I$&$+$K$h$C$F!"%j%9%H$N(B3$BHVL\$+(B4$BHVL\$+(B +$B$KB8:_$9$kMWAG(B) $BMUJ,3d$r;}$D:G8e$NI{J,3d$,>GE@$rF@$k;v$K$J$j$^$9!#(B + +$B.?tE@?t$NBe$o$j$K@0?t$G$"$C$?$J$i!"$=$l$O3d9g$G$O$J(B +$B$/!"$I$N$/$i$$B?$/$N9T$r%P%C%U%!$,@j$a$k$Y$-$+$r;XDj$9$k$?$a$K;H$o$l$^$9!#(B + +$B$b$7(B @dfn{$BJ,3d(B} $B$,(B @code{$BI>2A(B} $B$5$l$k$b$N$N$h$&$K8+$($k$H$-$O(B ($BL@3N$K$9(B +$B$k$H(B---$BJ,3d$N(B @code{car} $B$,4X?t$+86;O4X?t(B (subr) $B$G$"$k$H$-$O(B)$B!"$3$NJ,3d(B +$B$O(B @code{$BI>2A(B} $B$5$l$^$9!#7k2L$,(B @code{nil} $B$G$J$$$J$i!"$=$l$OJ,3d$H$7$F(B +$BMQ$$$i$l$^$9!#$3$l$O!"(B@code{gnus-carpal} $B$,(B @code{nil} $B$G$"$l$P(B3$B$D$N%P%C(B +$B%U%!$,!"(B@code{gnus-carpal} $B$,(B @code{nil} $B$G$J$$$J$i!"(B4$B$D$N%P%C%U%!$,B8:_(B +$B$9$k$H$$$&;v$G$9!#(B + +$B$^$@J#;($G$O$J$$$G$9$C$F!)(B $B$=$l$G$O!"Bg$-$5$K$3$l$r;n$7$F$_$F2<$5$$(B: + +@lisp +(article (horizontal 1.0 + (vertical 0.5 + (group 1.0) + (gnus-carpal 4)) + (vertical 1.0 + (summary 0.25 point) + (summary-carpal 4) + (article 1.0)))) +@end lisp + +$B$*$)$C$H!#(B2$B$D$N%P%C%U%!$KIT;W5D$J(B 100% $B%?%0$,IU$$$F$$$^$9!#$=$7$F!"$"$N(B +@code{horizontal} $B$C$F$$$&$b$N$O2?$G$7$g$&!)(B + +$B$b$7J,3d$N0l$D$N:G=i$NMWAG$,(B @code{horizontal} $B$G$"$C$?$J$i!"(Bgnus $B$O(B $B%&%#(B +$B%s%I%&$r?eJ?$KJ,3d$7!"(B2$B$D$N%&%#%s%I%&$r2#$KJB$Y$^$9!#$3$l$i$N$=$l$>$l$N(B +$B>.JR$NCf$G$O!"A4$F$rIaDL$NN.57$G9T$&;v$,$G$-$^$9!#(B@code{horizontal} $B$N8e(B +$B$N?t;z$O!"$3$N>.JR$K2hLL$N$I$l$/$i$$$N3d9g$,M?$($i$l$k$+$r;XDj$7$^$9!#(B + +$B$=$l$>$l$NJ,3d$G$O!"(B100% $B$N%?%0$r;}$DMWAG$,(B @emph{$BI,$:(B} $B0l$D$"$kI,MW$,$"(B +$B$j$^$9!#J,3d$O7h$7$F@53N$K$O9T$o$l$^$;$s$N$G!"$3$N%P%C%U%!$,J,3d$+$i;D$5(B +$B$l$?A4$F$N9T$r@jNN$7$^$9!#(B + +$B$b$&>/$7@5<0$K$9$k$?$a$K!"$3$3$KM-8z$JJ,3d$,$I$N$h$&$K$J$k$+$NDj5A$,$"$j(B +$B$^$9(B: + +@example +split = frame | horizontal | vertical | buffer | form +frame = "(frame " size *split ")" +horizontal = "(horizontal " size *split ")" +vertical = "(vertical " size *split ")" +buffer = "(" buffer-name " " size *[ "point" ] *[ "frame-focus"] ")" +size = number | frame-params +buffer-name = group | article | summary ... +@end example + +$B@)8B$K$O!"(B@code{frame} $B$O:G>e0L$NJ,3d$H$7$F$7$+8=$l$k;v$,$G$-$J$$$H$$$&(B +$B$b$N$,$"$j$^$9!#(B@var{form} $B$OM-8z$JJ,3d$rJV$9(B Emacs Lisp $B$N<0(B (form) $B$G(B +$B$J$1$l$P$J$j$^$;$s!#$=$l$>$l$NJ,3d$O40A4$K:F5"E*$G!"G$0U$N?t$N(B +@code{vertical} $B$H(B @code{horizontal} $BJ,3d$r4^$`;v$,$G$-$^$9!#(B + +@vindex gnus-window-min-width +@vindex gnus-window-min-height +@cindex window height +@cindex window width +$B@5$7$$Bg$-$5$r8+$D$1$k$N$O>/$7J#;($G$9!#$I$N%&%#%s%I%&$b(B +@code{gnus-window-min-height} ($B=i4|CM(B 1) $B$NJ8;z$N9b$5$h$j$b>.$5$/$F$O$J(B +$B$i$:!">/$J$/$H$b(B @code{gnus-window-min-width} ($B=i4|CM(B 1) $B$NJ8;zI}$G$J$/(B +$B$F$O$J$j$^$;$s!#(BGnus $B$OJ,3d$rE,MQ$9$kA0$K$3$l$r6/@)$7$h$&$H;n$_$^$9!#$b(B +$B$7IaDL$N(B Emacs $B$N%&%#%s%I%&$NI}(B/$B9b$5@)8B$r;H$$$?$$$J$i!"$3$N(B2$B$D$NJQ?t$r(B +@code{nil} $B$K$9$k$@$1$GNI$$$G$9!#(B + +$B$b$7(B Emacs $B$NMQ8l$K$J$8$s$G$$$J$$$N$J$i!"(B@code{horizontal} $B$H(B +@code{vertical} $BJ,3d$O!"4|BT$9$k$b$N$HH?BP$NF0:n$r$9$k$G$7$g$&!#(B +@code{horizontal} $BJ,3d$NCf$N%&%#%s%I%&$O2#$KJB$s$GI=<($5$l!"(B +@code{vertical} $BJ,3d$NCf$N%&%#%s%I%&$O>e2<$KI=<($5$l$^$9!#(B + +@findex gnus-configure-frame +$B%&%#%s%I%&$N@_CV$K4X$7$F@\(B +@code{gnus-configure-frame} $B$r8F$V$3$H$G$9!#$3$l$O%P%C%U%!$rJ,3d$9$k$H$-(B +$B$KA4$F$NK\Ev$N;E;v$r$9$k4X?t$G$9!#2<$N$b$N$O(B5$B%&%#%s%I%&$N$H$F$b$P$+$2$?(B +$B@_Dj$G$9!#(B2$B$D$r%0%k!<%W%P%C%U%!$K!"(B3$B$D$r5-;v%P%C%U%!$N$?$a$K=<$F$^$9!#(B +($B$=$l$O$P$+$2$F$$$k$H8@$C$?$G$7$g!#(B) $B$b$72<$NJ8$r(B @code{$BI>2A(B} $B$9$k$H!"Ia(B +$BDL$N(B gnus $B$N7PO)$r;H$o$J$$$G!"$9$0$K$=$l$,$I$N$h$&$K8+$($k$+$N9M$($rF@$k(B +$B;v$,$G$-$^$9!#K~B-$9$k$^$G$=$l$GM7$s$G!"$=$l$+$i(B +@code{gnus-add-configuration} $B$r;H$C$F?7$7$$A[A|$r%P%C%U%!@_Dj%j%9%H$K2C(B +$B$($F2<$5$$!#(B + +@lisp +(gnus-configure-frame + '(horizontal 1.0 + (vertical 10 + (group 1.0) + (article 0.3 point)) + (vertical 1.0 + (article 1.0) + (horizontal 4 + (group 1.0) + (article 10))))) +@end lisp + +$B$$$/$D$+$N%U%l!<%`$bM_$7$$$+$b$7$l$^$;$s!#4JC1$G$9(B---@code{frame} $BJ,3d$r(B +$B;H$&$@$1$G$9(B: + +@lisp +(gnus-configure-frame + '(frame 1.0 + (vertical 1.0 + (summary 0.25 point frame-focus) + (article 1.0)) + (vertical ((height . 5) (width . 15) + (user-position . t) + (left . -1) (top . 1)) + (picon 1.0)))) + +@end lisp + +$B$3$NJ,3d$N7k2L$O!":G=i(B ($B$b$7$/$O!"(B``$B.$5$JDI2C$N%U%l!<%`$,(B picon $B$rI=<($9$k$?$a$K:n$i$l$k(B +$B$H$$$&;v$K$J$j$^$9!#$4Mw$NDL$j!"IaDL$N(B @code{1.0} $B:G>e0L;XDj$NBe$o$j$K!"(B +$B$=$l$>$l$NDI2C$NJ,3d$,%U%l!<%`%Q%i%a!<%?O"A[%j%9%H$rBg$-$5;XDj$H$7$F;}$?(B +$B$J$1$l$P$J$j$^$;$s!#(B@xref{Frame Parameters, , Frame Parameters, elisp, +The GNU Emacs Lisp Reference Manual}. XEmacs $B$G$O!"%U%l!<%`%W%m%Q%F%#%j(B +$B%9%H$b;H$($^$9(B---$BNc$($P!"(B@code{(height 5 width 15 left -1 top 1)} $B$O$=$N(B +$B$h$&$J%Q%i%a!<%?%j%9%H$G$9!#(B + +$B$3$l$O(B @code{gnus-buffer-configuration} $B$K;EMM2DG=$J%-!<$N0lMw$G$9(B: + +@code{group}$B!"(B@code{summary}$B!"(B@code{article}$B!"(B@code{server}$B!"(B +@code{browse}$B!"(B@code{message}$B!"(B@code{pick}$B!"(B@code{info}$B!"(B +@code{summary-faq}$B!"(B@code{edit-group}$B!"(B@code{edit-server}$B!"(B +@code{edit-score}$B!"(B@code{post}$B!"(B@code{reply}$B!"(B@code{forward}$B!"(B +@code{reply-yank}$B!"(B@code{mail-bounce}$B!"(B@code{draft}$B!"(B@code{pipe}$B!"(B +@code{bug}$B!"(B@code{compose-bounce}$B!"(B@code{score-trace}$B!#(B + +$B%-!<(B @code{message} $B$O(B @code{gnus-group-mail} $B$H(B +@code{gnus-summary-mail-other-window} $B$NN>J}$G;H$o$l$k;v$KCm0U$7$F2<$5$$!#(B +$B$b$7(B2$B$D$r6hJL$9$k$[$&$,K>$^$7$$$J$i!"$3$N$h$&$JJ*$r;H$&;v$,$G$-$^$9(B: + +@lisp +(message (horizontal 1.0 + (vertical 1.0 (message 1.0 point)) + (vertical 0.24 + (if (buffer-live-p gnus-summary-buffer) + '(summary 0.5)) + (group 1.0))))) +@end lisp + +@findex gnus-add-configuration +$BJQ?t(B @code{gnus-buffer-configuration} $B$O$H$F$bD9$/J#;($J$N$G!"C10l$N@_Dj(B +$B$NJQ99$r4JC1$K$9$k$?$a$N4X?t$,$"$j$^$9(B: @code{gnus-add-configuration} $B$G(B +$B$9!#$b$7!"Nc$($P!"(B@code{article} $B$N@_Dj$rJQ$($?$$$N$J$i!"o$K(B ``$B@5$7$$(B'' $B%&%#%s%I%&@_Dj$r6/@)(B +$B$7$?$$$N$G$"$l$P!"(B@code{gnus-always-force-window-configuration} $B$r(B +@code{nil} $B$G$J$$CM$K@_Dj$9$k;v$,$G$-$^$9!#(B + + +@node Faces and Fonts +@section $B%U%'%$%9$H%U%)%s%H(B +@cindex faces +@cindex fonts +@cindex colors + +$B%U%)%s%H$H%U%'%$%9$rO.$k$N$OHs>o$KFq$7$+$C$?$N$G$9$,!":#F|$G$OHs>o$K4JC1(B +$B$G$9!#C1$K(B @kbd{M-x customize-face} $B$H$d$C$F!"JQ$($?$$%U%'%$%9$rA*$S=P$7(B +$B$F!"I8=`$N%+%9%?%^%$%:%$%s%?!<%U%'!<%9$r;H$C$FJQ99$9$k;v$,$G$-$^$9!#(B + + +@node Compilation +@section $B%3%s%Q%$%k(B +@cindex compilation +@cindex byte-compilation + +@findex gnus-compile + +$B$"$N9T=qK!;EMM;XDjJQ?t$r3P$($F$$$^$9$+!)(B @code{gnus-summary-line-format}$B!"(B +@code{gnus-group-line-format} $B$J$I$J$I$G$9!#$5$F!"(Bgnus $B$O$b$A$m$s$3$l$i(B +$B$NJQ?t$,$I$N$h$&$J$b$N$G$bCm0U$7$^$9$,!"IT1?$J;v$K!"$=$l$i$rJQ99$9$k$H!"(B +$BBgJQ=EBg$JB.EYDc2<$r0z$-5/$3$9;v$K$J$j$^$9!#(B ($B$3$l$i$NJQ?t$N=i4|CM$O$=$l(B +$B$i$K4XO"IU$1$i$l$?%P%$%H%3%s%Q%$%k$5$l$?4X?t$r;}$C$F$$$^$9$,!"MxMQo$K:G?7$N(B +$B$b$N$K$7$F$*$/$+$r;XDj$7$^$9!#$=$l$O%7%s%\%k$N%j%9%H$G$9!#;H$&;v$N$G$-$k(B +$B%7%s%\%k$O(B @code{group} $B!"(B@code{article}$B!"(B@code{summary}$B!"(B@code{server}$B!"(B +@code{browse}$B!"(B@code{tree} $B$J$I$G$9!#$b$7BP1~$9$k%7%s%\%k$,B8:_$9$k$H!"(B +gnus $B$O3:Ev$9$k$G$"$m$&>pJs$G%b!<%I9T$r99?7$7$^$9!#$3$NJQ?t$,(B @code{nil} +$B$G$"$k$J$i!"2hLL$N:FIA2h$O$b$C$HB.$$$G$7$g$&!#(B + +@cindex display-time + +@vindex gnus-mode-non-string-length +$B=i4|@_Dj$G$O!"(Bgnus $B$O35N,%P%C%U%!$H5-;v%P%C%U%!$N%b!<%I9T$K8=:_$N5-;v$N(B +$B>pJs$rI=<($7$^$9!#(BGnus $B$,I=<($7$?$$>pJs(B ($BNc$($P!"5-;v$NI=Bj(B) $B$O$7$P$7$P(B +$B%b!<%I9T$h$j$bD9$$$3$H$,$"$k$N$G!"$I$3$+$G@Z$jMn$H$5$l$J$1$l$P$J$j$^$;$s!#(B +$BJQ?t(B @code{gnus-mode-non-string-length} $B$O$=$N9T$NB>$NMWAG(B ($B$9$J$o$A!">p(B +$BJs$G$J$$ItJ,(B) $B$,$I$N$/$i$$$ND9$5$G$"$k$+$r;XDj$7$^$9!#$b$7%b!<%I9T$KDI2C(B +$B$NMWAG$rF~$l$?$J$i!"$3$NJQ?t$r=$@5$9$kI,MW$,$"$j$^$9(B: + +@c Hook written by Francesco Potorti` +@lisp +(add-hook 'display-time-hook + (lambda () (setq gnus-mode-non-string-length + (+ 21 + (if line-number-mode 5 0) + (if column-number-mode 4 0) + (length display-time-string))))) +@end lisp + +$B$b$7$3$NJQ?t$,(B @code{nil} $B$G$"$k$J$i(B ($B$3$l$,=i4|CM$G$9$,(B)$B!"%b!<%I9T$O@Z(B +$B$jMn$H$5$l$:!"5M$a9~$_$b$5$l$^$;$s!#=i4|@_Dj$O!"%P%C%U%!$N40A4$J%Q!<%;%s(B +$B%HI=<($5$($b%b!<%I9T$+$iDI$$$d$i$l$k2DG=@-$b$"$j$^$9$N$G!"$*$=$i$/K>$^$7(B +$B$$@_Dj$G$O$J$$$H$$$&;v$KCm0U$7$F2<$5$$!#MxMQl9g$O!"$3$N$h$&$K$9$k;v$,$G$-$^$9(B: + +@lisp +(setq gnus-visual '(article-highlight menu)) +@end lisp + +$B$b$7%O%$%i%$%H$@$1$G!"%a%K%e!<$NN`$OM_$7$/$J$$$H$-$O!"$NA4$F$N%P%C%U%!$N308+$K1F6A$9$kAm9gE*$JJQ?t$O(B: + +@table @code +@item gnus-mouse-face +@vindex gnus-mouse-face +$B$3$l$O(B gnus $B$G%^%&%9$N%O%$%i%$%H$K;H$o$l$k%U%'%$%9(B ($B$9$J$o$A!"%U%)%s%H(B) +$B$G$9!#(B@code{gnus-visual} $B$,(B @code{nil} $B$G$"$k$H!"%^%&%9%O%$%i%$%H$O$J$5(B +$B$l$^$;$s!#(B + +@end table + +$BA4$/0c$C$?%a%K%e!<$r:n@.$9$k$?$a$K4XO"$9$k%U%C%/$,$"$j$^$9(B: + +@table @code + +@item gnus-article-menu-hook +@vindex gnus-article-menu-hook +$B5-;v%b!<%I(B (article mode) $B%a%K%e!<$r:n@.$7$?8e$K8F$P$l$k%U%C%/$G$9!#(B + +@item gnus-group-menu-hook +@vindex gnus-group-menu-hook +$B%0%k!<%W%b!<%I(B (group mode) $B%a%K%e!<$r:n@.$7$?8e$K8F$P$l$k%U%C%/$G$9!#(B + +@item gnus-summary-menu-hook +@vindex gnus-summary-menu-hook +$B35N,%b!<%I(B (summary mode) $B%a%K%e!<$r:n@.$7$?8e$K8F$P$l$k%U%C%/$G$9!#(B + +@item gnus-server-menu-hook +@vindex gnus-server-menu-hook +$B%5!<%P!<%b!<%I(B (server mode) $B%a%K%e!<$r:n@.$7$?8e$K8F$P$l$k%U%C%/$G$9!#(B + +@item gnus-browse-menu-hook +@vindex gnus-browse-menu-hook +$B354Q%b!<%I(B (browse mode) $B%a%K%e!<$r:n@.$7$?8e$K8F$P$l$k%U%C%/$G$9!#(B + +@item gnus-score-menu-hook +@vindex gnus-score-menu-hook +$B%9%3%"%b!<%I(B (score mode) $B%a%K%e!<$r:n@.$7$?8e$K8F$P$l$k%U%C%/$G$9!#(B + +@end table + + +@node Buttons +@section $B%\%?%s(B +@cindex buttons +@cindex mouse +@cindex click + +$B:G6a$G$O!":G?7N.9T$N%^%&%9(B @dfn{mouse} $BAuCV$,!"$A$c$s$H$7$?A`:nK!$r3X$S(B +$B$?$,$i$J$$%J%&$J%d%s%0$N4V$GBg?M5$$G$9!#$=$l$G$O!";d$,(BTops 20 $B%7%9%F%`>e(B +$B$G(B Emacs $B$r;H$C$F$$$?:"$N(B '89 $BG/$N2F$r;W$$5/$3$7$F$_$^$7$g$&!#(B300 $B?M$NMx(B +$BMQe$G!"$_$s$J$,(B Simula $B%3%s%Q%$%i$rAv$i$;$F$$$^$7$?!#(B +$B$"$"!"$P$+$P$+$7$$(B! + +$B$[$s$H$K$=$&$@$M!#(B + +@vindex gnus-carpal +$B$^$:$G$9$M!"(B@code{gnus-carpal} $B$r(B @code{t} $B$K@_Dj$9$k$3$H$K$h$C(B +$B$F!"%/%j%C%/$9$k$@$1$G2?$G$b$G$-$k%\%?%s$@$i$1$N%P%C%U%!$r(B gnus +$B$KI=<($5$;$k$3$H$,$G$-$^$9!#$H$C$F$b4JC1$G$9!"$[$s$H$K!#;X05NEK!(B +$B$N@h@8$K65$($F$"$2$F!#(B($BLuCm(B: carpal $B$H$O$K$b2?$+$=$&$$$C$?$3$H$G$9!#(B + +Gnus $B$O$5$^$6$^$J@)8f;R(B @dfn{handlers} $B$rDj5A$9$k$3$H$K$h$C$F$=(B +$B$N$h$&$J$3$H$r2DG=$K$7$^$9!#3F@)8f;R$O;0$D$NMWAG$+$i@.$j$^$9!#(B +@var{$B4X?t(B}$B!"(B@var{$B;~4V(B}$B!"(B@var{$B6uE>(B} $B%Q%i%a!<%?$G$9!#(B + +$B0J2<$O(B Emacs $B$,2?$b$7$J$$6uE>>uBV$,;0==J,B3$$$?$H$-$K@\B3$r@ZCG(B +$B$9$k@)8f;R$NNc$G$9!#(B + +@lisp +(gnus-demon-close-connections nil 30) +@end lisp + +$B0J2<$O(B Emacs $B$,2?$b$7$F$$$J$$$H$-!"0l;~4VKh$K(B PGP $B%X%C%@!<$rAv::(B +$B$9$k@)8f;R$G$9!#(B + +@lisp +(gnus-demon-scan-pgp 60 t) +@end lisp + +$B$3$N(B @var{$B;~4V(B} $B%Q%i%a!<%?$H$=$7$F(B @var{$B6uE>(B} $B%Q%i%a!<%?$O!"4qL/(B +$B$G$+$DAG@2$i$7$$J}K!$G0l=o$KF0:n$7$^$9!#4pK\E*$K$O!"(B@var {$B6uE>(B} +$B$,(B @code{nil} $B$N;~$K$O$3$N4X?t$O(B @var{$B;~4V(B} $BJ,Kh$K8F$S=P$5$l$^$9!#(B + +$B$b$7(B @var{$B6uE>(B} $B$,(B @code{t} $B$G$"$l$P!"$3$N4X?t$O(B Emacs $B$,2?$b$7(B +$B$F$$$J$$;~$K8B$j!"(B@var{$B;~4V(B} $BJ,8e$K8F$S=P$5$l$^$9!#0lC6(B Emacs $B$,(B +$B$:$C$H6uE>>uBV$K$J$C$?8e$O!"$3$N4X?t$O(B @var{$B;~4V(B} $BJ,Kh$K8F$S=P$5(B +$B$l$^$9!#(B + +@var{$B6uE>(B} $B$,?t$G(B @var{$B;~4V(B} $B$b?t$G$"$k>l9g!"$3$N4X?t$O!"(B Emacs +$B$N6uE>>uBV$,(B @var{$B6uE>(B} $BJ,B3$$$?;~$K8B$j!"(B@var{$B;~4V(B} $BJ,Kh$K8F$S(B +$B=P$5$l$^$9!#(B + +@var{$B6uE>(B} $B$,?t$G(B @var{$B;~4V(B} $B$,(B @code{nil} $B$N>l9g!"$3$N4X?t$O!"(B +Emacs $B$N6uE>>uBV$,(B @var{$B6uE>(B} $BJ,B3$/EY$K0lEY8F$S=P$5$l$^$9!#(B + +$B$=$7$F(B @var{$B;~4V(B} $B$,J8;zNs$N>l9g$O!"(B@samp{07:31} $B$N$h$&$J7A<0$G(B +$B$J$1$l$P$J$i$:!"$3$N4X?t$OKhF|$=$N:"$N;~4V$K$J$k$H0lEY8F$S=P$5$l(B +$B$^$9!#$b$A$m$s!"(B@var{$B6uE>(B} $B%Q%i%a!<%?$GF0:n$,JQ$o$j$^$9!#(B + +@vindex gnus-demon-timestep +($B$3$3$G(B ``$BJ,(B'' $B$H8@$C$?$H$-!"$=$l$O$9$k$h$&$K@_Dj$9$k$K$O!"(B +@code{gnus-use-demon} $B$r(B @code{t} $B$K@_Dj$7$J$-$c$$$1$J$$$s$@$1$I(B +$B$M!#(B + +$B$H$$$&$o$1$G!"@)8f;R$rDI2C$7$?$1$l$P!"(B @file{.gnus} $B%U%!%$%k$K!"(B +$B0J2<$N$h$&$J$b$N$r=q$/$3$H$,$G$-$^$9!#(B + +@findex gnus-demon-add-handler +@lisp +(gnus-demon-add-handler 'gnus-demon-close-connections 30 t) +@end lisp + +@findex gnus-demon-add-nocem +@findex gnus-demon-add-scanmail +@findex gnus-demon-add-rescan +@findex gnus-demon-add-scan-timestamps +@findex gnus-demon-add-disconnection +$B$3$N$?$a$N4{@=4X?t$,$$$/$D$+:n@.$5$l$F$$$^$9!#(B +@code{gnus-demon-add-nocem}$B!"(B +@code{gnus-demon-add-disconnection}$B!"(B +@code{gnus-demon-add-nntp-close-connection}$B!"(B +@code{gnus-demon-add-scan-timestamps}$B!"(B +@code{gnus-demon-add-rescan}$B!"(B@code{gnus-demon-add-scanmail} $B$G(B +$B$9!#$3$l$i$NG=NO$,M_$7$1$l$P!"C1$K$3$l$i$N4X?t$r(B @file{.gnus} $B$K(B +$BF~$l$F$/$@$5$$!#(B + +@findex gnus-demon-init +@findex gnus-demon-cancel +@vindex gnus-demon-handlers +$B$b$7(B @code{gnus-demon-handlers} $B$G@)8f;R$rD>@\DI2C$7$?>l9g$K$O!"(B +$B$=$l$r8z$+$;$k$?$a$K(B @code{gnus-demon-init} $B$rC$9$K$O!"(B@code{gnus-demon-cancel} $B4X?t$r;H(B +$B$&$3$H$,$G$-$^$9!#(B + +$B%G!<%b%s$NDI2C$O!"$d$j$9$.$k$N$O$H$C$F$b$*9T57$N$h$/$J$$$3$H$G$9!#(B +$BA4$F$N%5!<%P!<$+$iA4$F$N%K%e!<%9$H%a!<%k$rFsICKh$KD4$Y$^$o$94X?t(B +$B$rIU$12C$($A$c$C$?$j$9$k$H!"$I$s$JN)GI$J%7%9%F%`$G$b4V0c$$$J$/$*(B +$BJ'$$H"$K$7$F$7$^$$$^$9!#$=$&F0$/$s$@$b$s!#(B + + +@node NoCeM +@section NoCeM +@cindex nocem +@cindex spam + +$B%9%Q%`(B @dfn{Spam} $B$H$O!"F1$85-;v$r2?2s$b2?2s$b2?2s$bEj9F$9$k$3$H(B +$B$G$9!#%9%Q%`$O0-$$$3$H$G$9!#%9%Q%`$O6'0-$G$9!#(B + +$B%9%Q%`$ODL>o0lF|$+$=$3$i$G!"$5$^$6$^$JH?%9%Q%`5!4X$+$iC$7$5(B +$B$l$^$9!#$3$l$i$N5!4X$ODL>o0l=o$K!"(B@dfn{NoCeM} $B%a%C%;!<%8$bAw?.$7(B +$B$^$9!#(B@dfn{NoCeM} $B$O(B ``no see-'em'' ($BH`$i$r8+$?$/$J$$(B)$B$HH/2;$5$l!"(B +$B0UL#$O$=$NL>A0$NDL$j$G$9(B --- $B$3$N%a%C%;!<%8$O!":a$rHH$7$F$$$k5-(B +$B;v$r!"$D$^$j!">C$7$F$7$^$$$^$9!#(B + +$B$I$&$;$=$N5-;v$,C$7$5$l$F$7$^$&$N$J$i!"$3$l$i(B NoCeM $B%a%C%;!<(B +$B%8$O2?$K;H$o$l$k$N$G$7$g$&(B? $B$"$k%5%$%H$G$OC$7%a%C%;!<%8$r0z(B +$B$-C$7%a%C%;!<%8$N$_$7(B +$B$+0z$-C$75n$j$^$9!#(B + +$B$b$A$m$s!"$3$l$i$r%+%9%?%^%$%:$9$k$?$a$NJQ?t$,$$$/$D$+$"$j$^$9!#(B + +@table @code +@item gnus-use-nocem +@vindex gnus-use-nocem +$B$3$NJQ?t$r(B @code{t} $B$K@_Dj$9$k$3$H$G3hF0$r3+;O$5$;$^$9!#=i4|@_Dj(B +$B$G$O(B @code{nil} $B$G$9!#(B + +@item gnus-nocem-groups +@vindex gnus-nocem-groups +Gnus $B$O$3$N%0%k!<%W%j%9%H$+$i(B NoCeM $B%a%C%;!<%8$rC5$7$^$9!#=i4|@_(B +$BDjCM$O(B @code{("news.lists.filters" "news.admin.net-abuse.bulletins" +"alt.nocem.misc" "news.admin.net-abuse.announce")} $B$G$9!#(B + +@item gnus-nocem-issuers +@vindex gnus-nocem-issuers +NoCeM $B%a%C%;!<%8$rH/9T$9$k?M$O$?$/$5$s$$$^$9!#$3$N%j%9%H$G$O!"C/(B +$B$N8@$&$3$H$K=>$$$?$$$+$r;XDj$7$^$9!#=i4|@_DjCM$O(B @code{("Automoose-1" +"rbraver@@ohww.norman.ok.us" "clewis@@ferret.ocunix.on.ca" +"jem@@xpat.com" "snowhare@@xmission.com" "red@@redpoll.mrfs.oh.us +(Richard E. Depew)")} $B$G$9!#H`$i$O$_$s$J!"N)GI$G9b7i$J;TL1$G$9!#(B + +$B$3$N%j%9%H$K4^$a$i$l$kM-L>$JH?%9%Q%`2H$O0J2<$G$9!#(B + +@table @samp +@item clewis@@ferret.ocunix.on.ca; +@cindex Chris Lewis +Chris Lewis --- $BC$7$F$$$^$9!#(B + +@item Automoose-1 +@cindex CancelMoose[tm] +$B<+F01?E>$N(B CancelMoose[tm]$B!#(B CancelMoose[tm] $B$O%N%k%&%'!C$7$H!"(Bspew ($B5UN.5-;v(B) $B$r:o=|$7$F$$(B +$B$^$9!#(B +@end table + +$B$3$l$iA4$F$N?M!9$N(B NoCeM $B%a%C%;!<%8$KN10U$9$kI,MW$O$"$j$^$;$s(B +--- $B8@$&$3$H$rJ9$-$?$$?M$@$1$G$$$$$s$G$9!#$^$?$=$N?M$+$i$N(B NoCeM +$B%a%C%;!<%8A4$F$r$l/$O87L)$J!"DxEY$M!#$?$$$F$$$O>/(B +$B$@$1$I(B)$B!#NI$/;H$o$l$kr7o(B ...)} $BMWAG$r;H$&I,MW$,$"(B +$B$j$^$9!#3F>r7o$OJ8;zNs(B ($B;H$$$?$$l9g$O(B +@var{$BJ8;zNs(B} $B$O;H$$$?$/$J$$l9g$K$O!"(B + +@lisp +("clewis@@ferret.ocunix.on.ca" ".*" (not "troll")) +@end lisp + +$B0lJ}!"H`$N(B @samp{spam} $B$H(B @samp{spew} $B%a%C%;!<%80J30$O2?$b$7$?$/(B +$B$J$1$l$P!"0J2<$N$h$&$K$G$-$^$9!#(B + +@lisp +("clewis@@ferret.ocunix.on.ca" (not ".*") "spew" "spam") +@end lisp + +$B$3$N;XDj$O:8$+$i1&$KE,MQ$5$l$^$9!#(B + + +@item gnus-nocem-verifyer +@vindex gnus-nocem-verifyer +@findex mc-verify +$B$3$l$O(B NoCeM $BH/9TZL@$9$k4X?t$G$J(B +$B$/$F$O$J$j$^$;$s!#=i4|@_Dj$G$O(B @code{mc-verify} $B$G$"$j!"$3$l$O(B +Mailcrypt $B4X?t$G$9!#$b$7$3$l$,Hs>o$KCY$/$F!"$"$J$?$,>ZL@7k2L$r5$(B +$B$K$7$J$$(B ($B$3$l$O$?$V$s4m81$G$9(B) $B$N$G$"$l$P!"$3$NJQ?t$r(B +@code{nil} $B$K$9$k$3$H$,$G$-$^$9!#(B + +$B$b$7=pL>:Q$_$N(B NoCeM $B%a%C%;!<%8$r>ZL@:Q$_!"L$=pL>$N%a%C%;!<%8$r(B +$BL$>ZL@(B($B$G$b$=$l$r;H$&(B)$B$H$7$?$$$N$J$i!"0J2<$N$h$&$K$9$k$3$H$,$G$-(B +$B$^$9!#(B + +@lisp +(setq gnus-nocem-verifyer 'my-gnus-mc-verify) + +(defun my-gnus-mc-verify () + (not (eq 'forged + (ignore-errors + (if (mc-verify) + t + 'forged))))) +@end lisp + +$B$^$"!"$3$l$O$?$V$s4m81$G$7$g$&$1$I$M!#(B + +@item gnus-nocem-directory +@vindex gnus-nocem-directory +$B$3$l$O(B gnus $B$,(B NoCeM $B%-%c%C%7%e%U%!%$%k$rJ]B8$9$k>l=j$G$9!#=i4|(B +$B@_DjCM$O(B @file{~/News/NoCeM/} $B$G$9!#(B + +@item gnus-nocem-expiry-wait +@vindex gnus-nocem-expiry-wait +$B8E$$(B NoCeM $B9`L\$r%-%c%C%7%e$+$i>C$9$^$G$NF|?t!#=i4|@_DjCM$O(B 15 +$B$G$9!#$3$l$rC;$/$9$k$[$I(B gnus $B$OB.$/$J$j$^$9$,!"8E$$%9%Q%`$r8+$k(B +$B$3$H$K$J$C$F$7$^$&$+$b$7$l$^$;$s!#(B + +@end table + +NoCeM $B$r;H$&$H!"$b$7$+$9$k$H%a%b%j6t$$$K$J$k$+$b$7$l$^$;$s!#$"$J(B +$B$?$,$?$/$5$s$N@8$-$?%0%k!<%W(B ($B$D$^$j9XFI$"$k$$$OHs9XFI%0%k!<%W(B) +$B$r;}$C$F$$$k$N$J$i!"(BEmacs $B%W%m%;%9$OBg$-$/$J$C$F$7$^$&$G$7$g$&!#(B +$B$b$7$3$l$,LdBj$G$"$l$P!"Hs9XFI$N%0%k!<%W$rA4It(B ($B$"$k$$$O$=$NB?$/(B +$B$r(B) $B>C$75n$C$F$7$^$C$?J}$,NI$$$G$9(B (@pxref{Subscription +Commands})$B!#(B + + +@node Undo +@section $B$d$jD>$7(B +@cindex undo + +$B$7$,$G$-$k$H!"$H$F$bJXMx$G$9!#IaDL$N(B Emacs +$B%P%C%U%!$G$O!"$3$l$O==J,4JC1$G$9(B --- $BC1$K(B @code{undo} $B%\%?%s$r2!(B +$B$9$@$1$G$9!#$7$+$7(B gnus $B$N%P%C%U%!$G$O!"$3$l$O4JC1$G$O$"$j$^$;$s!#(B + +Gnus $B$,%P%C%U%!!C5n$9$k$N$O!"$=$N9T$O>C$(5n$j$^$9$,!"$=$l$O$7$O!"DL>o$N(B Emacs +$B$N(B @code{undo} $B4X?t$G$O9T$J$&$3$H$,$G$-$^$;$s!#(B + +Gnus $B$O!"MxMQ$72DG=$J(B +$B%-!<4X?t$O6O$+$7$+Ds6!$7$F$$$^$;$s!#$3$l$i$O!"%0%k!<%W$N:o=|!"%0%k!<(B +$B%W$NE=$jIU$1!"%0%k!<%W$N4{FI5-;v$N%j%9%H$NJQ99!"$=$l$@$1$J$s$G$9!#(B +$B>-Mh$O$b$C$H4X?t$,DI2C$5$l$k$+$b$7$l$^$;$s$,!"4X?t$NDI2C$O$=$l$>(B +$B$lJ]B8$9$k$Y$-%G!<%?$rA}$d$9$3$H$K$J$k$N$G!"(Bgnus $B$O7h$7$F40A4$d(B +$B$jD>$72DG=$K$O$J$i$J$$$G$7$g$&!#(B + +@findex gnus-undo-mode +@vindex gnus-use-undo +@findex gnus-undo +$B$d$jD>$75!G=$O(B @code{gnus-undo-mode} $B%^%$%J!<%b!<%I$K$h$C$FDs6!(B +$B$5$l$^$9!#$3$l$O(B @code{gnus-use-undo} $B$,(B @code{nil} $B0J30$G$"$l$P(B +$B;HMQ$5$l!"$3$l$,=i4|@_Dj$G$9!#(B@kbd{M-C-_} $B%-!<$,(B +@code{gnus-undo} $BL?Na$ro$N(B Emacs $B$N(B +@code{undo} $BL?Na$K$A$g$C$H$@$1;w$F$$$k$H;W$o$l$k$G$7$g$&!#(B + + +@node Moderation +@section $B;J2qLr(B +@cindex moderation + +$B$b$7$"$J$?$,;J2q5G'$7$F$$$J$$5-;v$r$r$?$^$?$^8+$D$1$?$H$7$?$i!"(B@kbd{c} $BL?Na$G(B +$BC$7$G$-$^$9!#(B +@end enumerate + +$BFs$D$N%0%k!<%W$G;J2q$N$b$N$rI=<($9$k$3$H$,$G$-$k$N$G!"(Bgnus $B$O$3$l(B +$B$rMxMQ$9$k$3$H$K$7$^$9!#(B + +@menu +* Picons:: $B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!!#(B +* Smileys:: $BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<($9$kJ}K!!#(B +* Toolbar:: $B%/%j%C%/1n!#(B +* XVarious:: $B$=$NB>$N(B XEmacs $B$G(B Gnus $B$JJQ?t!#(B +@end menu + + +@node Picons +@subsection Picons + +@iftex +@iflatex +\include{picons} +@end iflatex +@end iftex + +$B$=$l$G!D!"$"$J$?$O$3$N%K%e!<%9%j!<%@!<$r$5$i$K$b$C$HCY$/$7$?$$$C(B +$B$F$o$1$@$M(B! $B$3$l$O$=$&$9$k$N$K$T$C$?$j$JJ}K!$G$9!#$5$i$K$3$l$O!"(B +$B$"$J$?$,%K%e!<%9$rFI$s$G$$$k$s$@$H$$$&$3$H$r!"$"$J$?$N8*1[$7$K8+(B +$B$D$a$F$$$k?M$K0u>]$E$1$k$?$a$NAG@2$i$7$$J}K!$G$b$"$j$^$9!#(B + +@menu +* Picon Basics:: picon $B$H$O2?$G!"$I$&$d$C$F$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?$jM7$s$@$j$9$kJQ?t!#(B +@end menu + + +@node Picon Basics +@subsubsection Picon $B$N4pAC(B + +Picon $B$H$O$J$s$G$7$g$&(B? Picons $B%&%'%V%5%$%H$+$iD>@\0zMQ$7$^$7$g$&!#(B + +@iftex +@iflatex +\margindex{} +@end iflatex +@end iftex + +@quotation +@dfn{Picon} $B$H$O!"(B``$B8D?M%"%$%3%s(B (personal icons)'' $B$NN,$G$9!#$3(B +$B$l$O!"%M%C%H>e$NMxMQ.$5(B +$B$J2hA|$G!"%G!<%?%Y!<%9$r;}$?$;$F!"$"$kEE;R%a!<%k%"%I%l%9$,$"$C$?(B +$B$i!"$=$l$KE,@Z$J2hA|$r8+$D$1$i$l$k$h$&$K$7$F$*$/$b$N$G$9!#MxMQo;~@\B3$7$F$$$k$N$J$i$P!"(B +@code{gnus-picons-piconsearch-url} $B$KJ8;zNs(B +@file{http://www.cs.indiana.edu/picons/search.html} $B$r@_Dj$9$k$3(B +$B$H$G!"(BSteve Kinzler $B$N(B picon $B8!:w%(%s%8%s$r;H$&$3$H$,$G$-$^$9!#(B + +@vindex gnus-picons-database +$B$=$&$G$J$1$l$P!"H`$N%G!<%?%Y!<%9$rl=j$K%$%s%9%H!<%k$7$F$"$k$b$N$H4|BT$7$^$9!#(B + + +@node Picon Requirements +@subsubsection Picon $B$NF0:n>r7o(B + +Gnus $B$K(B picon $B$rI=<($5$;$k$K$O!"(BXEmacs 19.13 $B$+$=$l0J9_$r$NHG$N(B Emacs $B$G$O$I$l$b$^$@2hA|$rI=<((B +$B$G$-$J$$$+$i$G$9!#(B + +$B$5$i$K!"(B@code{x} $B%5%]!<%HIU$-$G(B XEmacs $B$r%3%s%Q%$%k$7$F$$$J$/$F(B +$B$O$J$j$^$;$s!#Gr9u$h$j$b$b$C$H4qNo$J?'IU$-$N(B picon $B$rI=<($9$k$?(B +$B$a$K$O!"(B@code{xpm} $B$+(B @code{gif} $B$I$A$i$+$r(B XEmacs $B$H0l=o$K%3%s(B +$B%Q%$%k$7$F$$$kI,MW$b$"$j$^$9!#(B + +@vindex gnus-picons-convert-x-face +@code{X-Face} $B%X%C%@!<$N4i$rI=<($7$?$$$N$J$i!"(BXEmacs $B$r(B +@code{xface} $B%5%]!<%HIU$-$G%3%s%Q%$%k$7$J$1$l$P$J$j$^$;$s!#$=$&(B +$B$G$J$1$l$P!"(B@code{netpbm} $B%f!<%F%#%j%F%#$r%$%s%9%H!<%k$7$F$*$/$+!"(B +$B$"$k$$$OB>$N2?$+$r;H$&$h$&$K(B @code{gnus-picons-convert-x-face} +$BJQ?t$r$$$8$/$C$F$/$@$5$$!#(B + + +@node Easy Picons +@subsubsection $B3Z!9(B Picons + +picon $BI=<($rM-8z$K$9$k$K$O!"C1$K0J2<$N9T$r(B @file{~/.gnus} $B%U%!%$(B +$B%k$KF~$l$F!"(Bgnus $B$r5/F0$7$F$/$@$5$$!#(B + +@lisp +(setq gnus-use-picons t) +(add-hook 'gnus-article-display-hook 'gnus-article-display-picons t) +(add-hook 'gnus-article-display-hook 'gnus-picons-article-display-x-face) +@end lisp + +@code{gnus-picons-database} $B$,(B picon $B%G!<%?%Y!<%9$,4^$^$l$F$$$k(B +$B%G%#%l%/%H%j$r;X$7$F$$$k$3$H$r3NG'$7$F$/$@$5$$!#(B + +$B$=$NBe$o$j$K(B Web $B>e$N(B picon $B8!:w%(%s%8%s$r;H$$$?$1$l$P!"$3$l$rDI(B +$B2C$7$^$9!#(B + +@lisp +(setq gnus-picons-piconsearch-url "http://www.cs.indiana.edu:800/piconsearch") +@end lisp + + +@node Hard Picons +@subsubsection $BFq2r(B Picons + +@iftex +@iflatex +\margindex{} +@end iflatex +@end iftex + +Gnus $B$O!"%0%k!<%W$d5-;v$KF~$C$?$j=P$?$j$9$k$N$K=>$C$F(B picon $B$rI=(B +$B<($9$k$3$H$,$G$-$^$9!#(BGnus $B$O(B picon $B%G!<%?%Y!<%9$N;0$D$N>O$H$I$&(B +$BAj8_:nMQ$9$l$P$h$$$+$rCN$C$F$$$^$9!#$9$J$o$A!"(Bgnus $B$O%K%e!<%9%0(B +$B%k!<%W$N3(!"Cxl=j!#(B@file{news}$B!"(B @file{domains}$B!"(B +@file{users} ($B$J$I$J$I(B) $B$N%5%V%G%#%l%/%H%j!<$,4^$^$l$F$$$k%G%#%l(B +$B%/%H%j!<$r;X$7$F$$$J$1$l$P$J$j$^$;$s!#$3$l$O(B +@code{gnus-picons-piconsearch-url} $B$,(B @code{nil} $B$G$"$k$H$-$N$_(B +$B;HMQ$5$l$^$9!#=i4|@_DjCM$O(B @file{/usr/local/faces/} $B$G$9!#(B + +@item gnus-picons-piconsearch-url +@vindex gnus-picons-piconsearch-url +Web $B>e$N(B picon $B8!:w%(%s%8%s$N(B URL$B!#8=:_CN$i$l$F$$$kM#0l$N%(%s%8(B +$B%s$O(B @file{http://www.cs.indiana.edu:800/piconsearch} $B$G$9!#%M%C(B +$B%H%o!<%/CY1d$r2sHr$9$k$?$a$K(B icon $B$O%P%C%/%0%i%&%s%I$Gl=j!#$3$l$O=i4|@_Dj$G$O(B @code{picons} $B$G(B +$B$9(B ($B$3$l$O=i4|@_Dj$G(B @samp{*Picons*} $B%P%C%U%!$K0LCV$7$^$9(B)$B!#B>$N(B +$BM-8z$J>l=j$H$7$F$O(B @code{article}$B!"(B @code{summary}$B!"$"$k$$$O(B +@samp{*scratch*} $B$@$m$&$HCN$C$?$3$H$G$O$"$j$^$;$s!#$?$@$=$N%P%C(B +$B%U%!$rI8=`$N(B gnus $BAkG[CV=hM}(B --- @pxref{Windows Configuration}$B$K(B +$B$h$C$F8+$($k$h$&$K$7$F$*$/$3$H$r3NG'$7$F$/$@$5$$!#(B + +@item gnus-picons-group-excluded-groups +@vindex gnus-picons-group-excluded-groups +$B$3$N@55,I=8=$K%^%C%A$9$k%0%k!<%W$G$O$=$N%0%k!<%W%"%$%3%s$rI=<($5(B +$B$;$^$;$s!#(B + +@end table + +$BCm0U(B: $B$b$7(B @code{gnus-use-picons} $B$r(B @code{t} $B$K@_Dj$9$k$H!"AkG[(B +$BCV$K(B @code{picons} $B%P%C%U%!$r4^$a$k$h$&$K@_Dj$5$l$^$9!#(B + +$B$5$F!"$3$l$i$r7hDj$7$?8e$K$O!"$3$l$i$N3($,@5$7$$;~$KI=<($5$l$k$h(B +$B$&$K!"0J2<$N4X?t$rE,@Z$J%U%C%/$KDI2C$9$kI,MW$,$"$j$^$9!#(B + +@vindex gnus-article-display-hook +@vindex gnus-picons-display-where +@table @code +@item gnus-article-display-picons +@findex gnus-article-display-picons +$BCxLr$K$bN)$?$J$$$I$&$G$b$h$$$3$H$r@)8f$G$-$k$h$&$K$7$^$9!#(B + +@table @code + +@item gnus-picons-news-directories +@vindex gnus-picons-news-directories +@code{gnus-picons-database} $B$+$i%K%e!<%9%0%k!<%W%U%'%$%9$rC5$9$?(B +$B$a$N%5%V%G%#%l%/%H%j!<$N%j%9%H!#(B@code{("news")} $B$,=i4|@_DjCM$G$9!#(B + +@item gnus-picons-user-directories +@vindex gnus-picons-user-directories +@code{gnus-picons-database} $B$+$iMxMQ%U%'%$%9$rC5$9$?$a$N%5(B +$B%V%G%#%l%/%H%j!<$N%j%9%H!#=i4|@_DjCM$O(B @code{("domains")} $B$G$9!#(B +$B$3$N%j%9%H$K(B @samp{"unknown"} $B$rDI2C$7$F$*$-$?$/$J$k?M$b$$$k$G$7$g(B +$B$&!#(B + +@item gnus-picons-convert-x-face +@vindex gnus-picons-convert-x-face +$B$b$7(B XEmacs $B$K(B @code{xface} $B%5%]!<%H$,AH$_9~$^$l$F$$$J$1$l$P!"$3(B +$B$NL?Na$,(B @code{X-Face} $B%X%C%@!<$r(B X $B%S%C%H%^%C%W(B (@code{xbm}) $B$K(B +$BJQ49$9$k$N$K;HMQ$5$l$^$9!#=i4|@_DjCM$O(B @code{(format "@{ echo '/* Width=48, +Height=48 */'; uncompface; @} | icontopbm | pbmtoxbm > %s" +gnus-picons-x-face-file-name)} $B$G$9!#(B + +@item gnus-picons-x-face-file-name +@vindex gnus-picons-x-face-file-name +@code{X-Face} $B%S%C%H%^%C%W$r3JG<$7$F$*$/0l;~%U%!%$%k$NL>A0!#=i4|(B +$B@_DjCM$O(B @code{(format "/tmp/picon-xface.%s.xbm" +(user-login-name))}$B!#(B + +@item gnus-picons-has-modeline-p +@vindex gnus-picons-has-modeline-p +@code{gnus-picons-display-where} $B$r(B @code{picons} $B$K@_Dj$7$F$7$^(B +$B$&$H!"(BXEmacs $B$N%U%l!<%`$O$a$A$c$a$A$c$K$J$C$F$7$^$&$G$7$g$&!#$3(B +$B$l$rB?>/$J$j$H$b7Z8:$9$k$K$O!"(B@code{gnus-picons-has-modeline-p} +$B$r(B @code{nil} $B$K@_Dj$7$F$/$@$5$$!#$3$l$O(B picon $B%P%C%U%!$+$i%b!<(B +$B%I9T$r$H$7$F;n$7$F$_$k3HD%;R$N=g=x%j%9%H!#=i4|@_DjCM$O(B +@code{("xpm" "gif" "xbm")} $B$+$i(B XEmacs $B$KAH$_9~$^$l$F$$$J$$$b$N(B +$B$r0z$$$?$b$N$G$9!#(B + +@item gnus-picons-display-article-move-p +@vindex gnus-picons-display-article-move-p +picon $B$rI=<($7$F$$$k$H$-$K%+!<%=%k0LCV$r:G=i$N6u9T$^$GF0$+$9$+$I(B +$B$&$+$r;XDj!#$3$l$O(B @code{gnus-picons-display-where} $B$NCM$,(B +@code{article} $B$G$"$k$H$-$N$_8z2L$,$"$j$^$9!#(B + +@item gnus-picons-clear-cache-on-shutdown +@vindex gnus-picons-clear-cache-on-shutdown +Gnus $B$r=*N;$9$k$H$-$K(B picon $B%-%c%C%7%e$r>C$75n$k$+$I$&$+!#(BGnus +$B$O/@aLs$G$-$^$9$,!"%a%b%j$r$$$/$i$+?)$$$^$9!#$b$7$3$NJQ(B +$B?t$r(B @code{nil} $B$K@_Dj$9$l$P!"(Bgnus $B$O$=$N%-%c%C%7%e$r7h$7$F>C$7(B +$B$^$;$s!#$=$l$r>C$75n$k$K$OC5n$5$l$^$9!#=i4|@_DjCM$O(B @code{t} $B$G$9!#(B + +@iftex +@iflatex +\margindex{} +@end iflatex +@end iftex + +@end table + +@node Smileys +@subsection $B%9%^%$%j!<(B +@cindex smileys + +@iftex +@iflatex +\gnusfig{-3cm}{0.5cm}{\epsfig{figure=tmp/BigFace.ps,height=20cm}} +\input{smiley} +@end iflatex +@end iftex + +$B%9%^%$%j!<(B @dfn{smiley} $B$O(B gnus $B$H$OJL$N%Q%C%1!<%8$G$9$,!"%9%^%$(B +$B%j!<$r;H$C$F$$$k%Q%C%1!<%8$O8=:_(B gnus $B$@$1$G$9$N$G!"$3$3$G@bL@$7(B +$B$^$9!#(B + +$B0l8@$G8@$($P(B --- gnus $B$G%9%^%$%j!<$r;H$&$K$O!"0J2<$r(B +@file{.gnus.el} $B$U$!$$$k$K=q$$$F$/$@$5$$!#(B + +@lisp +(add-hook 'gnus-article-display-hook 'gnus-smiley-display t) +@end lisp + +$B%9%^%$%j!<$O!"J8;z$N4i%^!<%/(B --- @samp{:-)}$B!"(B@samp{:-=}$B!"(B +@samp{:-(} $B$J$I$H$$$C$?$b$N(B --- $B$r3($KBP1~$5$;!"J8;z$N4i%^!<%/$N(B +$BBe$o$j$K$=$N3($rI=<($7$^$9!#$3$NJQ49$OJ8;z$K%^%C%A$9$k@55,I=8=$H(B +$B$=$l$N%U%!%$%kL>$X$NBP1~$N%j%9%H$G@)8f$5$l$^$9!#(B + +@vindex smiley-nosey-regexp-alist +@vindex smiley-deformed-regexp-alist +$B%9%^%$%j!<$O=i4|@_Dj$G$OFs$D$NJQ49O"A[%j%9%H$NNc$rDs6!$7$F$$$^$9!#(B +@code{smiley-deformed-regexp-alist} (@samp{:)}$B!"(B @samp{:(} $B$J$I(B +$B$K%^%C%A$9$k(B) $B$H!"(B@code{smiley-nosey-regexp-alist} (@samp{:-)}$B!"(B +@samp{:-(} $B$J$I$K%^%C%A$9$k(B) $B$G$9!#(B + +$B;HMQ$5$l$kO"A[%j%9%H$O(B @code{smiley-regexp-alist} $BJQ?t$G;XDj$5$l(B +$B$^$9!#$3$N=i4|@_DjCM$O(B @code{smiley-deformed-regexp-alist} $B$G$9!#(B + +$B3FMWAG$N:G=i$N9`L\$O%^%C%A$5$;$?$$@55,I=8=$G!"FsHVL\$NMWAG$O3($G(B +$BCV$-49$($?$$%0%k!<%W$K%^%C%A$9$k@55,I=8=!"$=$7$F;0HVL\$NMWAG$OI=(B +$B<($5$;$?$$%U%!%$%k$NL>A0$G$9!#(B + +$B0J2<$NJQ?t$O!"%9%^%$%j!<$,$3$l$i$N%U%!%$%k$rC5$9>l=j!"$"$k$$$O$I(B +$B$N?'$r;H$&$+$H!"$=$NB>$N$b$N$r%+%9%?%^%$%:$7$^$9!#(B + +@table @code + +@item smiley-data-directory +@vindex smiley-data-directory +$B%9%^%$%j!<$,4i%U%!%$%k$rC5$9>l=j!#(B + +@item smiley-flesh-color +@vindex smiley-flesh-color +$BH)$N?'!#=i4|@_DjCM$O!"?Ml9g$O!"(B +@code{default-toolbar}$B!"(B@code{top-toolbar}$B!"(B +@code{bottom-toolbar}$B!"(B@code{right-toolbar}$B!"(B@code{left-toolbar} +$B$N$I$l$+$G$J$/$F$O$J$j$^$;$s!#(B + +@item gnus-group-toolbar +@vindex gnus-group-toolbar +$B%0%k!<%W%P%C%U%!Fb$N%D!<%k%P!l=j$G$9!#(BGnus $B$ODL>o$3$N%G%#%l%/%H%j$r<+(B +$BF08!=P$7$^$9$,!"$b$7I8=`E*$G$J$$%G%#%l%/%H%j!<9=B$$r;}$C$F$$$k>l(B +$B9g$O!"$3$l$rl9gBEEv$J7k2L$r=P$7$^$9(B --- +$B$?$H$(%K%e!<%9%j!<%@!<$N2>LL$r$+$V$C$?J8;zNs@Z$j9o$_5!$G@8@.$5$l(B +$B$?J8;zNs$,:9$7=P$5$l$F$b!"$G$9!#(B + + +@node Thwarting Email Spam +@section spam $B%a!<%k$NN"$r$+$/(B +@cindex email spam +@cindex spam +@cindex UCE +@cindex unsolicited commercial email + +$B$3$3:G6a$N(B USENET $B$G$O!"@kEA$N%O%2%?%+$I$b$,!"H`$i$N:>5=$d@=IJ$r(B +$B2!$7IU$1$k$?$a$NEE;R%a!<%k%"%I%l%9$rC5$=$&$H$7$F!"5$0c$$$N$h$&$K(B +$B%K%e!<%9>e$r$&$m$D$$$F(B grep $B$7$^$/$C$F$$$^$9!#$3$l$KBP$9$kH?F0$H(B +$B$7$F!"B?$/$N?M!9$,(B @code{From} $B9T$KL50UL#$J%"%I%l%9$rF~$l$O$8$a(B +$B$k$h$&$K$J$C$F$7$^$$$^$7$?!#$3$l$OHs@8;:E*$J$3$H$@$H;d$O;W$$$^$9(B +--- $B$"$J$?$,=q$$$?$3$H$KBP$9$kJV?.$H$7$F@5Ev$J%a!<%k$rAw$k$3$H$r(B +$BLLE]$K$5$;!"$^$?C/$,=q$$$?$b$N$J$N$+$rJ,$+$j$E$i$/$7$^$9!#$3$s$J(B +$B=q$-49$($O7k6I$O!"2!$7IU$1@kEA%a!<%k$=$l<+?H$h$j$bBg$-$J6<0R$H$J(B +$B$k$+$b$7$l$^$;$s!#(B + +$B;d$K$H$C$F$N(B spam $B%a!<%k$N:GBg$NLdBj$O!"13$N8}\n") +@end lisp + +$B$=$7$F(B @code{nnmail-split-fancy} $B$K0J2<$NJ,N%5,B'$rF~$l$^$9(B +(@pxref{Fancy Mail Splitting})$B!#(B + +@lisp +( + ... + (to "larsi@@trym.ifi.uio.no" + (| ("subject" "re:.*" "misc") + ("references" ".*@@.*" "misc") + "spam")) + ... +) +@end lisp + +$B$3$N0UL#$O!"$3$N%"%I%l%9$KFO$$$?A4$F$N%a!<%k$r$^$:5?$$$^$9$,!"(B +@samp{Re:} $B$G;O$^$k(B @code{Subject} $B$,$D$$$F$$$k$+!"(B +@code{References} $B%X%C%@!<$,$D$$$F$$$l$P$*$=$i$/(B OK $B$@$m$&!"$H$$(B +$B$&$3$H$G$9!#;D$j$OA4$F(B @samp{spam} $B%0%k!<%W$K9T$-$^$9!#(B($B$3$N%"%$(B +$B%G%"$O$*$=$i$/(B Tim Pierce $B;a$K$h$k$b$N$G$9!#(B) + +$B$3$l$K2C$($F!"B?$/$N%a!<%k(B spam $B20$O!"$"$J$?$N$H$3$m$N(B +@code{smtp} $B%5!<%P!<$HD>@\OC$7!"(B@code{To} $B%X%C%@!<$K$"$J$?$N%a!<(B +$B%k%"%I%l%9$,L@<($5$l$J$$$h$&$K$7$^$9!#$J$s$G$=$s$J$3$H$r$9$k$N$+(B +$B$O$o$+$j$^$;$s$,(B --- $B$*$=$i$/;d$?$A$NN"$r$+$/5!9=$NN"$r$+$/$?$a(B +$B$+$J(B? $B$I$A$i$K$7$F$b!"BP=h$O4JC1$J$3$H$G$9(B --- $B$"$J$?08$F$G(B +$B$J$$$b$N$rA4It(B @samp{spam} $B%0%k!<%W$K$$$l$k$@$1$G$9!#$3$l$O$*9%(B +$B$_J,N%5,B'$N:G8e$K$3$s$JIw$KF~$l$k$3$H$G$G$-$^$9!#(B + +@lisp +( + ... + (to "larsi" "misc") + "spam") +@end lisp + +$B;d$N7P83$G$O!"$3$l$G;veA4$F$,@5$7$$%0%k!<%W$KJ,N`$5$l$^$9!#$^(B +$B$"!"$=$l$G$b$H$-$I$-(B @samp{spam} $B%0%k!<%W$r%A%'%C%/$7$F!"@5$7$$(B +$B%a!<%k$,$"$k$+%A%'%C%/$7$J$/$F$O$$$1$^$;$s$1$I$M!#$b$7$"$J$?$O<+(B +$BJ,$,NI$$%M%C%H%o!<%/;TL1$G$"$k$H;W$C$F$$$k$J$i!"$=$l$>$l$N2!$7IU(B +$B$1@kEA%a!<%k$N4X78Ev6I$K6l>p$rAw$jIU$1$k$3$H$5$($b$G$-$^$9(B --- +$B2K$J$H$-$K$G$b$M!#(B + +$B$^$?!"$"$J$?$,BU$1p$r$$$&J}$,NI$$(B +$B$H;W$&$+$b$7$l$^$;$s!#$3$l$O(B +@file{} +$B$+$i!VL5NA$G!WMxMQ$G$-$^$9!#$[$H$s$I$N(B spam $B%a!<%k$O<+F0E*$KAw$i(B +$B$l$F$$$k$N$G!"$A$g$C$H$@$11'Ch$N%P%i%s%9$,$H$l$k$+$b$7$l$^$;$s!#(B + +$B$3$l$G;d$N$H$3$m$G$OF0$$$F$$$^$9!#$3$l$G$_$s$J$O4JC1$JJ}K!$G;d$K(B +$BO"Mm$ruBV$G$9!#;d$N0U8+$H(B +$B$7$F$O!"(B @code{From} $B%X%C%@!<$K56B$$7$FB8:_$7$J$$%I%a%$%s$KAw$i(B +$B$;$k$N$O%-%?%J%$$G$9!#(B + + +@node Various Various +@section $B$$$m$$$m$N$$$m$$$m(B +@cindex mode lines +@cindex highlights + +@table @code + +@item gnus-home-directory +$BA4$F$N(B gnus $B$N%Q%9JQ?t$O$3$NJQ?t$K$h$C$F=i4|2=$5$l$^$9!#$=$N=i4|(B +$B@_DjCM$O(B @file{~/} $B$G$9!#(B + +@item gnus-directory +@vindex gnus-directory +$B$?$/$5$s$N(B gnus $B3JG<%Q%9JQ?t$O$3$NJQ?t$K$h$C$F=i4|2=$5$l$^$9!#$=(B +$B$N=i4|@_DjCM$O(B @samp{SAVEDIR} $B4D6-JQ?t$NCM$+!"$=$NJQ?t$,@_Dj$5$l(B +$B$F$$$J$$>l9g$O(B @file{~/News/} $B$G$9!#(B + +@file{.gnus.el} $B%U%!%$%k$,FI$^$l$?$H$-$O(B gnus $B$N$[$H$s$I$O$9$G$K(B +$BFI$_9~$^$l$F$$$k$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#$3$l$O$D$^$j!"$3$N(B +$BJQ?t$r(B @file{.gnus.el} $B$NCf$G@_Dj$7$F$b!"$3$NJQ?t$K$h$C$F=i4|2=(B +$B$5$l$kB>$N%G%#%l%/%H%j!e5-$NJQ?t$K$OA4$/4X78$"$j$^$;$s(B --- $B$3$NJQ?t$OA4$F$N(B gnus $B%P%C(B +$B%U%!!<$N%G%#%U%)%k%H%G%#%l%/%H%j!<$r$I$&$9$Y$-$+$r@_Dj$7$^$9!#$b(B +$B$7(B @kbd{C-x C-f} $B$N$h$&$JL?Na$r/$J$$NL$@$1$rFI$b$&$HEXNO$7$^$9!#$3$NJQ?t(B ($B=i4|@_DjCM(B 4096) +$B$O!"%P%C%/%(%s%I$,%X%C%@!<$HK\J8$N4V$N6h@Z$j9T$r8+$D$1$k$^$G$KFI(B +$B$_9~$b$&$H$9$k@dBP:GBgD9$r;XDj$7$^$9!#$3$NJQ?t$,(B @code{nil} $B$G$"(B +$B$l$P!"FI$_9~$_>e8B$O$"$j$^$;$s!#$b$7(B @code{t} $B$G$"$l$P!"%P%C%/%((B +$B%s%I$O5-;v$rItJ,ItJ,$GFI$_9~$b$&$H$O$;$:!"5-;vA4BN$rFI$_9~$_$^$9!#(B +$B$3$l$O(B @code{ange-ftp} $B$d(B @code{efs} $B$N$"$k%P!<%8%g%s$G0UL#$r$b(B +$B$A$^$9!#(B + +@item nnheader-head-chop-length +@vindex nnheader-head-chop-length +$B$3$NJQ?t(B ($B=i4|@_DjCM(B 2048) $B$O!"A05-$NA`:n$r9T$C$F$$$k$H$-$K!"$I(B +$B$l$/$i$$$NBg$-$5$NC10L$G3F5-;v$rFI$_9~$`$+$r@_Dj$7$^$9!#(B + +@item nnheader-file-name-translation-alist +@vindex nnheader-file-name-translation-alist +@cindex file names +@cindex invalid characters in file names +@cindex characters in file names +$B$3$l$O%U%!%$%kL>$NJ8;z$r$I$N$h$&$KJQ49$9$k$+$r;XDj$9$kO"A[%j%9%H(B +$B$G$9!#Nc$($P!"$b$7(B @samp{:} $B$,$"$J$?$N%7%9%F%`$G$O%U%!%$%kL>$NJ8(B +$B;z$H$7$F$O;H$($J$$>l9g(B ($B$"$J$?$O(B OS/2 $B%f!<%6$G$9(B) $B!"0J2<$N$h$&$K(B +$B$9$k$3$H$,$G$-$^$9!#(B + +@lisp +(setq nnheader-file-name-translation-alist + '((?: . ?_))) +@end lisp + +$Be$G$N$3$NJQ(B +$B?t$N=i4|@_DjCM$G$9!#(B + +@item gnus-hidden-properties +@vindex gnus-hidden-properties +$B$3$l$O(B ``$BIT2D;k(B'' $B%F%-%9%H$r1#$9$?$a$K;H$o$l$kB0@-$N%j%9%H$G$9!#(B +$B$[$H$s$I$N%7%9%F%`$G$O=i4|@_DjCM$O(B @code{(invisible t intangible +t)} $B$G!"$3$l$OIT2D;k%F%-%9%H$r8+$($J$/$7$F?($l$J$/$7$^$9!#(B + +@item gnus-parse-headers-hook +@vindex gnus-parse-headers-hook +$B%X%C%@!<$r2rpJs$re$,%^%K%e%"%k$G$9(B---$B$"$J$?$O$b$&<+J,<+?H$N?M@8$rAw$k;v$,$G$-$^(B +$B$9!#O"Mm$r$H$C$F2<$5$$!#$"$J$?$NG-$K:#F|$O!"$H$$$C$F$*$$$F2<$5$$!#(B + +$B$*$*!"(B@strong{$B?@$h(B}---$B$5$h$J$i$rBQ$($k;v$O$G$-$^$;$s!#(B($B$9$9$j5c$-!#(B) + +Ol' Charles Reznikoff $B$O$=$l$rHs>o$K$h$/8=$7$F$$$^$9$N$G!"$3$3$OH`$N$?$a(B +$B$K>y$j$^$9(B: + +@quotation +@strong{Te Deum} + +@sp 1 +Not because of victories @* +I sing,@* +having none,@* +but for the common sunshine,@* +the breeze,@* +the largess of the spring. + +@sp 1 +Not for victory@* +but for the day's work done@* +as well as I was able;@* +not for a seat upon the dais@* +but at the common table.@* +@end quotation + +$B;nLu(B: + +@quotation +@strong{Te Deum} + +@sp 1 +$B>!Mx$7$?$+$i$G$O$J$/(B @* +$B;d$O2N$&(B @* +$B2?$bL5$$$1$l$I(B @* +$B$"$NF|8w$d(B @* +$BB)?a$d(B @* +$B=U$NBg$-$5$N$?$a$K(B @* + +@sp 1 +$B>!Mx$N$?$a$G$O$J$/(B @* +$B0lF|$NO+F/$N$?$a$K(B @* +$B$^$?!"$=$l$rC#@.$G$-$?$3$H$K(B @* +$B9b:B$N>e$N@J$N$?$a$G$O$J$/(B @* +$BIaDL$N%F!<%V%k$N$H$3$m$G(B @* +@end quotation + + diff --git a/texi/gnus.texi b/texi/gnus.texi index 9c96214..1a46d94 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus -@settitle Semi-gnus 6.8.0 Manual +@settitle Semi-gnus 6.8.1 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -316,7 +316,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Semi-gnus 6.8.0 Manual +@title Semi-gnus 6.8.1 Manual @author by Lars Magne Ingebrigtsen @page @@ -359,7 +359,7 @@ internationalization/localization and multiscript features based on MULE API. So Semi-gnus does not discriminate various language communities. Oh, if you are a Klingon, please wait Unicode Next Generation. -This manual corresponds to Semi-gnus 6.8.0. +This manual corresponds to Semi-gnus 6.8.1. @end ifinfo @@ -2713,12 +2713,20 @@ toggling command on topics. In addition, if you give a numerical prefix, group on that level (and lower) will be displayed. @item T TAB +@itemx TAB @kindex T TAB (Topic) +@kindex TAB (Topic) @findex gnus-topic-indent ``Indent'' the current topic so that it becomes a sub-topic of the previous topic (@code{gnus-topic-indent}). If given a prefix, ``un-indent'' the topic instead. +@item M-TAB +@kindex M-TAB (Topic) +@findex gnus-topic-unindent +``Un-indent'' the current topic so that it becomes a sub-topic of the +parent of its current parent (@code{gnus-topic-unindent}). + @item C-k @kindex C-k (Topic) @findex gnus-topic-kill-group @@ -3222,8 +3230,8 @@ fast, and too simplistic solution; @code{mail-extract-address-components}, which works nicely, but is slower; and @code{std11-extract-address-components}, which works very nicely, but is slower. The default function will return the wrong -answer in 5% of the cases. If this is unacceptable to you, use the -other function instead. +answer in 5% of the cases. If this is unacceptable to you, use one of +the other functions instead. @vindex gnus-summary-same-subject @code{gnus-summary-same-subject} is a string indicating that the current @@ -6869,10 +6877,13 @@ Here are the available keystrokes when using pick mode: @table @kbd @item . @kindex . (Pick) -@findex gnus-summary-mark-as-processable -Pick the article on the current line -(@code{gnus-summary-mark-as-processable}). If given a numerical prefix, -go to that article and pick it. (The line number is normally displayed +@findex gnus-pick-article-or-thread +Pick the article or thread on the current line +(@code{gnus-pick-article-or-thread}). If the variable +@code{gnus-thread-hide-subtree} is true, then this key selects the +entire thread when used at the first article of the thread. Otherwise, +it selects just the article. If given a numerical prefix, go to that +thread or article and pick it. (The line number is normally displayed at the beginning of the summary pick lines.) @item SPACE @@ -6883,53 +6894,13 @@ at the end of the buffer, start reading the picked articles. @item u @kindex u (Pick) -@findex gnus-summary-unmark-as-processable -Unpick the article (@code{gnus-summary-unmark-as-processable}). - -@item U -@kindex U (Pick) -@findex gnus-summary-unmark-all-processable -Unpick all articles (@code{gnus-summary-unmark-all-processable}). - -@item t -@kindex t (Pick) -@findex gnus-uu-mark-thread -Pick the thread (@code{gnus-uu-mark-thread}). - -@item T -@kindex T (Pick) -@findex gnus-uu-unmark-thread -Unpick the thread (@code{gnus-uu-unmark-thread}). - -@item r -@kindex r (Pick) -@findex gnus-uu-mark-region -Pick the region (@code{gnus-uu-mark-region}). - -@item R -@kindex R (Pick) -@findex gnus-uu-unmark-region -Unpick the region (@code{gnus-uu-unmark-region}). - -@item e -@kindex e (Pick) -@findex gnus-uu-mark-by-regexp -Pick articles that match a regexp (@code{gnus-uu-mark-by-regexp}). - -@item E -@kindex E (Pick) -@findex gnus-uu-unmark-by-regexp -Unpick articles that match a regexp (@code{gnus-uu-unmark-by-regexp}). - -@item b -@kindex b (Pick) -@findex gnus-uu-mark-buffer -Pick the buffer (@code{gnus-uu-mark-buffer}). - -@item B -@kindex B (Pick) -@findex gnus-uu-unmark-buffer -Unpick the buffer (@code{gnus-uu-unmark-buffer}). +@findex gnus-pick-unmark-article-or-thread. +Unpick the thread or article +(@code{gnus-pick-unmark-article-or-thread}). If the variable +@code{gnus-thread-hide-subtree} is true, then this key unpicks the +thread if used at the first article of the thread. Otherwise it unpicks +just the article. You can give this key a numerical prefix to unpick +the thread or article at that line. @item RET @kindex RET (Pick) @@ -6942,6 +6913,11 @@ will still be visible when you are reading. @end table +All the normal summary mode commands are still available in the +pick-mode, with the exception of @kbd{u}. However @kbd{!} is available +which is mapped to the same function +@code{gnus-summary-tick-article-forward}. + If this sounds like a good idea to you, you could say: @lisp @@ -7216,6 +7192,12 @@ If you want to re-spool an article, you might be curious as to what group the article will end up in before you do the re-spooling. This command will tell you (@code{gnus-summary-respool-query}). +@item B t +@kindex B t (Summary) +@findex gnus-summary-respool-trace +Similarly, this command will display all fancy splitting patterns used +when repooling, if any (@code{gnus-summary-respool-trace}). + @item B p @kindex B p (Summary) @findex gnus-summary-article-posted-p @@ -8043,6 +8025,7 @@ to make gnus try to post using the foreign server. * Posting Server:: What server should you post via? * Mail and Post:: Mailing and posting at the same time. * Archived Messages:: Where gnus stores the messages you've sent. +* Posting Styles:: An easier way to specify who you are. * Drafts:: Postponing messages and rejected messages. * Rejected Articles:: What happens if the server doesn't like your article? @end menu @@ -8298,83 +8281,83 @@ but the latter is the preferred method. @end table -@c @node Posting Styles -@c @section Posting Styles -@c @cindex posting styles -@c @cindex styles -@c -@c All them variables, they make my head swim. -@c -@c So what if you want a different @code{Organization} and signature based -@c on what groups you post to? And you post both from your home machine -@c and your work machine, and you want different @code{From} lines, and so -@c on? -@c -@c @vindex gnus-posting-styles -@c One way to do stuff like that is to write clever hooks that change the -@c variables you need to have changed. That's a bit boring, so somebody -@c came up with the bright idea of letting the user specify these things in -@c a handy alist. Here's an example of a @code{gnus-posting-styles} -@c variable: -@c -@c @lisp -@c ((".*" -@c (signature . "Peace and happiness") -@c (organization . "What me?")) -@c ("^comp" -@c (signature . "Death to everybody")) -@c ("comp.emacs.i-love-it" -@c (organization . "Emacs is it"))) -@c @end lisp -@c -@c As you might surmise from this example, this alist consists of several -@c @dfn{styles}. Each style will be applicable if the first element -@c ``matches'', in some form or other. The entire alist will be iterated -@c over, from the beginning towards the end, and each match will be -@c applied, which means that attributes in later styles that match override -@c the same attributes in earlier matching styles. So -@c @samp{comp.programming.literate} will have the @samp{Death to everybody} -@c signature and the @samp{What me?} @code{Organization} header. -@c -@c The first element in each style is called the @code{match}. If it's a -@c string, then Gnus will try to regexp match it against the group name. -@c If it's a function symbol, that function will be called with no -@c arguments. If it's a variable symbol, then the variable will be -@c referenced. If it's a list, then that list will be @code{eval}ed. In -@c any case, if this returns a non-@code{nil} value, then the style is said -@c to @dfn{match}. -@c -@c Each style may contain a arbitrary amount of @dfn{attributes}. Each -@c attribute consists of a @var{(name . value)} pair. The attribute name -@c can be one of @code{signature}, @code{organization} or @code{from}. The -@c attribute name can also be a string. In that case, this will be used as -@c a header name, and the value will be inserted in the headers of the -@c article. -@c -@c The attribute value can be a string (used verbatim), a function (the -@c return value will be used), a variable (its value will be used) or a -@c list (it will be @code{eval}ed and the return value will be used). -@c -@c So here's a new example: -@c -@c @lisp -@c (setq gnus-posting-styles -@c '((".*" -@c (signature . "~/.signature") -@c (from . "user@@foo (user)") -@c ("X-Home-Page" . (getenv "WWW_HOME")) -@c (organization . "People's Front Against MWM")) -@c ("^rec.humor" -@c (signature . my-funny-signature-randomizer)) -@c ((equal (system-name) "gnarly") -@c (signature . my-quote-randomizer)) -@c (posting-from-work-p -@c (signature . "~/.work-signature") -@c (from . "user@@bar.foo (user)") -@c (organization . "Important Work, Inc")) -@c ("^nn.+:" -@c (signature . "~/.mail-signature")))) -@c @end lisp +@node Posting Styles +@section Posting Styles +@cindex posting styles +@cindex styles + +All them variables, they make my head swim. + +So what if you want a different @code{Organization} and signature based +on what groups you post to? And you post both from your home machine +and your work machine, and you want different @code{From} lines, and so +on? + +@vindex gnus-posting-styles +One way to do stuff like that is to write clever hooks that change the +variables you need to have changed. That's a bit boring, so somebody +came up with the bright idea of letting the user specify these things in +a handy alist. Here's an example of a @code{gnus-posting-styles} +variable: + +@lisp +((".*" + (signature "Peace and happiness") + (organization "What me?")) + ("^comp" + (signature "Death to everybody")) + ("comp.emacs.i-love-it" + (organization "Emacs is it"))) +@end lisp + +As you might surmise from this example, this alist consists of several +@dfn{styles}. Each style will be applicable if the first element +``matches'', in some form or other. The entire alist will be iterated +over, from the beginning towards the end, and each match will be +applied, which means that attributes in later styles that match override +the same attributes in earlier matching styles. So +@samp{comp.programming.literate} will have the @samp{Death to everybody} +signature and the @samp{What me?} @code{Organization} header. + +The first element in each style is called the @code{match}. If it's a +string, then Gnus will try to regexp match it against the group name. +If it's a function symbol, that function will be called with no +arguments. If it's a variable symbol, then the variable will be +referenced. If it's a list, then that list will be @code{eval}ed. In +any case, if this returns a non-@code{nil} value, then the style is said +to @dfn{match}. + +Each style may contain a arbitrary amount of @dfn{attributes}. Each +attribute consists of a @var{(name . value)} pair. The attribute name +can be one of @code{signature}, @code{signature-file}, +@code{organization}, @code{address} or @code{name}. The attribute name +can also be a string. In that case, this will be used as a header name, +and the value will be inserted in the headers of the article. + +The attribute value can be a string (used verbatim), a function (the +return value will be used), a variable (its value will be used) or a +list (it will be @code{eval}ed and the return value will be used). + +So here's a new example: + +@lisp +(setq gnus-posting-styles + '((".*" + (signature-file "~/.signature") + (name "User Name") + ("X-Home-Page" (getenv "WWW_HOME")) + (organization "People's Front Against MWM")) + ("^rec.humor" + (signature my-funny-signature-randomizer)) + ((equal (system-name) "gnarly") + (signature my-quote-randomizer)) + (posting-from-work-p + (signature-file "~/.work-signature") + (address "user@@bar.foo") + (organization "Important Work, Inc")) + ("^nn.+:" + (signature-file "~/.mail-signature")))) +@end lisp @node Drafts @section Drafts @@ -8947,10 +8930,11 @@ The file contains one or more line, each of which define one server. @item Each line may contain an arbitrary number of token/value pairs. The -valid tokens include @samp{machine}, @samp{login}, @samp{password}, and -@samp{force}. (The latter is not a valid @file{.netrc}/@code{ftp} -token, which is the only way the @file{.authinfo} file format deviates -from the @file{.netrc} file format.) +valid tokens include @samp{machine}, @samp{login}, @samp{password}, +@samp{default} and @samp{force}. (The latter is not a valid +@file{.netrc}/@code{ftp} token, which is the only way the +@file{.authinfo} file format deviates from the @file{.netrc} file +format.) @end enumerate @@ -8972,6 +8956,16 @@ user will be prompted for the password. The latter also has the @samp{force} tag) is to not send authinfo to the @var{nntp} server until the @var{nntp} server asks for it. +You can also add @samp{default} lines that will apply to all servers +that don't have matching @samp{machine} lines. + +@example +default force yes +@end example + +This will force sending @samp{AUTHINFO} commands to all servers not +previously mentioned. + Remember to not leave the @file{~/.authinfo} file world-readable. @item nntp-server-action-alist @@ -15381,7 +15375,10 @@ In May 1996 the next Gnus generation (aka. ``September Gnus'' (after 99 releases)) was released under the name ``Gnus 5.2'' (40 releases). On July 28th 1996 work on Red Gnus was begun, and it was released on -January 25th 1997 (after 84 releases) as ``Gnus 5.4''. +January 25th 1997 (after 84 releases) as ``Gnus 5.4'' (67 releases). + +On September 13th 1997, Quassia Gnus was started and lasted 37 +releases. If was released as ``Gnus 5.6.24' on March 8th 1998. If you happen upon a version of Gnus that has a prefixed name -- ``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' -- @@ -15702,6 +15699,7 @@ Joao Cachopo, Zlatko Calusic, Massimo Campostrini, Castor, +David Charlap, Dan Christensen, Kevin Christian, Michael R. Cook, @@ -15857,7 +15855,7 @@ actually are people who are using Gnus. Who'd'a thunk it! * ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus. * September Gnus:: The Thing Formally Known As Gnus 5.3/5.3. * Red Gnus:: Third time best---Gnus 5.4/5.5. -* Quassia Gnus:: Two times two is four, or Gnus 5.6.23. +* Quassia Gnus:: Two times two is four, or Gnus 5.6.24. @end menu These lists are, of course, just @emph{short} overviews of the @@ -16392,7 +16390,7 @@ Emphasized text can be properly fontisized: @node Quassia Gnus @subsubsection Quassia Gnus -New features in Gnus 5.6.23: +New features in Gnus 5.6.24: @itemize @bullet @@ -17160,7 +17158,7 @@ From: Jason L Tibbitts III @end example @item - tanken var at når du bruker `gnus-startup-file' som prefix (FOO) til lete + tanken var at når du bruker `gnus-startup-file' som prefix (FOO) til å lete opp en fil FOO-SERVER, FOO-SERVER.el, FOO-SERVER.eld, kan du la den være en liste hvor du bruker hvert element i listen som FOO, istedet. da kunne man hatt forskjellige serveres startup-filer forskjellige steder. @@ -17234,8 +17232,8 @@ there was a sci.somethingelse group or section, then it should prompt for sci? first the sci.something? then sci.somethingelse?... @item -Ja, det burde være en måte si slikt. Kanskje en ny variabel? -`gnus-use-few-score-files'? S kunne score-regler legges til den +Ja, det burde være en måte å si slikt. Kanskje en ny variabel? +`gnus-use-few-score-files'? Så kunne score-regler legges til den "mest" lokale score-fila. F. eks. ville no-gruppene betjenes av "no.all.SCORE", osv. @@ -17568,7 +17566,7 @@ the current process mark set onto the stack. @item gnus-article-hide-pgp -Selv ville jeg nok ha valgt slette den dersom teksten matcher +Selv ville jeg nok ha valgt å slette den dersom teksten matcher @example "\\(This\s+\\)?[^ ]+ has been automatically signed by" @end example @@ -17705,6 +17703,9 @@ topics for displaying. with unread articles, even if that group is hidden in a topic. @item +gnus-posting-styles doesn't work in drafts. + +@item Solve the halting problem. @c TODO @@ -18233,6 +18234,19 @@ Takes an unprefixed group name and a select method, and returns the full @findex gnus-get-info Returns the group info list for @var{group}. +@item gnus-group-unread +@findex gnus-group-unread +The number of unread articles in @var{group}, or @code{t} if that is +unknown. + +@item gnus-active +@findex gnus-active +The active entry for @var{group}. + +@item gnus-set-active +@findex gnus-set-active +Set the active entry for @var{group}. + @item gnus-add-current-to-buffer-list @findex gnus-add-current-to-buffer-list Adds the current buffer to the list of buffers to be killed on Gnus diff --git a/texi/message.texi b/texi/message.texi index 78168ac..9aa2df7 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Message 5.6.23 Manual +@settitle Message 5.6.24 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Message 5.6.23 Manual +@title Message 5.6.24 Manual @author by Lars Magne Ingebrigtsen @page @@ -83,7 +83,7 @@ Message mode buffers. * Key Index:: List of Message mode keys. @end menu -This manual corresponds to Message 5.6.23. Message is distributed with +This manual corresponds to Message 5.6.24. Message is distributed with the Gnus distribution bearing the same version number as this manual has. -- 1.7.10.4