From: yamaoka Date: Mon, 28 Apr 2003 07:48:52 +0000 (+0000) Subject: T-gnus 6.15.19 revision 00. X-Git-Tag: t-gnus-6_15_19-00 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=695ebeac09bcb76bc819f82f838d2d9db021632c;p=elisp%2Fgnus.git- T-gnus 6.15.19 revision 00. --- diff --git a/ChangeLog b/ChangeLog index 27fdcff..791c9fe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,71 @@ +2003-04-28 Katsumi Yamaoka + + * lisp/gnus-vers.el: T-gnus 6.15.19 revision 00. + +2003-04-24 Katsumi Yamaoka + + * lisp/nnheader.el (nnheader-coding-system-p): New function. + (mm-coding-system-p): Alias to `nnheader-coding-system-p'. + +2003-04-23 Katsumi Yamaoka + + * lisp/gnus-clfns.el (coerce, copy-list, merge, string, subseq): + Comment out those compiler macros. + (mapc): Make it comeback. + +2003-04-22 Reiner Steib + + * make.bat: Flag as binary to ensure DOS line terminators. Delete + trailing whitespace. + +2003-04-21 Reiner Steib + From Frank Schmitt + + * etc/gnus-tut.txt: Update Gnus FAQ, delete trailing whitespace. + +2003-04-17 Katsumi Yamaoka + + * Makefile.in (xclever-package, xlick-package): New rules. + (install-package, install-package-ja, package, package-ja): Use + them. + (install-package-manifest, remove-extra-files-in-package, + compose-package): Specify the lisp directory for XEmacs package. + + * aclocal.m4 (AC_PATH_INFO_DIR): Say a note for XEmacs package. + + * lisp/dgnushack.el: Remove useless function bindings for XEmacs. + (dgnushack-install-package-manifest): Create the pkginfo directory. + + * lisp/lpath.el: Fbind `compare-strings' for Mule 2. + +2003-04-17 Kevin Greiner + + * make.bat: Cleaned up end-of-line characters. + +2003-04-17 Steve Youngs + + * Makefile.in (XEMACS): Use @EMACS@. + + * aclocal.m4 (AC_PATH_LISPDIR): Set $datadir to $prefix/lib if + building with XEmacs. + + * aclocal.m4 (AC_SET_BUILD_FLAGS): New. So we can set XEmacs + command line options to '-batch -no-autoloads...' for a cleaner + build environment. + + * configure.in: Use it. + + * configure: Regenerate. + +2003-04-16 Reiner Steib + From Frank Schmitt + + * make.bat: New variable EMACS_ARGS. Changed XEmacs args. + +2003-04-13 Katsumi Yamaoka + + * lisp/lpath.el: Fbind `coding-system-base' for Mule 2. + 2003-04-13 Katsumi Yamaoka * lisp/gnus-vers.el: T-gnus 6.15.18 revision 00. diff --git a/Makefile.in b/Makefile.in index 9ad496c..69c491b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -58,18 +58,24 @@ install-info-ja: cd texi && $(MAKE) EMACS="$(EMACS)" infodir="$(infodir)" install-ja ## Rule for XEmacs package. -install-package: xclever compose-package remove-extra-files-in-package \ +install-package: \ + xclever-package \ + compose-package \ + remove-extra-files-in-package \ install-package-lisp \ install-package-info install-package-manifest -install-package-ja: xclever compose-package remove-extra-files-in-package \ +install-package-ja: \ + xclever-package \ + compose-package \ + remove-extra-files-in-package \ install-package-lisp \ install-package-info install-package-info-ja \ install-package-manifest -package: xlick xinfo compose-package +package: xlick-package xinfo compose-package -package-ja: xlick xinfo xinfo-ja compose-package +package-ja: xlick-package xinfo xinfo-ja compose-package # Sub-rule for XEmacs package. install-package-lisp: @@ -114,8 +120,10 @@ install-package-manifest: package_dir="$(PACKAGEDIR)"; \ fi; \ echo "cd lisp && $(MAKE) EMACS=$(XEMACS) PACKAGEDIR=$$package_dir" \ + "lispdir=$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" \ "install-package-manifest"; \ cd lisp && $(MAKE) EMACS="$(XEMACS)" PACKAGEDIR=$$package_dir \ + lispdir="$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" \ install-package-manifest remove-extra-files-in-package: @@ -125,20 +133,31 @@ remove-extra-files-in-package: package_dir="$(PACKAGEDIR)"; \ fi; \ echo "cd lisp && $(MAKE) EMACS=$(XEMACS) PACKAGEDIR=$$package_dir" \ + "lispdir=$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" \ "remove-extra-files-in-package"; \ cd lisp && $(MAKE) EMACS="$(XEMACS)" PACKAGEDIR=$$package_dir \ + lispdir="$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" \ remove-extra-files-in-package compose-package: - cd lisp && $(MAKE) EMACS="$(XEMACS)" compose-package + cd lisp && $(MAKE) EMACS="$(XEMACS)" \ + lispdir="$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" compose-package ## xclever: cd lisp && $(MAKE) EMACS="$(XEMACS)" lispdir="$(lispdir)" clever +xclever-package: + cd lisp && $(MAKE) EMACS="$(XEMACS)" \ + lispdir="$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" clever + xlick: cd lisp && $(MAKE) EMACS="$(XEMACS)" lispdir="$(lispdir)" all +xlick-package: + cd lisp && $(MAKE) EMACS="$(XEMACS)" \ + lispdir="$(PACKAGEDIR)/lisp/$(GNUS_PRODUCT_NAME)" all + xinfo: cd texi && $(MAKE) EMACS="$(XEMACS)" all-info diff --git a/README.T-gnus b/README.T-gnus index f672304..a51f543 100644 --- a/README.T-gnus +++ b/README.T-gnus @@ -33,5 +33,5 @@ NEWS: * T-gnus 6.15 - this is based on Oort Gnus. - The latest T-gnus is T-gnus 6.15.18 (based on Oort Gnus 0.18). It + The latest T-gnus is T-gnus 6.15.19 (based on Oort Gnus 0.19). It requires SEMI 1.14, FLIM 1.14, and APEL 10.0 or later. diff --git a/README.semi b/README.semi index 6837b23..466874d 100644 --- a/README.semi +++ b/README.semi @@ -4,7 +4,7 @@ What is T-gnus? =============== T-gnus is an improvement of Gnus with SEMI's MIME feature. T-gnus -6.15 is based on Oort Gnus v0.18. SEMI may stand for "SEMI is Emacs +6.15 is based on Oort Gnus v0.19. SEMI may stand for "SEMI is Emacs MIME Interface" and is developped to provide an easy interfaces for users to handle MIME message structures. For further information, refer to REASME.en of SEMI. diff --git a/README.semi.ja b/README.semi.ja index 64028a4..59e1242 100644 --- a/README.semi.ja +++ b/README.semi.ja @@ -4,7 +4,7 @@ T-gnus $B$H$O!)(B ============= T-gnus $B$O!"(BSEMI $B$rMxMQ$7$F(B Gnus $B$K(B MIME $B5!G=$rDI2C$9$k$b$N$G$9!#(B -T-gnus 6.15 $B$O(B Oort Gnus v0.18 $B$r%Y!<%9$K$7$F$$$^$9!#(BSEMI $B$O(B Emacs $B$G(B +T-gnus 6.15 $B$O(B Oort Gnus v0.19 $B$r%Y!<%9$K$7$F$$$^$9!#(BSEMI $B$O(B Emacs $B$G(B MIME $B$r;H$($k$h$&$K$9$k$b$N$G!"(BMIME message $B$N9=J8$N9=B$$HMxMQ\$7$/$O!"(BSEMI $B$N(B README.en $B$r;2>H(B $B$7$F$/$@$5$$!#(B diff --git a/aclocal.m4 b/aclocal.m4 index fd52950..047cd6b 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,5 +1,5 @@ AC_DEFUN(AC_DEFINE_GNUS_PRODUCT_NAME, - [echo $ac_n "defining gnus product name... $ac_c" + [echo $ECHO_N "defining gnus product name... $ECHO_C" AC_CACHE_VAL(EMACS_cv_GNUS_PRODUCT_NAME,[EMACS_cv_GNUS_PRODUCT_NAME=$1]) GNUS_PRODUCT_NAME=${EMACS_cv_GNUS_PRODUCT_NAME} AC_MSG_RESULT(${GNUS_PRODUCT_NAME}) @@ -16,14 +16,14 @@ AC_DEFUN(AC_CHECK_EMACS, unset ac_cv_prog_EMACS; unset ac_cv_prog_XEMACS; AC_ARG_WITH(emacs, - [ --with-emacs=EMACS compile with EMACS [EMACS=emacs, mule...]], + [ --with-emacs=EMACS compile with EMACS [[EMACS=emacs, mule...]]], [if test "$withval" = yes -o -z "$withval"; then AC_CHECK_PROGS(EMACS, emacs xemacs mule, emacs) else AC_CHECK_PROG(EMACS, $withval, $withval, emacs) fi]) AC_ARG_WITH(xemacs, - [ --with-xemacs=XEMACS compile with XEMACS [XEMACS=xemacs]], + [ --with-xemacs=XEMACS compile with XEMACS [[XEMACS=xemacs]]], [if test "$withval" = yes -o -z "$withval"; then AC_CHECK_PROG(XEMACS, xemacs, xemacs, xemacs) else @@ -96,6 +96,7 @@ AC_DEFUN(AC_PATH_LISPDIR, [ theprefix=$ac_default_prefix fi if test "$EMACS_FLAVOR" = "xemacs"; then + datadir="\$(prefix)/lib" lispdir="\$(datadir)/${EMACS_FLAVOR}/site-packages/lisp/${GNUS_PRODUCT_NAME}" else lispdir="\$(datadir)/${EMACS_FLAVOR}/site-lisp/${GNUS_PRODUCT_NAME}" @@ -153,11 +154,32 @@ AC_DEFUN(AC_PATH_INFO_DIR, [ else info_dir=$infodir fi - AC_MSG_RESULT($info_dir) + AC_MSG_RESULT([$info_dir + (it will be ignored when \"make install-package[[-ja]]\" is done)]) AC_SUBST(info_dir) ]) dnl +dnl This will set the XEmacs command line options to be slightly different +dnl from the Emacs ones. If building with XEmacs the options will be +dnl "-batch -no-autoloads..." to give a much cleaner build environment. +dnl +AC_DEFUN(AC_SET_BUILD_FLAGS, [ + AC_MSG_CHECKING([which options to pass on to (X)Emacs]) + if test "x$FLAGS" = "x"; then + if test "$EMACS_FLAVOR" = "xemacs"; then + FLAGS="-batch -no-autoloads -l \$(srcdir)/dgnushack.el" + else + FLAGS="-batch -q -no-site-file -l \$(srcdir)/dgnushack.el" + fi + else + FLAGS=$FLAGS + fi + AC_MSG_RESULT($FLAGS) + AC_SUBST(FLAGS) +]) + +dnl dnl Check whether a function exists in a library dnl All '_' characters in the first argument are converted to '-' dnl @@ -244,7 +266,7 @@ fi if test -z "${EMACS_cv_ACCEPTABLE_URL}"; then AC_MSG_RESULT(not found) else - AC_MSG_RESULT("${URL}") + AC_MSG_RESULT(${URL}) fi ]) @@ -327,7 +349,7 @@ if test -z "${USE_FONTS}" ; then USE_FONTS=no fi USE_FONTS=`echo "${USE_FONTS}" | sed 's/,\([[^,]]*\)$/ and\1/'` -AC_MSG_RESULT("${USE_FONTS}") +AC_MSG_RESULT(${USE_FONTS}) if test "${USE_FONTS}" = yes ; then USE_FONTS='Set in Adobe Bembo, Adobe Futura and Bitstream Courier.' elif test "${USE_FONTS}" = no ; then diff --git a/configure b/configure index 92de619..f9209ed 100755 --- a/configure +++ b/configure @@ -1,46 +1,287 @@ #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.14.1 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# Generated by GNU Autoconf 2.57. # +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + -# Defaults: -ac_help= +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_help="$ac_help - --with-emacs=EMACS compile with EMACS [EMACS=emacs, mule...]" -ac_help="$ac_help - --with-xemacs=XEMACS compile with XEMACS [XEMACS=xemacs]" -ac_help="$ac_help - --with-lispdir=DIR Where to install lisp files - (for XEmacs package, use --with-packagedir instead)" -ac_help="$ac_help - --with-etcdir=DIR Where to install etc files" -ac_help="$ac_help - --with-url=DIR Specify where to find the url package" -ac_help="$ac_help - --with-w3=DIR Specify where to find the w3 package" -ac_help="$ac_help - --with-fonts Assume all fonts required are available" -ac_help="$ac_help - --with-packagedir=DIR package DIR for XEmacs" -ac_help="$ac_help - --with-addpath=PATH search Emacs-Lisp libraries with PATH - use colons to separate directory names" +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="lisp/gnus.el" +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS GNUS_PRODUCT_NAME SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA MAKEINFO EMACS XEMACS lispdir etcdir info_dir HAVE_url URL HAVE_w3_forms W3 FLAGS LATEX WITH_FONTS_bembo WITHOUT_FONTS_bembo WITH_FONTS_pfu WITHOUT_FONTS_pfu WITH_FONTS_bcr WITHOUT_FONTS_bcr USE_FONTS PACKAGEDIR ADDITIONAL_LOAD_PATH LIBOBJS LTLIBOBJS' +ac_subst_files='' # Initialize some variables set by options. +ac_init_help= +ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. -build=NONE -cache_file=./config.cache +cache_file=/dev/null exec_prefix=NONE -host=NONE no_create= -nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE @@ -49,10 +290,15 @@ program_transform_name=s,x,x, silent= site= srcdir= -target=NONE verbose= x_includes=NONE x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' @@ -66,17 +312,9 @@ oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - ac_prev= for ac_option do - # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" @@ -84,59 +322,59 @@ do continue fi - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. - case "$ac_option" in + case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; + bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) - ac_prev=build ;; + ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; + build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) - datadir="$ac_optarg" ;; + datadir=$ac_optarg ;; -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac - eval "enable_${ac_feature}='$ac_optarg'" ;; + eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -145,95 +383,47 @@ do -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; + exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; -host | --host | --hos | --ho) - ac_prev=host ;; + ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; + host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; + includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; + infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; + libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; + libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ @@ -242,19 +432,19 @@ EOF -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; + localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; + mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) + | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ @@ -268,26 +458,26 @@ EOF -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; + oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; + prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; + program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; + program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ @@ -304,7 +494,7 @@ EOF | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; + program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) @@ -314,7 +504,7 @@ EOF ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; + sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ @@ -325,58 +515,57 @@ EOF | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; + sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; + site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; + srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; + sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; + ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; + target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.14.1" - exit 0 ;; + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac - eval "with_${ac_package}='$ac_optarg'" ;; + eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. @@ -387,99 +576,110 @@ EOF ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; + x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; + x_libraries=$ac_optarg ;; - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } fi -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; esac done -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=lisp/gnus.el # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. @@ -489,13 +689,405 @@ else fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } fi fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + cat <<\_ACEOF + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-emacs=EMACS compile with EMACS [EMACS=emacs, mule...] + --with-xemacs=XEMACS compile with XEMACS [XEMACS=xemacs] + --with-lispdir=DIR Where to install lisp files + (for XEmacs package, use --with-packagedir instead) + --with-etcdir=DIR Where to install etc files + --with-url=DIR Specify where to find the url package + --with-w3=DIR Specify where to find the w3 package + --with-fonts Assume all fonts required are available + --with-packagedir=DIR package DIR for XEmacs + --with-addpath=PATH search Emacs-Lisp libraries with PATH + use colons to separate directory names + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.57. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then @@ -506,75 +1098,142 @@ if test -z "$CONFIG_SITE"; then fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then - echo "loading cache $cache_file" - test -f "$cache_file" && . $cache_file + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi else - echo "creating cache $cache_file" - > $cache_file + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } fi ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + -echo $ac_n "defining gnus product name... $ac_c" - if eval "test \"\${EMACS_cv_GNUS_PRODUCT_NAME+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + + + + + + + + + + +echo $ECHO_N "defining gnus product name... $ECHO_C" + if test "${EMACS_cv_GNUS_PRODUCT_NAME+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else EMACS_cv_GNUS_PRODUCT_NAME=t-gnus fi GNUS_PRODUCT_NAME=${EMACS_cv_GNUS_PRODUCT_NAME} - echo "$ac_t""${GNUS_PRODUCT_NAME}" 1>&6 - -echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:556: checking whether ${MAKE-make} sets \${MAKE}" >&5 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` + echo "$as_me:$LINENO: result: ${GNUS_PRODUCT_NAME}" >&5 +echo "${ECHO_T}${GNUS_PRODUCT_NAME}" >&6 + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat > conftestmake <<\EOF + cat >conftest.make <<\_ACEOF all: - @echo 'ac_maketemp="${MAKE}"' -EOF + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi -rm -f conftestmake +rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$ac_t""yes" 1>&6 + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 SET_MAKE= else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi @@ -588,10 +1247,16 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break fi done if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" @@ -604,58 +1269,67 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:613: checking for a BSD compatible install" >&5 +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then -if eval "test \"\${ac_cv_path_install+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus $ac_dir/$ac_prog >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi done - ;; - esac - done - IFS="$ac_save_IFS" + done + ;; +esac +done + fi if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" + INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. - INSTALL="$ac_install_sh" + INSTALL=$ac_install_sh fi fi -echo "$ac_t""$INSTALL" 1>&6 +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -667,32 +1341,38 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Extract the first word of "makeinfo", so it can be a program name with args. set dummy makeinfo; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:672: checking for $ac_word" >&5 -if eval "test \"\${ac_cv_prog_MAKEINFO+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_MAKEINFO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$MAKEINFO"; then ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_MAKEINFO="makeinfo" - break - fi - done - IFS="$ac_save_ifs" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MAKEINFO="makeinfo" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + test -z "$ac_cv_prog_MAKEINFO" && ac_cv_prog_MAKEINFO="no" fi fi -MAKEINFO="$ac_cv_prog_MAKEINFO" +MAKEINFO=$ac_cv_prog_MAKEINFO if test -n "$MAKEINFO"; then - echo "$ac_t""$MAKEINFO" 1>&6 + echo "$as_me:$LINENO: result: $MAKEINFO" >&5 +echo "${ECHO_T}$MAKEINFO" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi @@ -700,142 +1380,167 @@ fi unset ac_cv_prog_EMACS; unset ac_cv_prog_XEMACS; - # Check whether --with-emacs or --without-emacs was given. + +# Check whether --with-emacs or --without-emacs was given. if test "${with_emacs+set}" = set; then withval="$with_emacs" if test "$withval" = yes -o -z "$withval"; then for ac_prog in emacs xemacs mule do -# Extract the first word of "$ac_prog", so it can be a program name with args. + # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:713: checking for $ac_word" >&5 -if eval "test \"\${ac_cv_prog_EMACS+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_EMACS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$EMACS"; then ac_cv_prog_EMACS="$EMACS" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_EMACS="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_EMACS="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + fi fi -EMACS="$ac_cv_prog_EMACS" +EMACS=$ac_cv_prog_EMACS if test -n "$EMACS"; then - echo "$ac_t""$EMACS" 1>&6 + echo "$as_me:$LINENO: result: $EMACS" >&5 +echo "${ECHO_T}$EMACS" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -test -n "$EMACS" && break + test -n "$EMACS" && break done test -n "$EMACS" || EMACS="emacs" else # Extract the first word of "$withval", so it can be a program name with args. set dummy $withval; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:747: checking for $ac_word" >&5 -if eval "test \"\${ac_cv_prog_EMACS+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_EMACS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$EMACS"; then ac_cv_prog_EMACS="$EMACS" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_EMACS="$withval" - break - fi - done - IFS="$ac_save_ifs" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_EMACS="$withval" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + test -z "$ac_cv_prog_EMACS" && ac_cv_prog_EMACS="emacs" fi fi -EMACS="$ac_cv_prog_EMACS" +EMACS=$ac_cv_prog_EMACS if test -n "$EMACS"; then - echo "$ac_t""$EMACS" 1>&6 + echo "$as_me:$LINENO: result: $EMACS" >&5 +echo "${ECHO_T}$EMACS" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi fi -fi +fi; - # Check whether --with-xemacs or --without-xemacs was given. +# Check whether --with-xemacs or --without-xemacs was given. if test "${with_xemacs+set}" = set; then withval="$with_xemacs" if test "$withval" = yes -o -z "$withval"; then # Extract the first word of "xemacs", so it can be a program name with args. set dummy xemacs; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:784: checking for $ac_word" >&5 -if eval "test \"\${ac_cv_prog_XEMACS+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_XEMACS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$XEMACS"; then ac_cv_prog_XEMACS="$XEMACS" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_XEMACS="xemacs" - break - fi - done - IFS="$ac_save_ifs" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_XEMACS="xemacs" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + test -z "$ac_cv_prog_XEMACS" && ac_cv_prog_XEMACS="xemacs" fi fi -XEMACS="$ac_cv_prog_XEMACS" +XEMACS=$ac_cv_prog_XEMACS if test -n "$XEMACS"; then - echo "$ac_t""$XEMACS" 1>&6 + echo "$as_me:$LINENO: result: $XEMACS" >&5 +echo "${ECHO_T}$XEMACS" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi else # Extract the first word of "$withval", so it can be a program name with args. set dummy $withval; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:815: checking for $ac_word" >&5 -if eval "test \"\${ac_cv_prog_XEMACS+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_XEMACS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$XEMACS"; then ac_cv_prog_XEMACS="$XEMACS" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_XEMACS="$withval" - break - fi - done - IFS="$ac_save_ifs" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_XEMACS="$withval" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + test -z "$ac_cv_prog_XEMACS" && ac_cv_prog_XEMACS="xemacs" fi fi -XEMACS="$ac_cv_prog_XEMACS" +XEMACS=$ac_cv_prog_XEMACS if test -n "$XEMACS"; then - echo "$ac_t""$XEMACS" 1>&6 + echo "$as_me:$LINENO: result: $XEMACS" >&5 +echo "${ECHO_T}$XEMACS" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi fi @@ -844,61 +1549,66 @@ else XEMACS=xemacs test -z "$EMACS" && for ac_prog in emacs xemacs mule do -# Extract the first word of "$ac_prog", so it can be a program name with args. + # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:851: checking for $ac_word" >&5 -if eval "test \"\${ac_cv_prog_EMACS+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_EMACS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$EMACS"; then ac_cv_prog_EMACS="$EMACS" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_EMACS="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_EMACS="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + fi fi -EMACS="$ac_cv_prog_EMACS" +EMACS=$ac_cv_prog_EMACS if test -n "$EMACS"; then - echo "$ac_t""$EMACS" 1>&6 + echo "$as_me:$LINENO: result: $EMACS" >&5 +echo "${ECHO_T}$EMACS" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -test -n "$EMACS" && break + test -n "$EMACS" && break done test -n "$EMACS" || EMACS="emacs" -fi +fi; + - - - echo $ac_n "checking what a flavor does $EMACS have""... $ac_c" 1>&6 -echo "configure:887: checking what a flavor does $EMACS have" >&5 + echo "$as_me:$LINENO: checking what a flavor does $EMACS have" >&5 +echo $ECHO_N "checking what a flavor does $EMACS have... $ECHO_C" >&6 unset EMACS_cv_SYS_flavor; - + elisp="(cond ((featurep (quote xemacs)) \"XEmacs\")\ ((boundp (quote MULE)) \"MULE\")\ (t \"FSF Emacs\"))" if test -z ""noecho""; then - echo $ac_n "checking for flavor""... $ac_c" 1>&6 -echo "configure:897: checking for flavor" >&5 + echo "$as_me:$LINENO: checking for flavor" >&5 +echo $ECHO_N "checking for flavor... $ECHO_C" >&6 fi -if eval "test \"\${EMACS_cv_SYS_flavor+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${EMACS_cv_SYS_flavor+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + OUTPUT=./conftest-$$ echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 @@ -911,7 +1621,8 @@ fi flavor=${EMACS_cv_SYS_flavor} if test -z ""noecho""; then - echo "$ac_t""$flavor" 1>&6 + echo "$as_me:$LINENO: result: $flavor" >&5 +echo "${ECHO_T}$flavor" >&6 fi case $EMACS_cv_SYS_flavor in @@ -922,20 +1633,21 @@ fi *) EMACS_FLAVOR=emacs;; esac - echo "$ac_t""$EMACS_cv_SYS_flavor" 1>&6 + echo "$as_me:$LINENO: result: $EMACS_cv_SYS_flavor" >&5 +echo "${ECHO_T}$EMACS_cv_SYS_flavor" >&6 if test "$prefix" = NONE; then - echo $ac_n "checking prefix for your Emacs""... $ac_c" 1>&6 -echo "configure:929: checking prefix for your Emacs" >&5 - + echo "$as_me:$LINENO: checking prefix for your Emacs" >&5 +echo $ECHO_N "checking prefix for your Emacs... $ECHO_C" >&6 + elisp="(expand-file-name \"..\" invocation-directory)" if test -z ""noecho""; then - echo $ac_n "checking for prefix""... $ac_c" 1>&6 -echo "configure:934: checking for prefix" >&5 + echo "$as_me:$LINENO: checking for prefix" >&5 +echo $ECHO_N "checking for prefix... $ECHO_C" >&6 fi -if eval "test \"\${EMACS_cv_SYS_prefix+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${EMACS_cv_SYS_prefix+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + OUTPUT=./conftest-$$ echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 @@ -948,26 +1660,29 @@ fi prefix=${EMACS_cv_SYS_prefix} if test -z ""noecho""; then - echo "$ac_t""$prefix" 1>&6 + echo "$as_me:$LINENO: result: $prefix" >&5 +echo "${ECHO_T}$prefix" >&6 fi prefix=${EMACS_cv_SYS_prefix} - echo "$ac_t""$prefix" 1>&6 + echo "$as_me:$LINENO: result: $prefix" >&5 +echo "${ECHO_T}$prefix" >&6 fi - # Check whether --with-lispdir or --without-lispdir was given. + +# Check whether --with-lispdir or --without-lispdir was given. if test "${with_lispdir+set}" = set; then withval="$with_lispdir" lispdir=${withval} -fi - - echo $ac_n "checking where lisp files should go""... $ac_c" 1>&6 -echo "configure:965: checking where lisp files should go" >&5 +fi; + echo "$as_me:$LINENO: checking where lisp files should go" >&5 +echo $ECHO_N "checking where lisp files should go... $ECHO_C" >&6 if test -z "$lispdir"; then theprefix=$prefix if test "$theprefix" = NONE; then theprefix=$ac_default_prefix fi if test "$EMACS_FLAVOR" = "xemacs"; then + datadir="\$(prefix)/lib" lispdir="\$(datadir)/${EMACS_FLAVOR}/site-packages/lisp/${GNUS_PRODUCT_NAME}" else lispdir="\$(datadir)/${EMACS_FLAVOR}/site-lisp/${GNUS_PRODUCT_NAME}" @@ -985,22 +1700,25 @@ echo "configure:965: checking where lisp files should go" >&5 done fi if test ${EMACS_FLAVOR} = xemacs; then - echo "$ac_t""$lispdir - (it will be ignored when \"make install-package[-ja]\" is done)" 1>&6 + echo "$as_me:$LINENO: result: $lispdir + (it will be ignored when \"make install-package[-ja]\" is done)" >&5 +echo "${ECHO_T}$lispdir + (it will be ignored when \"make install-package[-ja]\" is done)" >&6 else - echo "$ac_t""$lispdir" 1>&6 + echo "$as_me:$LINENO: result: $lispdir" >&5 +echo "${ECHO_T}$lispdir" >&6 fi - - # Check whether --with-etcdir or --without-etcdir was given. + + +# Check whether --with-etcdir or --without-etcdir was given. if test "${with_etcdir+set}" = set; then withval="$with_etcdir" etcdir=${withval} -fi - - echo $ac_n "checking where etc files should go""... $ac_c" 1>&6 -echo "configure:1004: checking where etc files should go" >&5 +fi; + echo "$as_me:$LINENO: checking where etc files should go" >&5 +echo $ECHO_N "checking where etc files should go... $ECHO_C" >&6 if test -z "$etcdir"; then if test "$EMACS_FLAVOR" = "xemacs"; then etcdir="\$(lispdir)/../../etc" @@ -1008,12 +1726,13 @@ echo "configure:1004: checking where etc files should go" >&5 etcdir="\$(lispdir)/../etc" fi fi - echo "$ac_t""$etcdir" 1>&6 - + echo "$as_me:$LINENO: result: $etcdir" >&5 +echo "${ECHO_T}$etcdir" >&6 + - echo $ac_n "checking where the TeXinfo docs should go""... $ac_c" 1>&6 -echo "configure:1017: checking where the TeXinfo docs should go" >&5 + echo "$as_me:$LINENO: checking where the TeXinfo docs should go" >&5 +echo $ECHO_N "checking where the TeXinfo docs should go... $ECHO_C" >&6 if test "$infodir" = "\${prefix}/info"; then if test "$EMACS_FLAVOR" = "xemacs"; then info_dir="\$(prefix)/${thedir}/${EMACS_FLAVOR}/site-packages/info" @@ -1023,37 +1742,40 @@ echo "configure:1017: checking where the TeXinfo docs should go" >&5 else info_dir=$infodir fi - echo "$ac_t""$info_dir" 1>&6 - + echo "$as_me:$LINENO: result: $info_dir + (it will be ignored when \"make install-package[-ja]\" is done)" >&5 +echo "${ECHO_T}$info_dir + (it will be ignored when \"make install-package[-ja]\" is done)" >&6 -echo $ac_n "checking for acceptable URL version""... $ac_c" 1>&6 -echo "configure:1032: checking for acceptable URL version" >&5 + +echo "$as_me:$LINENO: checking for acceptable URL version" >&5 +echo $ECHO_N "checking for acceptable URL version... $ECHO_C" >&6 unset EMACS_cv_ACCEPTABLE_URL; unset EMACS_cv_SYS_url_dir; unset EMACS_cv_SYS_url; -if eval "test \"\${EMACS_cv_ACCEPTABLE_URL+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${EMACS_cv_ACCEPTABLE_URL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + if test -z ""noecho""; then - echo $ac_n "checking for url-retrieve in url""... $ac_c" 1>&6 -echo "configure:1045: checking for url-retrieve in url" >&5 + echo "$as_me:$LINENO: checking for url-retrieve in url" >&5 +echo $ECHO_N "checking for url-retrieve in url... $ECHO_C" >&6 fi library=`echo url | tr _ -` elisp="(progn (fmakunbound (quote url-retrieve)) (condition-case nil (progn (require (quote $library)) (fboundp (quote url-retrieve))) (error (prog1 nil (message \"$library not found\")))))" if test -z ""noecho""; then - echo $ac_n "checking for url""... $ac_c" 1>&6 -echo "configure:1052: checking for url" >&5 + echo "$as_me:$LINENO: checking for url" >&5 +echo $ECHO_N "checking for url... $ECHO_C" >&6 fi -if eval "test \"\${EMACS_cv_SYS_url+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${EMACS_cv_SYS_url+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + OUTPUT=./conftest-$$ echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 @@ -1066,7 +1788,8 @@ fi url=${EMACS_cv_SYS_url} if test -z ""noecho""; then - echo "$ac_t""$url" 1>&6 + echo "$as_me:$LINENO: result: $url" >&5 +echo "${ECHO_T}$url" >&6 fi if test "${EMACS_cv_SYS_url}" = nil; then @@ -1078,7 +1801,8 @@ fi HAVE_url=${EMACS_cv_SYS_url} if test -z ""noecho""; then - echo "$ac_t""$HAVE_url" 1>&6 + echo "$as_me:$LINENO: result: $HAVE_url" >&5 +echo "${ECHO_T}$HAVE_url" >&6 fi if test "${HAVE_url}" = yes; then @@ -1088,16 +1812,16 @@ else fi if test "${EMACS_cv_ACCEPTABLE_URL}" = yes; then - + elisp="(file-name-directory (locate-library \"url\"))" if test -z ""noecho""; then - echo $ac_n "checking for url_dir""... $ac_c" 1>&6 -echo "configure:1096: checking for url_dir" >&5 + echo "$as_me:$LINENO: checking for url_dir" >&5 +echo $ECHO_N "checking for url_dir... $ECHO_C" >&6 fi -if eval "test \"\${EMACS_cv_SYS_url_dir+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${EMACS_cv_SYS_url_dir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + OUTPUT=./conftest-$$ echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 @@ -1110,7 +1834,8 @@ fi url_dir=${EMACS_cv_SYS_url_dir} if test -z ""noecho""; then - echo "$ac_t""$url_dir" 1>&6 + echo "$as_me:$LINENO: result: $url_dir" >&5 +echo "${ECHO_T}$url_dir" >&6 fi EMACS_cv_ACCEPTABLE_URL=$EMACS_cv_SYS_url_dir @@ -1118,48 +1843,50 @@ fi fi - # Check whether --with-url or --without-url was given. + +# Check whether --with-url or --without-url was given. if test "${with_url+set}" = set; then withval="$with_url" - EMACS_cv_ACCEPTABLE_URL=`( cd $withval && pwd || echo "$withval" ) 2> /dev/null` -fi - + EMACS_cv_ACCEPTABLE_URL=`( cd $withval && pwd || echo "$withval" ) 2> /dev/null` +fi; URL=${EMACS_cv_ACCEPTABLE_URL} - + if test -z "${EMACS_cv_ACCEPTABLE_URL}"; then - echo "$ac_t""not found" 1>&6 + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 else - echo "$ac_t"""${URL}"" 1>&6 + echo "$as_me:$LINENO: result: ${URL}" >&5 +echo "${ECHO_T}${URL}" >&6 fi -echo $ac_n "checking for acceptable W3 version""... $ac_c" 1>&6 -echo "configure:1138: checking for acceptable W3 version" >&5 +echo "$as_me:$LINENO: checking for acceptable W3 version" >&5 +echo $ECHO_N "checking for acceptable W3 version... $ECHO_C" >&6 unset EMACS_cv_ACCEPTABLE_W3; unset EMACS_cv_SYS_w3_dir; unset EMACS_cv_SYS_w3_forms; -if eval "test \"\${EMACS_cv_ACCEPTABLE_W3+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${EMACS_cv_ACCEPTABLE_W3+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + if test -z ""noecho""; then - echo $ac_n "checking for w3-form-encode-xwfu in w3_forms""... $ac_c" 1>&6 -echo "configure:1151: checking for w3-form-encode-xwfu in w3_forms" >&5 + echo "$as_me:$LINENO: checking for w3-form-encode-xwfu in w3_forms" >&5 +echo $ECHO_N "checking for w3-form-encode-xwfu in w3_forms... $ECHO_C" >&6 fi library=`echo w3_forms | tr _ -` elisp="(progn (fmakunbound (quote w3-form-encode-xwfu)) (condition-case nil (progn (require (quote $library)) (fboundp (quote w3-form-encode-xwfu))) (error (prog1 nil (message \"$library not found\")))))" if test -z ""noecho""; then - echo $ac_n "checking for w3_forms""... $ac_c" 1>&6 -echo "configure:1158: checking for w3_forms" >&5 + echo "$as_me:$LINENO: checking for w3_forms" >&5 +echo $ECHO_N "checking for w3_forms... $ECHO_C" >&6 fi -if eval "test \"\${EMACS_cv_SYS_w3_forms+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${EMACS_cv_SYS_w3_forms+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + OUTPUT=./conftest-$$ echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 @@ -1172,7 +1899,8 @@ fi w3_forms=${EMACS_cv_SYS_w3_forms} if test -z ""noecho""; then - echo "$ac_t""$w3_forms" 1>&6 + echo "$as_me:$LINENO: result: $w3_forms" >&5 +echo "${ECHO_T}$w3_forms" >&6 fi if test "${EMACS_cv_SYS_w3_forms}" = nil; then @@ -1184,7 +1912,8 @@ fi HAVE_w3_forms=${EMACS_cv_SYS_w3_forms} if test -z ""noecho""; then - echo "$ac_t""$HAVE_w3_forms" 1>&6 + echo "$as_me:$LINENO: result: $HAVE_w3_forms" >&5 +echo "${ECHO_T}$HAVE_w3_forms" >&6 fi if test "${HAVE_w3_forms}" = yes; then @@ -1194,16 +1923,16 @@ else fi if test "${EMACS_cv_ACCEPTABLE_W3}" = yes; then - + elisp="(file-name-directory (locate-library \"w3-forms\"))" if test -z ""noecho""; then - echo $ac_n "checking for w3_dir""... $ac_c" 1>&6 -echo "configure:1202: checking for w3_dir" >&5 + echo "$as_me:$LINENO: checking for w3_dir" >&5 +echo $ECHO_N "checking for w3_dir... $ECHO_C" >&6 fi -if eval "test \"\${EMACS_cv_SYS_w3_dir+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${EMACS_cv_SYS_w3_dir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + OUTPUT=./conftest-$$ echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 @@ -1216,7 +1945,8 @@ fi w3_dir=${EMACS_cv_SYS_w3_dir} if test -z ""noecho""; then - echo "$ac_t""$w3_dir" 1>&6 + echo "$as_me:$LINENO: result: $w3_dir" >&5 +echo "${ECHO_T}$w3_dir" >&6 fi EMACS_cv_ACCEPTABLE_W3=$EMACS_cv_SYS_w3_dir @@ -1224,71 +1954,93 @@ fi fi - # Check whether --with-w3 or --without-w3 was given. + +# Check whether --with-w3 or --without-w3 was given. if test "${with_w3+set}" = set; then withval="$with_w3" - EMACS_cv_ACCEPTABLE_W3=`( cd $withval && pwd || echo "$withval" ) 2> /dev/null` -fi - + EMACS_cv_ACCEPTABLE_W3=`( cd $withval && pwd || echo "$withval" ) 2> /dev/null` +fi; W3=${EMACS_cv_ACCEPTABLE_W3} - + if test -z "${EMACS_cv_ACCEPTABLE_W3}"; then - echo "$ac_t""not found" 1>&6 + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 else - echo "$ac_t""${W3}" 1>&6 + echo "$as_me:$LINENO: result: ${W3}" >&5 +echo "${ECHO_T}${W3}" >&6 fi + echo "$as_me:$LINENO: checking which options to pass on to (X)Emacs" >&5 +echo $ECHO_N "checking which options to pass on to (X)Emacs... $ECHO_C" >&6 + if test "x$FLAGS" = "x"; then + if test "$EMACS_FLAVOR" = "xemacs"; then + FLAGS="-batch -no-autoloads -l \$(srcdir)/dgnushack.el" + else + FLAGS="-batch -q -no-site-file -l \$(srcdir)/dgnushack.el" + fi + else + FLAGS=$FLAGS + fi + echo "$as_me:$LINENO: result: $FLAGS" >&5 +echo "${ECHO_T}$FLAGS" >&6 + + + test "$LATEX" = t && LATEX= test "$LATEX" || for ac_prog in latex do -# Extract the first word of "$ac_prog", so it can be a program name with args. + # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1249: checking for $ac_word" >&5 -if eval "test \"\${ac_cv_path_LATEX+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_LATEX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - case "$LATEX" in - /*) + case $LATEX in + [\\/]* | ?:[\\/]*) ac_cv_path_LATEX="$LATEX" # Let the user override the test with a path. ;; - ?:/*) - ac_cv_path_LATEX="$LATEX" # Let the user override the test with a dos path. - ;; *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_path_LATEX="$ac_dir/$ac_word" - break - fi - done - IFS="$ac_save_ifs" + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LATEX="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + ;; esac fi -LATEX="$ac_cv_path_LATEX" +LATEX=$ac_cv_path_LATEX + if test -n "$LATEX"; then - echo "$ac_t""$LATEX" 1>&6 + echo "$as_me:$LINENO: result: $LATEX" >&5 +echo "${ECHO_T}$LATEX" >&6 else - echo "$ac_t""no" 1>&6 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -test -n "$LATEX" && break + test -n "$LATEX" && break done test -n "$LATEX" || LATEX="no" -echo $ac_n "checking for available fonts""... $ac_c" 1>&6 -echo "configure:1286: checking for available fonts" >&5 +echo "$as_me:$LINENO: checking for available fonts" >&5 +echo $ECHO_N "checking for available fonts... $ECHO_C" >&6 + # Check whether --with-fonts or --without-fonts was given. if test "${with_fonts+set}" = set; then withval="$with_fonts" USE_FONTS="$withval" -fi - +fi; WITH_FONTS_bembo='%' WITHOUT_FONTS_bembo= WITH_FONTS_pfu='%' @@ -1301,7 +2053,7 @@ if test -z "${USE_FONTS}"; then else OUTPUT=./conftest-$$ echo '\nonstopmode\documentclass{article}\usepackage{bembo}\begin{document}\end{document}' > ${OUTPUT} - if ${LATEX} ${OUTPUT} & 5 2>&1 ; then + if ${LATEX} ${OUTPUT} & 5 2>&1 ; then if test -z "${USE_FONTS}"; then USE_FONTS="Adobe Bembo" else @@ -1312,7 +2064,7 @@ if test -z "${USE_FONTS}"; then fi echo '\nonstopmode\documentclass{article}\begin{document}{\fontfamily{pfu}\fontsize{10pt}{10}\selectfont test}\end{document}' > ${OUTPUT} if retval=`${LATEX} ${OUTPUT} & 5`; then - if echo "$retval" | grep 'Some font shapes were not available' >& 5 2>&1 ; then + if echo "$retval" | grep 'Some font shapes were not available' >& 5 2>&1 ; then : else if test -z "${USE_FONTS}"; then @@ -1326,7 +2078,7 @@ if test -z "${USE_FONTS}"; then fi echo '\nonstopmode\documentclass{article}\begin{document}{\fontfamily{bcr}\fontsize{10pt}{10}\selectfont test}\end{document}' > ${OUTPUT} if retval=`${LATEX} ${OUTPUT} & 5`; then - if echo "$retval" | grep 'Some font shapes were not available' >& 5 2>&1 ; then + if echo "$retval" | grep 'Some font shapes were not available' >& 5 2>&1 ; then : else if test -z "${USE_FONTS}"; then @@ -1358,7 +2110,8 @@ if test -z "${USE_FONTS}" ; then USE_FONTS=no fi USE_FONTS=`echo "${USE_FONTS}" | sed 's/,\([^,]*\)$/ and\1/'` -echo "$ac_t"""${USE_FONTS}"" 1>&6 +echo "$as_me:$LINENO: result: ${USE_FONTS}" >&5 +echo "${ECHO_T}${USE_FONTS}" >&6 if test "${USE_FONTS}" = yes ; then USE_FONTS='Set in Adobe Bembo, Adobe Futura and Bitstream Courier.' elif test "${USE_FONTS}" = no ; then @@ -1369,15 +2122,16 @@ fi if test ${EMACS_FLAVOR} = xemacs; then - echo $ac_n "checking where the XEmacs package is""... $ac_c" 1>&6 -echo "configure:1374: checking where the XEmacs package is" >&5 - # Check whether --with-packagedir or --without-packagedir was given. + echo "$as_me:$LINENO: checking where the XEmacs package is" >&5 +echo $ECHO_N "checking where the XEmacs package is... $ECHO_C" >&6 + +# Check whether --with-packagedir or --without-packagedir was given. if test "${with_packagedir+set}" = set; then withval="$with_packagedir" if test "$withval" != yes -a -n "$withval"; then PACKAGEDIR=$withval else - + elisp="(let (package-dir)\ (if (boundp (quote early-packages))\ (let ((dirs (delq nil (append (if early-package-load-path\ @@ -1392,13 +2146,13 @@ elisp="(let (package-dir)\ dirs (cdr dirs))))))\ (or package-dir \"\"))" if test -z ""noecho""; then - echo $ac_n "checking for PACKAGEDIR""... $ac_c" 1>&6 -echo "configure:1397: checking for PACKAGEDIR" >&5 + echo "$as_me:$LINENO: checking for PACKAGEDIR" >&5 +echo $ECHO_N "checking for PACKAGEDIR... $ECHO_C" >&6 fi -if eval "test \"\${EMACS_cv_SYS_PACKAGEDIR+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${EMACS_cv_SYS_PACKAGEDIR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + OUTPUT=./conftest-$$ echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 @@ -1411,12 +2165,13 @@ fi PACKAGEDIR=${EMACS_cv_SYS_PACKAGEDIR} if test -z ""noecho""; then - echo "$ac_t""$PACKAGEDIR" 1>&6 + echo "$as_me:$LINENO: result: $PACKAGEDIR" >&5 +echo "${ECHO_T}$PACKAGEDIR" >&6 fi fi else - + elisp="(let (package-dir)\ (if (boundp (quote early-packages))\ (let ((dirs (delq nil (append (if early-package-load-path\ @@ -1431,13 +2186,13 @@ elisp="(let (package-dir)\ dirs (cdr dirs))))))\ (or package-dir \"\"))" if test -z ""noecho""; then - echo $ac_n "checking for PACKAGEDIR""... $ac_c" 1>&6 -echo "configure:1436: checking for PACKAGEDIR" >&5 + echo "$as_me:$LINENO: checking for PACKAGEDIR" >&5 +echo $ECHO_N "checking for PACKAGEDIR... $ECHO_C" >&6 fi -if eval "test \"\${EMACS_cv_SYS_PACKAGEDIR+set}\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 +if test "${EMACS_cv_SYS_PACKAGEDIR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - + OUTPUT=./conftest-$$ echo ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 eval ${EMACS}' -batch -eval '\''(let ((x '${elisp}')) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil "'${OUTPUT}'" nil 5))'\' >& 5 2>&1 @@ -1450,315 +2205,938 @@ fi PACKAGEDIR=${EMACS_cv_SYS_PACKAGEDIR} if test -z ""noecho""; then - echo "$ac_t""$PACKAGEDIR" 1>&6 -fi - + echo "$as_me:$LINENO: result: $PACKAGEDIR" >&5 +echo "${ECHO_T}$PACKAGEDIR" >&6 fi +fi; if test -z "$PACKAGEDIR"; then - echo "$ac_t""not found" 1>&6 + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 else - echo "$ac_t""$PACKAGEDIR" 1>&6 + echo "$as_me:$LINENO: result: $PACKAGEDIR" >&5 +echo "${ECHO_T}$PACKAGEDIR" >&6 fi else PACKAGEDIR= fi - - # Check whether --with-addpath or --without-addpath was given. + + +# Check whether --with-addpath or --without-addpath was given. if test "${with_addpath+set}" = set; then withval="$with_addpath" if test "$withval" != yes -a -n "$withval"; then - echo $ac_n "checking where to find the additional elisp libraries""... $ac_c" 1>&6 -echo "configure:1473: checking where to find the additional elisp libraries" >&5 + echo "$as_me:$LINENO: checking where to find the additional elisp libraries" >&5 +echo $ECHO_N "checking where to find the additional elisp libraries... $ECHO_C" >&6 ADDITIONAL_LOAD_PATH=$withval - echo "$ac_t""$ADDITIONAL_LOAD_PATH" 1>&6 + echo "$as_me:$LINENO: result: $ADDITIONAL_LOAD_PATH" >&5 +echo "${ECHO_T}$ADDITIONAL_LOAD_PATH" >&6 fi else ADDITIONAL_LOAD_PATH= -fi +fi; - -trap '' 1 2 15 -cat > confcache <<\EOF + ac_config_files="$ac_config_files Makefile etc/Makefile lisp/Makefile texi/Makefile texi/gnusconfig.tex texi/ps/Makefile lisp/dgnuspath.el" +cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. # -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. # -EOF +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' fi -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([^ ][^ ]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed + + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS <&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. # Run this file to recreate the current configuration. -# This directory was configured as follows, -# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# $0 $ac_configure_args -# # Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.14.1" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi done -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi -trap 'rm -fr `echo "Makefile etc/Makefile lisp/Makefile texi/Makefile \ - texi/gnusconfig.tex texi/ps/Makefile lisp/dgnuspath.el" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS </dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@GNUS_PRODUCT_NAME@%$GNUS_PRODUCT_NAME%g -s%@SET_MAKE@%$SET_MAKE%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@MAKEINFO@%$MAKEINFO%g -s%@EMACS@%$EMACS%g -s%@XEMACS@%$XEMACS%g -s%@lispdir@%$lispdir%g -s%@etcdir@%$etcdir%g -s%@info_dir@%$info_dir%g -s%@HAVE_url@%$HAVE_url%g -s%@URL@%$URL%g -s%@HAVE_w3_forms@%$HAVE_w3_forms%g -s%@W3@%$W3%g -s%@LATEX@%$LATEX%g -s%@WITH_FONTS_bembo@%$WITH_FONTS_bembo%g -s%@WITHOUT_FONTS_bembo@%$WITHOUT_FONTS_bembo%g -s%@WITH_FONTS_pfu@%$WITH_FONTS_pfu%g -s%@WITHOUT_FONTS_pfu@%$WITHOUT_FONTS_pfu%g -s%@WITH_FONTS_bcr@%$WITH_FONTS_bcr%g -s%@WITHOUT_FONTS_bcr@%$WITHOUT_FONTS_bcr%g -s%@USE_FONTS@%$USE_FONTS%g -s%@PACKAGEDIR@%$PACKAGEDIR%g -s%@ADDITIONAL_LOAD_PATH@%$ADDITIONAL_LOAD_PATH%g -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` + as_ln_s='ln -s' fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.57. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.57, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; + + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "etc/Makefile" ) CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; + "lisp/Makefile" ) CONFIG_FILES="$CONFIG_FILES lisp/Makefile" ;; + "texi/Makefile" ) CONFIG_FILES="$CONFIG_FILES texi/Makefile" ;; + "texi/gnusconfig.tex" ) CONFIG_FILES="$CONFIG_FILES texi/gnusconfig.tex" ;; + "texi/ps/Makefile" ) CONFIG_FILES="$CONFIG_FILES texi/ps/Makefile" ;; + "lisp/dgnuspath.el" ) CONFIG_FILES="$CONFIG_FILES lisp/dgnuspath.el" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; esac +done - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@GNUS_PRODUCT_NAME@,$GNUS_PRODUCT_NAME,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@EMACS@,$EMACS,;t t +s,@XEMACS@,$XEMACS,;t t +s,@lispdir@,$lispdir,;t t +s,@etcdir@,$etcdir,;t t +s,@info_dir@,$info_dir,;t t +s,@HAVE_url@,$HAVE_url,;t t +s,@URL@,$URL,;t t +s,@HAVE_w3_forms@,$HAVE_w3_forms,;t t +s,@W3@,$W3,;t t +s,@FLAGS@,$FLAGS,;t t +s,@LATEX@,$LATEX,;t t +s,@WITH_FONTS_bembo@,$WITH_FONTS_bembo,;t t +s,@WITHOUT_FONTS_bembo@,$WITHOUT_FONTS_bembo,;t t +s,@WITH_FONTS_pfu@,$WITH_FONTS_pfu,;t t +s,@WITHOUT_FONTS_pfu@,$WITHOUT_FONTS_pfu,;t t +s,@WITH_FONTS_bcr@,$WITH_FONTS_bcr,;t t +s,@WITHOUT_FONTS_bcr@,$WITHOUT_FONTS_bcr,;t t +s,@USE_FONTS@,$USE_FONTS,;t t +s,@PACKAGEDIR@,$PACKAGEDIR,;t t +s,@ADDITIONAL_LOAD_PATH@,$ADDITIONAL_LOAD_PATH,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat fi +fi # test -n "$CONFIG_FILES" - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; esac - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +cat >>$CONFIG_STATUS <<\_ACEOF -exit 0 -EOF +{ (exit 0); exit 0; } +_ACEOF chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi diff --git a/configure.in b/configure.in index 18dfdb1..92f7eae 100644 --- a/configure.in +++ b/configure.in @@ -9,6 +9,7 @@ AC_PATH_ETCDIR AC_PATH_INFO_DIR AC_CHECK_URL AC_CHECK_W3 +AC_SET_BUILD_FLAGS GNUS_CHECK_FONTS AC_PATH_PACKAGEDIR AC_ADD_LOAD_PATH diff --git a/contrib/ChangeLog b/contrib/ChangeLog index dea7109..d18affe 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,9 @@ +2003-04-17 Steve Youngs + + * hashcash.el (hashcash-point-at-bol): Move the fbound test + outside of the defalias. + (hashcash-point-at-eol): Ditto. + 2003-03-19 Simon Josefsson * gnus-idna.el: Update. diff --git a/contrib/hashcash.el b/contrib/hashcash.el index 6966b21..6702faf 100644 --- a/contrib/hashcash.el +++ b/contrib/hashcash.el @@ -61,15 +61,13 @@ is used instead.") (require 'mail-utils) -(defalias 'hashcash-point-at-bol - (if (fboundp 'point-at-bol) - 'point-at-bol - 'line-beginning-position)) - -(defalias 'hashcash-point-at-eol - (if (fboundp 'point-at-eol) - 'point-at-eol - 'line-end-position)) +(if (fboundp 'point-at-bol) + (defalias 'hashcash-point-at-bol 'point-at-bol) + (defalias 'hashcash-point-at-bol 'line-beginning-position)) + +(if (fboundp 'point-at-eol) + (defalias 'hashcash-point-at-eol 'point-at-eol) + (defalias 'hashcash-point-at-eol 'line-end-position)) (defun hashcash-strip-quoted-names (addr) (setq addr (mail-strip-quoted-names addr)) diff --git a/etc/gnus-tut.txt b/etc/gnus-tut.txt index 2c97c00..cefd9b5 100644 --- a/etc/gnus-tut.txt +++ b/etc/gnus-tut.txt @@ -301,9 +301,8 @@ Message-ID: This is the text version of the Gnus FAQ, see http://my.gnus.org for the up to date version of this document, there you can also find a -html version and various other formats. - -Frequently Asked Questions +html version and various other formats. There's also a texinfo version +of the FAQ distributed with Gnus. Table of Contents @@ -366,15 +365,16 @@ the my.gnus.org team's fault, sorry. Frequently Asked Questions with Answers 1. Installation FAQ - + 1.1. What is the latest version of Gnus? - 1.2. Where and how to get Gnus? - 1.3. What to do with the tarball now? - 1.4. Which version of Emacs do I need? - 1.5. How do I run Gnus on both Emacs and XEmacs? - + 1.2. What's new in 5.10.0? + 1.3. Where and how to get Gnus? + 1.4. What to do with the tarball now? + 1.5. Which version of Emacs do I need? + 1.6. How do I run Gnus on both Emacs and XEmacs? + 2. Startup / Group buffer - + 2.1. Every time I start Gnus I get a message "Gnus auto-save file exists. Do you want to read it?", what does this mean and how to prevent it? @@ -386,9 +386,9 @@ Frequently Asked Questions with Answers through them? 2.5. How to manually sort the groups in Group buffer? How to sort the groups in a topic? - + 3. Getting Messages - + 3.1. I just installed Gnus, started it via M-x gnus but it only says "nntp (news) open error", what to do? 3.2. I'm working under Windows and have no idea what ~/.gnus @@ -409,9 +409,9 @@ Frequently Asked Questions with Answers can I use Gnus to read my mail from it? 3.11. Can I tell Gnus not to delete the mails on the server it retrieves via POP3? - + 4. Reading messages - + 4.1. When I enter a group, all read messages are gone. How to view them again? 4.2. How to tell Gnus to show an important message every time I @@ -441,9 +441,9 @@ Frequently Asked Questions with Answers 4.14. I don't like the way the Summary buffer looks, how to tweak it? 4.15. How to split incoming mails in several groups? - + 5. Composing messages - + 5.1. What are the basic commands I need to know for sending mail and postings? 5.2. How to enable automatic word-wrap when composing messages? @@ -467,9 +467,9 @@ Frequently Asked Questions with Answers news, how to do it? 5.12. People tell me my Message-IDs are not correct, why aren't they and how to fix it? - + 6. Old messages - + 6.1. How to import my old mail into Gnus? 6.2. How to archive interesting messages? 6.3. How to search for a specific message? @@ -478,1298 +478,1412 @@ Frequently Asked Questions with Answers some groups). How to do it? 6.6. I don't want expiration to delete my mails but to move them to another group. - -7. Getting help - - 7.1. How to find information and help inside Emacs? - 7.2. I can't find anything in the Gnus manual about X (e.g. + +7. Gnus in a dial-up environment + + 7.1. I don't have a permanent connection to the net, how can I + minimize the time I've got to be connected? + 7.2. So what was this thing about the Agent? + 7.3. I want to store article bodies on disk, too. How to do it? + 7.4. How to tell Gnus not to try to send mails / postings while + I'm offline? + +8. Getting help + + 8.1. How to find information and help inside Emacs? + 8.2. I can't find anything in the Gnus manual about X (e.g. attachments, PGP, MIME...), is it not documented? - 7.3. Which websites should I know? - 7.4. Which mailing lists and newsgroups are there? - 7.5. Where to report bugs? - 7.6. I need real-time help, where to find it? - -8. Tuning Gnus - - 8.1. Starting Gnus is really slow, how to speed it up? - 8.2. How to speed up the process of entering a group? - 8.3. Sending mail becomes slower and slower, what's up? - -1. Installation FAQ - -1.1. What is the latest version of Gnus? - - As of this posting, the latest Gnus version is 5.8.8(which is - basically the same as Gnus 5.9 which is shipped with GNU Emacs). - This version is very stable and should be the choice for all - beginners. However 5.8.8 is quite old, so many people today use the - BETA version from CVS called Oort Gnus, which contains a huge - amount of new features. If you want to do this too, be aware that - it's beta and might have bugs and at worst case might eat your - mail. - -1.2. Where and how to get Gnus? - - The latest released version of Gnus is included in Emacs 21 and - available through the package system of XEmacs 21.4, so the easiest - way is getting one of those. If you don't want or can't do this, - get the Gnus tarball from http://www.gnus.org/dist/gnus.tar.gz - [http://www.gnus.org/dist/gnus.tar.gz] or via anonymous FTP from - ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz [ftp://ftp.gnus.org/pub/ - gnus/gnus.tar.gz]. - -1.3. What to do with the tarball now? - - Untar it via tar xvzf gnus.tar.gz and do the common ./configure; - make; make install circle. (under MS-Windows either get the Cygwin - environment from http://www.cygwin.com [http://www.cygwin.com] - which allows you to do what's described above or unpack the tarball - with some packer (e.g. Winace from http://www.winace.com [http:// - www.winace.com]) and use the batch-file make.bat included in the - tarball to install Gnus. If you don't want to (or aren't allowed - to) install Gnus system-wide, you can install it in your home - directory and add the following lines to your ~/.xemacs/init.el or - ~/.emacs: - - (add-to-list 'load-path "/path/to/gnus/lisp") - (if (featurep 'xemacs) - (add-to-list 'Info-directory-list "/path/to/gnus/texi/") - (add-to-list 'Info-default-directory-list "/path/to/gnus/texi/")) - - - Make sure that you don't have any gnus related stuff before this - line, on MS Windows use something like "C:/path/to/lisp" (yes, "/ - "). - -1.4. Which version of Emacs do I need? - - Gnus 5.8.8 requires an emacs version that is greater than or equal - to Emacs 20.3 or XEmacs 20.1. - -1.5. How do I run Gnus on both Emacs and XEmacs? - - You can't use the same copy of Gnus in both as the Lisp files are - byte-compiled to a format which is different depending on which - Emacs did the compilation. Get one copy of Gnus for Emacs and one - for XEmacs. - -2. Startup / Group buffer - -2.1. Every time I start Gnus I get a message "Gnus auto-save file - exists. Do you want to read it?", what does this mean and how to - prevent it? - - This message means that the last time you used Gnus, it wasn't - properly exited and therefor couldn't write its informations to - disk (e.g. which messages you read), you are now asked if you want - to restore those informations from the auto-save file. - - To prevent this message make sure you exit Gnus via q in group - buffer instead of just killing Emacs. - -2.2. Gnus doesn't remember which groups I'm subscribed to, what's this? - - You get the message described in the q/a pair above while starting - Gnus, right? It's an other symptom for the same problem, so read - the answer above. - -2.3. How to change the format of the lines in Group buffer? - - You've got to tweak the value of the variable - gnus-group-line-format. See the manual node "Group Line - Specification" for information on how to do this. An example for - this (guess from whose .gnus :-)): - - (setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n") - - -2.4. My group buffer becomes a bit crowded, is there a way to sort my - groups into categories so I can easier browse through them? - - Gnus offers the topic mode, it allows you to sort your groups in, - well, topics, e.g. all groups dealing with Linux under the topic - linux, all dealing with music under the topic music and all dealing - with scottish music under the topic scottish which is a subtopic of - music. - - To enter topic mode, just hit t while in Group buffer. Now you can - use T n to create a topic at point and T m to move a group to a - specific topic. For more commands see the manual or the menu. You - might want to include the %P specifier at the beginning of your - gnus-group-line-format variable to have the groups nicely indented. - -2.5. How to manually sort the groups in Group buffer? How to sort the - groups in a topic? - - Move point over the group you want to move and hit C-k, now move - point to the place where you want the group to be and hit C-y. - -3. Getting Messages - -3.1. I just installed Gnus, started it via M-x gnus but it only says - "nntp (news) open error", what to do? - - You've got to tell Gnus where to fetch the news from. Read the - documentation for information on how to do this. As a first start, - put those lines in ~/.gnus: - - (setq gnus-select-method '(nntp "news.yourprovider.net")) - (setq user-mail-address "you@yourprovider.net") - (setq user-full-name "Your Name") - - -3.2. I'm working under Windows and have no idea what ~/.gnus means. - - The ~/ means the home directory where Gnus and Emacs look for the - configuration files. However, you don't really need to know what - this means, it suffices that Emacs knows what it means :-) You can - type C-x C-f ~/.gnus RET (yes, with the forward slash, even on - Windows), and Emacs will open the right file for you. (It will most - likely be new, and thus empty.) However, I'd discourage you from - doing so, since the directory Emacs chooses will most certainly not - be what you want, so let's do it the correct way. The first thing - you've got to do is to create a suitable directory (no blanks in - directory name please) e.g. c:\myhome. Then you must set the - environment variable HOME to this directory. To do this under Win9x - or Me include the line - - SET HOME=C:\myhome - - - in your autoexec.bat and reboot. Under NT, 2000 and XP, hit - Winkey+Pause/Break to enter system options (if it doesn't work, go - to Control Panel -> System). There you'll find the possibility to - set environment variables, create a new one with name HOME and - value C:\myhome, a reboot is not necessary. - - Now to create ~/.gnus, say C-x C-f ~/.gnus RET C-x C-s. in Emacs. - -3.3. My news server requires authentication, how to store user name and - password on disk? - - Create a file ~/.authinfo which includes for each server a line - like this - - machine news.yourprovider.net login YourUserName password YourPassword - - . Make sure that the file isn't readable to others if you work on a - OS which is capable of doing so. (Under Unix say - - chmod 600 ~/.authinfo - - in a shell.) - -3.4. Gnus seems to start up OK, but I can't find out how to subscribe to - a group. - - If you know the name of the group say U name.of.group RET in group - buffer (use the tab-completion Luke). Otherwise hit ^ in group - buffer, this brings you to the server buffer. Now place point (the - cursor) over the server which carries the group you want, hit RET, - move point to the group you want to subscribe to and say u to - subscribe to it. - -3.5. Gnus doesn't show all groups / Gnus says I'm not allowed to post on - this server as well as I am, what's that? - - Some providers allow restricted anonymous access and full access - only after authorization. To make Gnus send authinfo to those - servers append - - force yes - - to the line for those servers in ~/.authinfo. - -3.6. I want Gnus to fetch news from several servers, is this possible? - - Of course. You can specify more sources for articles in the - variable gnus-secondary-select-methods. Add something like this in - ~/.gnus: - - (add-to-list 'gnus-secondary-select-methods '(nntp "news.yourSecondProvider.net")) - (add-to-list 'gnus-secondary-select-methods '(nntp "news.yourThirdProvider.net")) - - -3.7. And how about local spool files? - - No problem, this is just one more select method called nnspool, so - you want this: - - (add-to-list 'gnus-secondary-select-methods '(nnspool "")) - - - Or this if you don't want an NNTP Server as primary news source: - - (setq gnus-select-method '(nnspool "")) - - - Gnus will look for the spool file in /usr/spool/news, if you want - something different, change the line above to something like this: - - (add-to-list 'gnus-secondary-select-methods - '(nnspool "" (nnspool-directory "/usr/local/myspoolddir"))) - - - This sets the spool directory for this server only. You might have - to specify more stuff like the program used to post articles, see - the Gnus manual on how to do this. - -3.8. OK, reading news works now, but I want to be able to read my mail - with Gnus, too. How to do it? - - That's a bit harder since there are many possible sources for mail, - many possible ways for storing mail and many different ways for - sending mail. The most common cases are these: 1: You want to read - your mail from a pop3 server and send them directly to a SMTP - Server 2: Some program like fetchmail retrieves your mail and - stores it on disk from where Gnus shall read it. Outgoing mail is - sent by Sendmail, Postfix or some other MTA. Sometimes, you even - need a combination of the above cases. - - However, the first thing to do is to tell Gnus in which way it - should store the mail, in Gnus terminology which back end to use. - Gnus supports many different back ends, the most commonly used one - is nnml. It stores every mail in one file and is therefor quite - fast. However you might prefer a one file per group approach if - your file system has problems with many small files, the nnfolder - back end is then probably the choice for you. To use nnml add the - following to ~/.gnus: - - (add-to-list 'gnus-secondary-select-methods '(nnml "")) - - - As you might have guessed, if you want nnfolder, it's - - (add-to-list 'gnus-secondary-select-methods '(nnfolder "")) - - - Now we need to tell Gnus, where to get it's mail from. If it's a - POP3 server, then you need something like this: - - (eval-after-load "mail-source" - '(add-to-list 'mail-sources '(pop :server "pop.YourProvider.net" - :user "yourUserName" - :password "yourPassword")) - - - Make sure ~/.gnus isn't readable to others if you store your - password there. If you want to read your mail from a traditional - spool file on your local machine, it's - - (eval-after-load "mail-source" - '(add-to-list 'mail-sources '(file :path "/path/to/spool/file")) - - - If it's a Maildir, with one file per message as used by postfix, - Qmail and (optionally) fetchmail it's - - (eval-after-load "mail-source" - '(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/" - :subdirs ("cur" "new"))) - - - And finally if you want to read your mail from several files in one - directory, for example because procmail already split your mail, - it's - - (eval-after-load "mail-source" - '(add-to-list 'mail-sources '(directory :path "/path/to/procmail-dir/" - :suffix ".prcml")) - - - Where :suffix ".prcml" tells Gnus only to use files with the suffix - .prcml. - - OK, now you only need to tell Gnus how to send mail. If you want to - send mail via sendmail (or whichever MTA is playing the role of - sendmail on your system), you don't need to do anything. However, - if you want to send your mail to an SMTP Server you need the - following in your ~/.gnus - - (setq send-mail-function 'smtpmail-send-it) - (setq message-send-mail-function 'smtpmail-send-it) - (setq smtpmail-default-smtp-server "smtp.yourProvider.net") - - -3.9. And what about IMAP? - - There are two ways of using IMAP with Gnus. The first one is to use - IMAP like POP3, that means Gnus fetches the mail from the IMAP - server and stores it on disk. If you want to do this (you don't - really want to do this) add the following to ~/.gnus - - (add-to-list 'mail-sources '(imap :server "mail.mycorp.com" - :user "username" - :pass "password" - :stream network - :authentication login - :mailbox "INBOX" - :fetchflag "\\Seen")) - - - You might have to tweak the values for stream and/or - authentification, see the Gnus manual node "Mail Source Specifiers" - for possible values. - - If you want to use IMAP the way it's intended, you've got to follow - a different approach. You've got to add the nnimap back end to your - select method and give the information about the server there. - - (add-to-list 'gnus-secondary-select-methods - '(nnimap "Give the baby a name" - (nnimap-address "imap.yourProvider.net") - (nnimap-port 143) - (nnimap-list-pattern "archive.*"))) - - - Again, you might have to specify how to authenticate to the server - if Gnus can't guess the correct way, see the Manual Node "IMAP" for - detailed information. - -3.10. At the office we use one of those MS Exchange servers, can I use - Gnus to read my mail from it? - - Offer your administrator a pair of new running shoes for activating - IMAP on the server and follow the instructions above. - -3.11. Can I tell Gnus not to delete the mails on the server it retrieves - via POP3? - - First of all, that's not the way POP3 is intended to work, if you - have the possibility, you should use the IMAP Protocol if you want - your messages to stay on the server. Nevertheless there might be - situations where you need the feature, but sadly Gnus itself has no - predefined functionality to do so. - - However this is Gnus county so there are possibilities to achieve - what you want. The easiest way is to get an external program which - retrieves copies of the mail and stores them on disk, so Gnus can - read it from there. On Unix systems you could use e.g. fetchmail - for this, on MS Windows you can use Hamster, an excellent local - news and mail server. - - The other solution would be, to replace the method Gnus uses to get - mail from POP3 servers by one which is capable of leaving the mail - on the server. If you use XEmacs, get the package mail-lib, it - includes an enhanced pop3.el, look in the file, there's - documentation on how to tell Gnus to use it and not to delete the - retrieved mail. For GNU Emacs look for the file epop3.el which can - do the same (If you know the home of this file, please send me an - e-mail). You can also tell Gnus to use an external program (e.g. - fetchmail) to fetch your mail, see the info node "Mail Source - Specifiers" in the Gnus manual on how to do it. - -4. Reading messages - -4.1. When I enter a group, all read messages are gone. How to view them - again? - - If you enter the group by saying RET in summary buffer with point - over the group, only unread and ticked messages are loaded. Say C-u - RET instead to load all available messages. If you want only the - e.g. 300 newest say C-u 300 RET - - Loading only unread messages can be annoying if you have threaded - view enabled, say - - (setq gnus-fetch-old-headers 'some) - - - in ~/.gnus to load enough old articles to prevent teared threads, - replace 'some with t to load all articles (Warning: Both settings - enlarge the amount of data which is fetched when you enter a group - and slow down the process of entering a group). - - If you use Oort Gnus, you can say /o N In summary buffer to load - the last N messages, this feature is not available in 5.8.8 - - If you don't want all old messages, but the parent of the message - you're just reading, you can say ^, if you want to retrieve the - whole thread the message you're just reading belongs to, A T is - your friend. - -4.2. How to tell Gnus to show an important message every time I enter a - group, even when it's read? - - You can tick important messages. To do this hit u while point is in - summary buffer over the message. When you want to remove the mark, - hit either d (this deletes the tick mark and set's unread mark) or - M c (which deletes all marks for the message). - -4.3. How to view the headers of a message? - - Say t to show all headers, one more t hides them again. - -4.4. How to view the raw unformatted message? - - Say C-u g to show the raw message g returns to normal view. - -4.5. How can I change the headers Gnus displays by default at the top of - the article buffer? - - The variable gnus-visible-headers controls which headers are shown, - its value is a regular expression, header lines which match it are - shown. So if you want author, subject, date, and if the header - exists, Followup-To and MUA / NUA say this in ~/.gnus: - - (setq gnus-visible-headers - "^\\(From:\\|Subject:\\|Date:\\|Followup-To:\\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)") - - -4.6. I'd like Gnus NOT to render HTML-mails but show me the text part if - it's available. How to do it? - - Say - - (eval-after-load "mm-decode" - '(progn - (add-to-list 'mm-discouraged-alternatives "text/html") - (add-to-list 'mm-discouraged-alternatives "text/richtext"))) - - - in ~/.gnus. If you don't want HTML rendered, even if there's no - text alternative add - - (setq mm-automatic-display (remove "text/html" mm-automatic-display)) - - - too. - -4.7. Can I use some other browser than w3 to render my HTML-mails? - - Only if you use Oort Gnus. In this case you've got the choice - between w3, w3m, links, lynx and html2text, which one is used can - be specified in the variable mm-text-html-renderer, so if you want - links to render your mail say - - (setq mm-text-html-renderer 'links) - - -4.8. Is there anything I can do to make poorly formatted mails more - readable? - - Gnus offers you several functions to "wash" incoming mail, you can - find them if you browse through the menu, item Article->Washing. - The most interesting ones are probably "Wrap long lines" ( W w ), - "Decode ROT13" ( W r ) and "Outlook Deuglify" which repairs the - dumb quoting used by many users of Microsoft products ( W k ) sadly - the last one is only available in Oort Gnus. - -4.9. Is there a way to automatically ignore posts by specific authors or - with specific words in the subject? And can I highlight more - interesting ones in some way? - - You want Scoring. Scoring means, that you define rules which assign - each message an integer value. Depending on the value the message - is highlighted in summary buffer (if it's high, say +2000) or - automatically marked read (if the value is low, say -800) or some - other action happens. - - There are basically three ways of setting up rules which assign the - scoring-value to messages. The first and easiest way is to set up - rules based on the article you are just reading. Say you're reading - a message by a guy who always writes nonsense and you want to - ignore his messages in the future. Hit L, to set up a rule which - lowers the score. Now Gnus asks you which the criteria for lowering - the Score shall be. Hit ? twice to see all possibilities, we want a - which means the author (the from header). Now Gnus wants to know - which kind of matching we want. Hit either e for an exact match or - s for substring-match and delete afterwards everything but the name - to score down all authors with the given name no matter which email - address is used. Now you need to tell Gnus when to apply the rule - and how long it should last, hit e.g. p to apply the rule now and - let it last forever. If you want to raise the score instead of - lowering it say I instead of L. - - You can also set up rules by hand. To do this say V f in summary - buffer. Then you are asked for the name of the score file, it's - name.of.group.SCORE for rules valid in only one group or all.Score - for rules valid in all groups. See the Gnus manual for the exact - syntax, basically it's one big list whose elements are lists again. - the first element of those lists is the header to score on, then - one more list with what to match, which score to assign, when to - expire the rule and how to do the matching. If you find me very - interesting, you could e.g. add the following to your all.Score: - - (("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s)) - ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s))) - - - This would add 999 to the score of messages written by me and 500 - to the score of messages which are a (possibly indirect) answer to - a message written by me. Of course nobody with a sane mind would do - this :-) - - The third alternative is adaptive scoring. This means Gnus watches - you and tries to find out what you find interesting and what - annoying and sets up rules which reflect this. Adaptive scoring can - be a huge help when reading high traffic groups. If you want to - activate adaptive scoring say - - (setq gnus-use-adaptive-scoring t) - - - in ~/.gnus. - -4.10. How can I disable threading in some (e.g. mail-) groups, or set - other variables specific for some groups? - - While in group buffer move point over the group and hit G c, this - opens a buffer where you can set options for the group. At the - bottom of the buffer you'll find an item that allows you to set - variables locally for the group. To disable threading enter - gnus-show-threads as name of variable and nil as value. Hit button - done at the top of the buffer when you're ready. - -4.11. Can I highlight messages written by me and follow-ups to those? - - Stop those "Can I ..." questions, the answer is always yes in Gnus - Country :-). It's a three step process: First we make faces - (specifications of how summary-line shall look like) for those - postings, then we'll give them some special score and finally we'll - tell Gnus to use the new faces. You can find detailed instructions - on how to do it on my.gnus.org [http://my.gnus.org/Members/dzimmerm - /HowTo%2C2002-07-25%2C1027619165012198456/view] - -4.12. The number of total messages in a group which Gnus displays in - group buffer is by far to high, especially in mail groups. Is this - a bug? - - No, that's a matter of design of Gnus, fixing this would mean - reimplementation of major parts of Gnus' back ends. Gnus thinks - "highest-article-number - lowest-article-number = - total-number-of-articles". This works OK for Usenet groups, but if - you delete and move many messages in mail groups, this fails. To - cure the symptom, enter the group via C-u RET (this makes Gnus get - all messages), then hit M P b to mark all messages and then say B m - name.of.group to move all messages to the group they have been in - before, they get new message numbers in this process and the count - is right again (until you delete and move your mail to other groups - again). - -4.13. I don't like the layout of summary and article buffer, how to - change it? Perhaps even a three pane display? - - You can control the windows configuration by calling the function - gnus-add-configuration. The syntax is a bit complicated but - explained very well in the manual node "Window Layout". Some - popular examples: - - Instead 25% summary 75% article buffer 35% summary and 65% article - (the 1.0 for article means "take the remaining space"): - - (gnus-add-configuration '(article (vertical 1.0 (summary .35 point) (article 1.0)))) - - - A three pane layout, Group buffer on the left, summary buffer - top-right, article buffer bottom-right: - - (gnus-add-configuration - '(article - (horizontal 1.0 - (vertical 25 - (group 1.0)) - (vertical 1.0 - (summary 0.25 point) - (article 1.0))))) - (gnus-add-configuration - '(summary - (horizontal 1.0 - (vertical 25 - (group 1.0)) - (vertical 1.0 - (summary 1.0 point))))) - - -4.14. I don't like the way the Summary buffer looks, how to tweak it? - - You've got to play around with the variable - gnus-summary-line-format. It's value is a string of symbols which - stand for things like author, date, subject etc. A list of the - available specifiers can be found in the manual node "Summary - Buffer Lines" and the often forgotten node "Formatting Variables" - and it's sub-nodes. There you'll find useful things like - positioning the cursor and tabulators which allow you a summary in - table form, but sadly hard tabulators are broken in 5.8.8. - - Oort Gnus offers you some very nice new specifiers, e.g. %B which - draws a thread-tree and %&user-date which gives you a date where - the details are dependent of the articles age. Here's an example - which uses both, DON'T TRY TO USE IT WITH 5.8.8! - - (setq gnus-summary-line-format ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n") - - - resulting in: - - :O Re: [Richard Stallman] rfc2047.el | 13 |Lars Magne Ingebrigt |Sat 23:06 - :O Re: Revival of the ding-patches list | 13 |Lars Magne Ingebrigt |Sat 23:12 - :R > Re: Find correct list of articles for a gro| 25 |Lars Magne Ingebrigt |Sat 23:16 - :O \-> ... | 21 |Kai Grossjohann | 0:01 - :R > Re: Cry for help: deuglify.el - moving stuf| 28 |Lars Magne Ingebrigt |Sat 23:34 - :O \-> ... | 115 |Raymond Scholz | 1:24 - :O \-> ... | 19 |Lars Magne Ingebrigt |15:33 - :O Slow mailing list | 13 |Lars Magne Ingebrigt |Sat 23:49 - :O Re: `@' mark not documented | 13 |Lars Magne Ingebrigt |Sat 23:50 - :R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57 - :O \-> ... | 18 |Kai Grossjohann | 0:35 - :O \-> ... | 13 |Lars Magne Ingebrigt | 0:56 - - -4.15. How to split incoming mails in several groups? - - Gnus offers two possibilities for splitting mail, the easy - nnmail-split-methods and the more powerful Fancy Mail Splitting. - I'll only talk about the first one, refer to the manual, node - "Fancy Mail Splitting" for the latter. - - The value of nnmail-split-methods is a list, each element is a list - which stands for a splitting rule. Each rule has the form "group - where matching articles should go to", "regular expression which - has to be matched", the first rule which matches wins. The last - rule must always be a general rule (regular expression .*) which - denotes where articles should go which don't match any other rule. - If the folder doesn't exist yet, it will be created as soon as an - article lands there. By default the mail will be send to all groups - whose rules match. If you don't want that (you probably don't - want), say - - (setq nnmail-crosspost nil) - - - in ~/.gnus. - - An example might be better than thousand words, so here's my - nnmail-split-methods. Note that I send duplicates in a special - group and that the default group is spam, since I filter all mails - out which are from some list I'm subscribed to or which are - addressed directly to me before. Those rules kill about 80% of the - Spam which reaches me (Email addresses are changed to prevent - spammers from using them): - - (setq nnmail-split-methods - '(("duplicates" "^Gnus-Warning:.*duplicate") - ("XEmacs-NT" "^\\(To:\\|CC:\\).*localpart@xemacs.bla.*") - ("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@socha.bla.*") - ("tcsh" "^\\(To:\\|CC:\\).*localpart@mx.gw.bla.*") - ("BAfH" "^\\(To:\\|CC:\\).*localpart@.*uni-muenchen.bla.*") - ("Hamster-src" "^\\(CC:\\|To:\\).*hamster-sourcen@yahoogroups.\\(de\\|com\\).*") - ("Tagesschau" "^From: tagesschau $") - ("Replies" "^\\(CC:\\|To:\\).*localpart@Frank-Schmitt.bla.*") - ("EK" "^From:.*\\(localpart@privateprovider.bla\\|localpart@workplace.bla\\).*") - ("Spam" "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*") - ("Spam" "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*") - ("Spam" "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*") - ("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)") - ("Spam" "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)") - ("Spam" "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*") - ("Spam" "^Delivered-To: GMX delivery to spamtrap@gmx.bla$") - ("Spam" "^Received: from link2buy.com") - ("Spam" "^CC: .*azzrael@t-online.bla") - ("Spam" "^X-Mailer-Version: 1.50 BETA") - ("Uni" "^\\(CC:\\|To:\\).*localpart@uni-koblenz.bla.*") - ("Inbox" "^\\(CC:\\|To:\\).*\\(my\ name\\|address@one.bla\\|adress@two.bla\\)") - ("Spam" ""))) - - -5. Composing messages - -5.1. What are the basic commands I need to know for sending mail and - postings? - - To start composing a new mail hit m either in Group or Summary - buffer, for a posting, it's either a in Group buffer and filling - the Newsgroups header manually or a in the Summary buffer of the - group where the posting shall be send to. Replying by mail is r if - you don't want to cite the author, or import the cited text - manually and R to cite the text of the original message. For a - follow up to a newsgroup, it's f and F (analog to r and R. - - Enter new headers above the line saying "--text follows this - line--", enter the text below the line. When ready hit C-c C-c, to - send the message, if you want to finish it later hit C-c C-d to - save it in the drafts group, where you can start editing it again - by saying D e. - -5.2. How to enable automatic word-wrap when composing messages? - - Say - - (add-hook 'message-mode-hook - (lambda () - (setq fill-column 72) - (turn-on-auto-fill))) - - - in ~/.gnus. You can reformat a paragraph by hitting M-q (as usual) - -5.3. How to set stuff like From, Organization, Reply-To, signature...? - - There are other ways, but you should use posting styles for this. - (See below why). This example should make the syntax clear: - - (setq gnus-posting-styles - '((".*" - (name "Frank Schmitt") - (address "me@there.bla") - (organization "Hamme net, kren mer och nimmi") - (signature-file "~/.signature") - ("X-SampleHeader" "foobar") - (eval (setq some-variable "Foo bar"))))) - - - The ".*" means that this settings are the default ones (see below), - valid values for the first element of the following lists are - signature, signature-file, organization, address, name or body. 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; if the value is `nil', the header name will - be removed. You can also say (eval (foo bar)), then the function - foo will be evaluated with argument bar and the result will be - thrown away. - -5.4. Can I set things like From, Signature etc group based on the group - I post too? - - That's the strength of posting styles. Before, we used ".*" to set - the default for all groups. You can use a regexp like "^gmane" and - the following settings are only applied to postings you send to the - gmane hierarchy, use ".*binaries" instead and they will be applied - to postings send to groups containing the string binaries in their - name etc. - - You can instead of specifying a regexp specify a function which is - evaluated, only if it returns true, the corresponding settings take - effect. Two interesting candidates for this are message-news-p - which returns t if the current Group is a newsgroup and the - corresponding message-mail-p. - - Note that all forms that match are applied, that means in the - example below, when I post to gmane.mail.spam.spamassassin.general, - the settings under ".*" are applied and the settings under - message-news-p and those under "^gmane" and those under "^gmane\ - \.mail\\.spam\\.spamassassin\\.general$". Because of this put - general settings at the top and specific ones at the bottom. - - (setq gnus-posting-styles - '((".*" ;;default - (name "Frank Schmitt") - (organization "Hamme net, kren mer och nimmi") - (signature-file "~/.signature") ) - ((message-news-p) ;;Usenet news? - (address "mySpamTrap@Frank-Schmitt.bla") - ("Reply-To" "hereRealRepliesOnlyPlease@Frank-Schmitt.bla") ) - ((message-mail-p) ;;mail? - (address "usedForMails@Frank-Schmitt.bla") ) - ("^gmane" ;;this is mail, too in fact - (address "usedForMails@Frank-Schmitt.net") - ("Reply-To" nil) ) - ("^gmane.mail.spam.spamassassin.general$" - (eval (setq mail-envelope-from "Azzrael@rz-online.de")) - (address "Azzrael@rz-online.de")) )) - - -5.5. Is there a spell-checker? Perhaps even on-the-fly spell-checking? - - You can use ispell.el to spell-check stuff in Emacs. So the first - thing to do is to make sure that you've got either ispell [http:// - fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html] or aspell [http: - //aspell.sourceforge.net/] installed and in your Path. Then you - need ispell.el [http://www.kdstevens.com/~stevens/ispell-page.html] - and for on-the-fly spell-checking flyspell.el [http:// - www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/ - flyspell.html]. Ispell.el is shipped with Gnus Emacs and available - through the Emacs package system, flyspell.el is shipped with Emacs - and part of XEmacs text-modes package which is available through - the package system, so there should be no need to install them - manually. - - Ispell.el assumes you use ispell, if you choose aspell say - - (setq ispell-program-name "aspell") - - in your Emacs configuration file. - - If you want your outgoing messages to be spell-checked, say - - (add-hook 'message-send-hook 'ispell-message) - - In your ~/.gnus, if you prefer on-the-fly spell-checking say - - (add-hook 'message-mode-hook (lambda () (flyspell-mode 1))) - -5.6. Can I set the dictionary based on the group I'm posting to? - - Yes, say something like - - (add-hook 'gnus-select-group-hook - (lambda () - (cond - ((string-match - "^de\\." (gnus-group-real-name gnus-newsgroup-name)) - (ispell-change-dictionary "deutsch8")) - (t - (ispell-change-dictionary "english"))))) - - - in ~/.gnus. Change "^de\\." and "deutsch8" to something that suits - your needs. - -5.7. Is there some kind of address-book, so I needn't remember all those - email addresses? - - There's an very basic solution for this, mail aliases. You can - store your mail addresses in a ~/.mailrc file using a simple alias - syntax: - - alias al "Al " - - - Then typing your alias (followed by a space or punctuation - character) on a To: or Cc: line in the message buffer will cause - gnus to insert the full address for you. See the node "Mail - Aliases" in Message (not Gnus) manual for details. - - However, what you really want is the Insidious Big Brother Database - bbdb. Get it through the XEmacs package system or from bbdb's - homepage [http://bbdb.sourceforge.net/]. Now place the following in - ~/.gnus, to activate bbdb for Gnus: - - (require 'bbdb) - (bbdb-initialize 'gnus 'message) - - - Now you probably want some general bbdb configuration, place them - in ~/.emacs: - - (require 'bbdb) - ;;If you don't live in Northern America, you should disable the - ;;syntax check for telephone numbers by saying - (setq bbdb-north-american-phone-numbers-p nil) - ;;Tell bbdb about your email address: - (setq bbdb-user-mail-names - (regexp-opt '("Your.Email@here.bla" - "Your.other@mail.there.bla"))) - ;;cycling while completing email addresses - (setq bbdb-complete-name-allow-cycling t) - ;;No popup-buffers - (setq bbdb-use-pop-up nil) - - - Now you should be ready to go. Say M-x bbdb RET RET to open a bbdb - buffer showing all entries. Say c to create a new entry, b to - search your BBDB and C-o to add a new field to an entry. If you - want to add a sender to the BBDB you can also just hit `:' on the - posting in the summary buffer and you are done. When you now - compose a new mail, hit TAB to cycle through know recipients. - -5.8. Sometimes I see little images at the top of article buffer. What's - that and how can I send one with my postings, too? - - Those images are called X-Faces. They are 48*48 pixel b/w pictures, - encoded in a header line. If you want to include one in your posts, - you've got to convert some image to a X-Face. So fire up some image - manipulation program (say Gimp), open the image you want to - include, cut out the relevant part, reduce color depth to 1 bit, - resize to 48*48 and save as bitmap. Now you should get the compface - package from this site [ftp://ftp.cs.indiana.edu:/pub/faces/]. and - create the actual X-face by saying - - cat file.xbm | xbm2ikon |compface > file.face - cat ./file.face | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g' > ./file.face.quoted - - - if you can't use compface, there's an online X-face converter at - http://www.dairiki.org/xface/ [http://www.dairiki.org/xface/]. If - you use MS Windows, you could also use the WinFace program from - http://www.xs4all.nl/~walterln/winface/ [http://www.xs4all.nl/ - ~walterln/winface/]. Now you only have to tell Gnus to include the - X-face in your postings by saying - - (setq message-default-headers - (with-temp-buffer - (insert "X-Face: ") - (insert-file-contents "~/.xemacs/xface") - (buffer-string))) - - - in ~/.gnus. - -5.9. Sometimes I accidentally hit r instead of f in newsgroups. Can Gnus - warn me, when I'm replying by mail in newsgroups? - - Put this in ~/.gnus: - - (defadvice gnus-summary-reply (around reply-in-news activate) - (interactive) - (when (or (not (gnus-news-group-p gnus-newsgroup-name)) - (y-or-n-p "Really reply? ")) - ad-do-it)) - - - In Oort you can use - - (setq gnus-confirm-mail-reply-to-news t) - - - instead to achieve the same result. - -5.10. How to tell Gnus not to generate a sender header? - - Say - - (eval-after-load "message" - '(add-to-list 'message-syntax-checks '(sender . disabled))) - - - in ~/.gnus. (This is the default behaviour in Oort Gnus.) - -5.11. I want gnus to locally store copies of my send mail and news, how - to do it? - - You must set the variable gnus-message-archive-group to do this. - You can set it to a string giving the name of the group where the - copies shall go or like in the example below use a function which - is evaluated and which returns the group to use. - - (setq gnus-message-archive-group - '((if (message-news-p) - "nnml:Send-News" - "nnml:Send-Mail"))) - - -5.12. People tell me my Message-IDs are not correct, why aren't they and - how to fix it? - - The message-ID is an unique identifier for messages you send. To - make it unique, Gnus need to know which machine name to put after - the "@". If the name of the machine where Gnus is running isn't - suitable (it probably isn't at most private machines) you can tell - Gnus what to use by saying: - - (defun message-make-message-id() - (concat "<"(message-unique-id)"@yourmachine.yourdomain.tld>")) - - - in ~/.gnus. If you have no idea what to insert for - "yourmachine.yourdomain.tld", you've got several choices. You can - either ask your provider if he allows you to use something like - yourUserName.userfqdn.provider.net, or you can use - somethingUnique.yourdomain.tld if you own the domain - yourdomain.tld, or you can register at a service which gives - private users a FQDN for free, e.g. http://www.stura.tu-freiberg.de - /~dlx/addfqdn.html [http://www.stura.tu-freiberg.de/~dlx/ - addfqdn.html]. (Sorry but this website is in German, if you know of - an English one offering the same, drop me a note). - - Finally you can tell Gnus not to generate a Message-ID for News at - all (and letting the server do the job) by saying - - (setq message-required-news-headers - (remove' Message-ID message-required-news-headers)) - - - you can also tell Gnus not to generate Message-IDs for mail by - saying - - (setq message-required-mail-headers - (remove' Message-ID message-required-mail-headers)) - - - , however some mail servers don't generate proper Message-IDs, too, - so test if your Mail Server behaves correctly by sending yourself a - Mail and looking at the Message-ID. - -6. Old messages - -6.1. How to import my old mail into Gnus? - - The easiest way is to tell your old mail program to export the - messages in mbox format. Most Unix mailers are able to do this, if - you come from the MS Windows world, you may find tools at http:// - mbx2mbox.sourceforge.net/ [http://mbx2mbox.sourceforge.net/]. - - Now you've got to import this mbox file into Gnus. To do this, - create a nndoc group based on the mbox file by saying G f /path/ - file.mbox RET in Group buffer. You now have read-only access to - your mail. If you want to import the messages to your normal Gnus - mail groups hierarchy, enter the nndoc group you've just created by - saying C-u RET (thus making sure all messages are retrieved), mark - all messages by saying M P b and either copy them to the desired - group by saying B c name.of.group RET or send them through - nnmail-split-methods (respool them) by saying B r. - -6.2. How to archive interesting messages? - - If you stumble across an interesting message, say in gnu.emacs.gnus - and want to archive it there are several solutions. The first and - easiest is to save it to a file by saying O f. However, wouldn't it - be much more convenient to have more direct access to the archived - message from Gnus? If you say yes, put this snippet by Frank Haun - in ~/.gnus: - - (defun my-archive-article (&optional n) - "Copies one or more article(s) to a corresponding `nnml:' group, e.g. - `gnus.ding' goes to `nnml:1.gnus.ding'. And `nnml:List-gnus.ding' goes - to `nnml:1.List-gnus-ding'. - - Use process marks or mark a region in the summary buffer to archive - more then one article." - (interactive "P") - (let ((archive-name - (format - "nnml:1.%s" - (if (featurep 'xemacs) - (replace-in-string gnus-newsgroup-name "^.*:" "") - (replace-regexp-in-string "^.*:" "" gnus-newsgroup-name))))) - (gnus-summary-copy-article n archive-name))) - - - You can now say M-x my-archive-article in summary buffer to archive - the article under the cursor in a nnml group. (Change nnml to your - preferred back end) - - Of course you can also make sure the cache is enabled by saying - - (setq gnus-use-cache t) - - - then you only have to set either the tick or the dormant mark for - articles you want to keep, setting the read mark will remove them - from cache. - -6.3. How to search for a specific message? - - There are several ways for this, too. For a posting from a Usenet - group the easiest solution is probably to ask groups.google.com - [http://groups.google.com] (in Oort Gnus you can search - groups.google.com with G W), if you found the posting there, tell - Google to display the raw message, look for the message-id, and say - M-^ the@message.id RET in a summary buffer. - - Another idea which works for both mail and news groups is to enter - the group where the message you are searching is and use the - standard Emacs search C-s, it's smart enough to look at articles in - collapsed threads, too. If you want to search bodies, too try M-s - instead. Further on there are the gnus-summary-limit-to-foo - functions, which can help you, too. - - Of course you can also use grep to search through your local mail, - but this is both slow for big archives and inconvenient since you - are not displaying the found mail in Gnus. Here comes nnir into - action. Nnir is a front end to search engines like swish-e or - swish++ and others. You index your mail with one of those search - engines and with the help of nnir you can search trough the indexed - mail and generate a temporary group with all messages which met - your search criteria. If this sound cool to you get nnir.el from - ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/ [ftp:// - ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/] or ftp:// - ftp.is.informatik.uni-duisburg.de/pub/src/emacs/ [ftp:// - ftp.is.informatik.uni-duisburg.de/pub/src/emacs/]. Instructions on - how to use it are at the top of the file. - -6.4. How to get rid of old unwanted mail? - - You can of course just mark the mail you don't need anymore by - saying # with point over the mail and then say B DEL to get rid of - them forever. You could also instead of actually deleting them, - send them to a junk-group by saying B m nnml:trash-bin which you - clear from time to time, but both are not the intended way in Gnus. - - In Gnus, we let mail expire like news expires on a news server. - That means you tell Gnus the message is expirable (you tell Gnus "I - don't need this mail anymore") by saying E with point over the mail - in summary buffer. Now when you leave the group, Gnus looks at all - messages which you marked as expirable before and if they are old - enough (default is older than a week) they are deleted. - -6.5. I want that all read messages are expired (at least in some - groups). How to do it? - - If you want all read messages to be expired (e.g. in mailing lists - where there's an online archive), you've got two choices: - auto-expire and total-expire. Auto-expire means, that every article - which has no marks set and is selected for reading is marked as - expirable, Gnus hits E for you every time you read a message. - Total-expire follows a slightly different approach, here all - article where the read mark is set are expirable. - - To activate auto-expire, include auto-expire in the Group - parameters for the group. (Hit G c in summary buffer with point - over the group to change group parameters). For total-expire add - total-expire to the group-parameters. - - Which method you choose is merely a matter of taste: Auto-expire is - faster, but it doesn't play together with Adaptive Scoring, so if - you want to use this feature, you should use total-expire. - - If you want a message to be excluded from expiration in a group - where total or auto expire is active, set either tick (hit u) or - dormant mark (hit u), when you use auto-expire, you can also set - the read mark (hit d). - -6.6. I don't want expiration to delete my mails but to move them to - another group. - - Say something like this in ~/.gnus: - - (setq nnmail-expiry-target "nnml:expired") - - - (If you want to change the value of nnmail-expiry-target on a per - group basis see the question "How can I disable threading in some - (e.g. mail-) groups, or set other variables specific for some - groups?") - -7. Getting help - -7.1. How to find information and help inside Emacs? - - The first stop should be the Gnus manual (Say C-h i d m Gnus RET to - start the Gnus manual, then walk through the menus or do a - full-text search with s). Then there are the general Emacs help - commands starting with C-h, type C-h ? ? to get a list of all - available help commands and their meaning. Finally M-x - apropos-command lets you search through all available functions and - M-x apropos searches the bound variables. - -7.2. I can't find anything in the Gnus manual about X (e.g. attachments, - PGP, MIME...), is it not documented? - - There's not only the Gnus manual but also the manuals for message, - emacs-mime, sieve and (only in Oort Gnus) pgg. Those packages are - distributed with Gnus and used by Gnus but aren't really part of - core Gnus, so they are documented in different info files, you - should have a look in those manuals, too. - -7.3. Which websites should I know? - - The two most important ones are the official Gnus website [http:// - www.gnus.org]. and it's sister site my.gnus.org (MGO) [http:// - my.gnus.org], hosting an archive of lisp snippets, howtos, a (not - really finished) tutorial and this FAQ. - - Tell me about other sites which are interesting. - -7.4. Which mailing lists and newsgroups are there? - - There's the newsgroup gnu.emacs.gnus (pull it from e.g. - news.gnus.org) which deals with general questions and the ding - mailing list (ding@gnus.org) dealing with development of Gnus. You - can read the ding list via NNTP, too under the name gnus.ding from - news.gnus.org. - - If you want to stay in the big8, news.software.newssreaders is also - read by some Gnus users (but chances for qualified help are much - better in the above groups) and if you speak German, there's - de.comm.software.gnus. - -7.5. Where to report bugs? - - Say M-x gnus-bug, this will start a message to the gnus bug mailing - list [mailto:bugs@gnus.org] including information about your - environment which make it easier to help you. - -7.6. I need real-time help, where to find it? - - Point your IRC client to irc.my.gnus.org channel #mygnus. Don't be - afraid if people there speak German, they are willing and capable - of switching to English when people from outside Germany enter. - -8. Tuning Gnus - -8.1. Starting Gnus is really slow, how to speed it up? - - The reason for this could be the way Gnus reads it's active file, - see the node "The Active File" in the Gnus manual for things you - might try to speed the process up. An other idea would be to byte - compile your ~/.gnus (say M-x byte-compile-file RET ~/.gnus RET to - do it). Finally, if you have require statements in your .gnus, you - could replace them with eval-after-load, which loads the stuff not - at startup time, but when it's needed. Say you've got this in your - ~/.gnus: - - (require 'message) - (add-to-list 'message-syntax-checks '(sender . disabled)) - - - then as soon as you start Gnus, message.el is loaded. If you - replace it with - - (eval-after-load "message" - '(add-to-list 'message-syntax-checks '(sender . disabled))) - - - it's loaded when it's needed. - -8.2. How to speed up the process of entering a group? - - A speed killer is setting the variable gnus-fetch-old-headers to - anything different from nil, so don't do this if speed is an issue. - To speed up building of summary say - - (gnus-compile) - - - at the bottom of your ~/.gnus, this will make gnus byte-compile - things like gnus-summary-line-format. then you could increase the - value of gc-cons-threshold by saying something like - - (setq gc-cons-threshold 3500000) - - - in ~/.emacs. If you don't care about width of CJK characters or use - Oort Gnus together with a recent GNU Emacs, you should say - - (setq gnus-use-correct-string-widths nil) - - - in ~/.gnus (thanks to Jesper harder for the last two suggestions). - Finally if this also doesn't help, you might want to jump in the - cold water and try Oort Gnus, there some work has been done to - speed up summary generation. Read and remember the warnings about - Oort at the top of this FAQ. - -8.3. Sending mail becomes slower and slower, what's up? - - The reason could be that you told Gnus to archive the messages you - wrote by setting gnus-message-archive-group. Try to use a nnml - group instead of an archive group, this should bring you back to - normal speed. + 8.3. Which websites should I know? + 8.4. Which mailing lists and newsgroups are there? + 8.5. Where to report bugs? + 8.6. I need real-time help, where to find it? + +9. Tuning Gnus + + 9.1. Starting Gnus is really slow, how to speed it up? + 9.2. How to speed up the process of entering a group? + 9.3. Sending mail becomes slower and slower, what's up? + +1. Installation FAQ + +1.1. What is the latest version of Gnus? + + Jingle please: Gnus 5.10.0 is released, get it while it's hot! As + well as the step in version number is rather small, Gnus 5.10 has + tons of new features which you shouldn't miss, however if you are + cautious, you might prefer to stay with 5.8.8 respectively 5.9 + (they are basically the same) until some bugfix releases are out. + +1.2. What's new in 5.10.0? + + First of all, you should have a look into the file GNUS-NEWS in the + toplevel directory of the Gnus tarball, there the most important + changes are listed. Here's a short list of the changes I find + especially important/interesting: + + * Major rewrite of the Gnus agent, Gnus agent is now active by + default. + + Many new article washing functions for dealing with ugly + formatted articles. + + Anti Spam features. + + message-utils now included in Gnus. + + New format specifiers for summary lines, e.g. %B for a complex + trn-style thread tree. + +1.3. Where and how to get Gnus? + + The latest released version of Gnus isn't included in Emacs 21 and + until now it also isn't available through the package system of + XEmacs 21.4, therefor you should get the Gnus tarball from http:// + www.gnus.org/dist/gnus.tar.gz [http://www.gnus.org/dist/ + gnus.tar.gz] or via anonymous FTP from ftp://ftp.gnus.org/pub/gnus/ + gnus.tar.gz [ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz]. + +1.4. What to do with the tarball now? + + Untar it via tar xvzf gnus.tar.gz and do the common ./configure; + make; make install circle. (under MS-Windows either get the Cygwin + environment from http://www.cygwin.com [http://www.cygwin.com] + which allows you to do what's described above or unpack the tarball + with some packer (e.g. Winace from http://www.winace.com [http:// + www.winace.com]) and use the batch-file make.bat included in the + tarball to install Gnus. If you don't want to (or aren't allowed + to) install Gnus system-wide, you can install it in your home + directory and add the following lines to your ~/.xemacs/init.el or + ~/.emacs: + + (add-to-list 'load-path "/path/to/gnus/lisp") + (if (featurep 'xemacs) + (add-to-list 'Info-directory-list "/path/to/gnus/texi/") + (add-to-list 'Info-default-directory-list "/path/to/gnus/texi/")) + + + Make sure that you don't have any gnus related stuff before this + line, on MS Windows use something like "C:/path/to/lisp" (yes, "/ + "). + +1.5. Which version of Emacs do I need? + + Gnus 5.10.0 requires an Emacs version that is greater than or equal + to Emacs 20.3 or XEmacs 20.1. + +1.6. How do I run Gnus on both Emacs and XEmacs? + + You can't use the same copy of Gnus in both as the Lisp files are + byte-compiled to a format which is different depending on which + Emacs did the compilation. Get one copy of Gnus for Emacs and one + for XEmacs. + +2. Startup / Group buffer + +2.1. Every time I start Gnus I get a message "Gnus auto-save file + exists. Do you want to read it?", what does this mean and how to + prevent it? + + This message means that the last time you used Gnus, it wasn't + properly exited and therefor couldn't write its informations to + disk (e.g. which messages you read), you are now asked if you want + to restore those informations from the auto-save file. + + To prevent this message make sure you exit Gnus via q in group + buffer instead of just killing Emacs. + +2.2. Gnus doesn't remember which groups I'm subscribed to, what's this? + + You get the message described in the q/a pair above while starting + Gnus, right? It's an other symptom for the same problem, so read + the answer above. + +2.3. How to change the format of the lines in Group buffer? + + You've got to tweak the value of the variable + gnus-group-line-format. See the manual node "Group Line + Specification" for information on how to do this. An example for + this (guess from whose .gnus :-)): + + (setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n") + + +2.4. My group buffer becomes a bit crowded, is there a way to sort my + groups into categories so I can easier browse through them? + + Gnus offers the topic mode, it allows you to sort your groups in, + well, topics, e.g. all groups dealing with Linux under the topic + linux, all dealing with music under the topic music and all dealing + with scottish music under the topic scottish which is a subtopic of + music. + + To enter topic mode, just hit t while in Group buffer. Now you can + use T n to create a topic at point and T m to move a group to a + specific topic. For more commands see the manual or the menu. You + might want to include the %P specifier at the beginning of your + gnus-group-line-format variable to have the groups nicely indented. + +2.5. How to manually sort the groups in Group buffer? How to sort the + groups in a topic? + + Move point over the group you want to move and hit C-k, now move + point to the place where you want the group to be and hit C-y. + +3. Getting Messages + +3.1. I just installed Gnus, started it via M-x gnus but it only says + "nntp (news) open error", what to do? + + You've got to tell Gnus where to fetch the news from. Read the + documentation for information on how to do this. As a first start, + put those lines in ~/.gnus: + + (setq gnus-select-method '(nntp "news.yourprovider.net")) + (setq user-mail-address "you@yourprovider.net") + (setq user-full-name "Your Name") + + +3.2. I'm working under Windows and have no idea what ~/.gnus means. + + The ~/ means the home directory where Gnus and Emacs look for the + configuration files. However, you don't really need to know what + this means, it suffices that Emacs knows what it means :-) You can + type C-x C-f ~/.gnus RET (yes, with the forward slash, even on + Windows), and Emacs will open the right file for you. (It will most + likely be new, and thus empty.) However, I'd discourage you from + doing so, since the directory Emacs chooses will most certainly not + be what you want, so let's do it the correct way. The first thing + you've got to do is to create a suitable directory (no blanks in + directory name please) e.g. c:\myhome. Then you must set the + environment variable HOME to this directory. To do this under Win9x + or Me include the line + + SET HOME=C:\myhome + + + in your autoexec.bat and reboot. Under NT, 2000 and XP, hit + Winkey+Pause/Break to enter system options (if it doesn't work, go + to Control Panel -> System). There you'll find the possibility to + set environment variables, create a new one with name HOME and + value C:\myhome, a reboot is not necessary. + + Now to create ~/.gnus, say C-x C-f ~/.gnus RET C-x C-s. in Emacs. + +3.3. My news server requires authentication, how to store user name and + password on disk? + + Create a file ~/.authinfo which includes for each server a line + like this + + machine news.yourprovider.net login YourUserName password YourPassword + + . Make sure that the file isn't readable to others if you work on a + OS which is capable of doing so. (Under Unix say + + chmod 600 ~/.authinfo + + in a shell.) + +3.4. Gnus seems to start up OK, but I can't find out how to subscribe to + a group. + + If you know the name of the group say U name.of.group RET in group + buffer (use the tab-completion Luke). Otherwise hit ^ in group + buffer, this brings you to the server buffer. Now place point (the + cursor) over the server which carries the group you want, hit RET, + move point to the group you want to subscribe to and say u to + subscribe to it. + +3.5. Gnus doesn't show all groups / Gnus says I'm not allowed to post on + this server as well as I am, what's that? + + Some providers allow restricted anonymous access and full access + only after authorization. To make Gnus send authinfo to those + servers append + + force yes + + to the line for those servers in ~/.authinfo. + +3.6. I want Gnus to fetch news from several servers, is this possible? + + Of course. You can specify more sources for articles in the + variable gnus-secondary-select-methods. Add something like this in + ~/.gnus: + + (add-to-list 'gnus-secondary-select-methods '(nntp "news.yourSecondProvider.net")) + (add-to-list 'gnus-secondary-select-methods '(nntp "news.yourThirdProvider.net")) + + +3.7. And how about local spool files? + + No problem, this is just one more select method called nnspool, so + you want this: + + (add-to-list 'gnus-secondary-select-methods '(nnspool "")) + + + Or this if you don't want an NNTP Server as primary news source: + + (setq gnus-select-method '(nnspool "")) + + + Gnus will look for the spool file in /usr/spool/news, if you want + something different, change the line above to something like this: + + (add-to-list 'gnus-secondary-select-methods + '(nnspool "" (nnspool-directory "/usr/local/myspoolddir"))) + + + This sets the spool directory for this server only. You might have + to specify more stuff like the program used to post articles, see + the Gnus manual on how to do this. + +3.8. OK, reading news works now, but I want to be able to read my mail + with Gnus, too. How to do it? + + That's a bit harder since there are many possible sources for mail, + many possible ways for storing mail and many different ways for + sending mail. The most common cases are these: 1: You want to read + your mail from a pop3 server and send them directly to a SMTP + Server 2: Some program like fetchmail retrieves your mail and + stores it on disk from where Gnus shall read it. Outgoing mail is + sent by Sendmail, Postfix or some other MTA. Sometimes, you even + need a combination of the above cases. + + However, the first thing to do is to tell Gnus in which way it + should store the mail, in Gnus terminology which back end to use. + Gnus supports many different back ends, the most commonly used one + is nnml. It stores every mail in one file and is therefor quite + fast. However you might prefer a one file per group approach if + your file system has problems with many small files, the nnfolder + back end is then probably the choice for you. To use nnml add the + following to ~/.gnus: + + (add-to-list 'gnus-secondary-select-methods '(nnml "")) + + + As you might have guessed, if you want nnfolder, it's + + (add-to-list 'gnus-secondary-select-methods '(nnfolder "")) + + + Now we need to tell Gnus, where to get it's mail from. If it's a + POP3 server, then you need something like this: + + (eval-after-load "mail-source" + '(add-to-list 'mail-sources '(pop :server "pop.YourProvider.net" + :user "yourUserName" + :password "yourPassword")) + + + Make sure ~/.gnus isn't readable to others if you store your + password there. If you want to read your mail from a traditional + spool file on your local machine, it's + + (eval-after-load "mail-source" + '(add-to-list 'mail-sources '(file :path "/path/to/spool/file")) + + + If it's a Maildir, with one file per message as used by postfix, + Qmail and (optionally) fetchmail it's + + (eval-after-load "mail-source" + '(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/" + :subdirs ("cur" "new"))) + + + And finally if you want to read your mail from several files in one + directory, for example because procmail already split your mail, + it's + + (eval-after-load "mail-source" + '(add-to-list 'mail-sources '(directory :path "/path/to/procmail-dir/" + :suffix ".prcml")) + + + Where :suffix ".prcml" tells Gnus only to use files with the suffix + .prcml. + + OK, now you only need to tell Gnus how to send mail. If you want to + send mail via sendmail (or whichever MTA is playing the role of + sendmail on your system), you don't need to do anything. However, + if you want to send your mail to an SMTP Server you need the + following in your ~/.gnus + + (setq send-mail-function 'smtpmail-send-it) + (setq message-send-mail-function 'smtpmail-send-it) + (setq smtpmail-default-smtp-server "smtp.yourProvider.net") + + +3.9. And what about IMAP? + + There are two ways of using IMAP with Gnus. The first one is to use + IMAP like POP3, that means Gnus fetches the mail from the IMAP + server and stores it on disk. If you want to do this (you don't + really want to do this) add the following to ~/.gnus + + (add-to-list 'mail-sources '(imap :server "mail.mycorp.com" + :user "username" + :pass "password" + :stream network + :authentication login + :mailbox "INBOX" + :fetchflag "\\Seen")) + + + You might have to tweak the values for stream and/or + authentification, see the Gnus manual node "Mail Source Specifiers" + for possible values. + + If you want to use IMAP the way it's intended, you've got to follow + a different approach. You've got to add the nnimap back end to your + select method and give the information about the server there. + + (add-to-list 'gnus-secondary-select-methods + '(nnimap "Give the baby a name" + (nnimap-address "imap.yourProvider.net") + (nnimap-port 143) + (nnimap-list-pattern "archive.*"))) + + + Again, you might have to specify how to authenticate to the server + if Gnus can't guess the correct way, see the Manual Node "IMAP" for + detailed information. + +3.10. At the office we use one of those MS Exchange servers, can I use + Gnus to read my mail from it? + + Offer your administrator a pair of new running shoes for activating + IMAP on the server and follow the instructions above. + +3.11. Can I tell Gnus not to delete the mails on the server it retrieves + via POP3? + + First of all, that's not the way POP3 is intended to work, if you + have the possibility, you should use the IMAP Protocol if you want + your messages to stay on the server. Nevertheless there might be + situations where you need the feature, but sadly Gnus itself has no + predefined functionality to do so. + + However this is Gnus county so there are possibilities to achieve + what you want. The easiest way is to get an external program which + retrieves copies of the mail and stores them on disk, so Gnus can + read it from there. On Unix systems you could use e.g. fetchmail + for this, on MS Windows you can use Hamster, an excellent local + news and mail server. + + The other solution would be, to replace the method Gnus uses to get + mail from POP3 servers by one which is capable of leaving the mail + on the server. If you use XEmacs, get the package mail-lib, it + includes an enhanced pop3.el, look in the file, there's + documentation on how to tell Gnus to use it and not to delete the + retrieved mail. For GNU Emacs look for the file epop3.el which can + do the same (If you know the home of this file, please send me an + e-mail). You can also tell Gnus to use an external program (e.g. + fetchmail) to fetch your mail, see the info node "Mail Source + Specifiers" in the Gnus manual on how to do it. + +4. Reading messages + +4.1. When I enter a group, all read messages are gone. How to view them + again? + + If you enter the group by saying RET in summary buffer with point + over the group, only unread and ticked messages are loaded. Say C-u + RET instead to load all available messages. If you want only the + e.g. 300 newest say C-u 300 RET + + Loading only unread messages can be annoying if you have threaded + view enabled, say + + (setq gnus-fetch-old-headers 'some) + + + in ~/.gnus to load enough old articles to prevent teared threads, + replace 'some with t to load all articles (Warning: Both settings + enlarge the amount of data which is fetched when you enter a group + and slow down the process of entering a group). + + If you already use Gnus 5.10.0, you can say /o N In summary buffer + to load the last N messages, this feature is not available in 5.8.8 + + If you don't want all old messages, but the parent of the message + you're just reading, you can say ^, if you want to retrieve the + whole thread the message you're just reading belongs to, A T is + your friend. + +4.2. How to tell Gnus to show an important message every time I enter a + group, even when it's read? + + You can tick important messages. To do this hit u while point is in + summary buffer over the message. When you want to remove the mark, + hit either d (this deletes the tick mark and set's unread mark) or + M c (which deletes all marks for the message). + +4.3. How to view the headers of a message? + + Say t to show all headers, one more t hides them again. + +4.4. How to view the raw unformatted message? + + Say C-u g to show the raw message g returns to normal view. + +4.5. How can I change the headers Gnus displays by default at the top of + the article buffer? + + The variable gnus-visible-headers controls which headers are shown, + its value is a regular expression, header lines which match it are + shown. So if you want author, subject, date, and if the header + exists, Followup-To and MUA / NUA say this in ~/.gnus: + + (setq gnus-visible-headers + "^\\(From:\\|Subject:\\|Date:\\|Followup-To:\\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)") + + +4.6. I'd like Gnus NOT to render HTML-mails but show me the text part if + it's available. How to do it? + + Say + + (eval-after-load "mm-decode" + '(progn + (add-to-list 'mm-discouraged-alternatives "text/html") + (add-to-list 'mm-discouraged-alternatives "text/richtext"))) + + + in ~/.gnus. If you don't want HTML rendered, even if there's no + text alternative add + + (setq mm-automatic-display (remove "text/html" mm-automatic-display)) + + + too. + +4.7. Can I use some other browser than w3 to render my HTML-mails? + + Only if you use Gnus 5.10.0 or younger. In this case you've got the + choice between w3, w3m, links, lynx and html2text, which one is + used can be specified in the variable mm-text-html-renderer, so if + you want links to render your mail say + + (setq mm-text-html-renderer 'links) + + +4.8. Is there anything I can do to make poorly formatted mails more + readable? + + Gnus offers you several functions to "wash" incoming mail, you can + find them if you browse through the menu, item Article->Washing. + The most interesting ones are probably "Wrap long lines" ( W w ), + "Decode ROT13" ( W r ) and "Outlook Deuglify" which repairs the + dumb quoting used by many users of Microsoft products ( W Y f gives + you full deuglify. See W Y C-h or have a look at the menus for + other deuglifications). Outlook deuglify is only available since + Gnus 5.10.0. + +4.9. Is there a way to automatically ignore posts by specific authors or + with specific words in the subject? And can I highlight more + interesting ones in some way? + + You want Scoring. Scoring means, that you define rules which assign + each message an integer value. Depending on the value the message + is highlighted in summary buffer (if it's high, say +2000) or + automatically marked read (if the value is low, say -800) or some + other action happens. + + There are basically three ways of setting up rules which assign the + scoring-value to messages. The first and easiest way is to set up + rules based on the article you are just reading. Say you're reading + a message by a guy who always writes nonsense and you want to + ignore his messages in the future. Hit L, to set up a rule which + lowers the score. Now Gnus asks you which the criteria for lowering + the Score shall be. Hit ? twice to see all possibilities, we want a + which means the author (the from header). Now Gnus wants to know + which kind of matching we want. Hit either e for an exact match or + s for substring-match and delete afterwards everything but the name + to score down all authors with the given name no matter which email + address is used. Now you need to tell Gnus when to apply the rule + and how long it should last, hit e.g. p to apply the rule now and + let it last forever. If you want to raise the score instead of + lowering it say I instead of L. + + You can also set up rules by hand. To do this say V f in summary + buffer. Then you are asked for the name of the score file, it's + name.of.group.SCORE for rules valid in only one group or all.Score + for rules valid in all groups. See the Gnus manual for the exact + syntax, basically it's one big list whose elements are lists again. + the first element of those lists is the header to score on, then + one more list with what to match, which score to assign, when to + expire the rule and how to do the matching. If you find me very + interesting, you could e.g. add the following to your all.Score: + + (("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s)) + ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s))) + + + This would add 999 to the score of messages written by me and 500 + to the score of messages which are a (possibly indirect) answer to + a message written by me. Of course nobody with a sane mind would do + this :-) + + The third alternative is adaptive scoring. This means Gnus watches + you and tries to find out what you find interesting and what + annoying and sets up rules which reflect this. Adaptive scoring can + be a huge help when reading high traffic groups. If you want to + activate adaptive scoring say + + (setq gnus-use-adaptive-scoring t) + + + in ~/.gnus. + +4.10. How can I disable threading in some (e.g. mail-) groups, or set + other variables specific for some groups? + + While in group buffer move point over the group and hit G c, this + opens a buffer where you can set options for the group. At the + bottom of the buffer you'll find an item that allows you to set + variables locally for the group. To disable threading enter + gnus-show-threads as name of variable and nil as value. Hit button + done at the top of the buffer when you're ready. + +4.11. Can I highlight messages written by me and follow-ups to those? + + Stop those "Can I ..." questions, the answer is always yes in Gnus + Country :-). It's a three step process: First we make faces + (specifications of how summary-line shall look like) for those + postings, then we'll give them some special score and finally we'll + tell Gnus to use the new faces. You can find detailed instructions + on how to do it on my.gnus.org [http://my.gnus.org/Members/dzimmerm + /HowTo%2C2002-07-25%2C1027619165012198456/view] + +4.12. The number of total messages in a group which Gnus displays in + group buffer is by far to high, especially in mail groups. Is this + a bug? + + No, that's a matter of design of Gnus, fixing this would mean + reimplementation of major parts of Gnus' back ends. Gnus thinks + "highest-article-number - lowest-article-number = + total-number-of-articles". This works OK for Usenet groups, but if + you delete and move many messages in mail groups, this fails. To + cure the symptom, enter the group via C-u RET (this makes Gnus get + all messages), then hit M P b to mark all messages and then say B m + name.of.group to move all messages to the group they have been in + before, they get new message numbers in this process and the count + is right again (until you delete and move your mail to other groups + again). + +4.13. I don't like the layout of summary and article buffer, how to + change it? Perhaps even a three pane display? + + You can control the windows configuration by calling the function + gnus-add-configuration. The syntax is a bit complicated but + explained very well in the manual node "Window Layout". Some + popular examples: + + Instead 25% summary 75% article buffer 35% summary and 65% article + (the 1.0 for article means "take the remaining space"): + + (gnus-add-configuration '(article (vertical 1.0 (summary .35 point) (article 1.0)))) + + + A three pane layout, Group buffer on the left, summary buffer + top-right, article buffer bottom-right: + + (gnus-add-configuration + '(article + (horizontal 1.0 + (vertical 25 + (group 1.0)) + (vertical 1.0 + (summary 0.25 point) + (article 1.0))))) + (gnus-add-configuration + '(summary + (horizontal 1.0 + (vertical 25 + (group 1.0)) + (vertical 1.0 + (summary 1.0 point))))) + + +4.14. I don't like the way the Summary buffer looks, how to tweak it? + + You've got to play around with the variable + gnus-summary-line-format. It's value is a string of symbols which + stand for things like author, date, subject etc. A list of the + available specifiers can be found in the manual node "Summary + Buffer Lines" and the often forgotten node "Formatting Variables" + and it's sub-nodes. There you'll find useful things like + positioning the cursor and tabulators which allow you a summary in + table form, but sadly hard tabulators are broken in 5.8.8. + + Since 5.10.0, Gnus offers you some very nice new specifiers, e.g. + %B which draws a thread-tree and %&user-date which gives you a date + where the details are dependent of the articles age. Here's an + example which uses both: + + (setq gnus-summary-line-format ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n") + + + resulting in: + + :O Re: [Richard Stallman] rfc2047.el | 13 |Lars Magne Ingebrigt |Sat 23:06 + :O Re: Revival of the ding-patches list | 13 |Lars Magne Ingebrigt |Sat 23:12 + :R > Re: Find correct list of articles for a gro| 25 |Lars Magne Ingebrigt |Sat 23:16 + :O \-> ... | 21 |Kai Grossjohann | 0:01 + :R > Re: Cry for help: deuglify.el - moving stuf| 28 |Lars Magne Ingebrigt |Sat 23:34 + :O \-> ... | 115 |Raymond Scholz | 1:24 + :O \-> ... | 19 |Lars Magne Ingebrigt |15:33 + :O Slow mailing list | 13 |Lars Magne Ingebrigt |Sat 23:49 + :O Re: `@' mark not documented | 13 |Lars Magne Ingebrigt |Sat 23:50 + :R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57 + :O \-> ... | 18 |Kai Grossjohann | 0:35 + :O \-> ... | 13 |Lars Magne Ingebrigt | 0:56 + + +4.15. How to split incoming mails in several groups? + + Gnus offers two possibilities for splitting mail, the easy + nnmail-split-methods and the more powerful Fancy Mail Splitting. + I'll only talk about the first one, refer to the manual, node + "Fancy Mail Splitting" for the latter. + + The value of nnmail-split-methods is a list, each element is a list + which stands for a splitting rule. Each rule has the form "group + where matching articles should go to", "regular expression which + has to be matched", the first rule which matches wins. The last + rule must always be a general rule (regular expression .*) which + denotes where articles should go which don't match any other rule. + If the folder doesn't exist yet, it will be created as soon as an + article lands there. By default the mail will be send to all groups + whose rules match. If you don't want that (you probably don't + want), say + + (setq nnmail-crosspost nil) + + + in ~/.gnus. + + An example might be better than thousand words, so here's my + nnmail-split-methods. Note that I send duplicates in a special + group and that the default group is spam, since I filter all mails + out which are from some list I'm subscribed to or which are + addressed directly to me before. Those rules kill about 80% of the + Spam which reaches me (Email addresses are changed to prevent + spammers from using them): + + (setq nnmail-split-methods + '(("duplicates" "^Gnus-Warning:.*duplicate") + ("XEmacs-NT" "^\\(To:\\|CC:\\).*localpart@xemacs.bla.*") + ("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@socha.bla.*") + ("tcsh" "^\\(To:\\|CC:\\).*localpart@mx.gw.bla.*") + ("BAfH" "^\\(To:\\|CC:\\).*localpart@.*uni-muenchen.bla.*") + ("Hamster-src" "^\\(CC:\\|To:\\).*hamster-sourcen@yahoogroups.\\(de\\|com\\).*") + ("Tagesschau" "^From: tagesschau $") + ("Replies" "^\\(CC:\\|To:\\).*localpart@Frank-Schmitt.bla.*") + ("EK" "^From:.*\\(localpart@privateprovider.bla\\|localpart@workplace.bla\\).*") + ("Spam" "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*") + ("Spam" "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*") + ("Spam" "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*") + ("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)") + ("Spam" "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)") + ("Spam" "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*") + ("Spam" "^Delivered-To: GMX delivery to spamtrap@gmx.bla$") + ("Spam" "^Received: from link2buy.com") + ("Spam" "^CC: .*azzrael@t-online.bla") + ("Spam" "^X-Mailer-Version: 1.50 BETA") + ("Uni" "^\\(CC:\\|To:\\).*localpart@uni-koblenz.bla.*") + ("Inbox" "^\\(CC:\\|To:\\).*\\(my\ name\\|address@one.bla\\|adress@two.bla\\)") + ("Spam" ""))) + + +5. Composing messages + +5.1. What are the basic commands I need to know for sending mail and + postings? + + To start composing a new mail hit m either in Group or Summary + buffer, for a posting, it's either a in Group buffer and filling + the Newsgroups header manually or a in the Summary buffer of the + group where the posting shall be send to. Replying by mail is r if + you don't want to cite the author, or import the cited text + manually and R to cite the text of the original message. For a + follow up to a newsgroup, it's f and F (analog to r and R. + + Enter new headers above the line saying "--text follows this + line--", enter the text below the line. When ready hit C-c C-c, to + send the message, if you want to finish it later hit C-c C-d to + save it in the drafts group, where you can start editing it again + by saying D e. + +5.2. How to enable automatic word-wrap when composing messages? + + Say + + (add-hook 'message-mode-hook + (lambda () + (setq fill-column 72) + (turn-on-auto-fill))) + + + in ~/.gnus. You can reformat a paragraph by hitting M-q (as usual) + +5.3. How to set stuff like From, Organization, Reply-To, signature...? + + There are other ways, but you should use posting styles for this. + (See below why). This example should make the syntax clear: + + (setq gnus-posting-styles + '((".*" + (name "Frank Schmitt") + (address "me@there.bla") + (organization "Hamme net, kren mer och nimmi") + (signature-file "~/.signature") + ("X-SampleHeader" "foobar") + (eval (setq some-variable "Foo bar"))))) + + + The ".*" means that this settings are the default ones (see below), + valid values for the first element of the following lists are + signature, signature-file, organization, address, name or body. 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; if the value is `nil', the header name will + be removed. You can also say (eval (foo bar)), then the function + foo will be evaluated with argument bar and the result will be + thrown away. + +5.4. Can I set things like From, Signature etc group based on the group + I post too? + + That's the strength of posting styles. Before, we used ".*" to set + the default for all groups. You can use a regexp like "^gmane" and + the following settings are only applied to postings you send to the + gmane hierarchy, use ".*binaries" instead and they will be applied + to postings send to groups containing the string binaries in their + name etc. + + You can instead of specifying a regexp specify a function which is + evaluated, only if it returns true, the corresponding settings take + effect. Two interesting candidates for this are message-news-p + which returns t if the current Group is a newsgroup and the + corresponding message-mail-p. + + Note that all forms that match are applied, that means in the + example below, when I post to gmane.mail.spam.spamassassin.general, + the settings under ".*" are applied and the settings under + message-news-p and those under "^gmane" and those under "^gmane\ + \.mail\\.spam\\.spamassassin\\.general$". Because of this put + general settings at the top and specific ones at the bottom. + + (setq gnus-posting-styles + '((".*" ;;default + (name "Frank Schmitt") + (organization "Hamme net, kren mer och nimmi") + (signature-file "~/.signature") ) + ((message-news-p) ;;Usenet news? + (address "mySpamTrap@Frank-Schmitt.bla") + ("Reply-To" "hereRealRepliesOnlyPlease@Frank-Schmitt.bla") ) + ((message-mail-p) ;;mail? + (address "usedForMails@Frank-Schmitt.bla") ) + ("^gmane" ;;this is mail, too in fact + (address "usedForMails@Frank-Schmitt.net") + ("Reply-To" nil) ) + ("^gmane.mail.spam.spamassassin.general$" + (eval (setq mail-envelope-from "Azzrael@rz-online.de")) + (address "Azzrael@rz-online.de")) )) + + +5.5. Is there a spell-checker? Perhaps even on-the-fly spell-checking? + + You can use ispell.el to spell-check stuff in Emacs. So the first + thing to do is to make sure that you've got either ispell [http:// + fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html] or aspell [http: + //aspell.sourceforge.net/] installed and in your Path. Then you + need ispell.el [http://www.kdstevens.com/~stevens/ispell-page.html] + and for on-the-fly spell-checking flyspell.el [http:// + www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/ + flyspell.html]. Ispell.el is shipped with Gnus Emacs and available + through the Emacs package system, flyspell.el is shipped with Emacs + and part of XEmacs text-modes package which is available through + the package system, so there should be no need to install them + manually. + + Ispell.el assumes you use ispell, if you choose aspell say + + (setq ispell-program-name "aspell") + + in your Emacs configuration file. + + If you want your outgoing messages to be spell-checked, say + + (add-hook 'message-send-hook 'ispell-message) + + In your ~/.gnus, if you prefer on-the-fly spell-checking say + + (add-hook 'message-mode-hook (lambda () (flyspell-mode 1))) + +5.6. Can I set the dictionary based on the group I'm posting to? + + Yes, say something like + + (add-hook 'gnus-select-group-hook + (lambda () + (cond + ((string-match + "^de\\." (gnus-group-real-name gnus-newsgroup-name)) + (ispell-change-dictionary "deutsch8")) + (t + (ispell-change-dictionary "english"))))) + + + in ~/.gnus. Change "^de\\." and "deutsch8" to something that suits + your needs. + +5.7. Is there some kind of address-book, so I needn't remember all those + email addresses? + + There's an very basic solution for this, mail aliases. You can + store your mail addresses in a ~/.mailrc file using a simple alias + syntax: + + alias al "Al " + + + Then typing your alias (followed by a space or punctuation + character) on a To: or Cc: line in the message buffer will cause + gnus to insert the full address for you. See the node "Mail + Aliases" in Message (not Gnus) manual for details. + + However, what you really want is the Insidious Big Brother Database + bbdb. Get it through the XEmacs package system or from bbdb's + homepage [http://bbdb.sourceforge.net/]. Now place the following in + ~/.gnus, to activate bbdb for Gnus: + + (require 'bbdb) + (bbdb-initialize 'gnus 'message) + + + Now you probably want some general bbdb configuration, place them + in ~/.emacs: + + (require 'bbdb) + ;;If you don't live in Northern America, you should disable the + ;;syntax check for telephone numbers by saying + (setq bbdb-north-american-phone-numbers-p nil) + ;;Tell bbdb about your email address: + (setq bbdb-user-mail-names + (regexp-opt '("Your.Email@here.bla" + "Your.other@mail.there.bla"))) + ;;cycling while completing email addresses + (setq bbdb-complete-name-allow-cycling t) + ;;No popup-buffers + (setq bbdb-use-pop-up nil) + + + Now you should be ready to go. Say M-x bbdb RET RET to open a bbdb + buffer showing all entries. Say c to create a new entry, b to + search your BBDB and C-o to add a new field to an entry. If you + want to add a sender to the BBDB you can also just hit `:' on the + posting in the summary buffer and you are done. When you now + compose a new mail, hit TAB to cycle through know recipients. + +5.8. Sometimes I see little images at the top of article buffer. What's + that and how can I send one with my postings, too? + + Those images are called X-Faces. They are 48*48 pixel b/w pictures, + encoded in a header line. If you want to include one in your posts, + you've got to convert some image to a X-Face. So fire up some image + manipulation program (say Gimp), open the image you want to + include, cut out the relevant part, reduce color depth to 1 bit, + resize to 48*48 and save as bitmap. Now you should get the compface + package from this site [ftp://ftp.cs.indiana.edu:/pub/faces/]. and + create the actual X-face by saying + + cat file.xbm | xbm2ikon |compface > file.face + cat ./file.face | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g' > ./file.face.quoted + + + if you can't use compface, there's an online X-face converter at + http://www.dairiki.org/xface/ [http://www.dairiki.org/xface/]. If + you use MS Windows, you could also use the WinFace program from + http://www.xs4all.nl/~walterln/winface/ [http://www.xs4all.nl/ + ~walterln/winface/]. Now you only have to tell Gnus to include the + X-face in your postings by saying + + (setq message-default-headers + (with-temp-buffer + (insert "X-Face: ") + (insert-file-contents "~/.xemacs/xface") + (buffer-string))) + + + in ~/.gnus. + +5.9. Sometimes I accidentally hit r instead of f in newsgroups. Can Gnus + warn me, when I'm replying by mail in newsgroups? + + Put this in ~/.gnus: + + (setq gnus-confirm-mail-reply-to-news t) + + + if you already use Gnus 5.10.0, if you still use 5.8.8 or 5.9 try + this instead: + + (defadvice gnus-summary-reply (around reply-in-news activate) + (interactive) + (when (or (not (gnus-news-group-p gnus-newsgroup-name)) + (y-or-n-p "Really reply? ")) + ad-do-it)) + + +5.10. How to tell Gnus not to generate a sender header? + + Since 5.10.0 Gnus doesn't generate a sender header by default. For + older Gnus' try this in ~/.gnus: + + (eval-after-load "message" + '(add-to-list 'message-syntax-checks '(sender . disabled))) + + +5.11. I want gnus to locally store copies of my send mail and news, how + to do it? + + You must set the variable gnus-message-archive-group to do this. + You can set it to a string giving the name of the group where the + copies shall go or like in the example below use a function which + is evaluated and which returns the group to use. + + (setq gnus-message-archive-group + '((if (message-news-p) + "nnml:Send-News" + "nnml:Send-Mail"))) + + +5.12. People tell me my Message-IDs are not correct, why aren't they and + how to fix it? + + The message-ID is an unique identifier for messages you send. To + make it unique, Gnus need to know which machine name to put after + the "@". If the name of the machine where Gnus is running isn't + suitable (it probably isn't at most private machines) you can tell + Gnus what to use by saying: + + (defun message-make-message-id() + (concat "<"(message-unique-id)"@yourmachine.yourdomain.tld>")) + + + in ~/.gnus. If you have no idea what to insert for + "yourmachine.yourdomain.tld", you've got several choices. You can + either ask your provider if he allows you to use something like + yourUserName.userfqdn.provider.net, or you can use + somethingUnique.yourdomain.tld if you own the domain + yourdomain.tld, or you can register at a service which gives + private users a FQDN for free, e.g. http://www.stura.tu-freiberg.de + /~dlx/addfqdn.html [http://www.stura.tu-freiberg.de/~dlx/ + addfqdn.html]. (Sorry but this website is in German, if you know of + an English one offering the same, drop me a note). + + Finally you can tell Gnus not to generate a Message-ID for News at + all (and letting the server do the job) by saying + + (setq message-required-news-headers + (remove' Message-ID message-required-news-headers)) + + + you can also tell Gnus not to generate Message-IDs for mail by + saying + + (setq message-required-mail-headers + (remove' Message-ID message-required-mail-headers)) + + + , however some mail servers don't generate proper Message-IDs, too, + so test if your Mail Server behaves correctly by sending yourself a + Mail and looking at the Message-ID. + +6. Old messages + +6.1. How to import my old mail into Gnus? + + The easiest way is to tell your old mail program to export the + messages in mbox format. Most Unix mailers are able to do this, if + you come from the MS Windows world, you may find tools at http:// + mbx2mbox.sourceforge.net/ [http://mbx2mbox.sourceforge.net/]. + + Now you've got to import this mbox file into Gnus. To do this, + create a nndoc group based on the mbox file by saying G f /path/ + file.mbox RET in Group buffer. You now have read-only access to + your mail. If you want to import the messages to your normal Gnus + mail groups hierarchy, enter the nndoc group you've just created by + saying C-u RET (thus making sure all messages are retrieved), mark + all messages by saying M P b and either copy them to the desired + group by saying B c name.of.group RET or send them through + nnmail-split-methods (respool them) by saying B r. + +6.2. How to archive interesting messages? + + If you stumble across an interesting message, say in gnu.emacs.gnus + and want to archive it there are several solutions. The first and + easiest is to save it to a file by saying O f. However, wouldn't it + be much more convenient to have more direct access to the archived + message from Gnus? If you say yes, put this snippet by Frank Haun + in ~/.gnus: + + (defun my-archive-article (&optional n) + "Copies one or more article(s) to a corresponding `nnml:' group, e.g. + `gnus.ding' goes to `nnml:1.gnus.ding'. And `nnml:List-gnus.ding' goes + to `nnml:1.List-gnus-ding'. + + Use process marks or mark a region in the summary buffer to archive + more then one article." + (interactive "P") + (let ((archive-name + (format + "nnml:1.%s" + (if (featurep 'xemacs) + (replace-in-string gnus-newsgroup-name "^.*:" "") + (replace-regexp-in-string "^.*:" "" gnus-newsgroup-name))))) + (gnus-summary-copy-article n archive-name))) + + + You can now say M-x my-archive-article in summary buffer to archive + the article under the cursor in a nnml group. (Change nnml to your + preferred back end) + + Of course you can also make sure the cache is enabled by saying + + (setq gnus-use-cache t) + + + then you only have to set either the tick or the dormant mark for + articles you want to keep, setting the read mark will remove them + from cache. + +6.3. How to search for a specific message? + + There are several ways for this, too. For a posting from a Usenet + group the easiest solution is probably to ask groups.google.com + [http://groups.google.com], if you found the posting there, tell + Google to display the raw message, look for the message-id, and say + M-^ the@message.id RET in a summary buffer. Since Gnus 5.10.0 + there's also a Gnus interface for groups.google.com which you can + call with G W) in group buffer. + + Another idea which works for both mail and news groups is to enter + the group where the message you are searching is and use the + standard Emacs search C-s, it's smart enough to look at articles in + collapsed threads, too. If you want to search bodies, too try M-s + instead. Further on there are the gnus-summary-limit-to-foo + functions, which can help you, too. + + Of course you can also use grep to search through your local mail, + but this is both slow for big archives and inconvenient since you + are not displaying the found mail in Gnus. Here comes nnir into + action. Nnir is a front end to search engines like swish-e or + swish++ and others. You index your mail with one of those search + engines and with the help of nnir you can search trough the indexed + mail and generate a temporary group with all messages which met + your search criteria. If this sound cool to you get nnir.el from + ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/ [ftp:// + ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/] or ftp:// + ftp.is.informatik.uni-duisburg.de/pub/src/emacs/ [ftp:// + ftp.is.informatik.uni-duisburg.de/pub/src/emacs/]. Instructions on + how to use it are at the top of the file. + +6.4. How to get rid of old unwanted mail? + + You can of course just mark the mail you don't need anymore by + saying # with point over the mail and then say B DEL to get rid of + them forever. You could also instead of actually deleting them, + send them to a junk-group by saying B m nnml:trash-bin which you + clear from time to time, but both are not the intended way in Gnus. + + In Gnus, we let mail expire like news expires on a news server. + That means you tell Gnus the message is expirable (you tell Gnus "I + don't need this mail anymore") by saying E with point over the mail + in summary buffer. Now when you leave the group, Gnus looks at all + messages which you marked as expirable before and if they are old + enough (default is older than a week) they are deleted. + +6.5. I want that all read messages are expired (at least in some + groups). How to do it? + + If you want all read messages to be expired (e.g. in mailing lists + where there's an online archive), you've got two choices: + auto-expire and total-expire. Auto-expire means, that every article + which has no marks set and is selected for reading is marked as + expirable, Gnus hits E for you every time you read a message. + Total-expire follows a slightly different approach, here all + article where the read mark is set are expirable. + + To activate auto-expire, include auto-expire in the Group + parameters for the group. (Hit G c in summary buffer with point + over the group to change group parameters). For total-expire add + total-expire to the group-parameters. + + Which method you choose is merely a matter of taste: Auto-expire is + faster, but it doesn't play together with Adaptive Scoring, so if + you want to use this feature, you should use total-expire. + + If you want a message to be excluded from expiration in a group + where total or auto expire is active, set either tick (hit u) or + dormant mark (hit u), when you use auto-expire, you can also set + the read mark (hit d). + +6.6. I don't want expiration to delete my mails but to move them to + another group. + + Say something like this in ~/.gnus: + + (setq nnmail-expiry-target "nnml:expired") + + + (If you want to change the value of nnmail-expiry-target on a per + group basis see the question "How can I disable threading in some + (e.g. mail-) groups, or set other variables specific for some + groups?") + +7. Gnus in a dial-up environment + +7.1. I don't have a permanent connection to the net, how can I minimize + the time I've got to be connected? + + You've got basically two options: Either you use the Gnus Agent + (see below) for this, or you can install programs which fetch your + news and mail to your local disk and Gnus reads the stuff from your + local machine. + + If you want to follow the second approach, you need a program which + fetches news and offers them to Gnus, a program which does the same + for mail and a program which receives the mail you write from Gnus + and sends them when you're online. + + Let's talk about Unix systems first: For the news part, the easiest + solution is a small nntp server like Leafnode [http:// + www.leafnode.org/] or sn [http://infa.abo.fi/~patrik/sn/], of + course you can also install a full featured news server like inn + [http://www.isc.org/products/INN/]. Then you want to fetch your + Mail, popular choices are fetchmail [http://www.catb.org/~esr/ + fetchmail/] and getmail [http://www.qcc.ca/~charlesc/software/ + getmail-3.0/]. You should tell those to write the mail to your disk + and Gnus to read it from there. Last but not least the mail sending + part: This can be done with every MTA like sendmail [http:// + www.sendmail.org/], postfix [http://www.qmail.org/], exim [http:// + www.exim.org/] or qmail [http://www.qmail.org/]. + + On windows boxes I'd vote for Hamster [http://www.tglsoft.de/], + it's a small freeware, open-source program which fetches your mail + and news from remote servers and offers them to Gnus (or any other + mail and/or news reader) via nntp respectively POP3 or IMAP. It + also includes a smtp server for receiving mails from Gnus. + +7.2. So what was this thing about the Agent? + + The Gnus agent is part of Gnus, it allows you to fetch mail and + news and store them on disk for reading them later when you're + offline. It kind of mimics offline newsreaders like e.g. Forte + Agent. If you want to use the Agent place the following in ~/.gnus + if you are still using 5.8.8 or 5.9 (it's the default since + 5.10.0): + + (setq gnus-agent t) + + + Now you've got to select the servers whose groups can be stored + locally. To do this, open the server buffer (that is press ^ while + in the group buffer). Now select a server by moving point to the + line naming that server. Finally, agentize the server by typing J a + . If you make a mistake, or change your mind, you can undo this + action by typing J r. When you're done, type 'q' to return to the + group buffer. Now the next time you enter a group on a agentized + server, the headers will be stored on disk and read from there the + next time you enter the group. + +7.3. I want to store article bodies on disk, too. How to do it? + + You can tell the agent to automatically fetch the bodies of + articles which fulfill certain predicates, this is done in a + special buffer which can be reached by saying J c in group buffer. + Please refer to the documentation for information which predicates + are possible and how exactly to do it. + + Further on you can tell the agent manually which articles to store + on disk. There are two ways to do this: Number one: In the summary + buffer, process mark a set of articles that shall be stored in the + agent by saying # with point over the article and then type J s. + The other possibility is to set, again in the summary buffer, + downloadable (%) marks for the articles you want by typing @ with + point over the article and then typing J u. What's the difference? + Well, process marks are erased as soon as you exit the summary + buffer while downloadable marks are permanent. You can actually set + downloadable marks in several groups then use fetch session ('J s' + in the GROUP buffer) to fetch all of those articles. The only + downside is that fetch session also fetches all of the headers for + every selected group on an agentized server. Depending on the + volume of headers, the initial fetch session could take hours. + +7.4. How to tell Gnus not to try to send mails / postings while I'm + offline? + + All you've got to do is to tell Gnus when you are online (plugged) + and when you are offline (unplugged), the rest works automatically. + You can toggle plugged/unplugged state by saying J j in group + buffer. To start Gnus unplugged say M-x gnus-unplugged instead of + M-x gnus. Note that for this to work, the agent must be active. + +8. Getting help + +8.1. How to find information and help inside Emacs? + + The first stop should be the Gnus manual (Say C-h i d m Gnus RET to + start the Gnus manual, then walk through the menus or do a + full-text search with s). Then there are the general Emacs help + commands starting with C-h, type C-h ? ? to get a list of all + available help commands and their meaning. Finally M-x + apropos-command lets you search through all available functions and + M-x apropos searches the bound variables. + +8.2. I can't find anything in the Gnus manual about X (e.g. attachments, + PGP, MIME...), is it not documented? + + There's not only the Gnus manual but also the manuals for message, + emacs-mime, sieve and pgg. Those packages are distributed with Gnus + and used by Gnus but aren't really part of core Gnus, so they are + documented in different info files, you should have a look in those + manuals, too. + +8.3. Which websites should I know? + + The two most important ones are the official Gnus website [http:// + www.gnus.org]. and it's sister site my.gnus.org (MGO) [http:// + my.gnus.org], hosting an archive of lisp snippets, howtos, a (not + really finished) tutorial and this FAQ. + + Tell me about other sites which are interesting. + +8.4. Which mailing lists and newsgroups are there? + + There's the newsgroup gnu.emacs.gnus (pull it from e.g. + news.gnus.org) which deals with general questions and the ding + mailing list (ding@gnus.org) dealing with development of Gnus. You + can read the ding list via NNTP, too under the name gnus.ding from + news.gnus.org. + + If you want to stay in the big8, news.software.newssreaders is also + read by some Gnus users (but chances for qualified help are much + better in the above groups) and if you speak German, there's + de.comm.software.gnus. + +8.5. Where to report bugs? + + Say M-x gnus-bug, this will start a message to the gnus bug mailing + list [mailto:bugs@gnus.org] including information about your + environment which make it easier to help you. + +8.6. I need real-time help, where to find it? + + Point your IRC client to irc.my.gnus.org channel #mygnus. Don't be + afraid if people there speak German, they are willing and capable + of switching to English when people from outside Germany enter. + +9. Tuning Gnus + +9.1. Starting Gnus is really slow, how to speed it up? + + The reason for this could be the way Gnus reads it's active file, + see the node "The Active File" in the Gnus manual for things you + might try to speed the process up. An other idea would be to byte + compile your ~/.gnus (say M-x byte-compile-file RET ~/.gnus RET to + do it). Finally, if you have require statements in your .gnus, you + could replace them with eval-after-load, which loads the stuff not + at startup time, but when it's needed. Say you've got this in your + ~/.gnus: + + (require 'message) + (add-to-list 'message-syntax-checks '(sender . disabled)) + + + then as soon as you start Gnus, message.el is loaded. If you + replace it with + + (eval-after-load "message" + '(add-to-list 'message-syntax-checks '(sender . disabled))) + + + it's loaded when it's needed. + +9.2. How to speed up the process of entering a group? + + A speed killer is setting the variable gnus-fetch-old-headers to + anything different from nil, so don't do this if speed is an issue. + To speed up building of summary say + + (gnus-compile) + + + at the bottom of your ~/.gnus, this will make gnus byte-compile + things like gnus-summary-line-format. then you could increase the + value of gc-cons-threshold by saying something like + + (setq gc-cons-threshold 3500000) + + + in ~/.emacs. If you don't care about width of CJK characters or use + Gnus 5.10.0 or younger together with a recent GNU Emacs, you should + say + + (setq gnus-use-correct-string-widths nil) + + + in ~/.gnus (thanks to Jesper harder for the last two suggestions). + Finally if you are still using 5.8.8 or 5.9 and experience speed + problems with summary buffer generation, you definitely should + update to 5.10.0 since there quite some work on improving it has + been done. + +9.3. Sending mail becomes slower and slower, what's up? + + The reason could be that you told Gnus to archive the messages you + wrote by setting gnus-message-archive-group. Try to use a nnml + group instead of an archive group, this should bring you back to + normal speed. Glossary ~/.gnus - + When the term ~/.gnus is used it just means your Gnus configuration file. You might as well call it ~/.gnus.el or specify another name. - + Back End - + In Gnus terminology a back end is a virtual server, a layer between core Gnus and the real NNTP-, POP3-, IMAP- or whatever-server which offers Gnus a standardized interface to functions like "get message", "get Headers" etc. - + Emacs - + When the term Emacs is used in this FAQ, it means either GNU Emacs or XEmacs. - + Message - + In this FAQ message means a either a mail or a posting to a Usenet Newsgroup or to some other fancy back end, no matter of which kind it is. - + MUA - + MUA is an acronym for Mail User Agent, it's the program you use to read and write e-mails. - + NUA - + NUA is an acronym for News User Agent, it's the program you use to read and write Usenet news. - diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fc2b63a..c711426 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,405 @@ +2003-04-27 06:47:31 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.19 is released. + +2003-04-27 Kevin Greiner + + * gnus-registry.el (gnus-register-spool-action): Replaced literal + carriage-return character with its escape sequence. + +2003-04-27 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-catchup-from-here): Doc fix. + + * nnrss.el (nnrss-node-text): Use only one + gnus-replace-in-string. + + * gnus.el: Remove gnus-functionp throughout. + + * gnus-util.el (gnus-functionp): Removed. + + * gnus-msg.el (gnus-summary-wide-reply-with-original): Doc fix. + + * message.el (message-required-headers): Add In-Reply-To. + +2003-04-27 Marshall T. Vandegrift + + * gnus-fun.el (gnus-face-from-file): Bind coding-system-for-read + to binary. + +2003-04-27 Jesper Harder + + * mml.el (mml-preview): do. + + * message.el (message-mode): do. + + * gnus-undo.el (gnus-undo-mode): do. + + * gnus-topic.el (gnus-topic-mode): do. + + * gnus-sum.el (gnus-summary-mode, gnus-summary-edit-article): do. + + * gnus-msg.el (gnus-setup-message) + (gnus-inews-add-send-actions, gnus-configure-posting-styles): do. + + * gnus-gl.el (gnus-grouplens-mode): do. + + * gnus-art.el (gnus-mime-save-part-and-strip) + (gnus-mime-delete-part): Use it. + + * gnus-util.el (gnus-make-local-hook): New function. + +2003-04-25 Simon Josefsson + + * nnrss.el (nnrss-node-text): Don't use a star. + (nnrss-node-text): Use g-r-i-s, not g-r-r-i-s which doesn't exist. + +2003-04-24 Dave Love + + * qp.el (quoted-printable-decode-region): Use mm-insert-byte. + Signal error on malformed text, as for base64. + (quoted-printable-encode-region): DTRT in Emacs 22. + + * mm-util.el (mm-make-temp-file, mm-insert-byte): New. + (mm-auto-save-coding-system): Consider utf-8-emacs. + (mm-mime-mule-charset-alist, mm-mule-charset-to-mime-charset) + (mm-charset-to-coding-system, mm-mime-charset) + (mm-find-mime-charset-region): Check for :mime-charset coding + systems property. + + * mml-sec.el (mml2015, mml1991): Don't require. + (mml2015-sign, mml2015-encrypt, mml1991-sign, mml1991-encrypt) + (message-goto-body, mml-insert-tag): Autoload. + + * mm-decode.el (mm-tmp-directory): Re-write to help avoid warnings. + + * gnus-start.el (message-make-date): Autoload rather than + requiring message. + + * gnus-group.el (gnus-group-name-charset-group-alist): Use + mm-coding-system-p. + (gnus-cache-active-altered): Defvar when compiling. + (gnus-group-delete-group): Re-write to help avoid warnings. + + * gnus-art.el (gnus-use-idna): Use mm-coding-system-p. + + * pgg.el: Split eval-when-compile forms. + +2003-04-24 Reiner Steib + + * gnus-group.el (gnus-large-ephemeral-newsgroup) + (gnus-fetch-old-ephemeral-headers): News variables. + (gnus-group-read-ephemeral-group): Use them. + +2003-04-24 Simon Josefsson + + * sieve.el (sieve-upload): Don't use replace-regexp-in-string. + + * nnrss.el (nnrss-node-text): Ditto. + +2003-04-24 Katsumi Yamaoka + + * gnus-msg.el (gnus-inews-do-gcc): Make sure the obsolete variable + gnus-inews-mark-gcc-as-read exists. + +2003-04-23 Simon Josefsson + + * gnus-sieve.el (gnus-sieve-generate): Rewrite regexp search so it + doesn't exceed the regexp stack space. + +2003-04-23 Jesper Harder + + * gnus-msg.el (gnus-inews-mark-gcc-as-read): Don't defvar it. + + * gnus-art.el (gnus-article-hide-pgp-hook): do. + +2003-04-23 Reiner Steib + + * mml.el (mml-preview): Bind `=', RET, and mouse-2. + +2003-04-23 Jesper Harder + + * mm-bodies.el (mm-decode-body): Don't override supplied charset. + +2003-04-23 Katsumi Yamaoka + + * dgnushack.el (merge, copy-list): Remove compiler macros. + (butlast): Add a compiler macro. + +2003-04-22 Paul Jarc + + * gnus-util.el (gnus-merge): Added "type" argument to match CL + merge and gnus-sum.el's expectations. + +2003-04-21 Reiner Steib + + * gnus-art.el (gnus-button-url-regexp): Added nntp. + + * message.el (message-generate-headers-first): Default to + '(references). + + * gnus-art.el (gnus-mime-delete-part): Require confirmation. + +2003-04-21 Jesper Harder + + * smime.el (smime-decrypt-region): Insert From header. + +2003-04-21 Kai Gro,A_(Bjohann + + * gnus-fun.el (gnus-face-from-file, gnus-convert-png-to-face): + Max length of header is 726, not 740. From Gaute B Strokkenes + . + +2003-04-20 Jesper Harder + + * nndb.el, mml1991.el: Fix license template. + +2003-04-20 Simon Josefsson + + * nnimap.el (nnimap-split-articles): Don't download body unless + required. + + * imap.el (imap-gssapi-open, imap-ssl-open): Erase buffer before + starting process, like imap-kerberos4-open does. + + * mml-smime.el, rfc1843.el, dig.el, smime.el, uudecode.el: Fix + license template. + + * mml-sec.el: Fix license template. + + * gnus-sieve.el, sieve.el, sieve-manage.el, sieve-mode.el: Fix + license template. + + * pgg-def.el, pgg.el, pgg-gpg.el, pgg-parse.el, pgg-pgp5.el, + pgg-pgp.el: Fix license template. + +2003-04-19 Jesper Harder + + * gnus-sum.el (gnus-summary-delete-article): Improve docstring. + +2003-04-19 Teodor Zlatanov + + * spam.el (spam-move-spam-nonspam-groups-only): dumb typo fix + +2003-04-18 Teodor Zlatanov + + * spam.el (spam-split): allow a particular check as a parameter, + e.g. (: spam-split 'spam-use-bogofilter) + (spam-mark-only-unseen-as-spam): new parameter, see doc + (spam-mark-junk-as-spam-routine): use + spam-mark-only-unseen-as-spam, simplify routine to take advantage + of gnus-newsgroup-unread as well as gnus-newsgroup-unseen + +2003-04-17 Teodor Zlatanov + + * gnus.el (gnus-group-short-name, gnus-group-prefixed-p): new functions + (gnus-group-guess-full-name): don't prefix the group twice + + * nnmail.el (nnmail-split-fancy-with-parent): docstring fix + + * gnus-registry.el (gnus-registry-clear) + (gnus-registry-fetch-group, gnus-registry-grep-in-list) + (gnus-registry-split-fancy-with-parent): new functions + (gnus-register-spool-action, gnus-register-action): simplified the format + (gnus-registry): new customization group + (gnus-registry-unfollowed-groups): new variable + +2003-04-17 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-button-alist): Add nntp: urls. + (gnus-header-button-alist): Ditto. + +2003-04-17 Dave Love + + * gnus-util.el (gnus-string-equal): Revert last change. + +2003-04-17 Lars Magne Ingebrigtsen + + * gnus-srvr.el (gnus-browse-make-menu-bar): Fix typo. + +2003-04-17 Mike Woolley + + * gnus-sum.el (gnus-sum-thread-tree-false-root): New variable. + +2003-04-15 Michael Shields + + * gnus-art.el (article-hide-boring-headers): Hide Reply-To: if + the broken-reply-to group parameter is set. Idea from Vasily + Korytov . + +2003-04-17 Steve Youngs + + * dgnushack.el: 'setenv' is in env.el for XEmacsen <= 21.4, but in + process.el in XEmacsen >= 21.5. + +2003-04-17 Steve Youngs + + * dgnushack.el: Add a whole swag of autoloads and defaliases to + satisfy the byte-compiler when building with XEmacs. + + * lpath.el (maybe-bind): Add 'w3-meta-content-type-charset-regexp' + and 'w3-meta-charset-content-type-regexp' in XEmacs. The upstream + W3 doesn't have these. + + * mailcap.el: Maybe require 'lpr in XEmacs. + +2003-04-16 Simon Josefsson + + * mml2015.el (mml2015-pgg-sign): Bind pgg-default-user-id to MML + sender tag, if available. + +2003-04-16 Teodor Zlatanov + + * gnus-registry.el (gnus-register-action) + (gnus-register-spool-action, hashtable-to-alist) + (gnus-registry-translate-from-alist, alist-to-hashtable) + (gnus-registry-translate-to-alist, gnus-registry-headers-hashtb): + new variables and function fixes + + * gnus.el (gnus-registry-headers-alist): new variable to hold + article header data + (gnus-variable-list): save gnus-registry-headers-alist + + * spam-report.el (Module): new module for spam reporting + + * gnus.el (spam-process): added + gnus-group-spam-exit-processor-report-gmane to the list of choices + (gnus-install-group-spam-parameters): defined new spam exit processor + + * spam.el (autoload): autoload spam-report-gmane when needed + (spam-report-gmane-register-routine): glue for spam-report.el + (spam-group-spam-processor-report-gmane-p): glue for the + gnus-group-spam-exit-processor-report-gmane spam processor + (spam-summary-prepare-exit): check the report-gmane spam processor + and run spam-report-gmane-register-routine if it's active + + From John Wiegley + + * spam.el (spam-bogofilter-score): check bogofilter headers before + checking bogofilter itself + +2003-04-16 Dave Love + + * gnus-agent.el: Wrap defsetf in eval-when-compile. + (gnus-agent-cat-defaccessor): Don't use gensym. + + * mml1991.el: Require cl, mm-util when compiling. + (quoted-printable-decode-region, quoted-printable-encode-region): + Autoload. + + * pgg.el: Require cl when compiling. + + * nnmail.el (gnus): Require. + + * gnus-util.el: Move provide to end. + (gnus-string-equal): Maybe use compare-strings. + (gnus-merge): New. + + * gnus-sum.el (gnus-summary-prepare-threads): Don't use copy-list. + (gnus-summary-insert-articles): Use gnus-merge. + + * gnus-fun.el: Require cl and mm-util when compiling. + + * gnus-diary.el (gnus-diary-delay-format-french) + (gnus-diary-delay-format-english): Don't use setf with nthcdr. + + * nndiary.el (nndiary-compute-reminders): Don't use setf with + nthcdr. + +2003-04-16 Kevin Greiner + + * gnus-agent.el (gnus-agent-make-cat): Added optional parameter to + specify a predicate other than false. + (gnus-category-read): Use the new feature to create a 'default' + category with a 'short' predicate. + +2003-04-16 Lars Magne Ingebrigtsen + + * message.el (message-unique-id): Comment change. + + * gnus-art.el (gnus-article-next-page-1): New function. + (gnus-article-next-page): Use it. + +2003-04-15 Teodor Zlatanov + + * spam.el (spam-split): added save-restriction to save-excursion + +2003-04-15 Reiner Steib + From Julien Avarre + + * gnus-fun.el: Fixed autoload cookie. + +2003-04-15 Paul Jarc + From Remi Letot + + * nnmaildir.el (nnmaildir-request-scan): Use gnus-remove-if + instead of remove-if. + +2003-04-14 Katsumi Yamaoka + + * gnus-msg.el (gnus-summary-news-other-window): Use delq and + copy-sequence instead of remove which is a cl run-time function in + Emacs 20. + +2003-04-14 Jesper Harder + + * gnus-msg.el (gnus-summary-news-other-window): Make a buffer + local copy of gnus-discouraged-post-methods with the current + method removed. + +2003-04-14 Simon Josefsson + + * mailcap.el (mailcap-mime-data): Add application/pgp-keys. + +2003-04-13 Reiner Steib + + * mm-util.el (mm-sort-coding-systems-predicate): Convert elements + of `mm-coding-system-priorities' to base coding system. + + * gnus-sum.el: Added coding cookie ("middle dot" in + gnus-summary-morse-message). + +2003-04-13 Simon Josefsson + + * gnus-art.el (article-fill-long-lines) + (article-verify-x-pgp-sig, article-decode-group-name) + (gnus-mime-button-menu): Split >80 character lines. + +2003-04-13 Jesper Harder + + * gnus-sum.el (gnus-summary-local-variables): Use defvar since + we're let-binding it. + + * nnmbox.el (nnmbox-mbox-buffer): It's not a constant. + +2003-04-13 Lars Magne Ingebrigtsen + + * message.el (message-hide-headers): Don't do intangible. + + * gnus.el (gnus-group-prefixed-name): Comment out the test for + colon. + + * gnus-srvr.el (gnus-browse-read-group): Don't give the real name + to the ephemeral entry, but the prefixed name. + + * gnus.el (gnus-group-prefixed-name): Clean up. + +2003-04-13 Kevin Greiner + + * gnus-agent.el (gnus-agent-group-pathname): Bind + gnus-command-method so that gnus-agent-directory will always + return a valid directory. + * gnus-cache.el (gnus-cache-enter-article): Remove article from + gnus-newsgroup-undownloaded so that the summary will display the + article as downloaded. + (gnus-cache-remove-article): If the article isn't in the agent, + remove it from gnus-newsgroup-undownloaded so that the summary + will display the article as undownloaded. + +2003-04-13 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + 2003-04-13 01:12:01 Lars Magne Ingebrigtsen * gnus.el: Oort Gnus v0.18 is released. @@ -358,13 +760,14 @@ 2003-03-28 Paul Jarc - * nnmaildir.el (nnmaildir-request-set-mark, - nnmaildir-close-group): Allow each mark directory in a group to + * nnmaildir.el (nnmaildir-request-set-mark) + (nnmaildir-close-group): Allow each mark directory in a group to have its own inode for mark files, to accommodate AFS. 2003-03-28 Teodor Zlatanov - * gnus-start.el (gnus-read-newsrc-el-hook): new hook called by gnus-read-newsrc-el-file + * gnus-start.el (gnus-read-newsrc-el-hook): new hook called by + gnus-read-newsrc-el-file (gnus-read-newsrc-el-file): call the gnus-read-newsrc-el-hook * gnus-registry.el (gnus-registry-translate-to-alist) @@ -383,7 +786,7 @@ 2003-03-27 Katsumi Yamaoka - * lpath.el: Bind url-current-object for FSF Emacs; bind + * lpath.el: Bind url-current-object for Emacs; bind gnus-agent-expire-current-dirs for XEmacs; fbind open-ssl-stream for both Emacsen. @@ -618,11 +1021,9 @@ 2003-03-18 Paul Jarc - * nnmaildir.el (nnmaildir-open-server, - nnmaildir-request-scan, - nnmaildir-request-create-group, - nnmaildir-request-delete-group): Replace create-directory with - target-prefix. + * nnmaildir.el (nnmaildir-open-server, nnmaildir-request-scan) + (nnmaildir-request-create-group, nnmaildir-request-delete-group): + Replace create-directory with target-prefix. 2003-03-18 Jesper Harder diff --git a/lisp/dgnushack.el b/lisp/dgnushack.el index 17227e4..43f6d02 100644 --- a/lisp/dgnushack.el +++ b/lisp/dgnushack.el @@ -822,9 +822,13 @@ Re-splitting gnus-load.el into custom-load.el and auto-autoloads.el...done "Install MANIFEST file as an XEmacs package." (let* ((package-dir (car command-line-args-left)) (product-name (cadr command-line-args-left)) - (name (expand-file-name (concat "pkginfo/MANIFEST." product-name) - package-dir)) + (pkginfo-dir (expand-file-name "pkginfo" package-dir)) + (name (expand-file-name (concat "MANIFEST." product-name) + pkginfo-dir)) make-backup-files) + (unless (file-directory-p pkginfo-dir) + (message "Creating directory %s/..." pkginfo-dir) + (make-directory pkginfo-dir)) (message "Generating %s..." name) (with-temp-file name (insert "pkginfo/MANIFEST." product-name "\n") diff --git a/lisp/dig.el b/lisp/dig.el index 953dc1d..e71d6db 100644 --- a/lisp/dig.el +++ b/lisp/dig.el @@ -4,7 +4,7 @@ ;; Author: Simon Josefsson ;; Keywords: DNS BIND dig -;; This file is not a part of GNU Emacs, but the same permissions apply. +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index fca87dd..29ae24c 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -296,6 +296,8 @@ node `(gnus)Server Buffer'.") (setq category (cdr category))))))) category) +;; Fixme: These two can probably be in eval-when-compile. + (defmacro gnus-agent-cat-defaccessor (name prop-name) "Define accessor and setter methods for manipulating a list of the form \(NAME (PROPERTY1 VALUE1) ... (PROPERTY_N VALUE_N)). @@ -308,8 +310,8 @@ manipulated as follows: (quote (quote ,prop-name)) category))) (define-setf-method ,name (category) - (let* ((--category--temp-- (gensym "--category--")) - (--value--temp-- (gensym "--value--"))) + (let* ((--category--temp-- (make-symbol "--category--")) + (--value--temp-- (make-symbol "--value--"))) (list (list --category--temp--) ; temporary-variables (list category) ; value-forms (list --value--temp--) ; store-variables @@ -344,8 +346,9 @@ manipulated as follows: (gnus-agent-cat-defaccessor gnus-agent-cat-score-file agent-score-file) -(defsetf gnus-agent-cat-groups (category) (groups) - (list 'gnus-agent-set-cat-groups category groups)) +(eval-when-compile + (defsetf gnus-agent-cat-groups (category) (groups) + (list 'gnus-agent-set-cat-groups category groups))) (defun gnus-agent-set-cat-groups (category groups) (unless (eq groups 'ignore) @@ -380,8 +383,8 @@ manipulated as follows: (setcdr category (cons cell (cdr category))) cell)) groups)))))) -(defsubst gnus-agent-cat-make (name) - (list name '(agent-predicate . false))) +(defsubst gnus-agent-cat-make (name &optional default-agent-predicate) + (list name `(agent-predicate . ,(or default-agent-predicate 'false)))) ;;; Fetching setup functions. @@ -1173,7 +1176,9 @@ This can be added to `gnus-select-article-hook' or ;; nnagent uses nnmail-group-pathname to read articles while ;; unplugged. The agent must, therefore, use the same directory ;; while plugged. - (nnmail-group-pathname (gnus-group-real-name group) (gnus-agent-directory))) + (let ((gnus-command-method (or gnus-command-method + (gnus-find-method-for-group group)))) + (nnmail-group-pathname (gnus-group-real-name group) (gnus-agent-directory)))) (defun gnus-agent-get-function (method) (if (gnus-online method) @@ -2204,7 +2209,7 @@ The following commands are available: '(agent-predicate agent-score-file agent-groups)))) c) old-list))))) - (list (gnus-agent-cat-make 'default))))) + (list (gnus-agent-cat-make 'default 'short))))) (defun gnus-category-write () "Write the category alist." @@ -2387,7 +2392,7 @@ The following commands are available: (cond ;; Functions are just returned as is. ((or (symbolp predicate) - (gnus-functionp predicate)) + (functionp predicate)) `(,(or (cdr (assq predicate gnus-category-predicate-alist)) predicate))) ;; More complex predicate. @@ -2424,7 +2429,7 @@ return only unread articles." nil) ((not function) nil) - ((gnus-functionp function) + ((functionp function) 'ignore) ((memq (car function) '(or and not)) (apply (car function) diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 9cbfe5b..a714507 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -612,8 +612,7 @@ The following additional specs are available: :type 'hook :group 'gnus-article-various) -(defvar gnus-article-hide-pgp-hook nil) -(make-obsolete-variable 'gnus-article-hide-pgp-hook +(make-obsolete-variable 'gnus-article-hide-pgp-hook "This variable is obsolete in Gnus 5.10.") (defcustom gnus-article-button-face 'bold @@ -1434,8 +1433,7 @@ It is a string, such as \"PGP\". If nil, ask user." "Function used for converting HTML into text.") (defcustom gnus-use-idna (and (condition-case nil (require 'idna) (file-error)) - (fboundp 'coding-system-p) - (coding-system-p 'utf-8)) + (mm-coding-system-p 'utf-8)) "Whether IDNA decoding of headers is used when viewing messages. This requires GNU Libidn, and by default only enabled if it is found." :group 'gnus-article-headers @@ -1794,15 +1792,18 @@ always hide." (message-fetch-field "newsgroups")) (gnus-article-hide-header "followup-to"))) ((eq elem 'reply-to) - (let ((from (message-fetch-field "from")) - (reply-to (message-fetch-field "reply-to"))) - (when (and - from reply-to - (ignore-errors - (gnus-string-equal - (nth 1 (mail-extract-address-components from)) - (nth 1 (mail-extract-address-components reply-to))))) - (gnus-article-hide-header "reply-to")))) + (if (gnus-group-find-parameter + gnus-newsgroup-name 'broken-reply-to) + (gnus-article-hide-header "reply-to") + (let ((from (message-fetch-field "from")) + (reply-to (message-fetch-field "reply-to"))) + (when (and + from reply-to + (ignore-errors + (gnus-string-equal + (nth 1 (mail-extract-address-components from)) + (nth 1 (mail-extract-address-components reply-to))))) + (gnus-article-hide-header "reply-to"))))) ((eq elem 'date) (let ((date (message-fetch-field "date"))) (when (and date @@ -2177,7 +2178,7 @@ unfolded." ;; We display the face. (if (symbolp gnus-article-x-face-command) ;; The command is a lisp function, so we call it. - (if (gnus-functionp gnus-article-x-face-command) + (if (functionp gnus-article-x-face-command) (funcall gnus-article-x-face-command face) (error "%s is not a function" gnus-article-x-face-command)) ;; The command is a string, so we interpret the command @@ -2272,23 +2273,23 @@ If PROMPT (the prefix), prompt for a coding system to use." (article-narrow-to-head) (with-current-buffer gnus-original-article-buffer (goto-char (point-min))) - (while (re-search-forward "^Newsgroups:\\(\\(.\\|\n[\t ]\\)*\\)\n[^\t ]" - nil t) + (while (re-search-forward + "^Newsgroups:\\(\\(.\\|\n[\t ]\\)*\\)\n[^\t ]" nil t) (replace-match (save-match-data - (gnus-decode-newsgroups - ;; XXX how to use data in article buffer? - (with-current-buffer gnus-original-article-buffer - (re-search-forward - "^Newsgroups:\\(\\(.\\|\n[\t ]\\)*\\)\n[^\t ]" - nil t) - (match-string 1)) - gnus-newsgroup-name method)) + (gnus-decode-newsgroups + ;; XXX how to use data in article buffer? + (with-current-buffer gnus-original-article-buffer + (re-search-forward + "^Newsgroups:\\(\\(.\\|\n[\t ]\\)*\\)\n[^\t ]" + nil t) + (match-string 1)) + gnus-newsgroup-name method)) t t nil 1)) (goto-char (point-min)) (with-current-buffer gnus-original-article-buffer (goto-char (point-min))) - (while (re-search-forward "^Followup-To:\\(\\(.\\|\n[\t ]\\)*\\)\n[^\t ]" - nil t) + (while (re-search-forward + "^Followup-To:\\(\\(.\\|\n[\t ]\\)*\\)\n[^\t ]" nil t) (replace-match (save-match-data (gnus-decode-newsgroups ;; XXX how to use data in article buffer? @@ -2441,7 +2442,7 @@ If READ-CHARSET, ask for a coding system." (when entry (setq func (cdr entry))) (cond - ((gnus-functionp func) + ((functionp func) (funcall func)) (t (apply (car func) (cdr func)))))))))) @@ -2730,7 +2731,7 @@ Point is left at the beginning of the narrowed-to region." (< (- (point-max) (point)) limit)) (and (floatp limit) (< (count-lines (point) (point-max)) limit)) - (and (gnus-functionp limit) + (and (functionp limit) (funcall limit)) (and (stringp limit) (not (re-search-forward limit nil t)))) @@ -2943,7 +2944,7 @@ should replace the \"Date:\" one, or should be added below it." gnus-article-time-format) (error nil)) gnus-article-time-format))) - (if (gnus-functionp format) + (if (functionp format) (funcall format time) (concat "Date: " (format-time-string format time))))) ;; ISO 8601. @@ -3493,7 +3494,8 @@ If variable `gnus-use-long-file-name' is non-nil, it is ;; Don't verify multiple headers. (setq headers (mapconcat (lambda (header) (concat header ": " - (mail-fetch-field header) "\n")) + (mail-fetch-field header) + "\n")) (split-string (nth 1 items) ",") ""))) (delete-region (point-min) (point-max)) (insert "-----BEGIN PGP SIGNED MESSAGE-----\n\n") @@ -4198,10 +4200,12 @@ General format specifiers can also be used. See Info node (define-key map (cadr c) (car c))) map)) -(easy-menu-define gnus-mime-button-menu gnus-mime-button-map "MIME button menu." +(easy-menu-define + gnus-mime-button-menu gnus-mime-button-map "MIME button menu." `("MIME Part" ,@(mapcar (lambda (c) - (vector (caddr c) (car c) :enable t)) gnus-mime-button-commands))) + (vector (caddr c) (car c) :enable t)) + gnus-mime-button-commands))) (eval-when-compile (define-compiler-macro popup-menu (&whole form @@ -4289,9 +4293,7 @@ General format specifiers can also be used. See Info node (let ((mbl1 mml-buffer-list)) (setq mml-buffer-list mbl) (set (make-local-variable 'mml-buffer-list) mbl1)) - ;; LOCAL argument of add-hook differs between GNU Emacs - ;; and XEmacs. make-local-hook makes sure they are local. - (make-local-hook 'kill-buffer-hook) + (gnus-make-local-hook 'kill-buffer-hook) (add-hook 'kill-buffer-hook 'mml-destroy-buffers t t))) `(lambda (no-highlight) (let ((mail-parse-charset (or gnus-article-charset @@ -4316,77 +4318,78 @@ General format specifiers can also be used. See Info node Replace it with some information about the removed part." (interactive) (gnus-article-check-buffer) - (let* ((data (get-text-property (point) 'gnus-data)) - (handles gnus-article-mime-handles) - (none "(none)") - (description - (or - (mail-decode-encoded-word-string (or (mm-handle-description data) - none)))) - (filename - (or (mail-content-type-get (mm-handle-disposition data) 'filename) - none)) - (type (mm-handle-media-type data))) - (if (mm-multiple-handles gnus-article-mime-handles) - (error "This function is not implemented")) - (with-current-buffer (mm-handle-buffer data) - (let ((bsize (format "%s" (buffer-size)))) - (erase-buffer) - (insert - (concat - "<#part type=text/plain nofile=yes disposition=attachment" - " description=\"Deleted attachment (" bsize " Byte)\">" - ",----\n" - "| The following attachment has been deleted:\n" - "|\n" - "| Type: " type "\n" - "| Filename: " filename "\n" - "| Size (encoded): " bsize " Byte\n" - "| Description: " description "\n" - "`----\n" - "<#/part>")) - (setcdr data - (cdr (mm-make-handle nil `("text/plain")))))) - (set-buffer gnus-summary-buffer) - ;; FIXME: maybe some of the following code (borrowed from - ;; `gnus-mime-save-part-and-strip') isn't necessary? - (gnus-article-edit-article - `(lambda () - (erase-buffer) - (let ((mail-parse-charset (or gnus-article-charset - ',gnus-newsgroup-charset)) - (mail-parse-ignored-charsets - (or gnus-article-ignored-charsets - ',gnus-newsgroup-ignored-charsets)) - (mbl mml-buffer-list)) - (setq mml-buffer-list nil) - (insert-buffer gnus-original-article-buffer) - (mime-to-mml ',handles) - (setq gnus-article-mime-handles nil) - (let ((mbl1 mml-buffer-list)) - (setq mml-buffer-list mbl) - (set (make-local-variable 'mml-buffer-list) mbl1)) - ;; LOCAL argument of add-hook differs between GNU Emacs - ;; and XEmacs. make-local-hook makes sure they are local. - (make-local-hook 'kill-buffer-hook) - (add-hook 'kill-buffer-hook 'mml-destroy-buffers t t))) - `(lambda (no-highlight) - (let ((mail-parse-charset (or gnus-article-charset - ',gnus-newsgroup-charset)) - (message-options message-options) - (message-options-set-recipient) - (mail-parse-ignored-charsets - (or gnus-article-ignored-charsets - ',gnus-newsgroup-ignored-charsets))) - (mml-to-mime) - (mml-destroy-buffers) - (remove-hook 'kill-buffer-hook - 'mml-destroy-buffers t) - (kill-local-variable 'mml-buffer-list)) - (gnus-summary-edit-article-done - ,(or (mail-header-references gnus-current-headers) "") - ,(gnus-group-read-only-p) - ,gnus-summary-buffer no-highlight)))) + (unless (and gnus-novice-user + (not (gnus-yes-or-no-p + "Really delete attachment forever? "))) + (let* ((data (get-text-property (point) 'gnus-data)) + (handles gnus-article-mime-handles) + (none "(none)") + (description + (or + (mail-decode-encoded-word-string (or (mm-handle-description data) + none)))) + (filename + (or (mail-content-type-get (mm-handle-disposition data) 'filename) + none)) + (type (mm-handle-media-type data))) + (if (mm-multiple-handles gnus-article-mime-handles) + (error "This function is not implemented")) + (with-current-buffer (mm-handle-buffer data) + (let ((bsize (format "%s" (buffer-size)))) + (erase-buffer) + (insert + (concat + "<#part type=text/plain nofile=yes disposition=attachment" + " description=\"Deleted attachment (" bsize " Byte)\">" + ",----\n" + "| The following attachment has been deleted:\n" + "|\n" + "| Type: " type "\n" + "| Filename: " filename "\n" + "| Size (encoded): " bsize " Byte\n" + "| Description: " description "\n" + "`----\n" + "<#/part>")) + (setcdr data + (cdr (mm-make-handle nil `("text/plain")))))) + (set-buffer gnus-summary-buffer) + ;; FIXME: maybe some of the following code (borrowed from + ;; `gnus-mime-save-part-and-strip') isn't necessary? + (gnus-article-edit-article + `(lambda () + (erase-buffer) + (let ((mail-parse-charset (or gnus-article-charset + ',gnus-newsgroup-charset)) + (mail-parse-ignored-charsets + (or gnus-article-ignored-charsets + ',gnus-newsgroup-ignored-charsets)) + (mbl mml-buffer-list)) + (setq mml-buffer-list nil) + (insert-buffer gnus-original-article-buffer) + (mime-to-mml ',handles) + (setq gnus-article-mime-handles nil) + (let ((mbl1 mml-buffer-list)) + (setq mml-buffer-list mbl) + (set (make-local-variable 'mml-buffer-list) mbl1)) + (gnus-make-local-hook 'kill-buffer-hook) + (add-hook 'kill-buffer-hook 'mml-destroy-buffers t t))) + `(lambda (no-highlight) + (let ((mail-parse-charset (or gnus-article-charset + ',gnus-newsgroup-charset)) + (message-options message-options) + (message-options-set-recipient) + (mail-parse-ignored-charsets + (or gnus-article-ignored-charsets + ',gnus-newsgroup-ignored-charsets))) + (mml-to-mime) + (mml-destroy-buffers) + (remove-hook 'kill-buffer-hook + 'mml-destroy-buffers t) + (kill-local-variable 'mml-buffer-list)) + (gnus-summary-edit-article-done + ,(or (mail-header-references gnus-current-headers) "") + ,(gnus-group-read-only-p) + ,gnus-summary-buffer no-highlight))))) ;; Not in `gnus-mime-save-part-and-strip': (gnus-article-edit-done) (gnus-summary-expand-window) @@ -5278,57 +5281,54 @@ If given a numerical ARG, move forward ARG pages." If end of article, return non-nil. Otherwise return nil. Argument LINES specifies lines to be scrolled up." (interactive "p") - (let ((start (window-start)) - end-of-buffer end-of-page) - (save-excursion - (move-to-window-line -1) - (if (<= (point) start) + (move-to-window-line -1) + (if (save-excursion + (end-of-line) + (and (pos-visible-in-window-p) ;Not continuation line. + (>= (1+ (point)) (point-max)))) ;Allow for trailing newline. + ;; Nothing in this page. + (if (or (not gnus-page-broken) + (save-excursion + (save-restriction + (widen) (forward-line 1) (eobp)))) ;Real end-of-buffer? (progn - (forward-line 2) - (setq start (point))) - (forward-line 1) - (setq start nil)) - (unless (or (cond ((eq (1+ (buffer-size)) (point)) - (and (pos-visible-in-window-p) - (setq end-of-buffer t))) - ((eobp) - (setq end-of-page t))) - (not lines)) - (move-to-window-line lines) - (unless (search-backward "\n\n" nil t) - (setq start (point))))) - (cond (end-of-buffer - (not gnus-article-over-scroll)) - (end-of-page - (gnus-narrow-to-page 1) - nil) - (t - (if start - (set-window-start (selected-window) start) - (let (window-pixel-scroll-increment) - (scroll-up lines))) - nil)))) + (when gnus-article-over-scroll + (gnus-article-next-page-1 lines)) + t) ;Nothing more. + (gnus-narrow-to-page 1) ;Go to next page. + nil) + ;; More in this page. + (gnus-article-next-page-1 lines) + nil)) + +(defun gnus-article-next-page-1 (lines) + (let ((scroll-in-place nil)) + (condition-case () + (scroll-up lines) + (end-of-buffer + ;; Long lines may cause an end-of-buffer error. + (goto-char (point-max))))) + (move-to-window-line 0)) (defun gnus-article-prev-page (&optional lines) "Show previous page of current article. Argument LINES specifies lines to be scrolled down." (interactive "p") - (let (beginning-of-buffer beginning-of-page) - (save-excursion - (move-to-window-line 0) - (cond ((eq 1 (point)) - (setq beginning-of-buffer t)) - ((bobp) - (setq beginning-of-page t)))) - (cond (beginning-of-buffer) - (beginning-of-page - (gnus-narrow-to-page -1)) - (t - (condition-case nil - (let (window-pixel-scroll-increment) - (scroll-down lines)) - (beginning-of-buffer - (goto-char (point-min)))))))) + (move-to-window-line 0) + (if (and gnus-page-broken + (bobp) + (not (save-restriction (widen) (bobp)))) ;Real beginning-of-buffer? + (progn + (gnus-narrow-to-page -1) ;Go to previous page. + (goto-char (point-max)) + (recenter -1)) + (let ((scroll-in-place nil)) + (prog1 + (condition-case () + (scroll-down lines) + (beginning-of-buffer + (goto-char (point-min)))) + (move-to-window-line 0))))) (defun gnus-article-only-boring-p () "Decide whether there is only boring text remaining in the article. @@ -6078,8 +6078,8 @@ after replacing with the original article." (defcustom gnus-button-url-regexp (if (string-match "[[:digit:]]" "1") ;; support POSIX? - "\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\|info\\):\\)\\(//[-a-z0-9_.]+:[0-9]*\\)?[-a-z0-9_=!?#$@~%&*+\\/:;.,[:word:]]+[-a-z0-9_=#$@~%&*+\\/[:word:]]\\)" - "\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\|info\\):\\)\\(//[-a-z0-9_.]+:[0-9]*\\)?\\([-a-z0-9_=!?#$@~%&*+\\/:;.,]\\|\\w\\)+\\([-a-z0-9_=#$@~%&*+\\/]\\|\\w\\)\\)") + "\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|nntp\\|news\\|telnet\\|wais\\|mailto\\|info\\):\\)\\(//[-a-z0-9_.]+:[0-9]*\\)?[-a-z0-9_=!?#$@~%&*+\\/:;.,[:word:]]+[-a-z0-9_=#$@~%&*+\\/[:word:]]\\)" + "\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|nntp\\|news\\|telnet\\|wais\\|mailto\\|info\\):\\)\\(//[-a-z0-9_.]+:[0-9]*\\)?\\([-a-z0-9_=!?#$@~%&*+\\/:;.,]\\|\\w\\)+\\([-a-z0-9_=#$@~%&*+\\/]\\|\\w\\)\\)") "Regular expression that matches URLs." :group 'gnus-article-buttons :type 'regexp) @@ -6443,10 +6443,10 @@ positives are possible." 0 (>= gnus-button-message-level 0) gnus-button-handle-news 3) ("\\b\\(nntp\\|news\\):\\([^>\n\t ]*@[^>)!;:,\n\t ]*\\)" 0 t gnus-button-handle-news 2) - ("\\(\\b<\\(url:[>\n\t ]*\\)?news:[>\n\t ]*\\(//\\)?\\([^>\n\t ]*\\)>\\)" - 1 (>= gnus-button-message-level 0) gnus-button-fetch-group 4) - ("\\bnews:\\(//\\)?\\([^'\">\n\t ]+\\)" - 0 (>= gnus-button-message-level 0) gnus-button-fetch-group 2) + ("\\(\\b<\\(url:[>\n\t ]*\\)?\\(nntp\\|news\\):[>\n\t ]*\\(//\\)?\\([^>\n\t ]*\\)>\\)" + 1 (>= gnus-button-message-level 0) gnus-button-fetch-group 5) + ("\\b\\(nntp\\|news\\):\\(//\\)?\\([^'\">\n\t ]+\\)" + 0 (>= gnus-button-message-level 0) gnus-button-fetch-group 3) ("\\bin\\( +article\\| +message\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2 (>= gnus-button-message-level 0) gnus-button-message-id 3) ("\\( \n\t]+\\)>" @@ -6572,8 +6572,8 @@ variable it the real callback function." 0 (>= gnus-button-browse-level 0) browse-url 0) ("^[^:]+:" "\\bmailto:\\([-a-z.@_+0-9%=?]+\\)" 0 (>= gnus-button-message-level 0) gnus-url-mailto 1) - ("^[^:]+:" "\\(<\\(url: \\)?news:\\([^>\n ]*\\)>\\)" - 1 (>= gnus-button-message-level 0) gnus-button-message-id 3)) + ("^[^:]+:" "\\(<\\(url: \\)?\\(nntp\\|news\\):\\([^>\n ]*\\)>\\)" + 1 (>= gnus-button-message-level 0) gnus-button-message-id 4)) "*Alist of headers and regexps to match buttons in article heads. This alist is very similar to `gnus-button-alist', except that each diff --git a/lisp/gnus-cache.el b/lisp/gnus-cache.el index e9733a2..8fc0e93 100644 --- a/lisp/gnus-cache.el +++ b/lisp/gnus-cache.el @@ -36,6 +36,8 @@ (require 'gnus-range) (require 'gnus-start) (eval-when-compile + (if (not (fboundp 'gnus-agent-load-alist)) + (defun gnus-agent-load-alist (group))) (require 'gnus-sum)) (defcustom gnus-cache-active-file @@ -336,8 +338,10 @@ Returns the list of articles entered." gnus-newsgroup-name article (gnus-summary-article-header article) nil nil nil t) + (setq gnus-newsgroup-undownloaded (delq article gnus-newsgroup-undownloaded)) (push article out)) (gnus-message 2 "Can't cache article %d" article)) + (gnus-summary-update-download-mark article) (gnus-summary-update-secondary-mark article)) (gnus-summary-next-subject 1) (gnus-summary-position-point) @@ -355,7 +359,14 @@ Returns the list of articles removed." (setq article (pop articles)) (gnus-summary-remove-process-mark article) (when (gnus-cache-possibly-remove-article article nil nil nil t) + (when gnus-newsgroup-agentized + (let ((alist (gnus-agent-load-alist gnus-newsgroup-name))) + (unless (cdr (assoc article alist)) + (setq gnus-newsgroup-undownloaded + (gnus-add-to-sorted-list + gnus-newsgroup-undownloaded article))))) (push article out)) + (gnus-summary-update-download-mark article) (gnus-summary-update-secondary-mark article)) (gnus-summary-next-subject 1) (gnus-summary-position-point) diff --git a/lisp/gnus-clfns.el b/lisp/gnus-clfns.el index 191db6d..db33634 100644 --- a/lisp/gnus-clfns.el +++ b/lisp/gnus-clfns.el @@ -1,6 +1,6 @@ ;;; gnus-clfns.el --- compiler macros for emulating cl functions -;; Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ;; Author: Kastsumi Yamaoka ;; Keywords: cl, compile @@ -36,8 +36,7 @@ (require 'pym) (define-compiler-macro butlast (&whole form x &optional n) - (if (and (fboundp 'butlast) - (subrp (symbol-function 'butlast))) + (if (>= emacs-major-version 21) form (if n `(let ((x ,x) @@ -61,39 +60,38 @@ (setcdr (nthcdr (- m 2) x) nil) x)))))) - (define-compiler-macro coerce (&whole form x type) - (if (and (fboundp 'coerce) - (subrp (symbol-function 'coerce))) - form - `(let ((x ,x) - (type ,type)) - (cond ((eq type 'list) (if (listp x) x (append x nil))) - ((eq type 'vector) (if (vectorp x) x (vconcat x))) - ((eq type 'string) (if (stringp x) x (concat x))) - ((eq type 'array) (if (arrayp x) x (vconcat x))) - ((and (eq type 'character) (stringp x) (= (length x) 1)) - (aref x 0)) - ((and (eq type 'character) (symbolp x) - (= (length (symbol-name x)) 1)) - (aref (symbol-name x) 0)) - ((eq type 'float) (float x)) - ((typep x type) x) - (t (error "Can't coerce %s to type %s" x type)))))) +;; (define-compiler-macro coerce (&whole form x type) +;; (if (and (fboundp 'coerce) +;; (subrp (symbol-function 'coerce))) +;; form +;; `(let ((x ,x) +;; (type ,type)) +;; (cond ((eq type 'list) (if (listp x) x (append x nil))) +;; ((eq type 'vector) (if (vectorp x) x (vconcat x))) +;; ((eq type 'string) (if (stringp x) x (concat x))) +;; ((eq type 'array) (if (arrayp x) x (vconcat x))) +;; ((and (eq type 'character) (stringp x) (= (length x) 1)) +;; (aref x 0)) +;; ((and (eq type 'character) (symbolp x) +;; (= (length (symbol-name x)) 1)) +;; (aref (symbol-name x) 0)) +;; ((eq type 'float) (float x)) +;; ((typep x type) x) +;; (t (error "Can't coerce %s to type %s" x type)))))) - (define-compiler-macro copy-list (&whole form list) - (if (and (fboundp 'copy-list) - (subrp (symbol-function 'copy-list))) - form - `(let ((list ,list)) - (if (consp list) - (let ((res nil)) - (while (consp list) (push (pop list) res)) - (prog1 (nreverse res) (setcdr res list))) - (car list))))) +;; (define-compiler-macro copy-list (&whole form list) +;; (if (and (fboundp 'copy-list) +;; (subrp (symbol-function 'copy-list))) +;; form +;; `(let ((list ,list)) +;; (if (consp list) +;; (let ((res nil)) +;; (while (consp list) (push (pop list) res)) +;; (prog1 (nreverse res) (setcdr res list))) +;; (car list))))) (define-compiler-macro last (&whole form x &optional n) - (if (and (fboundp 'last) - (subrp (symbol-function 'last))) + (if (>= emacs-major-version 20) form (if n `(let* ((x ,x) @@ -113,32 +111,48 @@ (pop x)) x)))) - (define-compiler-macro merge (&whole form type seq1 seq2 pred &rest keys) - (if (and (fboundp 'merge) - (subrp (symbol-function 'merge))) + (define-compiler-macro mapc (&whole form fn seq &rest rest) + (if (>= emacs-major-version 21) form - `(let ((type ,type) - (seq1 ,seq1) - (seq2 ,seq2) - (pred ,pred)) - (or (listp seq1) (setq seq1 (append seq1 nil))) - (or (listp seq2) (setq seq2 (append seq2 nil))) - (let ((res nil)) - (while (and seq1 seq2) - (if (funcall pred (car seq2) (car seq1)) - (push (pop seq2) res) - (push (pop seq1) res))) - (coerce (nconc (nreverse res) seq1 seq2) type))))) + (if rest + `(let* ((fn ,fn) + (seq ,seq) + (args (list seq ,@rest)) + (m (apply (function min) (mapcar (function length) args))) + (n 0)) + (while (< n m) + (apply fn (mapcar (function (lambda (arg) (nth n arg))) args)) + (setq n (1+ n))) + seq) + `(let ((seq ,seq)) + (mapcar ,fn seq) + seq)))) - (define-compiler-macro string (&whole form &rest args) - (if (and (fboundp 'string) - (subrp (symbol-function 'string))) - form - (list 'concat (cons 'list args)))) +;; (define-compiler-macro merge (&whole form type seq1 seq2 pred &rest keys) +;; (if (and (fboundp 'merge) +;; (subrp (symbol-function 'merge))) +;; form +;; `(let ((type ,type) +;; (seq1 ,seq1) +;; (seq2 ,seq2) +;; (pred ,pred)) +;; (or (listp seq1) (setq seq1 (append seq1 nil))) +;; (or (listp seq2) (setq seq2 (append seq2 nil))) +;; (let ((res nil)) +;; (while (and seq1 seq2) +;; (if (funcall pred (car seq2) (car seq1)) +;; (push (pop seq2) res) +;; (push (pop seq1) res))) +;; (coerce (nconc (nreverse res) seq1 seq2) type))))) - (defun-maybe string (&rest args) - "Concatenate all the argument characters and make the result a string." - (concat args)) +;; (define-compiler-macro string (&whole form &rest args) +;; (if (>= emacs-major-version 20) +;; form +;; (list 'concat (cons 'list args)))) + +;; (defun-maybe string (&rest args) +;; "Concatenate all the argument characters and make the result a string." +;; (concat args)) (define-compiler-macro string-to-list (&whole form string) (cond ((fboundp 'string-to-list) @@ -167,56 +181,56 @@ (setq l (cons c l))) (nreverse l))) - (define-compiler-macro subseq (&whole form seq start &optional end) - (if (and (fboundp 'subseq) - (subrp (symbol-function 'subseq))) - form - (if end - `(let ((seq ,seq) - (start ,start) - (end ,end)) - (if (stringp seq) - (substring seq start end) - (let (len) - (if (< end 0) - (setq end (+ end (setq len (length seq))))) - (if (< start 0) - (setq start (+ start (or len (setq len (length seq)))))) - (cond ((listp seq) - (if (> start 0) - (setq seq (nthcdr start seq))) - (let ((res nil)) - (while (>= (setq end (1- end)) start) - (push (pop seq) res)) - (nreverse res))) - (t - (let ((res (make-vector (max (- end start) 0) nil)) - (i 0)) - (while (< start end) - (aset res i (aref seq start)) - (setq i (1+ i) - start (1+ start))) - res)))))) - `(let ((seq ,seq) - (start ,start)) - (if (stringp seq) - (substring seq start) - (let (len) - (if (< start 0) - (setq start (+ start (or len (setq len (length seq)))))) - (cond ((listp seq) - (if (> start 0) - (setq seq (nthcdr start seq))) - (copy-sequence seq)) - (t - (let* ((end (or len (length seq))) - (res (make-vector (max (- end start) 0) nil)) - (i 0)) - (while (< start end) - (aset res i (aref seq start)) - (setq i (1+ i) - start (1+ start))) - res))))))))) +;; (define-compiler-macro subseq (&whole form seq start &optional end) +;; (if (and (fboundp 'subseq) +;; (subrp (symbol-function 'subseq))) +;; form +;; (if end +;; `(let ((seq ,seq) +;; (start ,start) +;; (end ,end)) +;; (if (stringp seq) +;; (substring seq start end) +;; (let (len) +;; (if (< end 0) +;; (setq end (+ end (setq len (length seq))))) +;; (if (< start 0) +;; (setq start (+ start (or len (setq len (length seq)))))) +;; (cond ((listp seq) +;; (if (> start 0) +;; (setq seq (nthcdr start seq))) +;; (let ((res nil)) +;; (while (>= (setq end (1- end)) start) +;; (push (pop seq) res)) +;; (nreverse res))) +;; (t +;; (let ((res (make-vector (max (- end start) 0) nil)) +;; (i 0)) +;; (while (< start end) +;; (aset res i (aref seq start)) +;; (setq i (1+ i) +;; start (1+ start))) +;; res)))))) +;; `(let ((seq ,seq) +;; (start ,start)) +;; (if (stringp seq) +;; (substring seq start) +;; (let (len) +;; (if (< start 0) +;; (setq start (+ start (or len (setq len (length seq)))))) +;; (cond ((listp seq) +;; (if (> start 0) +;; (setq seq (nthcdr start seq))) +;; (copy-sequence seq)) +;; (t +;; (let* ((end (or len (length seq))) +;; (res (make-vector (max (- end start) 0) nil)) +;; (i 0)) +;; (while (< start end) +;; (aset res i (aref seq start)) +;; (setq i (1+ i) +;; start (1+ start))) +;; res))))))))) ) ;; A tool for the developers. diff --git a/lisp/gnus-diary.el b/lisp/gnus-diary.el index 54b51d3..569aec8 100644 --- a/lisp/gnus-diary.el +++ b/lisp/gnus-diary.el @@ -153,7 +153,7 @@ There are currently two built-in format functions: (if (null delay) "maintenant!" ;; Keep only a precision of two degrees - (and (> (length delay) 1) (setf (nthcdr 2 delay) nil)) + (and (> (length delay) 1) (setcdr (cdr delay) nil)) (concat (if past "il y a " "dans ") (let ((str "") del) @@ -183,7 +183,7 @@ There are currently two built-in format functions: (if (null delay) "now!" ;; Keep only a precision of two degrees - (and (> (length delay) 1) (setf (nthcdr 2 delay) nil)) + (and (> (length delay) 1) (setcdr (cdr delay) nil)) (concat (unless past "in ") (let ((str "") del) diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el index b470b3f..aa535b4 100644 --- a/lisp/gnus-ems.el +++ b/lisp/gnus-ems.el @@ -96,18 +96,18 @@ ;; [Note] Now there are three kinds of mule implementations, ;; original MULE, XEmacs/mule and Emacs 20+ including - ;; MULE features. Unfortunately these API are different. In - ;; particular, Emacs (including original MULE) and XEmacs are + ;; MULE features. Unfortunately these APIs are different. In + ;; particular, Emacs (including original Mule) and XEmacs are ;; quite different. However, this version of Gnus doesn't support ;; anything other than XEmacs 20+ and Emacs 20.3+. ;; Predicates to check are following: - ;; (boundp 'MULE) is t only if MULE (original; anything older than + ;; (boundp 'MULE) is t only if Mule (original; anything older than ;; Mule 2.3) is running. - ;; (featurep 'mule) is t when every mule variants are running. + ;; (featurep 'mule) is t when other mule variants are running. ;; It is possible to detect XEmacs/mule by (featurep 'mule) and - ;; checking `emacs-version'. In this case, the implementation for + ;; (featurep 'xemacs). In this case, the implementation for ;; XEmacs/mule may be shareable between XEmacs and XEmacs/mule. (defvar gnus-summary-display-table nil diff --git a/lisp/gnus-fun.el b/lisp/gnus-fun.el index 2352372..8791640 100644 --- a/lisp/gnus-fun.el +++ b/lisp/gnus-fun.el @@ -1,4 +1,4 @@ -;;; gnus-fun.el --- various frivoluos extension functions to Gnus +;;; gnus-fun.el --- various frivolous extension functions to Gnus ;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -25,6 +25,10 @@ ;;; Code: +(eval-when-compile + (require 'cl) + (require 'mm-util)) + (defcustom gnus-x-face-directory (expand-file-name "x-faces" gnus-directory) "*Directory where X-Face PBM files are stored." :group 'gnus-fun @@ -107,18 +111,19 @@ Output to the current buffer, replace text, and don't mingle error." (while (and (not done) (> quant 1)) (setq attempt - (gnus-shell-command-to-string - (format gnus-convert-image-to-face-command - (shell-quote-argument (expand-file-name file)) - quant))) - (if (> (length attempt) 740) + (let ((coding-system-for-read 'binary)) + (gnus-shell-command-to-string + (format gnus-convert-image-to-face-command + (shell-quote-argument (expand-file-name file)) + quant)))) + (if (> (length attempt) 726) (progn (setq quant (- quant 2)) (message "Length %d; trying quant %d" (length attempt) quant)) (setq done t))) (if done - (mm-with-unibyte-buffer + (mm-with-unibyte-buffer (insert attempt) (gnus-face-encode)) nil)))) @@ -147,14 +152,14 @@ The PNG is returned as a string." (base64-decode-region (point-min) (point-max))) (buffer-string))) -;;;#autoload +;;;###autoload (defun gnus-convert-png-to-face (file) "Convert FILE to a Face. FILE should be a PNG file that's 48x48 and smaller than or equal to -740 bytes." +726 bytes." (mm-with-unibyte-buffer (insert-file-contents file) - (when (> (buffer-size) 740) + (when (> (buffer-size) 726) (error "The file is %d bytes long, which is too long" (buffer-size))) (gnus-face-encode))) diff --git a/lisp/gnus-gl.el b/lisp/gnus-gl.el index b17e1b2..c176ffd 100644 --- a/lisp/gnus-gl.el +++ b/lisp/gnus-gl.el @@ -811,9 +811,9 @@ If prefix argument ALL is non-nil, all articles are marked as read." (if (null arg) (not gnus-grouplens-mode) (> (prefix-numeric-value arg) 0))) (when gnus-grouplens-mode - (make-local-hook 'gnus-select-article-hook) + (gnus-make-local-hook 'gnus-select-article-hook) (add-hook 'gnus-select-article-hook 'grouplens-do-time nil 'local) - (make-local-hook 'gnus-exit-group-hook) + (gnus-make-local-hook 'gnus-exit-group-hook) (add-hook 'gnus-exit-group-hook 'bbb-exit-group nil 'local) (make-local-variable 'gnus-score-find-score-files-function) diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index 52c1fa9..a3ca7cf 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -420,8 +420,7 @@ For example: :type '(repeat (cons (sexp :tag "Method") (symbol :tag "Charset")))) (defcustom gnus-group-name-charset-group-alist - (if (or (and (fboundp 'find-coding-system) (find-coding-system 'utf-8)) - (and (fboundp 'coding-system-p) (coding-system-p 'utf-8))) + (if (mm-coding-system-p 'utf-8) '(("[^\000-\177]" . utf-8)) nil) "Alist of group regexp and the charset for group names. @@ -1103,6 +1102,7 @@ The following commands are available: result))) (defun gnus-group-name-decode (string charset) + ;; Fixme: Don't decode in unibyte mode. (if (and string charset (featurep 'mule)) (decode-coding-string string charset) string)) @@ -1989,6 +1989,25 @@ Returns whether the fetching was successful or not." (defvar gnus-ephemeral-group-server 0) +(defcustom gnus-large-ephemeral-newsgroup 200 + "The number of articles which indicates a large ephemeral newsgroup. +Same as `gnus-large-newsgroup', but only used for ephemeral newsgroups. + +If the number of articles in a newsgroup is greater than this value, +confirmation is required for selecting the newsgroup. If it is nil, no +confirmation is required." + :group 'gnus-group-select + :type '(choice (const :tag "No limit" nil) + integer)) + +(defcustom gnus-fetch-old-ephemeral-headers nil + "Same as `gnus-fetch-old-headers', but only used for ephemeral newsgroups." + :group 'gnus-thread + :type '(choice (const :tag "off" nil) + (const some) + number + (sexp :menu-tag "other" t))) + ;; Enter a group that is not in the group buffer. Non-nil is returned ;; if selection was successful. (defun gnus-group-read-ephemeral-group (group method &optional activate @@ -2038,7 +2057,10 @@ Return the name of the group if selection was successful." (if request-only group (condition-case () - (when (gnus-group-read-group t t group select-articles) + (when (let ((gnus-large-newsgroup gnus-large-ephemeral-newsgroup) + (gnus-fetch-old-headers + gnus-fetch-old-ephemeral-headers)) + (gnus-group-read-group t t group select-articles)) group) ;;(error nil) (quit @@ -2285,6 +2307,8 @@ ADDRESS." (lambda (group) (gnus-group-delete-group group nil t)))))) +(eval-when-compile (defvar gnus-cache-active-altered)) + (defun gnus-group-delete-group (group &optional force no-prompt) "Delete the current group. Only meaningful with editable groups. If FORCE (the prefix) is non-nil, all the articles in the group will @@ -2312,10 +2336,10 @@ doing the deletion." (gnus-group-goto-group group) (gnus-group-kill-group 1 t) (gnus-sethash group nil gnus-active-hashtb) - (when (and (boundp 'gnus-cache-active-hashtb) - gnus-cache-active-hashtb) - (gnus-sethash group nil gnus-cache-active-hashtb) - (setq gnus-cache-active-altered t)) + (if (boundp 'gnus-cache-active-hashtb) + (when gnus-cache-active-hashtb + (gnus-sethash group nil gnus-cache-active-hashtb) + (setq gnus-cache-active-altered t))) t)) (gnus-group-position-point))) diff --git a/lisp/gnus-kill.el b/lisp/gnus-kill.el index 41965a9..b7329bd 100644 --- a/lisp/gnus-kill.el +++ b/lisp/gnus-kill.el @@ -598,7 +598,7 @@ COMMAND must be a lisp expression or a string representing a key sequence." (setq did-kill (string-match regexp value))) (cond ((stringp form) ;Keyboard macro. (execute-kbd-macro form)) - ((gnus-functionp form) + ((functionp form) (funcall form)) (t (eval form))))) @@ -617,7 +617,7 @@ COMMAND must be a lisp expression or a string representing a key sequence." (setq did-kill (re-search-forward regexp nil t))) (cond ((stringp form) ;Keyboard macro. (execute-kbd-macro form)) - ((gnus-functionp form) + ((functionp form) (funcall form)) (t (eval form))))))) diff --git a/lisp/gnus-mailcap.el b/lisp/gnus-mailcap.el index 62baf32..1752cf7 100644 --- a/lisp/gnus-mailcap.el +++ b/lisp/gnus-mailcap.el @@ -49,6 +49,12 @@ table) "A syntax table for parsing sgml attributes.") +(eval-and-compile + (when (featurep 'xemacs) + (condition-case nil + (require 'lpr) + (error nil)))) + (defvar mailcap-print-command (mapconcat 'identity (cons (if (boundp 'lpr-command) @@ -172,7 +178,11 @@ ("sieve" (viewer . sieve-mode) (test . (fboundp 'sieve-mode)) - (type . "application/sieve"))) + (type . "application/sieve")) + ("pgp-keys" + (viewer . "gpg --import --interactive --verbose") + (type . "application/pgp-keys") + ("needsterminal"))) ("audio" ("x-mpeg" (viewer . "maplay %s") diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index 3f3eca3..6d2e1b0 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -172,9 +172,6 @@ See Info node `(gnus)Posting Styles'." :group 'gnus-message :type 'boolean) -(defvar gnus-inews-mark-gcc-as-read nil - "Obsolete variable. Use `gnus-gcc-mark-as-read' instead.") - (make-obsolete-variable 'gnus-inews-mark-gcc-as-read 'gnus-gcc-mark-as-read) @@ -545,7 +542,7 @@ Gcc: header for archiving purposes." (while (setq elem (pop alist)) (when (or (and (stringp (car elem)) (string-match (car elem) group)) - (and (gnus-functionp (car elem)) + (and (functionp (car elem)) (funcall (car elem) group)) (and (symbolp (car elem)) (symbol-value (car elem)))) @@ -553,11 +550,11 @@ Gcc: header for archiving purposes." (defun gnus-inews-add-send-actions (winconf buffer article &optional config yanked) - (make-local-hook 'message-sent-hook) + (gnus-make-local-hook 'message-sent-hook) (add-hook 'message-sent-hook (if gnus-agent 'gnus-agent-possibly-do-gcc 'gnus-inews-do-gcc) nil t) (when gnus-agent - (make-local-hook 'message-header-hook) + (gnus-make-local-hook 'message-header-hook) (add-hook 'message-header-hook 'gnus-agent-possibly-save-gcc nil t)) (setq message-post-method `(lambda (arg) @@ -720,7 +717,12 @@ network. The corresponding backend must have a 'request-post method." gnus-newsgroup-name)) ;; #### see comment in gnus-setup-message -- drv (gnus-setup-message 'message - (message-news (gnus-group-real-name gnus-newsgroup-name)))) + (progn + (message-news (gnus-group-real-name gnus-newsgroup-name)) + (set (make-local-variable 'gnus-discouraged-post-methods) + (delq + (car (gnus-find-method-for-group gnus-newsgroup-name)) + (copy-sequence gnus-discouraged-post-methods)))))) (save-excursion (set-buffer buffer) (setq gnus-newsgroup-name group))))) @@ -1319,7 +1321,8 @@ automatically." (defun gnus-summary-wide-reply-with-original (n) "Start composing a wide reply mail to the current message. -The original article will be yanked." +The original article will be yanked. +Uses the process/prefix convention." (interactive "P") (gnus-summary-reply-with-original n t)) @@ -1866,7 +1869,9 @@ this is a reply." ;; Gnus is not running? (gnus-alive-p) (or gnus-gcc-mark-as-read - gnus-inews-mark-gcc-as-read)) + (and + (boundp 'gnus-inews-mark-gcc-as-read) + (symbol-value 'gnus-inews-mark-gcc-as-read)))) (gnus-group-mark-article-read group (cdr group-art))) (kill-buffer (current-buffer))))))))) @@ -1877,7 +1882,7 @@ this is a reply." (message-narrow-to-headers) (let* ((group gnus-outgoing-message-group) (gcc (cond - ((gnus-functionp group) + ((functionp group) (funcall group)) ((or (stringp group) (list group)) group)))) @@ -1918,7 +1923,7 @@ this is a reply." ((and (listp var) (stringp (car var))) ;; A list of groups. var) - ((gnus-functionp var) + ((functionp var) ;; A function. (funcall var group)) (t @@ -1931,7 +1936,7 @@ this is a reply." ;; Regexp. (when (string-match (caar var) group) (cdar var))) - ((gnus-functionp (car var)) + ((functionp (car var)) ;; Function. (funcall (car var) group)) (t @@ -2016,9 +2021,9 @@ this is a reply." (and header (string-match (pop style) header)))))) ((or (symbolp match) - (gnus-functionp match)) + (functionp match)) (cond - ((gnus-functionp match) + ((functionp match) ;; Function to be called. (funcall match)) ((boundp match) @@ -2045,8 +2050,7 @@ this is a reply." (setq name (assq 'name results) address (assq 'address results)) (setq results (delq name (delq address results))) - ;; make-local-hook is not obsolete in Emacs 20 or XEmacs. - (make-local-hook 'message-setup-hook) + (gnus-make-local-hook 'message-setup-hook) (setq results (sort results (lambda (x y) (string-lessp (car x) (car y))))) (dolist (result results) @@ -2121,8 +2125,8 @@ this is a reply." ((stringp value) value) ((or (symbolp value) - (gnus-functionp value)) - (cond ((gnus-functionp value) + (functionp value)) + (cond ((functionp value) (funcall value)) ((boundp value) (symbol-value value)))) diff --git a/lisp/gnus-registry.el b/lisp/gnus-registry.el index 630b555..9d16500 100644 --- a/lisp/gnus-registry.el +++ b/lisp/gnus-registry.el @@ -33,17 +33,21 @@ (require 'gnus-sum) (require 'nnmail) +(defgroup gnus-registry nil + "The Gnus registry." + :group 'gnus) + (defvar gnus-registry-hashtb nil "*The article registry by Message ID.") -(setq gnus-registry-hashtb (make-hash-table - :size 4096 - :test 'equal)) ; we test message ID strings equality -;; sample data-header -;; (defvar tzz-header '(49 "Re[2]: good news" "\"Jonathan Pryor\" " "Mon, 17 Feb 2003 10:41:46 +-0800" "<88288020@dytqq>" "" 896 18 "lockgroove.bwh.harvard.edu spam.asian:49" nil)) +(defvar gnus-registry-headers-hashtb nil + "*The article header registry by Message ID.") -;; (maphash (lambda (key value) (message "key: %s value: %s" key value)) gnus-registry-hashtb) -;; (clrhash gnus-registry-hashtb) +(defcustom gnus-registry-unfollowed-groups '("delayed" "drafts" "queue") + "List of groups that gnus-registry-split-fancy-with-parent won't follow. +The group names are matched, they don't have to be fully qualified." + :group 'gnus-registry + :type '(repeat string)) ;; Function(s) missing in Emacs 20 (when (memq nil (mapcar 'fboundp '(puthash))) @@ -53,10 +57,14 @@ (defalias 'puthash 'cl-puthash))) (defun gnus-registry-translate-to-alist () - (setq gnus-registry-alist (hashtable-to-alist gnus-registry-hashtb))) + (setq gnus-registry-alist (hashtable-to-alist gnus-registry-hashtb)) + (setq gnus-registry-headers-alist (hashtable-to-alist + gnus-registry-headers-hashtb))) (defun gnus-registry-translate-from-alist () - (setq gnus-registry-hashtb (alist-to-hashtable gnus-registry-alist))) + (setq gnus-registry-hashtb (alist-to-hashtable gnus-registry-alist)) + (setq gnus-registry-headers-hashtb (alist-to-hashtable + gnus-registry-headers-alist))) (defun alist-to-hashtable (alist) "Build a hashtable from the values in ALIST." @@ -75,32 +83,99 @@ (maphash (lambda (key value) (setq list (cons (cons key value) list))) - hash))) + hash) + list)) (defun gnus-register-action (action data-header from &optional to method) (let* ((id (mail-header-id data-header)) - (hash-entry (gethash id gnus-registry-hashtb))) + (from (gnus-group-guess-full-name from)) + (to (if to (gnus-group-guess-full-name to) nil)) + (to-name (if to to "the Bit Bucket"))) (gnus-message 5 "Registry: article %s %s from %s to %s" - id - (if method "respooling" "going") - (gnus-group-guess-full-name from) - (if to (gnus-group-guess-full-name to) "the Bit Bucket")) - (unless hash-entry - (setq hash-entry (puthash id (list data-header) gnus-registry-hashtb))) - (puthash id (cons (list action from to method) - (gethash id gnus-registry-hashtb)) gnus-registry-hashtb))) + id + (if method "respooling" "going") + from + to) + (unless (gethash id gnus-registry-headers-hashtb) + (puthash id (list data-header) gnus-registry-headers-hashtb)) + (puthash id (cons (list action from to) + (gethash id gnus-registry-hashtb)) + gnus-registry-hashtb))) (defun gnus-register-spool-action (id group) - (gnus-message 5 "Registry: article %s spooled to %s" - id - (gnus-group-prefixed-name - group - gnus-internal-registry-spool-current-method - t)) - (puthash id (cons (list 'spool nil group nil) - (gethash id gnus-registry-hashtb)) gnus-registry-hashtb)) - -(add-hook 'gnus-summary-article-move-hook 'gnus-register-action) ; also does copy, respool, and crosspost + ;; do not process the draft IDs +; (unless (string-match "totally-fudged-out-message-id" id) + (let ((group (gnus-group-guess-full-name group))) + (when (string-match "\r$" id) + (setq id (substring id 0 -1))) + (gnus-message 5 "Registry: article %s spooled to %s" + id + group) + (puthash id (cons (list 'spool nil group) + (gethash id gnus-registry-hashtb)) + gnus-registry-hashtb))) +;) + +;; Function for nn{mail|imap}-split-fancy: look up all references in +;; the cache and if a match is found, return that group. +(defun gnus-registry-split-fancy-with-parent () + "Split this message into the same group as its parent. The parent +is obtained from the registry. This function can be used as an entry +in `nnmail-split-fancy' or `nnimap-split-fancy', for example like +this: (: gnus-registry-split-fancy-with-parent) + +For a message to be split, it looks for the parent message in the +References or In-Reply-To header and then looks in the registry to +see which group that message was put in. This group is returned. + +See the Info node `(gnus)Fancy Mail Splitting' for more details." + (let ((refstr (or (message-fetch-field "references") + (message-fetch-field "in-reply-to"))) + (references nil) + (res nil)) + (when refstr + (setq references (nreverse (gnus-split-references refstr))) + (mapcar (lambda (x) + (setq res (or (gnus-registry-fetch-group x) res)) + (when (or (gnus-registry-grep-in-list + res + gnus-registry-unfollowed-groups) + (gnus-registry-grep-in-list + res + nnmail-split-fancy-with-parent-ignore-groups)) + (setq res nil))) + references) + res))) + +(defun gnus-registry-grep-in-list (word list) + (memq nil + (mapcar 'not + (mapcar + (lambda (x) + (string-match x word)) + list)))) + + +(defun gnus-registry-fetch-group (id) + "Get the group of a message, based on the message ID. +Returns the first place where the trail finds a spool action." + (let ((trail (gethash id gnus-registry-hashtb))) + (dolist (crumb trail) + (let ((action (nth 0 crumb)) + (from (nth 1 crumb)) + (to (nth 2 crumb))) + (when (eq action 'spool) + (return to)))))) + +(defun gnus-registry-clear () + "Clear the Gnus registry." + (interactive) + (setq gnus-registry-alist nil + gnus-registry-headers-alist nil) + (gnus-registry-translate-from-alist)) + +; also does copy, respool, and crosspost +(add-hook 'gnus-summary-article-move-hook 'gnus-register-action) (add-hook 'gnus-summary-article-delete-hook 'gnus-register-action) (add-hook 'gnus-summary-article-expire-hook 'gnus-register-action) (add-hook 'nnmail-spool-hook 'gnus-register-spool-action) diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index f514d7f..865ecdc 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -2811,7 +2811,7 @@ The list is determined from the variable `gnus-score-file-alist'." ;; Go through all the functions for finding score files (or actual ;; scores) and add them to a list. (while funcs - (when (gnus-functionp (car funcs)) + (when (functionp (car funcs)) (setq score-files (append score-files (nreverse (funcall (car funcs) group))))) @@ -2914,7 +2914,7 @@ If ADAPT, return the home adaptive file instead." ((stringp elem) elem) ;; Function. - ((gnus-functionp elem) + ((functionp elem) (funcall elem group)) ;; Regexp-file cons. ((consp elem) diff --git a/lisp/gnus-sieve.el b/lisp/gnus-sieve.el index d4e557c..b11ade5 100644 --- a/lisp/gnus-sieve.el +++ b/lisp/gnus-sieve.el @@ -4,7 +4,7 @@ ;; Author: NAGY Andras , ;; Simon Josefsson -;; This file is not part of GNU Emacs, but the same permissions apply. +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -105,10 +105,11 @@ See the documentation for these variables and functions for details." (require 'sieve) (find-file gnus-sieve-file) (goto-char (point-min)) - (if (re-search-forward - (concat (regexp-quote gnus-sieve-region-start) "\\(.\\|\n\\)*" - (regexp-quote gnus-sieve-region-end)) nil t) - (delete-region (match-beginning 0) (match-end 0)) + (if (re-search-forward (regexp-quote gnus-sieve-region-start) nil t) + (delete-region (match-end 0) + (or (re-search-forward (regexp-quote + gnus-sieve-region-end) nil t) + (point))) (insert sieve-template)) (insert gnus-sieve-region-start (gnus-sieve-script gnus-sieve-select-method gnus-sieve-crosspost) diff --git a/lisp/gnus-srvr.el b/lisp/gnus-srvr.el index 796abbd..c759d19 100644 --- a/lisp/gnus-srvr.el +++ b/lisp/gnus-srvr.el @@ -678,7 +678,7 @@ The following commands are available: ["Subscribe" gnus-browse-unsubscribe-current-group t] ["Read" gnus-browse-read-group t] ["Select" gnus-browse-select-group t] - ["Describe" gnus-browse-describe-groups t] + ["Describe" gnus-browse-describe-group t] ["Next" gnus-browse-next-group t] ["Prev" gnus-browse-prev-group t] ["Exit" gnus-browse-exit t])) @@ -831,7 +831,7 @@ buffer. (if (or (not (gnus-get-info group)) (gnus-ephemeral-group-p group)) (unless (gnus-group-read-ephemeral-group - (gnus-group-real-name group) gnus-browse-current-method nil + group gnus-browse-current-method nil (cons (current-buffer) 'browse)) (error "Couldn't enter %s" group)) (unless (gnus-group-read-group nil no-article group) @@ -876,10 +876,9 @@ buffer. (beginning-of-line) (let ((name (get-text-property (point) 'gnus-group))) (when (re-search-forward ": \\(.*\\)$" (gnus-point-at-eol) t) - (gnus-group-prefixed-name - (or name - (match-string-no-properties 1)) - gnus-browse-current-method))))) + (concat (gnus-method-to-server-name gnus-browse-current-method) ":" + (or name + (match-string-no-properties 1))))))) (defun gnus-browse-describe-group (group) "Describe the current group." diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index 524be2e..bee9b60 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -35,7 +35,7 @@ (require 'gnus-spec) (require 'gnus-range) (require 'gnus-util) -(require 'message) +(autoload 'message-make-date "message") (defcustom gnus-startup-file (nnheader-concat gnus-home-directory ".newsrc") "Your `.newsrc' file. @@ -1038,7 +1038,7 @@ If LEVEL is non-nil, the news will be set up at level LEVEL." "Call METHOD to subscribe GROUP. If no function returns `non-nil', call `gnus-subscribe-zombies'." (unless (cond - ((gnus-functionp method) + ((functionp method) (funcall method group)) ((listp method) (catch 'found @@ -3042,6 +3042,7 @@ If FORCE is non-nil, the .newsrc file is read." (or (gnus-group-name-charset method name) (gnus-parameter-charset name) gnus-default-charset))) + ;; Fixme: Don't decode in unibyte mode. (when (and str charset (featurep 'mule)) (setq str (decode-coding-string str charset))) (set group str))) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 6624e04..7035aa3 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -1382,7 +1382,7 @@ This list will always be a subset of gnus-newsgroup-undownloaded.") (defvar gnus-article-before-search nil) -(defconst gnus-summary-local-variables +(defvar gnus-summary-local-variables '(gnus-newsgroup-name gnus-newsgroup-begin gnus-newsgroup-end gnus-newsgroup-last-rmail gnus-newsgroup-last-mail @@ -2118,9 +2118,9 @@ increase the score of each group you read." ,@(gnus-summary-menu-split (mapcar (lambda (cs) - ;; Since easymenu under FSF Emacs doesn't allow lambda - ;; forms for menu commands, we should provide intern'ed - ;; function symbols. + ;; Since easymenu under Emacs doesn't allow + ;; lambda forms for menu commands, we should + ;; provide intern'ed function symbols. (let ((command (intern (format "\ gnus-summary-show-article-from-menu-as-charset-%s" cs)))) (fset command @@ -2664,7 +2664,7 @@ The following commands are available: (make-local-variable 'gnus-summary-dummy-line-format) (make-local-variable 'gnus-summary-dummy-line-format-spec) (make-local-variable 'gnus-summary-mark-positions) - (make-local-hook 'pre-command-hook) + (gnus-make-local-hook 'pre-command-hook) (add-hook 'pre-command-hook 'gnus-set-global-variables nil t) (gnus-run-hooks 'gnus-summary-mode-hook) (turn-on-gnus-mailing-list-mode) @@ -3621,7 +3621,7 @@ If SHOW-ALL is non-nil, already read articles are also listed." ((eq gnus-auto-select-subject 'first) ;; Do nothing. ) - ((gnus-functionp gnus-auto-select-subject) + ((functionp gnus-auto-select-subject) (funcall gnus-auto-select-subject)))) (defun gnus-summary-prepare () @@ -4568,6 +4568,11 @@ Unscored articles will be counted as having a score of zero." If nil, use subject instead." :type 'string :group 'gnus-thread) +(defcustom gnus-sum-thread-tree-false-root "> " + "With %B spec, used for a false root of a thread. +If nil, use subject instead." + :type 'string + :group 'gnus-thread) (defcustom gnus-sum-thread-tree-single-indent "" "With %B spec, used for a thread with just one message. If nil, use subject instead." @@ -4838,9 +4843,12 @@ or a straight list of headers." (cond ((not gnus-show-threads) "") ((zerop gnus-tmp-level) - (if (cdar thread) - (or gnus-sum-thread-tree-root subject) - (or gnus-sum-thread-tree-single-indent subject))) + (cond ((cdar thread) + (or gnus-sum-thread-tree-root subject)) + (gnus-tmp-new-adopts + (or gnus-sum-thread-tree-false-root subject)) + (t + (or gnus-sum-thread-tree-single-indent subject)))) (t (concat (apply 'concat (mapcar (lambda (item) @@ -4871,7 +4879,7 @@ or a straight list of headers." (when (nth 1 thread) (push (list (max 0 gnus-tmp-level) - (copy-list tree-stack) + (copy-sequence tree-stack) (nthcdr 1 thread)) stack)) (push (if (nth 1 thread) 1 0) tree-stack) @@ -8649,8 +8657,8 @@ If ARG (the prefix) is a number, show the article with the charset defined in `gnus-summary-show-article-charset-alist', or the charset input. If ARG (the prefix) is non-nil and not a number, show the raw article -without any article massaging functions being run. Normally, the key strokes -are `C-u g'." +without any article massaging functions being run. Normally, the key +strokes are `C-u g'." (interactive "P") (cond ((numberp arg) @@ -9329,9 +9337,13 @@ deleted forever, right now." This command actually deletes articles. This is not a marking command. The article will disappear forever from your life, never to return. + If N is negative, delete backwards. If N is nil and articles have been marked with the process mark, -delete these instead." +delete these instead. + +If `gnus-novice-user' is non-nil you will be asked for +confirmation before the articles are deleted." (interactive "P") (unless (gnus-check-backend-function 'request-expire-articles gnus-newsgroup-name) @@ -10251,7 +10263,7 @@ If ALL is non-nil, also mark ticked and dormant articles as read." (gnus-summary-position-point)) (defun gnus-summary-catchup-from-here (&optional all) - "Mark all unticked articles after the current one as read. + "Mark all unticked articles after (and including) the current one as read. If ALL is non-nil, also mark ticked and dormant articles as read." (interactive "P") (save-excursion @@ -10468,7 +10480,7 @@ Returns nil if no thread was there to be shown." gnus-thread-hide-subtree) (gnus-summary-hide-all-threads (if (or (consp gnus-thread-hide-subtree) - (gnus-functionp gnus-thread-hide-subtree)) + (functionp gnus-thread-hide-subtree)) (gnus-make-predicate gnus-thread-hide-subtree) nil)))) @@ -10884,7 +10896,7 @@ save those articles instead." ;; Regular expression. (ignore-errors (re-search-forward match nil t))) - ((gnus-functionp match) + ((functionp match) ;; Function. (save-restriction (widen) @@ -11740,10 +11752,10 @@ returned." (mail-header-number h)) gnus-newsgroup-headers))) (setq gnus-newsgroup-headers - (merge 'list - gnus-newsgroup-headers - (gnus-fetch-headers articles) - 'gnus-article-sort-by-number)) + (gnus-merge 'list + gnus-newsgroup-headers + (gnus-fetch-headers articles) + 'gnus-article-sort-by-number)) ;; Suppress duplicates? (when gnus-suppress-duplicates (gnus-dup-suppress-articles)) @@ -11872,4 +11884,8 @@ If ALL is a number, fetch this number of articles." (run-hooks 'gnus-sum-load-hook) +;; Local Variables: +;; coding: iso-8859-1 +;; End: + ;;; gnus-sum.el ends here diff --git a/lisp/gnus-topic.el b/lisp/gnus-topic.el index d2879d9..07d501c 100644 --- a/lisp/gnus-topic.el +++ b/lisp/gnus-topic.el @@ -1154,7 +1154,7 @@ articles in the topic and its subtopics." 'gnus-group-sort-topic) (setq gnus-group-change-level-function 'gnus-topic-change-level) (setq gnus-goto-missing-group-function 'gnus-topic-goto-missing-group) - (make-local-hook 'gnus-check-bogus-groups-hook) + (gnus-make-local-hook 'gnus-check-bogus-groups-hook) (add-hook 'gnus-check-bogus-groups-hook 'gnus-topic-clean-alist nil 'local) (setq gnus-topology-checked-p nil) diff --git a/lisp/gnus-undo.el b/lisp/gnus-undo.el index 7dd333f..cbd506a 100644 --- a/lisp/gnus-undo.el +++ b/lisp/gnus-undo.el @@ -114,7 +114,7 @@ (when (gnus-visual-p 'undo-menu 'menu) (gnus-undo-make-menu-bar)) (gnus-add-minor-mode 'gnus-undo-mode "" gnus-undo-mode-map) - (make-local-hook 'post-command-hook) + (gnus-make-local-hook 'post-command-hook) (add-hook 'post-command-hook 'gnus-undo-boundary nil t) (gnus-run-hooks 'gnus-undo-mode-hook))) diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index e3e447f..30d17c1 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -111,17 +111,12 @@ ;; Added by Geoffrey T. Dairiki . A safe way ;; to limit the length of a string. This function is necessary since ;; `(substr "abc" 0 30)' pukes with "Args out of range". +;; Fixme: Why not `truncate-string-to-width'? (defsubst gnus-limit-string (str width) (if (> (length str) width) (substring str 0 width) str)) -(defsubst gnus-functionp (form) - "Return non-nil if FORM is funcallable." - (or (and (symbolp form) (fboundp form)) - (and (listp form) (eq (car form) 'lambda)) - (byte-code-function-p form))) - (defsubst gnus-goto-char (point) (and point (goto-char point))) @@ -160,6 +155,16 @@ (goto-char p)))) )) +;; The LOCAL arg to `add-hook' is interpreted differently in Emacs and +;; XEmacs. In Emacs we don't need to call `make-local-hook' first. +;; It's harmless, though, so the main purpose of this alias is to shut +;; up the byte compiler. +(defalias 'gnus-make-local-hook + (if (eq (get 'make-local-hook 'byte-compile) + 'byte-compile-obsolete) + 'ignore ; Emacs + 'make-local-hook)) ; XEmacs + (defun gnus-delete-first (elt list) "Delete by side effect the first occurrence of ELT as a member of LIST." (if (equal (car list) elt) @@ -609,7 +614,7 @@ If N, return the Nth ancestor instead." "Return a composite sort condition based on the functions in FUNC." (cond ;; Just a simple function. - ((gnus-functionp funs) funs) + ((functionp funs) funs) ;; No functions at all. ((null funs) funs) ;; A list of functions. @@ -634,7 +639,7 @@ If N, return the Nth ancestor instead." (setq function (cadr function) first 't2 last 't1)) - ((gnus-functionp function) + ((functionp function) ;; Do nothing. ) (t @@ -1079,6 +1084,7 @@ Return the modified alist." (while (search-backward "\\." nil t) (delete-char 1))))) +;; Fixme: Why not use `with-output-to-temp-buffer'? (defmacro gnus-with-output-to-file (file &rest body) (let ((buffer (make-symbol "output-buffer")) (size (make-symbol "output-buffer-size")) @@ -1146,6 +1152,9 @@ Return the modified alist." (remove-text-properties start end properties object)) t)) +;; This might use `compare-strings' to reduce consing in the +;; case-insensitive case, but it has to cope with null args. +;; (`string-equal' uses symbol print names.) (defun gnus-string-equal (x y) "Like `string-equal', except it compares case-insensitively." (and (= (length x) (length y)) @@ -1153,9 +1162,9 @@ Return the modified alist." (string-equal (downcase x) (downcase y))))) (defcustom gnus-use-byte-compile t - "If non-nil, byte-compile crucial run-time codes. -Setting it to nil has no effect after first time running -`gnus-byte-compile'." + "If non-nil, byte-compile crucial run-time code. +Setting it to nil has no effect after the first time `gnus-byte-compile' +is run." :type 'boolean :version "21.1" :group 'gnus-various) @@ -1218,7 +1227,7 @@ If you find some problem with the directory separator character, try (- x ?0))) (defun gnus-url-unhex-string (str &optional allow-newlines) - "Remove %XXX embedded spaces, etc in a url. + "Remove %XX, embedded spaces, etc in a url. If optional second argument ALLOW-NEWLINES is non-nil, then allow the decoding of carriage returns and line feeds in the string, which is normally forbidden in URL encoding." @@ -1415,8 +1424,7 @@ Return nil otherwise." display)) display))))) -(provide 'gnus-util) - +;; Fixme: This has only one use (in gnus-agent), which isn't worthwhile. (defmacro gnus-mapcar (function seq1 &rest seqs2_n) "Apply FUNCTION to each element of the sequences, and make a list of the results. If there are several sequences, FUNCTION is called with that many arguments, @@ -1451,4 +1459,21 @@ sequence, this is like `mapcar'. With several, it is like the Common Lisp (cdr ,result))) `(mapcar ,function ,seq1))) +(if (fboundp 'merge) + (defalias 'gnus-merge 'merge) + ;; Adapted from cl-seq.el + (defun gnus-merge (type list1 list2 pred) + "Destructively merge lists LIST1 and LIST2 to produce a new list. +Argument TYPE is for compatibility and ignored. +Ordering of the elements is preserved according to PRED, a `less-than' +predicate on the elements." + (let ((res nil)) + (while (and list1 list2) + (if (funcall pred (car list2) (car list1)) + (push (pop list2) res) + (push (pop list1) res))) + (nconc (nreverse res) list1 list2)))) + +(provide 'gnus-util) + ;;; gnus-util.el ends here diff --git a/lisp/gnus-vers.el b/lisp/gnus-vers.el index 83a20bf..dc7dc6f 100644 --- a/lisp/gnus-vers.el +++ b/lisp/gnus-vers.el @@ -40,10 +40,10 @@ ;; Product information of this gnus. (product-provide 'gnus-vers (product-define "T-gnus" nil - (list 6 15 18 + (list 6 15 19 (string-to-number gnus-revision-number)))) -(defconst gnus-original-version-number "0.18" +(defconst gnus-original-version-number "0.19" "Version number for this version of Gnus.") (provide 'running-pterodactyl-gnus-0_73-or-later) diff --git a/lisp/gnus-win.el b/lisp/gnus-win.el index f95e52e..0d578d7 100644 --- a/lisp/gnus-win.el +++ b/lisp/gnus-win.el @@ -305,7 +305,7 @@ See the Gnus manual for an explanation of the syntax used.") ;; The SPLIT might be something that is to be evaled to ;; return a new SPLIT. (while (and (not (assq (car split) gnus-window-to-buffer)) - (gnus-functionp (car split))) + (functionp (car split))) (setq split (eval split))) (let* ((type (car split)) (subs (cddr split)) @@ -368,7 +368,7 @@ See the Gnus manual for an explanation of the syntax used.") (while subs (setq sub (append (pop subs) nil)) (while (and (not (assq (car sub) gnus-window-to-buffer)) - (gnus-functionp (car sub))) + (functionp (car sub))) (setq sub (eval sub))) (when sub (push sub comp-subs) @@ -507,7 +507,7 @@ should have point." ;; The SPLIT might be something that is to be evaled to ;; return a new SPLIT. (while (and (not (assq (car split) gnus-window-to-buffer)) - (gnus-functionp (car split))) + (functionp (car split))) (setq split (eval split))) (setq type (elt split 0)) diff --git a/lisp/gnus.el b/lisp/gnus.el index af67aca..336c361 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -1844,20 +1844,20 @@ This only makes sense for mail groups." When a spam group is entered, all unread articles are marked as spam.") (defvar gnus-group-spam-exit-processor-ifile "ifile" - "The ifile summary exit spam processor. -Only applicable to spam groups.") + "The ifile summary exit spam processor.") (defvar gnus-group-spam-exit-processor-stat "stat" - "The spam-stat summary exit spam processor. -Only applicable to spam groups.") + "The spam-stat summary exit spam processor.") (defvar gnus-group-spam-exit-processor-bogofilter "bogofilter" - "The Bogofilter summary exit spam processor. -Only applicable to spam groups.") + "The Bogofilter summary exit spam processor.") (defvar gnus-group-spam-exit-processor-blacklist "blacklist" - "The Blacklist summary exit spam processor. -Only applicable to spam groups.") + "The Blacklist summary exit spam processor.") + + (defvar gnus-group-spam-exit-processor-report-gmane "report-gmane" + "The Gmane reporting summary exit spam processor. +Only applicable to NNTP groups with articles from Gmane. See spam-report.el") (defvar gnus-group-ham-exit-processor-ifile "ifile-ham" "The ifile summary exit ham processor. @@ -1894,6 +1894,7 @@ Only applicable to non-spam (unclassified and ham) groups.") (variable-item gnus-group-spam-exit-processor-stat) (variable-item gnus-group-spam-exit-processor-bogofilter) (variable-item gnus-group-spam-exit-processor-blacklist) + (variable-item gnus-group-spam-exit-processor-report-gmane) (variable-item gnus-group-ham-exit-processor-bogofilter) (variable-item gnus-group-ham-exit-processor-ifile) (variable-item gnus-group-ham-exit-processor-stat) @@ -1919,6 +1920,7 @@ for mail groups." (variable-item gnus-group-spam-exit-processor-stat) (variable-item gnus-group-spam-exit-processor-bogofilter) (variable-item gnus-group-spam-exit-processor-blacklist) + (variable-item gnus-group-spam-exit-processor-report-gmane) (variable-item gnus-group-ham-exit-processor-bogofilter) (variable-item gnus-group-ham-exit-processor-ifile) (variable-item gnus-group-ham-exit-processor-stat) @@ -2331,6 +2333,7 @@ This variable can be nil, gnus or gnus-ja." gnus-newsrc-last-checked-date gnus-newsrc-alist gnus-server-alist gnus-registry-alist + gnus-registry-headers-alist gnus-killed-list gnus-zombie-list gnus-topic-topology gnus-topic-alist gnus-agent-covered-methods) @@ -2378,6 +2381,10 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") "Assoc list of registry data. gnus-registry.el will populate this if it's loaded.") +(defvar gnus-registry-headers-alist nil + "Assoc list of registry header data. +gnus-registry.el will populate this if it's loaded.") + (defvar gnus-newsrc-hashtb nil "Hashtable of gnus-newsrc-alist.") @@ -3264,12 +3271,16 @@ that that variable is buffer-local to the summary buffers." (format "%s+%s" (car method) (nth 1 method))) (defun gnus-group-prefixed-name (group method &optional full) - "Return the whole name from GROUP and METHOD. Call with full set to -get the fully qualified group name (even if the server is native)." - (and (stringp method) (setq method (gnus-server-to-method method))) + "Return the whole name from GROUP and METHOD. +Call with full set to get the fully qualified group name (even if the +server is native)." + (when (stringp method) + (setq method (gnus-server-to-method method))) (if (or (not method) (and (not full) (gnus-server-equal method "native")) - (string-match ":" group)) + ;;;!!! This might not be right. We'll see... + ;(string-match ":" group) + ) group (concat (gnus-method-to-server-name method) ":" group))) @@ -3285,7 +3296,9 @@ native." (defun gnus-group-guess-full-name (group) "Guess the full name from GROUP, even if the method is native." - (gnus-group-full-name group (gnus-find-method-for-group group))) + (if (gnus-group-prefixed-p group) + group + (gnus-group-full-name group (gnus-find-method-for-group group)))) (defun gnus-group-real-prefix (group) "Return the prefix of the current group name." @@ -3293,6 +3306,17 @@ native." (substring group 0 (match-end 0)) "")) +(defun gnus-group-short-name (group) + "Return the short group name." + (let ((prefix (gnus-group-real-prefix group))) + (if (< 0 (length prefix)) + (substring group (length prefix) nil) + group))) + +(defun gnus-group-prefixed-p (group) + "Return the prefix of the current group name." + (< 0 (length (gnus-group-real-prefix group)))) + (defun gnus-summary-buffer-name (group) "Return the summary buffer name of GROUP." (concat "*Summary " (gnus-group-decoded-name group) "*")) diff --git a/lisp/imap.el b/lisp/imap.el index 15a7b60..88dda14 100644 --- a/lisp/imap.el +++ b/lisp/imap.el @@ -532,6 +532,7 @@ sure of changing the value of `foo'." cmd done) (while (and (not done) (setq cmd (pop cmds))) (message "Opening GSSAPI IMAP connection with `%s'..." cmd) + (erase-buffer) (let* ((port (or port imap-default-port)) (process-connection-type imap-process-connection-type) (process (as-binary-process @@ -595,6 +596,7 @@ sure of changing the value of `foo'." cmd done) (while (and (not done) (setq cmd (pop cmds))) (message "imap: Opening SSL connection with `%s'..." cmd) + (erase-buffer) (let ((port (or port imap-default-ssl-port)) (process-connection-type nil) process) diff --git a/lisp/lpath.el b/lisp/lpath.el index bd4a7eb..06d2bd1 100644 --- a/lisp/lpath.el +++ b/lisp/lpath.el @@ -30,15 +30,14 @@ (if (featurep 'xemacs) (progn - (maybe-fbind '(ccl-execute-on-string - Info-directory Info-menu - char-charset charsetp coding-system-get - coding-system-list coding-system-p decode-coding-region - decode-coding-string define-ccl-program delete-overlay - detect-coding-region encode-coding-region - encode-coding-string event-click-count event-end - event-start find-charset-region - find-coding-systems-for-charsets + (maybe-fbind '(Info-directory + Info-menu ccl-execute-on-string char-charset charsetp + coding-system-get coding-system-list coding-system-p + decode-coding-region decode-coding-string + define-ccl-program delete-overlay detect-coding-region + encode-coding-region encode-coding-string + event-click-count event-end event-start + find-charset-region find-coding-systems-for-charsets find-coding-systems-region find-coding-systems-string get-charset-property mail-abbrevs-setup mouse-minibuffer-check mouse-movement-p mouse-scroll-subr @@ -52,7 +51,9 @@ enable-multibyte-characters gnus-agent-expire-current-dirs language-info-alist mark-active mouse-selection-click-count mouse-selection-click-count-buffer pgg-parse-crc24 - temporary-file-directory transient-mark-mode))) + temporary-file-directory transient-mark-mode + w3-meta-content-type-charset-regexp + w3-meta-charset-content-type-regexp))) (maybe-fbind '(bbdb-complete-name delete-annotation device-connection dfw-device events-to-keys font-lock-set-defaults frame-device @@ -79,8 +80,9 @@ '(function-max-args smiley-encode-buffer)) ((boundp 'MULE) '(charsetp - coding-system-get coding-system-list coding-system-to-mime-charset - compose-mail file-name-extension find-coding-systems-for-charsets + coding-system-base coding-system-get coding-system-list + coding-system-to-mime-charset compose-mail + file-name-extension find-coding-systems-for-charsets find-coding-systems-region function-max-args get-charset-property smiley-encode-buffer smtpmail-send-it)) (t diff --git a/lisp/message.el b/lisp/message.el index 566585d..8d26869 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -346,7 +346,8 @@ Checks include `subject-cmsg', `multiple-headers', `sendsys', :group 'message-news :type '(repeat sexp)) ; Fixme: improve this -(defcustom message-required-headers '((optional . References) From) +(defcustom message-required-headers '((optional . References) + From (optional . In-Reply-To)) "*Headers to be generated or prompted for when sending a message. Also see `message-required-news-headers' and `message-required-mail-headers'." @@ -846,7 +847,11 @@ variable isn't used." ;; create a dependence to `gnus.el'. :type 'sexp) -(defcustom message-generate-headers-first nil +;; FIXME: This should be a temporary workaround until someone implements a +;; proper solution. If a crash happens while replying, the auto-save file +;; will *not* have a `References:' header if `message-generate-headers-first' +;; is nil. See: http://article.gmane.org/gmane.emacs.gnus.general/51138 +(defcustom message-generate-headers-first '(references) "*If non-nil, generate all required headers before composing. The variables `message-required-news-headers' and `message-required-mail-headers' specify which headers to generate. @@ -858,6 +863,7 @@ are to be deleted and then re-generated before sending, so this variable will not have a visible effect for those headers." :group 'message-headers :type '(choice (const :tag "None" nil) + (const :tag "References" '(references)) (const :tag "All" t) (repeat (sexp :tag "Header")))) @@ -1665,6 +1671,7 @@ no, only reply back to the author." (autoload 'gnus-groups-from-server "gnus") (autoload 'rmail-output "rmailout") (autoload 'gnus-delay-article "gnus-delay") + (autoload 'gnus-make-local-hook "gnus-util") (autoload 'mu-cite-original "mu-cite")) @@ -2583,9 +2590,7 @@ M-RET `message-newline-and-reformat' (break the line and reformat)." (set (make-local-variable 'tool-bar-map) (message-tool-bar-map)))) (easy-menu-add message-mode-menu message-mode-map) (easy-menu-add message-mode-field-menu message-mode-map) - ;; make-local-hook is harmless though obsolete in Emacs 21. - ;; Emacs 20 and XEmacs need make-local-hook. - (make-local-hook 'after-change-functions) + (gnus-make-local-hook 'after-change-functions) ;; Mmmm... Forbidden properties... (add-hook 'after-change-functions 'message-strip-forbidden-properties nil 'local) @@ -4997,9 +5002,9 @@ If NOW, use that time instead." (lsh (% message-unique-id-char 25) 16)) 4) (message-number-base36 (+ (nth 1 tm) (lsh (/ message-unique-id-char 25) 16)) 4) - ;; Append the newsreader name, because while the generated - ;; ID is unique to this newsreader, other newsreaders might - ;; otherwise generate the same ID via another algorithm. + ;; Append a given name, because while the generated ID is unique + ;; to this newsreader, other newsreaders might otherwise generate + ;; the same ID via another algorithm. ".fsf"))) (defun message-number-base36 (num len) @@ -7307,9 +7312,9 @@ regexp varstr." (message-next-header) (let ((begin (point))) (message-next-header) - (add-text-properties begin (point) - '(intangible t invisible t - message-hidden t)))))))))) + (add-text-properties + begin (point) + '(invisible t message-hidden t)))))))))) (defun message-hide-header-p (regexps) (let ((result nil) diff --git a/lisp/mm-bodies.el b/lisp/mm-bodies.el index 9a7d7b5..ee14049 100644 --- a/lisp/mm-bodies.el +++ b/lisp/mm-bodies.el @@ -266,18 +266,12 @@ use the supplied charset unconditionally." (setq coding-system mail-parse-charset)) (not (eq coding-system 'gnus-decoded))) (if (or force - ;; If a charset was supplied and `code-pages' - ;; hasn't been loaded, then use the supplied - ;; charset unconditionally. - (and (not (featurep 'code-pages)) - charset-supplied)) + ;; If a charset was supplied, then use the + ;; supplied charset unconditionally. + charset-supplied) (mm-decode-coding-region (point-min) (point-max) coding-system) ;; Otherwise allow Emacs to auto-detect the charset. - ;; Messages in windows-125x are frequently incorrectly - ;; advertised as iso-8859-x -- if `code-pages' has been - ;; loaded and configured, we're able to deal with them - ;; properly. (mm-decode-coding-region-safely (point-min) (point-max) coding-system))) (setq buffer-file-coding-system diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index 8c47948..d7b1c73 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -308,9 +308,11 @@ to: :group 'mime-display) (defcustom mm-tmp-directory - (cond ((fboundp 'temp-directory) (temp-directory)) - ((boundp 'temporary-file-directory) temporary-file-directory) - ("/tmp/")) + (if (fboundp 'temp-directory) + (temp-directory) + (if (boundp 'temporary-file-directory) + temporary-file-directory + "/tmp/")) "Where mm will store its temporary files." :type 'directory :group 'mime-display) diff --git a/lisp/mm-util.el b/lisp/mm-util.el index 8964fbc..85dc2b3 100644 --- a/lisp/mm-util.el +++ b/lisp/mm-util.el @@ -74,7 +74,9 @@ (string-as-unibyte . identity) (string-make-unibyte . identity) (string-as-multibyte . identity) - (multibyte-string-p . ignore)))) + (multibyte-string-p . ignore) + (insert-byte . insert-char) + (multibyte-char-to-unibyte . identity)))) (eval-and-compile (defalias 'mm-char-or-char-int-p @@ -157,6 +159,11 @@ (defvar mm-auto-save-coding-system (cond + ((mm-coding-system-p 'utf-8-emacs) ; Mule 7 + (if (memq system-type '(windows-nt ms-dos ms-windows)) + (if (mm-coding-system-p 'utf-8-emacs-dos) + 'utf-8-emacs-dos mm-binary-coding-system) + 'utf-8-emacs)) ((mm-coding-system-p 'emacs-mule) (if (memq system-type '(windows-nt ms-dos ms-windows)) (if (mm-coding-system-p 'emacs-mule-dos) @@ -235,9 +242,11 @@ 'nconc (mapcar (lambda (cs) - (when (and (coding-system-get cs 'mime-charset) + (when (and (or (coding-system-get cs :mime-charset) ; Emacs 22 + (coding-system-get cs 'mime-charset)) (not (eq t (coding-system-get cs 'safe-charsets)))) - (list (cons (coding-system-get cs 'mime-charset) + (list (cons (or (coding-system-get cs :mime-charset) + (coding-system-get cs 'mime-charset)) (delq 'ascii (coding-system-get cs 'safe-charsets)))))) (sort-coding-systems (coding-system-list 'base-only)))))) @@ -281,13 +290,14 @@ Valid elements include: iso-latin-1 utf-8))))) "Preferred coding systems for encoding outgoing mails. -More than one suitable coding systems may be found for some texts. By -default, a coding system with the highest priority is used to encode +More than one suitable coding system may be found for some text. By +default, the coding system with the highest priority is used to encode outgoing mails (see `sort-coding-systems'). If this variable is set, it overrides the default priority." :type '(repeat (symbol :tag "Coding system")) :group 'mime) +;; ?? (defvar mm-use-find-coding-systems-region (fboundp 'find-coding-systems-region) "Use `find-coding-systems-region' to find proper coding systems. @@ -309,7 +319,8 @@ mail with multiple parts is preferred to sending a Unicode one.") (find-coding-systems-for-charsets (list charset))))) (unless mime (when cs - (setq mime (coding-system-get cs 'mime-charset))))) + (setq mime (or (coding-system-get cs :mime-charset) + (coding-system-get cs 'mime-charset)))))) mime) (let ((alist mm-mime-mule-charset-alist) out) @@ -358,7 +369,8 @@ used as the line break code type of the coding system." ;; Do we need -lbt? (dolist (c (mm-get-coding-system-list)) (if (and (null cs) - (eq charset (coding-system-get c 'mime-charset))) + (eq charset (or (coding-system-get c :mime-charset) + (coding-system-get c 'mime-charset)))) (setq cs c))) cs)))) @@ -457,8 +469,10 @@ If the charset is `composition', return the actual one." ;; This exists in Emacs 20. (or (and (mm-preferred-coding-system charset) - (coding-system-get - (mm-preferred-coding-system charset) 'mime-charset)) + (or (coding-system-get + (mm-preferred-coding-system charset) :mime-charset) + (coding-system-get + (mm-preferred-coding-system charset) 'mime-charset))) (and (eq charset 'ascii) 'us-ascii) (mm-preferred-coding-system charset) @@ -505,8 +519,14 @@ If the charset is `composition', return the actual one." (not inconvertible)))) (defun mm-sort-coding-systems-predicate (a b) - (> (length (memq a mm-coding-system-priorities)) - (length (memq b mm-coding-system-priorities)))) + (let ((priorities + (mapcar (lambda (cs) + ;; Note: invalid entries are dropped silently + (and (coding-system-p cs) + (coding-system-base cs))) + mm-coding-system-priorities))) + (> (length (memq a priorities)) + (length (memq b priorities))))) (defun mm-find-mime-charset-region (b e &optional hack-charsets) "Return the MIME charsets needed to encode the region between B and E. @@ -522,18 +542,27 @@ charset, and a longer list means no appropriate charset." (when mm-coding-system-priorities (setq systems (sort systems 'mm-sort-coding-systems-predicate))) - ;; Fixme: The `mime-charset' (`x-ctext') of `compound-text' - ;; is not in the IANA list. (setq systems (delq 'compound-text systems)) (unless (equal systems '(undecided)) (while systems - (let ((cs (coding-system-get (pop systems) 'mime-charset))) - (if cs + (let* ((head (pop systems)) + (cs (or (coding-system-get head :mime-charset) + (coding-system-get head 'mime-charset)))) + ;; The mime-charset (`x-ctext') of + ;; `compound-text' is not in the IANA list. We + ;; shouldn't normally use anything here with a + ;; mime-charset having an `x-' prefix. + ;; Fixme: allow this to be overridden, since + ;; there is existing use of x-ctext. + ;; Also people apparently need the coding system + ;; `iso-2022-jp-3', which Mule-UCS defines. + (if (and cs + (not (string-match "^[Xx]-" (symbol-name cs)))) (setq systems nil charsets (list cs)))))) charsets)) - ;; Otherwise we're not multibyte, XEmacs or a single coding - ;; system won't cover it. + ;; Otherwise we're not multibyte, we're XEmacs or a single + ;; coding system won't cover it. (setq charsets (mm-delete-duplicates (mapcar 'mm-mime-charset @@ -559,7 +588,7 @@ Use unibyte mode for this." (put 'mm-with-unibyte-buffer 'edebug-form-spec '(body)) (defmacro mm-with-unibyte-current-buffer (&rest forms) - "Evaluate FORMS with current current buffer temporarily made unibyte. + "Evaluate FORMS with current buffer temporarily made unibyte. Also bind `default-enable-multibyte-characters' to nil. Equivalent to `progn' in XEmacs" (let ((multibyte (make-symbol "multibyte")) @@ -673,7 +702,7 @@ Mule4 only." A buffer may be modified in several ways after reading into the buffer due to advanced Emacs features, such as file-name-handlers, format decoding, find-file-hooks, etc. -If INHIBIT is non-nil, inhibit mm-inhibit-file-name-handlers. +If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'. This function ensures that none of these modifications will take place." (let ((format-alist nil) (auto-mode-alist (if inhibit nil (mm-auto-mode-alist))) diff --git a/lisp/mm-view.el b/lisp/mm-view.el index 2a6f9ed..e80fb68 100644 --- a/lisp/mm-view.el +++ b/lisp/mm-view.el @@ -327,7 +327,7 @@ map."))) (if entry (setq func (cdr entry))) (cond - ((gnus-functionp func) + ((functionp func) (funcall func handle)) (t (apply (car func) handle (cdr func)))))) diff --git a/lisp/mml-sec.el b/lisp/mml-sec.el index a55e170..c18cf2f 100644 --- a/lisp/mml-sec.el +++ b/lisp/mml-sec.el @@ -2,7 +2,8 @@ ;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ;; Author: Simon Josefsson -;; This file is not part of GNU Emacs, but the same permissions apply. + +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -23,10 +24,14 @@ ;;; Code: -(require 'mml2015) -(require 'mml1991) (require 'mml-smime) (eval-when-compile (require 'cl)) +(autoload 'mml2015-sign "mml2015") +(autoload 'mml2015-encrypt "mml2015") +(autoload 'mml1991-sign "mml1991") +(autoload 'mml1991-encrypt "mml1991") +(autoload 'message-goto-body "message") +(autoload 'mml-insert-tag "mml") (defvar mml-sign-alist '(("smime" mml-smime-sign-buffer mml-smime-sign-query) diff --git a/lisp/mml-smime.el b/lisp/mml-smime.el index 5939b08..bccc8a1 100644 --- a/lisp/mml-smime.el +++ b/lisp/mml-smime.el @@ -1,10 +1,10 @@ ;;; mml-smime.el --- S/MIME support for MML -;; Copyright (c) 2000, 2001 Free Software Foundation, Inc. +;; Copyright (c) 2000, 2001, 2003 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: Gnus, MIME, S/MIME, MML -;; This file is a part of GNU Emacs. +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published diff --git a/lisp/mml.el b/lisp/mml.el index 703aa1b..8b865dc 100644 --- a/lisp/mml.el +++ b/lisp/mml.el @@ -35,6 +35,7 @@ (autoload 'message-make-message-id "message") (autoload 'gnus-setup-posting-charset "gnus-msg") (autoload 'gnus-add-minor-mode "gnus-ems") + (autoload 'gnus-make-local-hook "gnus-util") (autoload 'message-fetch-field "message") (autoload 'fill-flowed-encode "flow-fill") (autoload 'message-posting-charset "message")) @@ -1070,12 +1071,21 @@ If RAW, don't highlight the article." (gnus-article-prepare-display)))) ;; Disable article-mode-map. (use-local-map nil) - (make-local-hook 'kill-buffer-hook) + (gnus-make-local-hook 'kill-buffer-hook) (add-hook 'kill-buffer-hook (lambda () (mm-destroy-parts gnus-article-mime-handles)) nil t) (setq buffer-read-only t) (local-set-key "q" (lambda () (interactive) (kill-buffer nil))) + (local-set-key "=" (lambda () (interactive) (delete-other-windows))) + (local-set-key "\r" + (lambda () + (interactive) + (widget-button-press (point)))) + (local-set-key gnus-mouse-2 + (lambda (event) + (interactive "@e") + (widget-button-press (widget-event-point event) event))) (goto-char (point-min))))) (defun mml-validate () diff --git a/lisp/mml1991.el b/lisp/mml1991.el index e675008..741cfe2 100644 --- a/lisp/mml1991.el +++ b/lisp/mml1991.el @@ -5,7 +5,7 @@ ;; Simon Josefsson (Mailcrypt interface, Gnus glue) ;; Keywords PGP -;; This file is (not yet) part of GNU Emacs. +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -26,6 +26,13 @@ ;;; Code: +(eval-when-compile + (require 'cl) + (require 'mm-util)) + +(autoload 'quoted-printable-decode-region "qp") +(autoload 'quoted-printable-encode-region "qp") + (defvar mml1991-use mml2015-use "The package used for PGP.") diff --git a/lisp/mml2015.el b/lisp/mml2015.el index 957e485..7a4d763 100644 --- a/lisp/mml2015.el +++ b/lisp/mml2015.el @@ -807,7 +807,9 @@ (defun mml2015-pgg-sign (cont) (let ((pgg-errors-buffer mml2015-result-buffer) - (boundary (funcall mml-boundary-function (incf mml-multipart-number)))) + (boundary (funcall mml-boundary-function (incf mml-multipart-number))) + (pgg-default-user-id (or (message-options-get 'message-sender) + pgg-default-user-id))) (unless (pgg-sign-region (point-min) (point-max)) (pop-to-buffer mml2015-result-buffer) (error "Sign error")) diff --git a/lisp/nndb.el b/lisp/nndb.el index cfcc0c6..986f84c 100644 --- a/lisp/nndb.el +++ b/lisp/nndb.el @@ -8,7 +8,7 @@ ;; David Blacka ;; Keywords: news -;; This file is NOT part of GNU Emacs. +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by diff --git a/lisp/nndiary.el b/lisp/nndiary.el index 0484dc8..cec8ee4 100644 --- a/lisp/nndiary.el +++ b/lisp/nndiary.el @@ -1410,7 +1410,7 @@ all. This may very well take some time.") (nth 6 date-elts)))) reminder res) ;; remove the DOW and DST entries - (setf (nthcdr 6 date-elts) (nthcdr 8 date-elts)) + (setcdr (nthcdr 5 date-elts) (nthcdr 8 date-elts)) (while (setq reminder (pop reminders)) (push (cond ((eq (cdr reminder) 'minute) diff --git a/lisp/nnheader.el b/lisp/nnheader.el index da24c44..b994e58 100644 --- a/lisp/nnheader.el +++ b/lisp/nnheader.el @@ -300,7 +300,14 @@ nil, ." temporary-file-directory)))) (if dir-flag (make-directory file)) - file))))) + file)))) + + ;; Should keep track of `mm-coding-system-p' in mm-util.el. + (defun nnheader-coding-system-p (sym) + "Return non-nil if SYM is a coding system." + (or (and (fboundp 'find-coding-system) (find-coding-system sym)) + (and (fboundp 'coding-system-p) (coding-system-p sym)))) + (defalias 'mm-coding-system-p 'nnheader-coding-system-p)) ;; mail-parse stuff. (unless (featurep 'mail-parse) diff --git a/lisp/nnimap.el b/lisp/nnimap.el index 8415705..306f54e 100644 --- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -1268,7 +1268,9 @@ function is generally only called when Gnus is shutting down." (when (setq rule (nnimap-split-find-rule server inbox)) ;; iterate over articles (dolist (article (imap-search nnimap-split-predicate)) - (when (if nnimap-split-download-body + (when (if (if (eq nnimap-split-download-body 'default) + nnimap-split-download-body-default + nnimap-split-download-body) (and (nnimap-request-article article) (mail-narrow-to-head)) (nnimap-request-head article)) @@ -1286,16 +1288,18 @@ function is generally only called when Gnus is shutting down." (setq removeorig t) (when nnmail-cache-accepted-message-ids (with-current-buffer nntp-server-buffer - (let (msgid) - (and (setq msgid + (let (msgid) + (and (setq msgid (nnmail-fetch-field "message-id")) - (nnmail-cache-insert msgid to-group))))) + (nnmail-cache-insert msgid to-group))))) ;; Add the group-art list to the history list. (push (list (cons to-group 0)) nnmail-split-history)) (t (message "IMAP split failed to move %s:%s:%d to %s" server inbox article to-group)))) - (if nnimap-split-download-body + (if (if (eq nnimap-split-download-body 'default) + nnimap-split-download-body-default + nnimap-split-download-body) (widen)) ;; remove article if it was successfully copied somewhere (and removeorig diff --git a/lisp/nnmail.el b/lisp/nnmail.el index 14ee4c5..06ee776 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -28,6 +28,7 @@ (eval-when-compile (require 'cl)) +(require 'gnus) ; for macro gnus-kill-buffer, at least (require 'nnheader) (require 'message) (require 'custom) @@ -1545,7 +1546,7 @@ See the documentation for the variable `nnmail-split-fancy' for details." (defun nnmail-split-fancy-with-parent () "Split this message into the same group as its parent. This function can be used as an entry in `nnmail-split-fancy', for -example like this: (: nnmail-split-fancy) +example like this: (: nnmail-split-fancy-with-parent) For a message to be split, it looks for the parent message in the References or In-Reply-To header and then looks in the message id cache file (given by the variable `nnmail-message-id-cache-file') to diff --git a/lisp/nnmaildir.el b/lisp/nnmaildir.el index eeee5de..65bb5bd 100644 --- a/lisp/nnmaildir.el +++ b/lisp/nnmaildir.el @@ -801,11 +801,13 @@ by nnmaildir-request-article.") (setq dirs (funcall srv-ls srv-dir nil "\\`[^.]" 'nosort) dirs (if (zerop (length target-prefix)) dirs - (remove-if (lambda (dir) - (and (>= (length dir) (length target-prefix)) - (string= (substring dir 0 (length target-prefix)) - target-prefix))) - dirs)) + (gnus-remove-if + (lambda (dir) + (and (>= (length dir) (length target-prefix)) + (string= (substring dir 0 + (length target-prefix)) + target-prefix))) + dirs)) seen (nnmaildir--up2-1 (length dirs)) seen (make-vector seen 0)) (mapcar diff --git a/lisp/nnmbox.el b/lisp/nnmbox.el index 3cb586f..1d39aae 100644 --- a/lisp/nnmbox.el +++ b/lisp/nnmbox.el @@ -57,7 +57,7 @@ (defvoo nnmbox-current-group nil "Current nnmbox news group directory.") -(defconst nnmbox-mbox-buffer nil) +(defvar nnmbox-mbox-buffer nil) (defvoo nnmbox-status-string "") diff --git a/lisp/nnrss.el b/lisp/nnrss.el index 12f2918..23d5fc1 100644 --- a/lisp/nnrss.el +++ b/lisp/nnrss.el @@ -405,7 +405,8 @@ ARTICLE is the article number of the current headline.") ;;; Snarf functions (defun nnrss-check-group (group server) - (let (file xml subject url extra changed author date rss-ns rdf-ns content-ns dc-ns) + (let (file xml subject url extra changed author + date rss-ns rdf-ns content-ns dc-ns) (if (and nnrss-use-local (file-exists-p (setq file (expand-file-name (nnrss-translate-file-chars @@ -416,7 +417,9 @@ ARTICLE is the article number of the current headline.") (second (assoc group nnrss-group-alist)))) (unless url (setq url - (nnrss-discover-feed (read-string (format "URL to search for %s: " group) "http://"))) + (nnrss-discover-feed + (read-string + (format "URL to search for %s: " group) "http://"))) (let ((pair (assoc group nnrss-server-data))) (if pair (setcdr (cdr pair) (list url)) @@ -514,15 +517,13 @@ It is useful when `(setq nnrss-use-local t)'." (gnus-replace-in-string (nnrss-string-as-multibyte string) " *\n *" " ")) (defun nnrss-node-text (namespace local-name element) - (let* ((node (assq (intern (concat namespace (symbol-name local-name))) element)) + (let* ((node (assq (intern (concat namespace (symbol-name local-name))) + element)) (text (if (and node (listp node)) (nnrss-node-just-text node) node)) - (cleaned-text (if text - (replace-regexp-in-string - " *$" "" (replace-regexp-in-string - "^ *" "" (replace-regexp-in-string - "^[[:cntrl:]]+" "" text)))))) + (cleaned-text (if text (gnus-replace-in-string + text "^[[:cntrl:]]+\\|^ +\\| +$" "")))) (if (string-equal "" cleaned-text) nil cleaned-text))) diff --git a/lisp/qp.el b/lisp/qp.el index 52f6999..62d7562 100644 --- a/lisp/qp.el +++ b/lisp/qp.el @@ -1,6 +1,6 @@ ;;; qp.el --- Quoted-Printable functions -;; Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail, extensions @@ -32,13 +32,18 @@ (require 'mm-util) (eval-when-compile (defvar mm-use-ultra-safe-encoding)) +;;;###autoload (defun quoted-printable-decode-region (from to &optional coding-system) "Decode quoted-printable in the region between FROM and TO, per RFC 2045. If CODING-SYSTEM is non-nil, decode bytes into characters with that coding-system. Interactively, you can supply the CODING-SYSTEM argument -with \\[universal-coding-system-argument]." +with \\[universal-coding-system-argument]. + +The CODING-SYSTEM argument is a historical hangover and is deprecated. +QP encodes raw bytes and should be decoded into raw bytes. Decoding +them into characters should be done separately." (interactive ;; Let the user determine the coding system with "C-x RET c". (list (region-beginning) (region-end) coding-system-for-read)) @@ -66,14 +71,10 @@ with \\[universal-coding-system-argument]." (let ((byte (string-to-int (buffer-substring (1+ (point)) (+ 3 (point))) 16))) - (insert byte) - (delete-char 3) - ;; Why backward-char??? - ;;(unless (eq byte 61) ;; 61 is not ?= in XEmacs - ;; (backward-char)) - )) + (mm-insert-byte byte 1) + (delete-char 3))) (t - (message "Malformed quoted-printable text") + (error "Malformed quoted-printable text") (forward-char))))) (if coding-system (mm-decode-coding-region (point-min) (point-max) coding-system))))) @@ -97,6 +98,15 @@ You should probably avoid non-ASCII characters in this arg. If `mm-use-ultra-safe-encoding' is set, fold lines unconditionally and encode lines starting with \"From\"." (interactive "r") + (save-excursion + (goto-char from) + (if (fboundp 'string-to-multibyte) ; Emacs 22 + (if (re-search-forward (string-to-multibyte "[^\x0-\x7f\x80-\xff]") + to t) + ;; Fixme: This is somewhat misleading. + (error "Multibyte character in QP encoding region")) + (if (re-search-forward (mm-string-as-multibyte "[^\0-\377]") to t) + (error "Multibyte character in QP encoding region")))) (unless class ;; Avoid using 8bit characters. = is \075. ;; Equivalent to "^\000-\007\013\015-\037\200-\377=" @@ -104,19 +114,14 @@ encode lines starting with \"From\"." (save-excursion (save-restriction (narrow-to-region from to) - ;; We can live with characters between 00-FF. - (goto-char (point-min)) - (while (not (eobp)) - (if (>= (char-after) 256) - (error "Multibyte character in QP encoding region")) - (forward-char)) ;; Encode all the non-ascii and control characters. (goto-char (point-min)) (while (and (skip-chars-forward class) (not (eobp))) (insert (prog1 - (format "=%02X" (char-after)) + ;; To unibyte in case of Emacs 22 eight-bit. + (format "=%02X" (mm-multibyte-char-to-unibyte (char-after))) (delete-char 1)))) ;; Encode white space at the end of lines. (goto-char (point-min)) @@ -131,7 +136,7 @@ encode lines starting with \"From\"." (and (boundp 'mm-use-ultra-safe-encoding) mm-use-ultra-safe-encoding))) (when (or fold mm-use-ultra-safe-encoding) - (let ((tab-width 1)) ; HTAB is one character. + (let ((tab-width 1)) ; HTAB is one character. (goto-char (point-min)) (while (not (eobp)) ;; In ultra-safe mode, encode "From " at the beginning diff --git a/lisp/rfc1843.el b/lisp/rfc1843.el index 13a9cbe..16260cb 100644 --- a/lisp/rfc1843.el +++ b/lisp/rfc1843.el @@ -1,10 +1,10 @@ ;;; rfc1843.el --- HZ (rfc1843) decoding -;; Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc. +;; Copyright (c) 1998, 1999, 2000, 2003 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: news HZ HZ+ mail i18n -;; This file is a part of GNU Emacs. +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published @@ -43,11 +43,11 @@ (defvar rfc1843-hzp-word-regexp "~\\({\\([\041-\167][\041-\176]\\| \\)+\\|\ -[<>]\\([\041-\175][\041-\176]\\| \\)+\\)\\(~}\\|$\\)") +\[<>]\\([\041-\175][\041-\176]\\| \\)+\\)\\(~}\\|$\\)") (defvar rfc1843-hzp-word-regexp-strictly "~\\({\\([\041-\167][\041-\176]\\)+\\|\ -[<>]\\([\041-\175][\041-\176]\\)+\\)\\(~}\\|$\\)") +\[<>]\\([\041-\175][\041-\176]\\)+\\)\\(~}\\|$\\)") (defcustom rfc1843-decode-loosely nil "Loosely check HZ encoding if non-nil. diff --git a/lisp/sieve-manage.el b/lisp/sieve-manage.el index b3015ab..8897dd1 100644 --- a/lisp/sieve-manage.el +++ b/lisp/sieve-manage.el @@ -3,7 +3,7 @@ ;; Author: Simon Josefsson -;; This file is not part of GNU Emacs, but the same permissions apply. +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by diff --git a/lisp/sieve-mode.el b/lisp/sieve-mode.el index f47b5d0..e804e96 100644 --- a/lisp/sieve-mode.el +++ b/lisp/sieve-mode.el @@ -3,7 +3,7 @@ ;; Author: Simon Josefsson -;; This file is not part of GNU Emacs, but the same permissions apply. +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by diff --git a/lisp/sieve.el b/lisp/sieve.el index ad62856..8297f57 100644 --- a/lisp/sieve.el +++ b/lisp/sieve.el @@ -3,7 +3,7 @@ ;; Author: Simon Josefsson -;; This file is not part of GNU Emacs, but the same permissions apply. +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -370,8 +370,7 @@ Server : " server ":" (or port "2000") " (if (sieve-manage-ok-p err) (message (concat "Sieve upload done. Use `C-c RET' to manage scripts.")) - (message "Sieve upload failed: %s" - (replace-regexp-in-string "[\n\r\t]+" " " (nth 2 err)))))))) + (message "Sieve upload failed: %s" (nth 2 err))))))) ;;;###autoload (defun sieve-upload-and-bury (&optional name) diff --git a/lisp/smime.el b/lisp/smime.el index dc47c13..5701ec8 100644 --- a/lisp/smime.el +++ b/lisp/smime.el @@ -1,10 +1,10 @@ ;;; smime.el --- S/MIME support library -;; Copyright (c) 2000, 2001 Free Software Foundation, Inc. +;; Copyright (c) 2000, 2001, 2003 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: SMIME X.509 PEM OpenSSL -;; This file is not a part of GNU Emacs, but the same permissions apply. +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published @@ -366,6 +366,9 @@ Any details (stdout and stderr) are left in the buffer specified by (insert-buffer-substring smime-details-buffer) nil)) +(eval-when-compile + (defvar from)) + (defun smime-decrypt-region (b e keyfile) "Decrypt S/MIME message in region between B and E with key in KEYFILE. On success, replaces region with decrypted data and return non-nil. @@ -390,6 +393,9 @@ in the buffer specified by `smime-details-buffer'." (delete-file tmpfile))) (progn (delete-region b e) + (when (boundp 'from) + ;; `from' is dynamically bound in mm-dissect. + (insert "From: " from "\n")) (insert-buffer-substring buffer) (kill-buffer buffer) t) diff --git a/lisp/spam-report.el b/lisp/spam-report.el new file mode 100644 index 0000000..fafb891 --- /dev/null +++ b/lisp/spam-report.el @@ -0,0 +1,97 @@ +;;; spam-report.el --- Reporting spam +;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. + +;; Author: Teodor Zlatanov +;; Keywords: network + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;;; This module addresses a few aspects of spam reporting under Gnus. Page +;;; breaks are used for grouping declarations and documentation relating to +;;; each particular aspect. + +;;; Code: +(require 'gnus) +(require 'gnus-sum) + +(defgroup spam-report nil + "Spam reporting configuration.") + +(defcustom spam-report-gmane-regex nil + "String matching Gmane newsgroups if wanted, e.g. \"^nntp+.*:gmane.\" +This is probably handled better with group/topic parameters." + :type 'regexp + :group 'spam-report) + +(defcustom spam-report-gmane-spam-header + "^X-Report-Spam: http://\\([^/]+\\)\\(.*\\)$" + "String matching Gmane spam-reporting header. Two match groups are needed." + :type 'regexp + :group 'spam-report) + +(defcustom spam-report-gmane-use-article-number t + "Whether the article number (faster!) or the header should be used." + :type 'boolean + :group 'spam-report) + +(defun spam-report-gmane (article) + "Report an article as spam through Gmane" + (interactive "nEnter the article number: ") + (when (and gnus-newsgroup-name + (or (null spam-report-gmane-regex) + (string-match spam-report-gmane-regex gnus-newsgroup-name))) + (gnus-message 6 "Reporting spam article %d to spam.gmane.org..." article) + (if spam-report-gmane-use-article-number + (spam-report-url-ping "spam.gmane.org" + (format "/%s:%d" + (gnus-group-real-name gnus-newsgroup-name) + (gnus-summary-article-number))) + (with-current-buffer nntp-server-buffer + (gnus-request-head article gnus-newsgroup-name) + (goto-char (point-min)) + (if (re-search-forward spam-report-gmane-spam-header nil t) + (let* ((host (match-string 1)) + (report (match-string 2)) + (url (format "http://%s%s" host report))) + (gnus-message 10 "Reporting spam through URL %s..." url) + (spam-report-url-ping host report)) + (gnus-message 10 "Could not find X-Report-Spam in article %d..." + article)))))) + + +(defun spam-report-url-ping (host report) + "Ping a host through HTTP, addressing a specific GET resource" + (let ((tcp-connection)) + (with-temp-buffer + (or (setq tcp-connection + (open-network-stream + "URL ping" + (buffer-name) + host + 80)) + (error "Could not open connection to %s" host)) + (set-marker (process-mark tcp-connection) (point-min)) + (process-send-string tcp-connection + (format "GET %s HTTP/1.1\nHost: %s\n\n" + report host))))) + +(provide 'spam-report) + +;;; spam-report.el ends here. diff --git a/lisp/spam.el b/lisp/spam.el index a64606d..2bc099e 100644 --- a/lisp/spam.el +++ b/lisp/spam.el @@ -49,6 +49,10 @@ (eval-and-compile (autoload 'query-dig "dig")) +;; autoload spam-report +(eval-and-compile + (autoload 'spam-report-gmane "spam-report")) + ;; autoload query-dns (eval-and-compile (autoload 'query-dns "dns")) @@ -71,6 +75,14 @@ spam groups." :type 'boolean :group 'spam) +(defcustom spam-mark-only-unseen-as-spam t + "Whether only unseen articles should be marked as spam in spam +groups. When nil, all unread articles in a spam group are marked as +spam. Set this if you want to leave an article unread in a spam group +without losing it to the automatic spam-marking process." + :type 'boolean + :group 'spam) + (defcustom spam-mark-ham-unread-before-move-from-spam-group nil "Whether ham should be marked unread before it's moved out of a spam group according to ham-process-destination. This variable is an @@ -332,6 +344,9 @@ your main source of newsgroup names." (member processor (car (gnus-parameter-spam-process group))) nil)) +(defun spam-group-spam-processor-report-gmane-p (group) + (spam-group-processor-p group 'gnus-group-spam-exit-processor-report-gmane)) + (defun spam-group-spam-processor-bogofilter-p (group) (spam-group-processor-p group 'gnus-group-spam-exit-processor-bogofilter)) @@ -391,6 +406,10 @@ your main source of newsgroup names." (gnus-message 5 "Registering spam with the blacklist") (spam-blacklist-register-routine)) + (when (spam-group-spam-processor-report-gmane-p gnus-newsgroup-name) + (gnus-message 5 "Registering spam with the Gmane report") + (spam-report-gmane-register-routine)) + (if spam-move-spam-nonspam-groups-only (when (not (spam-group-spam-contents-p gnus-newsgroup-name)) (spam-mark-spam-as-expired-and-move-routine @@ -438,13 +457,15 @@ your main source of newsgroup names." ;; check the global list of group names spam-junk-mailgroups and the ;; group parameters (when (spam-group-spam-contents-p gnus-newsgroup-name) - (gnus-message 5 "Marking unread articles as spam") - (let ((articles gnus-newsgroup-articles) - article) - (while articles - (setq article (pop articles)) - (when (eq (gnus-summary-article-mark article) gnus-unread-mark) - (gnus-summary-mark-article article gnus-spam-mark)))))) + (gnus-message 5 "Marking %s articles as spam" + (if spam-mark-only-unseen-as-spam + "unseen" + "unread")) + (let ((articles (if spam-mark-only-unseen-as-spam + gnus-newsgroup-unseen + gnus-newsgroup-unreads))) + (dolist (article articles) + (gnus-summary-mark-article article gnus-spam-mark))))) (defun spam-mark-spam-as-expired-and-move-routine (&optional group) (gnus-summary-kill-process-mark) @@ -585,32 +606,35 @@ definitely a spam.") "The spam-list-of-statistical-checks list contains all the mail splitters that need to have the full message body available.") -(defun spam-split () +(defun spam-split (&rest specific-checks) "Split this message into the `spam' group if it is spam. This function can be used as an entry in `nnmail-split-fancy', for -example like this: (: spam-split) +example like this: (: spam-split). It can take checks as parameters. See the Info node `(gnus)Fancy Mail Splitting' for more details." (interactive) (save-excursion - (dolist (check spam-list-of-statistical-checks) - (when (symbol-value check) - (widen) - (gnus-message 8 "spam-split: widening the buffer (%s requires it)" - (symbol-name check)) - (return))) -;; (progn (widen) (debug (buffer-string))) - (let ((list-of-checks spam-list-of-checks) - decision) - (while (and list-of-checks (not decision)) - (let ((pair (pop list-of-checks))) - (when (symbol-value (car pair)) - (gnus-message 5 "spam-split: calling the %s function" (symbol-name (cdr pair))) - (setq decision (funcall (cdr pair)))))) - (if (eq decision t) - nil - decision)))) - + (save-restriction + (dolist (check spam-list-of-statistical-checks) + (when (symbol-value check) + (widen) + (gnus-message 8 "spam-split: widening the buffer (%s requires it)" + (symbol-name check)) + (return))) + ;; (progn (widen) (debug (buffer-string))) + (let ((list-of-checks spam-list-of-checks) + decision) + (while (and list-of-checks (not decision)) + (let ((pair (pop list-of-checks))) + (when (and (symbol-value (car pair)) + (or (null specific-checks) + (memq (car pair) specific-checks))) + (gnus-message 5 "spam-split: calling the %s function" (symbol-name (cdr pair))) + (setq decision (funcall (cdr pair)))))) + (if (eq decision t) + nil + decision))))) + (defun spam-setup-widening () (dolist (check spam-list-of-statistical-checks) (when (symbol-value check) @@ -957,8 +981,14 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)." (spam-enter-whitelist from)))))) -;;;; Bogofilter +;;;; Spam-report glue +(defun spam-report-gmane-register-routine () + (spam-generic-register-routine + 'spam-report-gmane + nil)) + +;;;; Bogofilter (defun spam-check-bogofilter-headers (&optional score) (let ((header (message-fetch-field spam-bogofilter-header))) (when (and header @@ -976,7 +1006,8 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)." (save-window-excursion (gnus-summary-show-article t) (set-buffer gnus-article-buffer) - (let ((score (spam-check-bogofilter t))) + (let ((score (or (spam-check-bogofilter-headers t) + (spam-check-bogofilter t)))) (message "Spamicity score %s" score) (or score "0")))) diff --git a/lisp/uudecode.el b/lisp/uudecode.el index 98b1afd..ffb2eee 100644 --- a/lisp/uudecode.el +++ b/lisp/uudecode.el @@ -1,11 +1,11 @@ ;;; uudecode.el -- elisp native uudecode -;; Copyright (c) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +;; Copyright (c) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: uudecode news -;; This file is a part of GNU Emacs. +;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by diff --git a/make.bat b/make.bat index bd3cbf2..ddd22a3 100755 --- a/make.bat +++ b/make.bat @@ -21,7 +21,7 @@ goto noemacs set EMACS=emacs.bat echo. echo *************************************************************************** -echo * Using emacs.bat (If you've got en Emacs >= 20.3 please remove Emacs.bat, +echo * Using emacs.bat (If you've got en Emacs >= 20.3 please remove Emacs.bat, echo * it isn't needed anymore. echo *************************************************************************** echo. @@ -42,12 +42,13 @@ if not exist %1\..\site-lisp mkdir %1\..\site-lisp if not exist %1\..\site-lisp\gnus mkdir %1\..\site-lisp\gnus if not exist %1\..\site-lisp\subdirs.el set subdirwarning=yes :emacsnocopy +set EMACS_ARGS=-batch -q -no-site-file set GNUS_INFO_DIR=%1\..\info set GNUS_LISP_DIR=%1\..\site-lisp\gnus\lisp set GNUS_ETC_DIR=%1\..\site-lisp\gnus\etc goto lisp - -:xemacs + +:xemacs set EMACS=xemacs.exe if not "%2" == "/copy" goto xemacsnocopy if not exist %1\..\..\site-packages\ mkdir %1\..\..\site-packages\ @@ -55,6 +56,7 @@ if not exist %1\..\..\site-packages\info mkdir %1\..\..\site-packages\info if not exist %1\..\..\site-packages\lisp mkdir %1\..\..\site-packages\lisp if not exist %1\..\..\site-packages\etc mkdir %1\..\..\site-packages\etc :xemacsnocopy +set EMACS_ARGS=-batch -no-autoloads set GNUS_INFO_DIR=%1\..\..\site-packages\info set GNUS_LISP_DIR=%1\..\..\site-packages\lisp\gnus set GNUS_ETC_DIR=%1\..\..\site-packages\etc @@ -66,7 +68,7 @@ echo. goto lisp :lisp -set EMACSBATCH=call %1\%EMACS% -no-site-file -batch -q +set EMACSBATCH=call %1\%EMACS% %EMACS_ARGS% cd lisp if exist gnus-load.el del gnus-load.el echo. @@ -97,7 +99,7 @@ goto infotest cd ..\texi if exist sieve del sieve makeinfo sieve.texi -if exist sieve goto minfo +if exist sieve goto minfo REM It seems that makeinfo isn't available set EMACSINFO=%EMACSBATCH% -l infohack.el -f batch-makeinfo echo. @@ -108,7 +110,7 @@ echo. goto info :minfo -set EMACSINFO=makeinfo +set EMACSINFO=makeinfo echo. echo *************************************************************************** echo * Using makeinfo @@ -156,8 +158,8 @@ if ErrorLevel 1 set ERROR=%ERROR%,copy-pgg-info echo. echo *************************************************************************** -echo * You should add the following lines to -echo * %GNUS_INFO_DIR%\dir +echo * You should add the following lines to +echo * %GNUS_INFO_DIR%\dir echo * if they aren't already there: echo * echo * * PGG: (pgg). Emacs interface to various PGP implementations. @@ -184,7 +186,7 @@ goto warnings :nocopy echo. echo *************************************************************************** -echo * You chose not to copy the files, therefore you should add the +echo * You chose not to copy the files, therefore you should add the echo * following lines to the TOP of your [X]emacs customization file: echo * echo * (add-to-list 'load-path "/Path/to/gnus/lisp") @@ -258,14 +260,14 @@ echo. echo *************************************************************************** echo * Usage: make.bat :[X]Emacs-exe-dir: [/copy] echo * -echo * where: :[X]Emacs-exe-dir: is the directory your -echo * emacs.exe respectively xemacs.exe resides in, +echo * where: :[X]Emacs-exe-dir: is the directory your +echo * emacs.exe respectively xemacs.exe resides in, echo * e.g. G:\Programme\XEmacs\XEmacs-21.4.11\i586-pc-win32\ echo * or G:\Emacs\bin echo * /copy indicates that the compiled files should be copied to your echo * emacs lisp, info, and etc site directories. echo * -echo * Note: If you have Emacs/w3 you should set the environment variable +echo * Note: If you have Emacs/w3 you should set the environment variable echo * W3DIR to the directory where w3 is installed eg. echo * set W3DIR=d:\lisp\w3-4.0pre46\lisp echo *************************************************************************** diff --git a/texi/ChangeLog b/texi/ChangeLog index 93b7209..164a4a9 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,74 @@ +2003-04-27 Jesper Harder + + * message.texi, gnus.texi: Use the second arg to @uref where it + makes sense to make HTML and PDF output look nicer. + +2003-04-26 Jesper Harder + + * gnus-faq.texi: Make it compile in the LaTeX version. Remove + redundant entries in @urefs. + (FAQ - Glossary): Remove the final @bye since it breaks the Gnus + manual. + ([1.2]): @subsection -> @subheading. + + * texi2latex.el (latexi-translate-file): Support @r, @env, + @heading, @subheading, @TeX. + + * gnus.texi, message.texi, emacs-mime.texi: Markup improvements + and fixes. + +2003-04-24 Reiner Steib + + * gnus.texi (Selecting a Group): Add gnus-large-ephemeral-newsgroup. + (Filling In Threads): Add gnus-fetch-old-ephemeral-headers. + (Terminology): Index. + +2003-04-22 Jesper Harder + + * gnus.texi: nil -> @code{nil}. Capitalize "Rmail" and "Babyl" + consistently. + +2003-04-22 Reiner Steib + + * gnus-faq.texi: Allow inclusion in `gnus.texi' again. + +2003-04-21 Reiner Steib + + * gnus-faq.texi: New, the Gnus FAQ from http://my.gnus.org/FAQ. + From Frank Schmitt . + + * gnus.texi (Server Variables): Added server parameters and index. + +2003-04-21 Kai Gro,A_(Bjohann + + * gnus.texi (Group Parameters): Pointer to + gnus-newsgroup-variables. + +2003-04-20 Jesper Harder + + * gnus.texi (Summary Buffer Lines): Add + gnus-sum-thread-tree-false-root. + +2003-04-15 Michael Shields + + * gnus.texi (Group Parameters, Hiding Headers): Document that + the broken-reply-to group parameter now also affects header + hiding. + * gnus.texi (Summary Mail Commands): Suggest setting the + broken-reply-to parameter if you find yourself using `B r'. + +2003-04-16 Simon Josefsson + + * emacs-mime.texi (MML Definition): Add sender tag. + +2003-04-16 Lars Magne Ingebrigtsen + + * gnus.texi (Group Line Specification): Add. + +2003-04-13 Simon Josefsson + + * gnus.texi (Security): Add text about PGP key snarf. + 2003-04-13 Lars Magne Ingebrigtsen * gnus.texi (Misc Article): Addition. diff --git a/texi/emacs-mime.texi b/texi/emacs-mime.texi index a36c5b0..40b91b1 100644 --- a/texi/emacs-mime.texi +++ b/texi/emacs-mime.texi @@ -76,24 +76,24 @@ license to the document, as described in section 6 of the license. @top Emacs MIME This manual documents the libraries used to compose and display -@sc{mime} messages. +@acronym{MIME} messages. This manual is directed at users who want to modify the behaviour of -the @sc{mime} encoding/decoding process or want a more detailed -picture of how the Emacs @sc{mime} library works, and people who want -to write functions and commands that manipulate @sc{mime} elements. +the @acronym{MIME} encoding/decoding process or want a more detailed +picture of how the Emacs @acronym{MIME} library works, and people who want +to write functions and commands that manipulate @acronym{MIME} elements. -@sc{mime} is short for @dfn{Multipurpose Internet Mail Extensions}. +@acronym{MIME} is short for @dfn{Multipurpose Internet Mail Extensions}. This standard is documented in a number of RFCs; mainly RFC2045 (Format of Internet Message Bodies), RFC2046 (Media Types), RFC2047 (Message -Header Extensions for Non-ASCII Text), RFC2048 (Registration +Header Extensions for Non-@acronym{ASCII} Text), RFC2048 (Registration Procedures), RFC2049 (Conformance Criteria and Examples). It is highly -recommended that anyone who intends writing @sc{mime}-compliant software +recommended that anyone who intends writing @acronym{MIME}-compliant software read at least RFC2045 and RFC2047. @menu * Decoding and Viewing:: A framework for decoding and viewing. -* Composing:: MML; a language for describing @sc{mime} parts. +* Composing:: MML; a language for describing @acronym{MIME} parts. * Interface Functions:: An abstraction over the basic functions. * Basic Functions:: Utility and basic parsing functions. * Standards:: A summary of RFCs and working documents used. @@ -104,16 +104,16 @@ read at least RFC2045 and RFC2047. @node Decoding and Viewing @chapter Decoding and Viewing -This chapter deals with decoding and viewing @sc{mime} messages on a +This chapter deals with decoding and viewing @acronym{MIME} messages on a higher level. -The main idea is to first analyze a @sc{mime} article, and then allow +The main idea is to first analyze a @acronym{MIME} article, and then allow other programs to do things based on the list of @dfn{handles} that are returned as a result of this analysis. @menu -* Dissection:: Analyzing a @sc{mime} message. -* Non-MIME:: Analyzing a non-@sc{mime} message. +* Dissection:: Analyzing a @acronym{MIME} message. +* Non-MIME:: Analyzing a non-@acronym{MIME} message. * Handles:: Handle manipulations. * Display:: Displaying handles. * Display Customization:: Variables that affect display. @@ -126,15 +126,15 @@ returned as a result of this analysis. @section Dissection The @code{mm-dissect-buffer} is the function responsible for dissecting -a @sc{mime} article. If given a multipart message, it will recursively +a @acronym{MIME} article. If given a multipart message, it will recursively descend the message, following the structure, and return a tree of -@sc{mime} handles that describes the structure of the message. +@acronym{MIME} handles that describes the structure of the message. @node Non-MIME @section Non-MIME @vindex mm-uu-configure-list -Gnus also understands some non-@sc{mime} attachments, such as +Gnus also understands some non-@acronym{MIME} attachments, such as postscript, uuencode, binhex, yenc, shar, forward, gnatsweb, pgp, diff. Each of these features can be disabled by add an item into @code{mm-uu-configure-list}. For example, @@ -167,7 +167,7 @@ Shar archive file. @item forward @findex forward -Non-@sc{mime} forwarded message. +Non-@acronym{MIME} forwarded message. @item gnatsweb @findex gnatsweb @@ -175,15 +175,15 @@ Gnatsweb attachment. @item pgp-signed @findex pgp-signed -PGP signed clear text. +@acronym{PGP} signed clear text. @item pgp-encrypted @findex pgp-encrypted -PGP encrypted clear text. +@acronym{PGP} encrypted clear text. @item pgp-key @findex pgp-key -PGP public keys. +@acronym{PGP} public keys. @item emacs-sources @findex emacs-sources @@ -203,7 +203,7 @@ are automatically sent to. It only works in groups matching @node Handles @section Handles -A @sc{mime} handle is a list that fully describes a @sc{mime} +A @acronym{MIME} handle is a list that fully describes a @acronym{MIME} component. The following macros can be used to access elements in a handle: @@ -211,7 +211,7 @@ The following macros can be used to access elements in a handle: @table @code @item mm-handle-buffer @findex mm-handle-buffer -Return the buffer that holds the contents of the undecoded @sc{mime} +Return the buffer that holds the contents of the undecoded @acronym{MIME} part. @item mm-handle-type @@ -261,11 +261,11 @@ Remove the part (if it has been displayed). @item mm-inlinable-p @findex mm-inlinable-p -Say whether a @sc{mime} type can be displayed inline. +Say whether a @acronym{MIME} type can be displayed inline. @item mm-automatic-display-p @findex mm-automatic-display-p -Say whether a @sc{mime} type should be displayed automatically. +Say whether a @acronym{MIME} type should be displayed automatically. @item mm-destroy-part @findex mm-destroy-part @@ -293,7 +293,7 @@ Prompt for a mailcap method to use to view the part. @item mm-inline-media-tests @vindex mm-inline-media-tests -This is an alist where the key is a @sc{mime} type, the second element +This is an alist where the key is a @acronym{MIME} type, the second element is a function to display the part @dfn{inline} (i.e., inside Emacs), and the third element is a form to be @code{eval}ed to say whether the part can be displayed inline. @@ -306,7 +306,7 @@ and, if so, how to do it. It does not say whether parts are @vindex mm-inlined-types This, on the other hand, says what types are to be displayed inline, if they satisfy the conditions set by the variable above. It's a list of -@sc{mime} media types. +@acronym{MIME} media types. @item mm-automatic-display @vindex mm-automatic-display @@ -326,14 +326,14 @@ be killed when selecting a different article. @item mm-attachment-override-types @vindex mm-attachment-override-types -Some @sc{mime} agents create parts that have a content-disposition of +Some @acronym{MIME} agents create parts that have a content-disposition of @samp{attachment}. This variable allows overriding that disposition and displaying the part inline. (Note that the disposition is only overridden if we are able to, and want to, display the part inline.) @item mm-discouraged-alternatives @vindex mm-discouraged-alternatives -List of @sc{mime} types that are discouraged when viewing +List of @acronym{MIME} types that are discouraged when viewing @samp{multipart/alternative}. Viewing agents are supposed to view the last possible part of a message, as that is supposed to be the richest. However, users may prefer other types instead, and this list says what @@ -371,17 +371,17 @@ variable will cause @samp{text/html} parts to be treated as attachments. @item mm-text-html-renderer @vindex mm-text-html-renderer -This selects the function used to render @sc{html}. The predefined +This selects the function used to render @acronym{HTML}. The predefined renderers are selected by the symbols @code{w3}, @code{w3m}@footnote{See @uref{http://emacs-w3m.namazu.org/} for more information about emacs-w3m}, @code{links}, @code{lynx}, @code{w3m-standalone} or @code{html2text}. If @code{nil} use an external viewer. You can also specify a function, which will be -called with a @sc{mime} handle as the argument. +called with a @acronym{MIME} handle as the argument. @item mm-inline-text-html-with-images @vindex mm-inline-text-html-with-images -Some @sc{html} mails might have the trick of spammers using +Some @acronym{HTML} mails might have the trick of spammers using @samp{} tags. It is likely to be intended to verify whether you have read the mail. You can prevent your personal informations from leaking by setting this option to @code{nil} (which is the default). @@ -394,9 +394,9 @@ or @kbd{I} instead.} @item mm-w3m-safe-url-regexp @vindex mm-w3m-safe-url-regexp A regular expression that matches safe URL names, i.e. URLs that are -unlikely to leak personal information when rendering @sc{html} email -(the default value is @samp{\\`cid:}). If @code{nil} consider all -URLs safe. +unlikely to leak personal information when rendering @acronym{HTML} +email (the default value is @samp{\\`cid:}). If @code{nil} consider +all URLs safe. @item mm-inline-text-html-with-w3m-keymap @vindex mm-inline-text-html-with-w3m-keymap @@ -425,7 +425,7 @@ Directory for storing temporary files. @item mm-file-name-rewrite-functions @vindex mm-file-name-rewrite-functions -A list of functions used for rewriting file names of @sc{mime} +A list of functions used for rewriting file names of @acronym{MIME} parts. Each function is applied successively to the file name. Ready-made functions include @@ -456,7 +456,7 @@ The standard Emacs functions @code{capitalize}, @code{downcase}, @item mm-path-name-rewrite-functions @vindex mm-path-name-rewrite-functions -List of functions used for rewriting the full file names of @sc{mime} +List of functions used for rewriting the full file names of @acronym{MIME} parts. This is used when viewing parts externally, and is meant for transforming the absolute name so that non-compliant programs can find the file where it's saved. @@ -479,7 +479,7 @@ Here's an example viewer for displaying @code{text/enriched} inline: (mm-insert-inline handle text))) @end lisp -We see that the function takes a @sc{mime} handle as its parameter. It +We see that the function takes a @acronym{MIME} handle as its parameter. It then goes to a temporary buffer, inserts the text of the part, does some work on the text, stores the result, goes back to the buffer it was called from and inserts the result. @@ -499,22 +499,22 @@ tell it to insert, but it also sets things up so that the text can be @cindex MML @cindex MIME Meta Language -Creating a @sc{mime} message is boring and non-trivial. Therefore, a +Creating a @acronym{MIME} message is boring and non-trivial. Therefore, a library called @code{mml} has been defined that parses a language called -MML (@sc{mime} Meta Language) and generates @sc{mime} messages. +MML (@acronym{MIME} Meta Language) and generates @acronym{MIME} messages. @findex mml-generate-mime The main interface function is @code{mml-generate-mime}. It will examine the contents of the current (narrowed-to) buffer and return a -string containing the @sc{mime} message. +string containing the @acronym{MIME} message. @menu * Simple MML Example:: An example MML document. * MML Definition:: All valid MML elements. * Advanced MML Example:: Another example MML document. * Encoding Customization:: Variables that affect encoding. -* Charset Translation:: How charsets are mapped from @sc{mule} to @sc{mime}. -* Conversion:: Going from @sc{mime} to MML and vice versa. +* Charset Translation:: How charsets are mapped from @sc{mule} to @acronym{MIME}. +* Conversion:: Going from @acronym{MIME} to MML and vice versa. * Flowed text:: Soft and hard newlines. @end menu @@ -576,12 +576,12 @@ but that's not necessary unless the value contains white space. So The following parameters have meaning in MML; parameters that have no meaning are ignored. The MML parameter names are the same as the -@sc{mime} parameter names; the things in the parentheses say which +@acronym{MIME} parameter names; the things in the parentheses say which header it will be used in. @table @samp @item type -The @sc{mime} type of the part (@code{Content-Type}). +The @acronym{MIME} type of the part (@code{Content-Type}). @item filename Use the contents of the file in the body of the part @@ -620,6 +620,10 @@ RFC822 date when the part was read (@code{Content-Disposition}). Who to encrypt/sign the part to. This field is used to override any auto-detection based on the To/CC headers. +@item sender +Identity used to sign the part. This field is used to override the +default key used. + @item size The size (in octets) of the part (@code{Content-Disposition}). @@ -701,7 +705,7 @@ This plain text part is an attachment. <#/multipart> @end example -And this is the resulting @sc{mime} message: +And this is the resulting @acronym{MIME} message: @example Content-Type: multipart/mixed; boundary="=-=-=" @@ -774,7 +778,7 @@ This plain text part is an attachment. @item mm-body-charset-encoding-alist @vindex mm-body-charset-encoding-alist -Mapping from @sc{mime} charset to encoding to use. This variable is +Mapping from @acronym{MIME} charset to encoding to use. This variable is usually used except, e.g., when other requirements force a specific encoding (digitally signed messages require 7bit encodings). The default is @@ -806,10 +810,10 @@ basis by using the @code{charset} MML tag (@pxref{MML Definition}). @item mm-content-transfer-encoding-defaults @vindex mm-content-transfer-encoding-defaults -Mapping from @sc{mime} types to encoding to use. This variable is usually +Mapping from @acronym{MIME} types to encoding to use. This variable is usually used except, e.g., when other requirements force a safer encoding (digitally signed messages require 7bit encoding). Besides the normal -@sc{mime} encodings, @code{qp-or-base64} may be used to indicate that for +@acronym{MIME} encodings, @code{qp-or-base64} may be used to indicate that for each case the most efficient of quoted-printable and base64 should be used. You can override this setting on a per-message basis by using the @code{encoding} MML tag (@pxref{MML Definition}). @@ -830,19 +834,19 @@ encoding messages that are to be digitally signed). @section Charset Translation @cindex charsets -During translation from MML to @sc{mime}, for each @sc{mime} part which +During translation from MML to @acronym{MIME}, for each @acronym{MIME} part which has been composed inside Emacs, an appropriate charset has to be chosen. @vindex mail-parse-charset If you are running a non-@sc{mule} Emacs, this process is simple: If the -part contains any non-ASCII (8-bit) characters, the @sc{mime} charset +part contains any non-@acronym{ASCII} (8-bit) characters, the @acronym{MIME} charset given by @code{mail-parse-charset} (a symbol) is used. (Never set this variable directly, though. If you want to change the default charset, please consult the documentation of the package which you use to process -@sc{mime} messages. +@acronym{MIME} messages. @xref{Various Message Variables, , Various Message Variables, message, Message Manual}, for example.) -If there are only ASCII characters, the @sc{mime} charset US-ASCII is +If there are only @acronym{ASCII} characters, the @acronym{MIME} charset US-ASCII is used, of course. @cindex MULE @@ -851,17 +855,17 @@ used, of course. @vindex mm-mime-mule-charset-alist Things are slightly more complicated when running Emacs with @sc{mule} support. In this case, a list of the @sc{mule} charsets used in the -part is obtained, and the @sc{mule} charsets are translated to @sc{mime} +part is obtained, and the @sc{mule} charsets are translated to @acronym{MIME} charsets by consulting the variable @code{mm-mime-mule-charset-alist}. -If this results in a single @sc{mime} charset, this is used to encode -the part. But if the resulting list of @sc{mime} charsets contains more +If this results in a single @acronym{MIME} charset, this is used to encode +the part. But if the resulting list of @acronym{MIME} charsets contains more than one element, two things can happen: If it is possible to encode the part via UTF-8, this charset is used. (For this, Emacs must support the @code{utf-8} coding system, and the part must consist entirely of characters which have Unicode counterparts.) If UTF-8 is not available for some reason, the part is split into several ones, so that each one -can be encoded with a single @sc{mime} charset. The part can only be -split at line boundaries, though---if more than one @sc{mime} charset is +can be encoded with a single @acronym{MIME} charset. The part can only be +split at line boundaries, though---if more than one @acronym{MIME} charset is required to encode a single line, it is not possible to encode the part. When running Emacs with @sc{mule} support, the preferences for which @@ -884,23 +888,23 @@ Customization}). @section Conversion @findex mime-to-mml -A (multipart) @sc{mime} message can be converted to MML with the +A (multipart) @acronym{MIME} message can be converted to MML with the @code{mime-to-mml} function. It works on the message in the current -buffer, and substitutes MML markup for @sc{mime} boundaries. +buffer, and substitutes MML markup for @acronym{MIME} boundaries. Non-textual parts do not have their contents in the buffer, but instead have the contents in separate buffers that are referred to from the MML tags. @findex mml-to-mime -An MML message can be converted back to @sc{mime} by the +An MML message can be converted back to @acronym{MIME} by the @code{mml-to-mime} function. These functions are in certain senses ``lossy''---you will not get back -an identical message if you run @sc{mime-to-mml} and then -@sc{mml-to-mime}. Not only will trivial things like the order of the +an identical message if you run @code{mime-to-mml} and then +@code{mml-to-mime}. Not only will trivial things like the order of the headers differ, but the contents of the headers may also be different. For instance, the original message may use base64 encoding on text, -while @sc{mml-to-mime} may decide to use quoted-printable encoding, and +while @code{mml-to-mime} may decide to use quoted-printable encoding, and so on. In essence, however, these two functions should be the inverse of each @@ -912,7 +916,7 @@ if not identical. @section Flowed text @cindex format=flowed -The Emacs @sc{mime} library will respect the @code{use-hard-newlines} +The Emacs @acronym{MIME} library will respect the @code{use-hard-newlines} variable (@pxref{Hard and Soft Newlines, ,Hard and Soft Newlines, emacs, Emacs Manual}) when encoding a message, and the ``format=flowed'' Content-Type parameter when decoding a message. @@ -942,9 +946,9 @@ low-level libraries that are described in the next chapter. Standards change, and so programs have to change to fit in the new mold. For instance, RFC2045 describes a syntax for the -@code{Content-Type} header that only allows ASCII characters in the +@code{Content-Type} header that only allows @acronym{ASCII} characters in the parameter list. RFC2231 expands on RFC2045 syntax to provide a scheme -for continuation headers and non-ASCII characters. +for continuation headers and non-@acronym{ASCII} characters. The traditional way to deal with this is just to update the library functions to parse the new syntax. However, this is sometimes the wrong @@ -953,7 +957,7 @@ both the old syntax as well as the new syntax, and if there is only one library, one must choose between the old version of the library and the new version of the library. -The Emacs @sc{mime} library takes a different tack. It defines a +The Emacs @acronym{MIME} library takes a different tack. It defines a series of low-level libraries (@file{rfc2047.el}, @file{rfc2231.el} and so on) that parses strictly according to the corresponding standard. However, normal programs would not use the functions @@ -1091,12 +1095,12 @@ Return the value of the field under point. @item mail-encode-encoded-word-region @findex mail-encode-encoded-word-region -Encode the non-ASCII words in the region. For instance, +Encode the non-@acronym{ASCII} words in the region. For instance, @samp{Naïve} is encoded as @samp{=?iso-8859-1?q?Na=EFve?=}. @item mail-encode-encoded-word-buffer @findex mail-encode-encoded-word-buffer -Encode the non-ASCII words in the current buffer. This function is +Encode the non-@acronym{ASCII} words in the current buffer. This function is meant to be called narrowed to the headers of a message. @item mail-encode-encoded-word-string @@ -1159,7 +1163,7 @@ on. High-level functionality is dealt with in the next chapter @node rfc2045 @section rfc2045 -RFC2045 is the ``main'' @sc{mime} document, and as such, one would +RFC2045 is the ``main'' @acronym{MIME} document, and as such, one would imagine that there would be a lot to implement. But there isn't, since most of the implementation details are delegated to the subsequent RFCs. @@ -1270,8 +1274,8 @@ Narrow the buffer to the header section of the current buffer. @node rfc2047 @section rfc2047 -RFC2047 (Message Header Extensions for Non-ASCII Text) specifies how -non-ASCII text in headers are to be encoded. This is actually rather +RFC2047 (Message Header Extensions for Non-@acronym{ASCII} Text) specifies how +non-@acronym{ASCII} text in headers are to be encoded. This is actually rather complicated, so a number of variables are necessary to tweak what this library does. @@ -1352,7 +1356,7 @@ Decode a string and return the results. @node time-date @section time-date -While not really a part of the @sc{mime} library, it is convenient to +While not really a part of the @acronym{MIME} library, it is convenient to document this library here. It deals with parsing @code{Date} headers and manipulating time. (Not by using tesseracts, though, I'm sorry to say.) @@ -1612,11 +1616,11 @@ Decode the encoded text in the region. @cindex HZ @cindex Chinese -RFC1843 deals with mixing Chinese and ASCII characters in messages. In -essence, RFC1843 switches between ASCII and Chinese by doing this: +RFC1843 deals with mixing Chinese and @acronym{ASCII} characters in messages. In +essence, RFC1843 switches between @acronym{ASCII} and Chinese by doing this: @example -This sentence is in ASCII. +This sentence is in @acronym{ASCII}. The next sentence is in GB.~@{<:Ky2;S@{#,NpJ)l6HK!#~@}Bye. @end example @@ -1637,7 +1641,7 @@ Decode a HZ-encoded string and return the result. @node mailcap @section mailcap -The @file{~/.mailcap} file is parsed by most @sc{mime}-aware message +The @file{~/.mailcap} file is parsed by most @acronym{MIME}-aware message handlers and describes how elements are supposed to be displayed. Here's an example file: @@ -1669,7 +1673,7 @@ Interface functions: Parse the @file{~/.mailcap} file. @item mailcap-mime-info -Takes a @sc{mime} type as its argument and returns the matching viewer. +Takes a @acronym{MIME} type as its argument and returns the matching viewer. @end table @@ -1679,7 +1683,7 @@ Takes a @sc{mime} type as its argument and returns the matching viewer. @node Standards @chapter Standards -The Emacs @sc{mime} library implements handling of various elements +The Emacs @acronym{MIME} library implements handling of various elements according to a (somewhat) large number of RFCs, drafts and standards documents. This chapter lists the relevant ones. They can all be fetched from @uref{http://quimby.gnus.org/notes/}. @@ -1699,7 +1703,7 @@ Format of Internet Message Bodies Media Types @item RFC2047 -Message Header Extensions for Non-ASCII Text +Message Header Extensions for Non-@acronym{ASCII} Text @item RFC2048 Registration Procedures @@ -1708,18 +1712,18 @@ Registration Procedures Conformance Criteria and Examples @item RFC2231 -@sc{mime} Parameter Value and Encoded Word Extensions: Character Sets, +@acronym{MIME} Parameter Value and Encoded Word Extensions: Character Sets, Languages, and Continuations @item RFC1843 HZ - A Data Format for Exchanging Files of Arbitrarily Mixed Chinese and -ASCII characters +@acronym{ASCII} characters @item draft-ietf-drums-msg-fmt-05.txt Draft for the successor of RFC822 @item RFC2112 -The @sc{mime} Multipart/Related Content-type +The @acronym{MIME} Multipart/Related Content-type @item RFC1892 The Multipart/Report Content Type for the Reporting of Mail System diff --git a/texi/gnus-faq.texi b/texi/gnus-faq.texi index d6b5fb0..00dec35 100644 --- a/texi/gnus-faq.texi +++ b/texi/gnus-faq.texi @@ -1,673 +1,2637 @@ @c Insert "\input texinfo" at 1st line before texing this file alone. @c -*-texinfo-*- -@c Copyright (C) 1995, 2001, 2002 Free Software Foundation, Inc. +@c Copyright (C) 1995, 2001, 2003 Free Software Foundation, Inc. @setfilename gnus-faq.info +@c Frequently Asked Questions, FAQ - Introduction, Emacs for Heathens, Top + @node Frequently Asked Questions +@comment node-name, next, previous, up + +@c @chapter Frequently Asked Questions @section Frequently Asked Questions +@c - Uncomment @chapter, comment @section +@c - run (texinfo-every-node-update) +@c - revert it. + +@menu +* FAQ - Introduction:: About Gnus and this FAQ. +* FAQ 1 - Installation:: Installation of Gnus. +* FAQ 2 - Startup / Group buffer:: Start up questions and the first buffer Gnus shows you. +* FAQ 3 - Getting messages:: Making Gnus read your mail and news. +* FAQ 4 - Reading messages:: How to efficiently read messages. +* FAQ 5 - Composing messages:: Composing mails or Usenet postings. +* FAQ 6 - Old messages:: Importing, archiving, searching and deleting messages. +* FAQ 7 - Gnus in a dial-up environment:: Reading mail and news while offline. +* FAQ 8 - Getting help:: When this FAQ isn't enough. +* FAQ 9 - Tuning Gnus:: How to make Gnus faster. +* FAQ - Glossary:: Terms used in the FAQ explained. +@end menu + + +@subheading Abstract + + This is the new Gnus Frequently Asked Questions list. If you have a +Web browser, the official hypertext version is at +@uref{http://my.gnus.org/FAQ/}, the Docbook source is available from +@uref{http://sourceforge.net/projects/gnus/}. + + + Please submit features and suggestions to the + @uref{mailto:faq-discuss@@my.gnus.org,FAQ discussion list}. + The list is protected against junk mail with + @uref{http://smarden.org/qconfirm/index.html,qconfirm}. As + a subscriber, your submissions will automatically pass. You can + also subscribe to the list by sending a blank email to + @email{faq-discuss-subscribe@@my.gnus.org} + and @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss,browse the archive}. + +@node FAQ - Introduction, FAQ 1 - Installation, Frequently Asked Questions, Frequently Asked Questions +@comment node-name, next, previous, up +@heading Introduction + This is the Gnus Frequently Asked Questions list. -If you have a Web browser, the official hypertext version is at -@uref{http://www.ccs.neu.edu/software/contrib/gnus/}, and has -probably been updated since you got this manual. + +Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented + as a part of Emacs. It's been around in some form for almost a decade + now, and has been distributed as a standard part of Emacs for much of + that time. Gnus 5 is the latest (and greatest) incarnation. The + original version was called GNUS, and was written by Masanobu UMEDA. + When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and + decided to rewrite Gnus. + + Its biggest strength is the fact that it is extremely + customizable. It is somewhat intimidating at first glance, but + most of the complexity can be ignored until you're ready to take + advantage of it. If you receive a reasonable volume of e-mail + (you're on various mailing lists), or you would like to read + high-volume mailing lists but cannot keep up with them, or read + high volume newsgroups or are just bored, then Gnus is what you + want. + + This FAQ was maintained by Justin Sheehy until March 2002. He + would like to thank Steve Baur and Per Abrahamsen for doing a wonderful + job with this FAQ before him. We would like to do the same - thanks, + Justin! + + + If you have a Web browser, the official hypertext version is at: + @uref{http://my.gnus.org/FAQ/}. + This version is much nicer than the unofficial hypertext + versions that are archived at Utrecht, Oxford, Smart Pages, Ohio + State, and other FAQ archives. See the resources question below + if you want information on obtaining it in another format. + + + The information contained here was compiled with the assistance + of the Gnus development mailing list, and any errors or + misprints are the my.gnus.org team's fault, sorry. + + +@ifnottex +@node FAQ 1 - Installation, FAQ 2 - Startup / Group buffer, FAQ - Introduction, Frequently Asked Questions +@end ifnottex +@section Installation @menu -* Installation FAQ:: Installation of Gnus. -* Customization FAQ:: Customizing Gnus. -* Reading News FAQ:: News Reading Questions. -* Reading Mail FAQ:: Mail Reading Questions. +* [1.1]:: What is the latest version of Gnus? +* [1.2]:: What's new in 5.10.0? +* [1.3]:: Where and how to get Gnus? +* [1.4]:: What to do with the tarball now? +* [1.5]:: Which version of Emacs do I need? +* [1.6]:: How do I run Gnus on both Emacs and XEmacs? @end menu -@node Installation FAQ -@subsection Installation +@ifnottex +@node [1.1], [1.2], FAQ 1 - Installation, FAQ 1 - Installation +@end ifnottex +@subheading Question 1.1: -@itemize @bullet -@item -Q1.1 What is the latest version of Gnus? +What is the latest version of Gnus? -The latest (and greatest) version is 5.0.10. You might also run -across something called @emph{September Gnus}. September Gnus -is the alpha version of the next major release of Gnus. It is currently -not stable enough to run unless you are prepared to debug lisp. +Answer: -@item -Q1.2 Where do I get Gnus? + Jingle please: Gnus 5.10.0 is released, get it while it's + hot! As well as the step in version number is rather + small, Gnus 5.10 has tons of new features which you + shouldn't miss, however if you are cautious, you might + prefer to stay with 5.8.8 respectively 5.9 (they are + basically the same) until some bugfix releases are out. + +@ifnottex +@node [1.2], [1.3], [1.1], FAQ 1 - Installation +@end ifnottex +@subheading Question 1.2: -Any of the following locations: +What's new in 5.10.0? -@itemize @minus -@item -@uref{ftp://ftp.ifi.uio.no/pub/emacs/gnus/gnus.tar.gz} +Answer: -@item -@uref{ftp://ftp.pilgrim.umass.edu/pub/misc/ding/} + First of all, you should have a look into the file + GNUS-NEWS in the toplevel directory of the Gnus tarball, + there the most important changes are listed. Here's a + short list of the changes I find especially + important/interesting: + -@item -@file{gopher://gopher.pilgrim.umass.edu/11/pub/misc/ding/} + -@item -@uref{ftp://aphrodite.nectar.cs.cmu.edu/pub/ding-gnus/} +@itemize @bullet{} @item -@uref{ftp://ftp.solace.mh.se:/pub/gnu/elisp/} + Major rewrite of the Gnus agent, Gnus agent is now + active by default. + + + Many new article washing functions for dealing with + ugly formatted articles. + + Anti Spam features. + + + message-utils now included in Gnus. + + + New format specifiers for summary lines, e.g. %B for + a complex trn-style thread tree. + @end itemize + +@ifnottex +@node [1.3], [1.4], [1.2], FAQ 1 - Installation +@end ifnottex +@subheading Question 1.3: + +Where and how to get Gnus? + +Answer: + + The latest released version of Gnus isn't included in + Emacs 21 and until now it also isn't available through the + package system of XEmacs 21.4, therefor you should get the + Gnus tarball from + @uref{http://www.gnus.org/dist/gnus.tar.gz} + or via anonymous FTP from + @uref{ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz}. + +@ifnottex +@node [1.4], [1.5], [1.3], FAQ 1 - Installation +@end ifnottex +@subheading Question 1.4: + + What to do with the tarball now? + + +Answer: + + Untar it via @samp{tar xvzf gnus.tar.gz} and do the common + @samp{./configure; make; make install} circle. + (under MS-Windows either get the Cygwin environment from + @uref{http://www.cygwin.com} + which allows you to do what's described above or unpack the + tarball with some packer (e.g. Winace from + @uref{http://www.winace.com}) + and use the batch-file make.bat included in the tarball to install + Gnus. If you don't want to (or aren't allowed to) install Gnus + system-wide, you can install it in your home directory and add the + following lines to your ~/.xemacs/init.el or ~/.emacs: + -@item -Q1.3 Which version of Emacs do I need? +@example -At least GNU Emacs 19.28, or XEmacs 19.12 is recommended. GNU Emacs -19.25 has been reported to work under certain circumstances, but it -doesn't @emph{officially} work on it. 19.27 has also been reported to -work. Gnus has been reported to work under OS/2 as well as Unix. +(add-to-list 'load-path "/path/to/gnus/lisp") +(if (featurep 'xemacs) + (add-to-list 'Info-directory-list "/path/to/gnus/texi/") + (add-to-list 'Info-default-directory-list "/path/to/gnus/texi/")) + +@end example +@noindent + Make sure that you don't have any gnus related stuff + before this line, on MS Windows use something like + "C:/path/to/lisp" (yes, "/"). + +@ifnottex +@node [1.5], [1.6], [1.4], FAQ 1 - Installation +@end ifnottex +@subheading Question 1.5: + +Which version of Emacs do I need? + +Answer: + + Gnus 5.10.0 requires an Emacs version that is greater + than or equal to Emacs 20.3 or XEmacs 20.1. + +@ifnottex +@node [1.6], , [1.5], FAQ 1 - Installation +@end ifnottex +@subheading Question 1.6: + +How do I run Gnus on both Emacs and XEmacs? + +Answer: + + You can't use the same copy of Gnus in both as the Lisp + files are byte-compiled to a format which is different + depending on which Emacs did the compilation. Get one copy + of Gnus for Emacs and one for XEmacs. + +@ifnottex +@node FAQ 2 - Startup / Group buffer, FAQ 3 - Getting messages, FAQ 1 - Installation, Frequently Asked Questions +@end ifnottex +@section Startup / Group buffer -@item -Q1.4 Where is timezone.el? +@menu +* [2.1]:: Every time I start Gnus I get a message "Gnus auto-save file exists. Do you want to read it?", what does this mean and how to prevent it? +* [2.2]:: Gnus doesn't remember which groups I'm subscribed to, what's this? +* [2.3]:: How to change the format of the lines in Group buffer? +* [2.4]:: My group buffer becomes a bit crowded, is there a way to sort my groups into categories so I can easier browse through them? +* [2.5]:: How to manually sort the groups in Group buffer? How to sort the groups in a topic? +@end menu -Upgrade to XEmacs 19.13. In earlier versions of XEmacs this file was -placed with Gnus 4.1.3, but that has been corrected. +@ifnottex +@node [2.1], [2.2], FAQ 2 - Startup / Group buffer, FAQ 2 - Startup / Group buffer +@end ifnottex +@subheading Question 2.1: + + Every time I start Gnus I get a message "Gnus auto-save + file exists. Do you want to read it?", what does this mean + and how to prevent it? + + +Answer: + + This message means that the last time you used Gnus, it + wasn't properly exited and therefor couldn't write its + informations to disk (e.g. which messages you read), you + are now asked if you want to restore those informations + from the auto-save file. + + + To prevent this message make sure you exit Gnus + via @samp{q} in group buffer instead of + just killing Emacs. + +@ifnottex +@node [2.2], [2.3], [2.1], FAQ 2 - Startup / Group buffer +@end ifnottex +@subheading Question: 2.2 + + Gnus doesn't remember which groups I'm subscribed to, + what's this? + + +Answer: + + You get the message described in the q/a pair above while + starting Gnus, right? It's an other symptom for the same + problem, so read the answer above. + +@ifnottex +@node [2.3], [2.4], [2.2], FAQ 2 - Startup / Group buffer +@end ifnottex +@subheading Question 2.3: + + How to change the format of the lines in Group buffer? + + +Answer: + + You've got to tweak the value of the variable + gnus-group-line-format. See the manual node "Group Line + Specification" for information on how to do this. An + example for this (guess from whose .gnus :-)): + +@example -@item -Q1.5 When I run Gnus on XEmacs 19.13 I get weird error messages. +(setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n") + +@end example + +@ifnottex +@node [2.4], [2.5], [2.3], FAQ 2 - Startup / Group buffer +@end ifnottex +@subheading Question 2.4: + + My group buffer becomes a bit crowded, is there a way to + sort my groups into categories so I can easier browse + through them? + + +Answer: + + Gnus offers the topic mode, it allows you to sort your + groups in, well, topics, e.g. all groups dealing with + Linux under the topic linux, all dealing with music under + the topic music and all dealing with scottish music under + the topic scottish which is a subtopic of music. + + + To enter topic mode, just hit t while in Group buffer. Now + you can use @samp{T n} to create a topic + at point and @samp{T m} to move a group to + a specific topic. For more commands see the manual or the + menu. You might want to include the %P specifier at the + beginning of your gnus-group-line-format variable to have + the groups nicely indented. + +@ifnottex +@node [2.5], , [2.4], FAQ 2 - Startup / Group buffer +@end ifnottex +@subheading Question 2.5: + + How to manually sort the groups in Group buffer? How to + sort the groups in a topic? + + +Answer: + + Move point over the group you want to move and + hit @samp{C-k}, now move point to the + place where you want the group to be and + hit @samp{C-y}. + +@ifnottex +@node FAQ 3 - Getting messages, FAQ 4 - Reading messages, FAQ 2 - Startup / Group buffer, Frequently Asked Questions +@end ifnottex +@section Getting messages -You're running an old version of Gnus. Upgrade to at least version -5.0.4. +@menu +* [3.1]:: I just installed Gnus, started it via M-x gnus but it only says "nntp (news) open error", what to do? +* [3.2]:: I'm working under Windows and have no idea what ~/.gnus means. +* [3.3]:: My news server requires authentication, how to store user name and password on disk? +* [3.4]:: Gnus seems to start up OK, but I can't find out how to subscribe to a group. +* [3.5]:: Gnus doesn't show all groups / Gnus says I'm not allowed to post on this server as well as I am, what's that? +* [3.6]:: I want Gnus to fetch news from several servers, is this possible? +* [3.7]:: And how about local spool files? +* [3.8]:: OK, reading news works now, but I want to be able to read my mail with Gnus, too. How to do it? +* [3.9]:: And what about IMAP? +* [3.10]:: At the office we use one of those MS Exchange servers, can I use Gnus to read my mail from it? +* [3.11]:: Can I tell Gnus not to delete the mails on the server it retrieves via POP3? +@end menu +@ifnottex +@node [3.1], [3.2], FAQ 3 - Getting messages, FAQ 3 - Getting messages +@end ifnottex +@subheading Question 3.1: -@item -Q1.6 How do I unsubscribe from the Mailing List? + I just installed Gnus, started it via + @samp{M-x gnus} + but it only says "nntp (news) open error", what to do? + -Send an e-mail message to @file{ding-request@@ifi.uio.no} with the magic word -@emph{unsubscribe} somewhere in it, and you will be removed. +Answer: -If you are reading the digest version of the list, send an e-mail message -to @* -@file{ding-rn-digests-d-request@@moe.shore.net} -with @emph{unsubscribe} as the subject and you will be removed. + You've got to tell Gnus where to fetch the news from. Read + the documentation for information on how to do this. As a + first start, put those lines in ~/.gnus: + +@example -@item -Q1.7 How do I run Gnus on both Emacs and XEmacs? +(setq gnus-select-method '(nntp "news.yourprovider.net")) +(setq user-mail-address "you@@yourprovider.net") +(setq user-full-name "Your Name") + +@end example + +@ifnottex +@node [3.2], [3.3], [3.1], FAQ 3 - Getting messages +@end ifnottex +@subheading Question 3.2: + + I'm working under Windows and have no idea what ~/.gnus means. + + +Answer: + + The ~/ means the home directory where Gnus and Emacs look for the +configuration files. However, you don't really need to know what this +means, it suffices that Emacs knows what it means :-) You can type +@samp{C-x C-f ~/.gnus RET } (yes, with the forward slash, even on +Windows), and Emacs will open the right file for you. (It will most +likely be new, and thus empty.) However, I'd discourage you from +doing so, since the directory Emacs chooses will most certainly not be +what you want, so let's do it the correct way. The first thing you've +got to do is to create a suitable directory (no blanks in directory +name please) e.g. @file{c:\myhome}. Then you must set the environment +variable HOME to this directory. To do this under Win9x or Me include +the line + -The basic answer is to byte-compile under XEmacs, and then you can -run under either Emacsen. There is, however, a potential version -problem with easymenu.el with Gnu Emacs prior to 19.29. +@example -Per Abrahamsen writes :@* -The internal easymenu.el interface changed between 19.28 and 19.29 in -order to make it possible to create byte compiled files that can be -shared between Gnu Emacs and XEmacs. The change is upward -compatible, but not downward compatible. -This gives the following compatibility table: +SET HOME=C:\myhome + +@end example + +@noindent + in your autoexec.bat and reboot. Under NT, 2000 and XP, + hit Winkey+Pause/Break to enter system options (if it + doesn't work, go to Control Panel -> System). There you'll + find the possibility to set environment variables, create + a new one with name HOME and value @file{c:\myhome}, a reboot is + not necessary. + + + Now to create ~/.gnus, say + @samp{C-x C-f ~/.gnus RET C-x C-s}. + in Emacs. + +@ifnottex +@node [3.3], [3.4], [3.2], FAQ 3 - Getting messages +@end ifnottex +@subheading Question 3.3: + + My news server requires authentication, how to store + user name and password on disk? + + +Answer: + + Create a file ~/.authinfo which includes for each server a line like this + @example -Compiled with: | Can be used with: -----------------+-------------------------------------- -19.28 | 19.28 19.29 -19.29 | 19.29 XEmacs -XEmacs | 19.29 XEmacs +machine news.yourprovider.net login YourUserName password YourPassword @end example -If you have Gnu Emacs 19.28 or earlier, or XEmacs 19.12 or earlier, get -a recent version of auc-menu.el from -@uref{ftp://ftp.iesd.auc.dk/pub/emacs-lisp/auc-menu.el}, and install it -under the name easymenu.el somewhere early in your load path. +@noindent +. + Make sure that the file isn't readable to others if you + work on a OS which is capable of doing so. (Under Unix + say +@example +chmod 600 ~/.authinfo +@end example -@item -Q1.8 What resources are available? +@noindent + in a shell.) + +@ifnottex +@node [3.4], [3.5], [3.3], FAQ 3 - Getting messages +@end ifnottex +@subheading Question 3.4: + + Gnus seems to start up OK, but I can't find out how to + subscribe to a group. + + +Answer: + + If you know the name of the group say @samp{U + name.of.group RET} in group buffer (use the + tab-completion Luke). Otherwise hit ^ in group buffer, + this brings you to the server buffer. Now place point (the + cursor) over the server which carries the group you want, + hit @samp{RET}, move point to the group + you want to subscribe to and say @samp{u} + to subscribe to it. + +@ifnottex +@node [3.5], [3.6], [3.4], FAQ 3 - Getting messages +@end ifnottex +@subheading Question 3.5: + + Gnus doesn't show all groups / Gnus says I'm not allowed to + post on this server as well as I am, what's that? + + +Answer: + + Some providers allow restricted anonymous access and full + access only after authorization. To make Gnus send authinfo + to those servers append + -There is the newsgroup Gnu.emacs.gnus. Discussion of Gnus 5.x is now -taking place there. There is also a mailing list, send mail to -@file{ding-request@@ifi.uio.no} with the magic word @emph{subscribe} -somewhere in it. +@example +force yes +@end example + -@emph{NOTE:} the traffic on this list is heavy so you may not want to be -on it (unless you use Gnus as your mailer reader, that is). The mailing -list is mainly for developers and testers. +@noindent + to the line for those servers in ~/.authinfo. + +@ifnottex +@node [3.6], [3.7], [3.5], FAQ 3 - Getting messages +@end ifnottex +@subheading Question 3.6: -Gnus has a home World Wide Web page at@* -@uref{http://www.ifi.uio.no/~larsi/ding.html}. + I want Gnus to fetch news from several servers, is this possible? + -Gnus has a write up in the X Windows Applications FAQ at@* -@uref{http://www.ee.ryerson.ca:8080/~elf/xapps/Q-III.html}. +Answer: -The Gnus manual is also available on the World Wide Web. The canonical -source is in Norway at@* -@uref{http://www.ifi.uio.no/~larsi/ding-manual/gnus_toc.html}. + Of course. You can specify more sources for articles in the + variable gnus-secondary-select-methods. Add something like + this in ~/.gnus: + -There are three mirrors in the United States: -@enumerate -@item -@uref{http://www.miranova.com/gnus-man/} +@example -@item -@uref{http://www.pilgrim.umass.edu/pub/misc/ding/manual/gnus_toc.html} +(add-to-list 'gnus-secondary-select-methods '(nntp "news.yourSecondProvider.net")) +(add-to-list 'gnus-secondary-select-methods '(nntp "news.yourThirdProvider.net")) + +@end example + +@ifnottex +@node [3.7], [3.8], [3.6], FAQ 3 - Getting messages +@end ifnottex +@subheading Question 3.7: -@item -@uref{http://www.rtd.com/~woo/gnus/} + And how about local spool files? + -@end enumerate +Answer: -PostScript copies of the Gnus Reference card are available from@* -@uref{ftp://ftp.cs.ualberta.ca/pub/oolog/gnus/}. They are mirrored at@* -@uref{ftp://ftp.pilgrim.umass.edu/pub/misc/ding/refcard/} in the -United States. And@* -@uref{ftp://marvin.fkphy.uni-duesseldorf.de/pub/gnus/} -in Germany. + No problem, this is just one more select method called + nnspool, so you want this: + -An online version of the Gnus FAQ is available at@* -@uref{http://www.miranova.com/~steve/gnus-faq.html}. Off-line formats -are also available:@* -ASCII: @uref{ftp://ftp.miranova.com/pub/gnus/gnus-faq}@* -PostScript: @uref{ftp://ftp.miranova.com/pub/gnus/gnus-faq.ps}. +@example +(add-to-list 'gnus-secondary-select-methods '(nnspool "")) + +@end example -@item -Q1.9 Gnus hangs on connecting to NNTP server +@noindent + Or this if you don't want an NNTP Server as primary news source: + -I am running XEmacs on SunOS and Gnus prints a message about Connecting -to NNTP server and then just hangs. +@example -Ben Wing writes :@* -I wonder if you're hitting the infamous @emph{libresolv} problem. -The basic problem is that under SunOS you can compile either -with DNS or NIS name lookup libraries but not both. Try -substituting the IP address and see if that works; if so, you -need to download the sources and recompile. +(setq gnus-select-method '(nnspool "")) + +@end example +@noindent + Gnus will look for the spool file in /usr/spool/news, if you + want something different, change the line above to something like this: + -@item -Q1.10 Mailcrypt 3.4 doesn't work +@example -This problem is verified to still exist in Gnus 5.0.9 and Mailcrypt 3.4. -The answer comes from Peter Arius -. +(add-to-list 'gnus-secondary-select-methods + '(nnspool "" (nnspool-directory "/usr/local/myspoolddir"))) + +@end example -I found out that mailcrypt uses -@code{gnus-eval-in-buffer-window}, which is a macro. -It seems as if you have -compiled mailcrypt with plain old GNUS in load path, and the XEmacs byte -compiler has inserted that macro definition into -@file{mc-toplev.elc}. -The solution is to recompile @file{mc-toplev.el} with Gnus 5 in -load-path, and it works fine. +@noindent + This sets the spool directory for this server only. + You might have to specify more stuff like the program used + to post articles, see the Gnus manual on how to do this. + +@ifnottex +@node [3.8], [3.9], [3.7], FAQ 3 - Getting messages +@end ifnottex +@subheading Question 3.8: + + OK, reading news works now, but I want to be able to read my mail + with Gnus, too. How to do it? + + +Answer: + + That's a bit harder since there are many possible sources + for mail, many possible ways for storing mail and many + different ways for sending mail. The most common cases are + these: 1: You want to read your mail from a pop3 server and + send them directly to a SMTP Server 2: Some program like + fetchmail retrieves your mail and stores it on disk from + where Gnus shall read it. Outgoing mail is sent by + Sendmail, Postfix or some other MTA. Sometimes, you even + need a combination of the above cases. + + + However, the first thing to do is to tell Gnus in which way + it should store the mail, in Gnus terminology which back end + to use. Gnus supports many different back ends, the most + commonly used one is nnml. It stores every mail in one file + and is therefor quite fast. However you might prefer a one + file per group approach if your file system has problems with + many small files, the nnfolder back end is then probably the + choice for you. To use nnml add the following to ~/.gnus: + -Steve Baur adds :@* -The problem also manifests itself if neither GNUS 4 nor Gnus 5 is in the -load-path. +@example +(add-to-list 'gnus-secondary-select-methods '(nnml "")) + +@end example -@item -Q1.11 What other packages work with Gnus? +@noindent + As you might have guessed, if you want nnfolder, it's + -@itemize @minus -@item -Mailcrypt. +@example -Mailcrypt is an Emacs interface to PGP. It works, it installs -without hassle, and integrates very easily. Mailcrypt can be -obtained from@* -@uref{ftp://cag.lcs.mit.edu/pub/patl/mailcrypt-3.4.tar.gz}. +(add-to-list 'gnus-secondary-select-methods '(nnfolder "")) + +@end example + -@item -Tools for Mime. - -Tools for Mime is an Emacs MUA interface to MIME. Installation is -a two-step process unlike most other packages, so you should -be prepared to move the byte-compiled code somewhere. There -are currently two versions of this package available. It can -be obtained from@* -@uref{ftp://ftp.m17n.org/pub/mule/}. -Be sure to apply the supplied patch. It works with Gnus through -version 5.0.9. In order for all dependencies to work correctly -the load sequence is as follows: -@lisp - (load "tm-setup") - (load "gnus") - (load "mime-compose") -@end lisp - -@emph{NOTE:} Loading the package disables citation highlighting by -default. To get the old behavior back, use the @kbd{M-t} command. + Now we need to tell Gnus, where to get it's mail from. If + it's a POP3 server, then you need something like this: + -@end itemize +@example -@end itemize +(eval-after-load "mail-source" + '(add-to-list 'mail-sources '(pop :server "pop.YourProvider.net" + :user "yourUserName" + :password "yourPassword")) + +@end example +@noindent + Make sure ~/.gnus isn't readable to others if you store + your password there. If you want to read your mail from a + traditional spool file on your local machine, it's + -@node Customization FAQ -@subsection Customization +@example -@itemize @bullet -@item -Q2.1 Custom Edit does not work under XEmacs +(eval-after-load "mail-source" + '(add-to-list 'mail-sources '(file :path "/path/to/spool/file")) + +@end example + +@noindent + If it's a Maildir, with one file per message as used by + postfix, Qmail and (optionally) fetchmail it's + -The custom package has not been ported to XEmacs. +@example +(eval-after-load "mail-source" + '(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/" + :subdirs ("cur" "new"))) + +@end example -@item -Q2.2 How do I quote messages? +@noindent + And finally if you want to read your mail from several files + in one directory, for example because procmail already split your + mail, it's + -I see lots of messages with quoted material in them. I am wondering -how to have Gnus do it for me. +@example -This is Gnus, so there are a number of ways of doing this. You can use -the built-in commands to do this. There are the @kbd{F} and @kbd{R} -keys from the summary buffer which automatically include the article -being responded to. These commands are also selectable as @i{Followup -and Yank} and @i{Reply and Yank} in the Post menu. +(eval-after-load "mail-source" + '(add-to-list 'mail-sources '(directory :path "/path/to/procmail-dir/" + :suffix ".prcml")) + +@end example -@kbd{C-c C-y} grabs the previous message and prefixes each line with -@code{message-indentation-spaces} spaces or @code{message-yank-prefix} if that is -non-nil, unless you have set your own @code{mail-citation-hook}, which will -be called to do the job. +@noindent + Where :suffix ".prcml" tells Gnus only to use files with the + suffix .prcml. + -You might also consider the Supercite package, which allows for pretty -arbitrarily complex quoting styles. Some people love it, some people -hate it. + OK, now you only need to tell Gnus how to send mail. If you + want to send mail via sendmail (or whichever MTA is playing + the role of sendmail on your system), you don't need to do + anything. However, if you want to send your mail to an + SMTP Server you need the following in your ~/.gnus + +@example -@item -Q2.3 How can I keep my nnvirtual:* groups sorted? +(setq send-mail-function 'smtpmail-send-it) +(setq message-send-mail-function 'smtpmail-send-it) +(setq smtpmail-default-smtp-server "smtp.yourProvider.net") + +@end example + +@ifnottex +@node [3.9], [3.10], [3.8], FAQ 3 - Getting messages +@end ifnottex +@subheading Question 3.9: -How can I most efficiently arrange matters so as to keep my nnvirtual:* -(etc) groups at the top of my group selection buffer, whilst keeping -everything sorted in alphabetical order. + And what about IMAP? + -If you don't subscribe often to new groups then the easiest way is to -first sort the groups and then manually kill and yank the virtuals -wherever you want them. +Answer: + There are two ways of using IMAP with Gnus. The first one is + to use IMAP like POP3, that means Gnus fetches the mail from + the IMAP server and stores it on disk. If you want to do + this (you don't really want to do this) add the following to + ~/.gnus + -@item -Q2.4 Any good suggestions on stuff for an all.SCORE file? +@example -Here is a collection of suggestions from the Gnus mailing list. +(add-to-list 'mail-sources '(imap :server "mail.mycorp.com" + :user "username" + :pass "password" + :stream network + :authentication login + :mailbox "INBOX" + :fetchflag "\\Seen")) + +@end example -@enumerate -@item -From ``Dave Disser'' @* -I like blasting anything without lowercase letters. Weeds out most of -the make $$ fast, as well as the lame titles like ``IBM'' and ``HP-UX'' -with no further description. -@lisp - (("Subject" - ("^\\(Re: \\)?[^a-z]*$" -200 nil R))) -@end lisp +@noindent + You might have to tweak the values for stream and/or + authentification, see the Gnus manual node "Mail Source + Specifiers" for possible values. + -@item -From ``Peter Arius'' @* -The most vital entries in my (still young) all.SCORE: -@lisp -(("xref" - ("alt.fan.oj-simpson" -1000 nil s)) - ("subject" - (concat "\\<\\(make\\|fast\\|big\\)\\s-*" - "\\(money\\|cash\\|bucks?\\)\\>" - -1000 nil r) - ("$$$$" -1000 nil s))) -@end lisp + If you want to use IMAP the way it's intended, you've got to + follow a different approach. You've got to add the nnimap + back end to your select method and give the information + about the server there. + -@item -From ``Per Abrahamsen'' @* -@lisp -(("subject" - ;; CAPS OF THE WORLD, UNITE - ("^..[^a-z]+$" -1 nil R) - ;; $$$ Make Money $$$ (Try work) - ("$" -1 nil s) - ;; I'm important! And I have exclamation marks to prove it! - ("!" -1 nil s))) -@end lisp +@example -@item -From ``heddy boubaker'' @* -I would like to contribute with mine. -@lisp -( - (read-only t) - ("subject" - ;; ALL CAPS SUBJECTS - ("^\\([Rr][Ee]: +\\)?[^a-z]+$" -1 nil R) - ;; $$$ Make Money $$$ - ("$$" -10 nil s) - ;; Empty subjects are worthless! - ("^ *\\([(<]none[>)]\\|(no subject\\( given\\)?)\\)? *$" - -10 nil r) - ;; Sometimes interesting announces occur! - ("ANN?OU?NC\\(E\\|ING\\)" +10 nil r) - ;; Some people think they're on mailing lists - ("\\(un\\)?sub?scribe" -100 nil r) - ;; Stop Micro$oft NOW!! - ;; ("concat" used to avoid overfull box.) - (concat "\\(m\\(icro\\)?[s$]\\(oft\\|lot\\)?-?\\)?" - "wind?\\(ows\\|aube\\|oze\\)?[- ]*" - "\\('?95\\|NT\\|3[.]1\\|32\\)" -1001 nil r) - ;; I've nothing to buy - ("\\(for\\|4\\)[- ]*sale" -100 nil r) - ;; SELF-DISCIPLINED people - ("\\[[^a-z0-9 \t\n][^a-z0-9 \t\n]\\]" +100 nil r) - ) - ("from" - ;; To keep track of posters from my site - (".dgac.fr" +1000 nil s)) - ("followup" - ;; Keep track of answers to my posts - ("boubaker" +1000 nil s)) - ("lines" - ;; Some people have really nothing to say!! - (1 -10 nil <=)) - (mark -100) - (expunge -1000) - ) -@end lisp +(add-to-list 'gnus-secondary-select-methods + '(nnimap "Give the baby a name" + (nnimap-address "imap.yourProvider.net") + (nnimap-port 143) + (nnimap-list-pattern "archive.*"))) + +@end example -@item -From ``Christopher Jones'' @* -The sample @file{all.SCORE} files from Per and boubaker could be -augmented with: -@lisp - (("subject" - ;; No junk mail please! - ("please ignore" -500 nil s) - ("test" -500 nil e)) - ) -@end lisp +@noindent + Again, you might have to specify how to authenticate to the + server if Gnus can't guess the correct way, see the Manual + Node "IMAP" for detailed information. + +@ifnottex +@node [3.10], [3.11], [3.9], FAQ 3 - Getting messages +@end ifnottex +@subheading Question 3.10: + + At the office we use one of those MS Exchange servers, can I use + Gnus to read my mail from it? + + +Answer: + + Offer your administrator a pair of new running shoes for + activating IMAP on the server and follow the instructions + above. + +@ifnottex +@node [3.11], , [3.10], FAQ 3 - Getting messages +@end ifnottex +@subheading Question 3.11: + + Can I tell Gnus not to delete the mails on the server it + retrieves via POP3? + + +Answer: + + First of all, that's not the way POP3 is intended to work, + if you have the possibility, you should use the IMAP + Protocol if you want your messages to stay on the + server. Nevertheless there might be situations where you + need the feature, but sadly Gnus itself has no predefined + functionality to do so. + + + However this is Gnus county so there are possibilities to + achieve what you want. The easiest way is to get an external + program which retrieves copies of the mail and stores them + on disk, so Gnus can read it from there. On Unix systems you + could use e.g. fetchmail for this, on MS Windows you can use + Hamster, an excellent local news and mail server. + + + The other solution would be, to replace the method Gnus + uses to get mail from POP3 servers by one which is capable + of leaving the mail on the server. If you use XEmacs, get + the package mail-lib, it includes an enhanced pop3.el, + look in the file, there's documentation on how to tell + Gnus to use it and not to delete the retrieved mail. For + GNU Emacs look for the file epop3.el which can do the same + (If you know the home of this file, please send me an + e-mail). You can also tell Gnus to use an external program + (e.g. fetchmail) to fetch your mail, see the info node + "Mail Source Specifiers" in the Gnus manual on how to do + it. + + +@ifnottex +@node FAQ 4 - Reading messages, FAQ 5 - Composing messages, FAQ 3 - Getting messages, Frequently Asked Questions +@end ifnottex +@section Reading messages -@item -From ``Brian Edmonds'' @* -Augment any of the above with a fast method of scoring down -excessively cross posted articles. -@lisp - ("xref" - ;; the more cross posting, the exponentially worse the article - ("^xref: \\S-+ \\S-+ \\S-+ \\S-+" -1 nil r) - ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -2 nil r) - ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -4 nil r) - ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -8 nil r) - ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" - -16 nil r) - (concat "^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" - " \\S-+ \\S-+" - -32 nil r) - (concat "^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" - " \\S-+ \\S-+ \\S-+" -64 nil r) - (concat "^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" - " \\S-+ \\S-+ \\S-+ \\S-+" -128 nil r) - (concat "^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" - " \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -256 nil r) - (concat "^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" - " \\S-+" \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -512 nil r)) -@end lisp - -@end enumerate +@menu +* [4.1]:: When I enter a group, all read messages are gone. How to view them again? +* [4.2]:: How to tell Gnus to show an important message every time I enter a group, even when it's read? +* [4.3]:: How to view the headers of a message? +* [4.4]:: How to view the raw unformatted message? +* [4.5]:: How can I change the headers Gnus displays by default at the top of the article buffer? +* [4.6]:: I'd like Gnus NOT to render HTML-mails but show me the text part if it's available. How to do it? +* [4.7]:: Can I use some other browser than w3 to render my HTML-mails? +* [4.8]:: Is there anything I can do to make poorly formatted mails more readable? +* [4.9]:: Is there a way to automatically ignore posts by specific authors or with specific words in the subject? And can I highlight more interesting ones in some way? +* [4.10]:: How can I disable threading in some (e.g. mail-) groups, or set other variables specific for some groups? +* [4.11]:: Can I highlight messages written by me and follow-ups to those? +* [4.12]:: The number of total messages in a group which Gnus displays in group buffer is by far to high, especially in mail groups. Is this a bug? +* [4.13]:: I don't like the layout of summary and article buffer, how to change it? Perhaps even a three pane display? +* [4.14]:: I don't like the way the Summary buffer looks, how to tweak it? +* [4.15]:: How to split incoming mails in several groups? +@end menu +@ifnottex +@node [4.1], [4.2], FAQ 4 - Reading messages, FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.1: -@item -Q2.5 What do I use to yank-through when replying? + When I enter a group, all read messages are gone. How to view them again? + + +Answer: -You should probably reply and followup with @kbd{R} and @kbd{F}, instead -of @kbd{r} and @kbd{f}, which solves your problem. But you could try -something like: + If you enter the group by saying + @samp{RET} + in summary buffer with point over the group, only unread and ticked messages are loaded. Say + @samp{C-u RET} + instead to load all available messages. If you want only the e.g. 300 newest say + @samp{C-u 300 RET} + + + Loading only unread messages can be annoying if you have threaded view enabled, say + @example -(defconst mail-yank-ignored-headers - "^.*:" - "Delete these headers from message when it's inserted in reply.") + +(setq gnus-fetch-old-headers 'some) + @end example + + +@noindent + in ~/.gnus to load enough old articles to prevent teared threads, replace 'some with t to load + all articles (Warning: Both settings enlarge the amount of data which is + fetched when you enter a group and slow down the process of entering a group). + + + If you already use Gnus 5.10.0, you can say + @samp{/o N} + In summary buffer to load the last N messages, this feature is not available in 5.8.8 + + + If you don't want all old messages, but the parent of the message you're just reading, + you can say @samp{^}, if you want to retrieve the whole thread + the message you're just reading belongs to, @samp{A T} is your friend. + +@ifnottex +@node [4.2], [4.3], [4.1], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.2: + + How to tell Gnus to show an important message every time I + enter a group, even when it's read? + + +Answer: + + You can tick important messages. To do this hit + @samp{u} while point is in summary buffer + over the message. When you want to remove the mark, hit + either @samp{d} (this deletes the tick + mark and set's unread mark) or @samp{M c} + (which deletes all marks for the message). + +@ifnottex +@node [4.3], [4.4], [4.2], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.3: + + How to view the headers of a message? + + +Answer: + + Say @samp{t} + to show all headers, one more + @samp{t} + hides them again. + +@ifnottex +@node [4.4], [4.5], [4.3], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.4: + + How to view the raw unformatted message? + + +Answer: + + Say + @samp{C-u g} + to show the raw message + @samp{g} + returns to normal view. + +@ifnottex +@node [4.5], [4.6], [4.4], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.5: + + How can I change the headers Gnus displays by default at + the top of the article buffer? + + +Answer: + + The variable gnus-visible-headers controls which headers + are shown, its value is a regular expression, header lines + which match it are shown. So if you want author, subject, + date, and if the header exists, Followup-To and MUA / NUA + say this in ~/.gnus: + +@example -@item -Q2.6 I don't like the default WWW browser +(setq gnus-visible-headers +"^\\(From:\\|Subject:\\|Date:\\|Followup-To:\\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)") + +@end example + +@ifnottex +@node [4.6], [4.7], [4.5], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.6: -Now when choosing an URL Gnus starts up a W3 buffer, I would like it -to always use Netscape (I don't browse in text-mode ;-). + I'd like Gnus NOT to render HTML-mails but show me the + text part if it's available. How to do it? + -@enumerate -@item -Activate `Customize...' from the `Help' menu. +Answer: -@item -Scroll down to the `WWW Browser' field. + Say + -@item -Click `mouse-2' on `WWW Browser'. +@example -@item -Select `Netscape' from the pop up menu. +(eval-after-load "mm-decode" + '(progn + (add-to-list 'mm-discouraged-alternatives "text/html") + (add-to-list 'mm-discouraged-alternatives "text/richtext"))) + +@end example -@item -Press `C-c C-c' +@noindent + in ~/.gnus. If you don't want HTML rendered, even if there's no text alternative add + -@end enumerate +@example -If you are using XEmacs then to specify Netscape do -@lisp - (setq gnus-button-url 'gnus-netscape-open-url) -@end lisp +(setq mm-automatic-display (remove "text/html" mm-automatic-display)) + +@end example +@noindent + too. + +@ifnottex +@node [4.7], [4.8], [4.6], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.7: -@item -Q2.7 What, if any, relation is between ``ask-server'' and ``(setq -gnus-read-active-file 'some)''? + Can I use some other browser than w3 to render my HTML-mails? + -In order for Gnus to show you the complete list of newsgroups, it will -either have to either store the list locally, or ask the server to -transmit the list. You enable the first with +Answer: -@lisp - (setq gnus-save-killed-list t) -@end lisp + Only if you use Gnus 5.10.0 or younger. In this case you've got the + choice between w3, w3m, links, lynx and html2text, which + one is used can be specified in the variable + mm-text-html-renderer, so if you want links to render your + mail say + -and the second with +@example -@lisp - (setq gnus-read-active-file t) -@end lisp +(setq mm-text-html-renderer 'links) + +@end example + +@ifnottex +@node [4.8], [4.9], [4.7], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.8: + + Is there anything I can do to make poorly formatted mails + more readable? + + +Answer: + + Gnus offers you several functions to "wash" incoming mail, + you can find them if you browse through the menu, item Article->Washing. The most + interesting ones are probably "Wrap long lines" ( + @samp{W w} + ), "Decode ROT13" ( + @samp{W r} + ) and "Outlook Deuglify" which repairs the dumb quoting used + by many users of Microsoft products ( + @samp{W Y f} gives you full deuglify. + See @samp{W Y C-h} or + have a look at the menus for other deuglifications). + Outlook deuglify is only available since Gnus 5.10.0. + +@ifnottex +@node [4.9], [4.10], [4.8], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.9: + + Is there a way to automatically ignore posts by specific + authors or with specific words in the subject? And can I + highlight more interesting ones in some way? + + +Answer: + + You want Scoring. Scoring means, that you define rules + which assign each message an integer value. Depending on + the value the message is highlighted in summary buffer (if + it's high, say +2000) or automatically marked read (if the + value is low, say -800) or some other action happens. + + + There are basically three ways of setting up rules which assign + the scoring-value to messages. The first and easiest way is to set + up rules based on the article you are just reading. Say you're + reading a message by a guy who always writes nonsense and you want + to ignore his messages in the future. Hit + @samp{L}, to set up a rule which lowers the score. + Now Gnus asks you which the criteria for lowering the Score shall + be. Hit @samp{?} twice to see all possibilities, + we want @samp{a} which means the author (the from + header). Now Gnus wants to know which kind of matching we want. + Hit either @samp{e} for an exact match or + @samp{s} for substring-match and delete afterwards + everything but the name to score down all authors with the given + name no matter which email address is used. Now you need to tell + Gnus when to apply the rule and how long it should last, hit e.g. + @samp{p} to apply the rule now and let it last + forever. If you want to raise the score instead of lowering it say + @samp{I} instead of @samp{L}. + + + You can also set up rules by hand. To do this say @samp{V + f} in summary buffer. Then you are asked for the name + of the score file, it's name.of.group.SCORE for rules valid in + only one group or all.Score for rules valid in all groups. See the + Gnus manual for the exact syntax, basically it's one big list + whose elements are lists again. the first element of those lists + is the header to score on, then one more list with what to match, + which score to assign, when to expire the rule and how to do the + matching. If you find me very interesting, you could e.g. add the + following to your all.Score: + -If both are disabled, Gnus will not know what newsgroups exists. There -is no option to get the list by casting a spell. +@example +(("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s)) + ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s))) + +@end example -@item -Q2.8 Moving between groups is slow. +@noindent + This would add 999 to the score of messages written by me + and 500 to the score of messages which are a (possibly + indirect) answer to a message written by me. Of course + nobody with a sane mind would do this :-) + + + The third alternative is adaptive scoring. This means Gnus + watches you and tries to find out what you find + interesting and what annoying and sets up rules + which reflect this. Adaptive scoring can be a huge help + when reading high traffic groups. If you want to activate + adaptive scoring say + -Per Abrahamsen writes:@* +@example -Do you call @code{define-key} or something like that in one of the -summary mode hooks? This would force Emacs to recalculate the keyboard -shortcuts. Removing the call should speed up @kbd{M-x gnus-summary-mode -RET} by a couple of orders of magnitude. You can use +(setq gnus-use-adaptive-scoring t) + +@end example -@lisp -(define-key gnus-summary-mode-map KEY COMMAND) -@end lisp +@noindent + in ~/.gnus. + +@ifnottex +@node [4.10], [4.11], [4.9], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.10: + + How can I disable threading in some (e.g. mail-) groups, or + set other variables specific for some groups? + + +Answer: + + While in group buffer move point over the group and hit + @samp{G c}, this opens a buffer where you + can set options for the group. At the bottom of the buffer + you'll find an item that allows you to set variables + locally for the group. To disable threading enter + gnus-show-threads as name of variable and nil as + value. Hit button done at the top of the buffer when + you're ready. + +@ifnottex +@node [4.11], [4.12], [4.10], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.11: + + Can I highlight messages written by me and follow-ups to + those? + + +Answer: + + Stop those "Can I ..." questions, the answer is always yes + in Gnus Country :-). It's a three step process: First we + make faces (specifications of how summary-line shall look + like) for those postings, then we'll give them some + special score and finally we'll tell Gnus to use the new + faces. You can find detailed instructions on how to do it on + @uref{http://my.gnus.org/Members/dzimmerm/HowTo%2C2002-07-25%2C1027619165012198456/view,my.gnus.org} + +@ifnottex +@node [4.12], [4.13], [4.11], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.12: + + The number of total messages in a group which Gnus + displays in group buffer is by far to high, especially in + mail groups. Is this a bug? + + +Answer: + + No, that's a matter of design of Gnus, fixing this would + mean reimplementation of major parts of Gnus' + back ends. Gnus thinks "highest-article-number - + lowest-article-number = total-number-of-articles". This + works OK for Usenet groups, but if you delete and move + many messages in mail groups, this fails. To cure the + symptom, enter the group via @samp{C-u RET} + (this makes Gnus get all messages), then + hit @samp{M P b} to mark all messages and + then say @samp{B m name.of.group} to move + all messages to the group they have been in before, they + get new message numbers in this process and the count is + right again (until you delete and move your mail to other + groups again). + +@ifnottex +@node [4.13], [4.14], [4.12], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.13: + + I don't like the layout of summary and article buffer, how + to change it? Perhaps even a three pane display? + + +Answer: + + You can control the windows configuration by calling the + function gnus-add-configuration. The syntax is a bit + complicated but explained very well in the manual node + "Window Layout". Some popular examples: + + + Instead 25% summary 75% article buffer 35% summary and 65% + article (the 1.0 for article means "take the remaining + space"): + -in your @file{.gnus} instead. +@example -@end itemize +(gnus-add-configuration '(article (vertical 1.0 (summary .35 point) (article 1.0)))) + +@end example + + A three pane layout, Group buffer on the left, summary + buffer top-right, article buffer bottom-right: + -@node Reading News FAQ -@subsection Reading News +@example -@itemize @bullet -@item -Q3.1 How do I convert my kill files to score files? +(gnus-add-configuration + '(article + (horizontal 1.0 + (vertical 25 + (group 1.0)) + (vertical 1.0 + (summary 0.25 point) + (article 1.0))))) +(gnus-add-configuration + '(summary + (horizontal 1.0 + (vertical 25 + (group 1.0)) + (vertical 1.0 + (summary 1.0 point))))) + +@end example + +@ifnottex +@node [4.14], [4.15], [4.13], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.14: + + I don't like the way the Summary buffer looks, how to tweak it? + + +Answer: + + You've got to play around with the variable + gnus-summary-line-format. It's value is a string of + symbols which stand for things like author, date, subject + etc. A list of the available specifiers can be found in the + manual node "Summary Buffer Lines" and the often forgotten + node "Formatting Variables" and it's sub-nodes. There + you'll find useful things like positioning the cursor and + tabulators which allow you a summary in table form, but + sadly hard tabulators are broken in 5.8.8. + + + Since 5.10.0, Gnus offers you some very nice new specifiers, + e.g. %B which draws a thread-tree and %&user-date which + gives you a date where the details are dependent of the + articles age. Here's an example which uses both: + -@samp{ethanb@@ptolemy.astro.washington.edu, Ethan Bradford} write a -kill-to-score translator. It is available from@* -@uref{http://baugi.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}. +@example +(setq gnus-summary-line-format ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n") + +@end example -@item -Q3.2 My news server has a lot of groups, and killing groups is painfully -slow. +@noindent + resulting in: + -Don't do that then. The best way to get rid of groups that should be -dead is to edit your newsrc directly. This problem will be addressed -in the near future. +@example +:O Re: [Richard Stallman] rfc2047.el | 13 |Lars Magne Ingebrigt |Sat 23:06 +:O Re: Revival of the ding-patches list | 13 |Lars Magne Ingebrigt |Sat 23:12 +:R > Re: Find correct list of articles for a gro| 25 |Lars Magne Ingebrigt |Sat 23:16 +:O \-> ... | 21 |Kai Grossjohann | 0:01 +:R > Re: Cry for help: deuglify.el - moving stuf| 28 |Lars Magne Ingebrigt |Sat 23:34 +:O \-> ... | 115 |Raymond Scholz | 1:24 +:O \-> ... | 19 |Lars Magne Ingebrigt |15:33 +:O Slow mailing list | 13 |Lars Magne Ingebrigt |Sat 23:49 +:O Re: `@@' mark not documented | 13 |Lars Magne Ingebrigt |Sat 23:50 +:R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57 +:O \-> ... | 18 |Kai Grossjohann | 0:35 +:O \-> ... | 13 |Lars Magne Ingebrigt | 0:56 + +@end example + +@ifnottex +@node [4.15], , [4.14], FAQ 4 - Reading messages +@end ifnottex +@subheading Question 4.15: + + How to split incoming mails in several groups? + + +Answer: + + Gnus offers two possibilities for splitting mail, the easy + nnmail-split-methods and the more powerful Fancy Mail + Splitting. I'll only talk about the first one, refer to + the manual, node "Fancy Mail Splitting" for the latter. + + + The value of nnmail-split-methods is a list, each element + is a list which stands for a splitting rule. Each rule has + the form "group where matching articles should go to", + "regular expression which has to be matched", the first + rule which matches wins. The last rule must always be a + general rule (regular expression .*) which denotes where + articles should go which don't match any other rule. If + the folder doesn't exist yet, it will be created as soon + as an article lands there. By default the mail will be + send to all groups whose rules match. If you + don't want that (you probably don't want), say + -@item -Q3.3 How do I use an NNTP server with authentication? +@example -Put the following into your .gnus: -@lisp - (add-hook 'nntp-server-opened-hook 'nntp-send-authinfo) -@end lisp +(setq nnmail-crosspost nil) + +@end example +@noindent + in ~/.gnus. + -@item -Q3.4 Not reading the first article. + An example might be better than thousand words, so here's + my nnmail-split-methods. Note that I send duplicates in a + special group and that the default group is spam, since I + filter all mails out which are from some list I'm + subscribed to or which are addressed directly to me + before. Those rules kill about 80% of the Spam which + reaches me (Email addresses are changed to prevent spammers + from using them): + -How do I avoid reading the first article when a group is selected? +@example -@enumerate -@item -Use @kbd{RET} to select the group instead of @kbd{SPC}. +(setq nnmail-split-methods + '(("duplicates" "^Gnus-Warning:.*duplicate") + ("XEmacs-NT" "^\\(To:\\|CC:\\).*localpart@@xemacs.bla.*") + ("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@@socha.bla.*") + ("tcsh" "^\\(To:\\|CC:\\).*localpart@@mx.gw.bla.*") + ("BAfH" "^\\(To:\\|CC:\\).*localpart@@.*uni-muenchen.bla.*") + ("Hamster-src" "^\\(CC:\\|To:\\).*hamster-sourcen@@yahoogroups.\\(de\\|com\\).*") + ("Tagesschau" "^From: tagesschau $") + ("Replies" "^\\(CC:\\|To:\\).*localpart@@Frank-Schmitt.bla.*") + ("EK" "^From:.*\\(localpart@@privateprovider.bla\\|localpart@@workplace.bla\\).*") + ("Spam" "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*") + ("Spam" "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*") + ("Spam" "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*") + ("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)") + ("Spam" "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)") + ("Spam" "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*") + ("Spam" "^Delivered-To: GMX delivery to spamtrap@@gmx.bla$") + ("Spam" "^Received: from link2buy.com") + ("Spam" "^CC: .*azzrael@@t-online.bla") + ("Spam" "^X-Mailer-Version: 1.50 BETA") + ("Uni" "^\\(CC:\\|To:\\).*localpart@@uni-koblenz.bla.*") + ("Inbox" "^\\(CC:\\|To:\\).*\\(my\ name\\|address@@one.bla\\|adress@@two.bla\\)") + ("Spam" ""))) + +@end example + -@item -@code{(setq gnus-auto-select first nil)} +@ifnottex +@node FAQ 5 - Composing messages, FAQ 6 - Old messages, FAQ 4 - Reading messages, Frequently Asked Questions +@end ifnottex +@section Composing messages -@item -Luis Fernandes writes:@* -This is what I use...customize as necessary... +@menu +* [5.1]:: What are the basic commands I need to know for sending mail and postings? +* [5.2]:: How to enable automatic word-wrap when composing messages? +* [5.3]:: How to set stuff like From, Organization, Reply-To, signature...? +* [5.4]:: Can I set things like From, Signature etc group based on the group I post too? +* [5.5]:: Is there a spell-checker? Perhaps even on-the-fly spell-checking? +* [5.6]:: Can I set the dictionary based on the group I'm posting to? +* [5.7]:: Is there some kind of address-book, so I needn't remember all those email addresses? +* [5.8]:: Sometimes I see little images at the top of article buffer. What's that and how can I send one with my postings, too? +* [5.9]:: Sometimes I accidentally hit r instead of f in newsgroups. Can Gnus warn me, when I'm replying by mail in newsgroups? +* [5.10]:: How to tell Gnus not to generate a sender header? +* [5.11]:: I want gnus to locally store copies of my send mail and news, how to do it? +* [5.12]:: People tell me my Message-IDs are not correct, why aren't they and how to fix it? +@end menu + +@ifnottex +@node [5.1], [5.2], FAQ 5 - Composing messages, FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.1: + + What are the basic commands I need to know for sending mail and postings? + + +Answer: + + To start composing a new mail hit @samp{m} + either in Group or Summary buffer, for a posting, it's + either @samp{a} in Group buffer and + filling the Newsgroups header manually + or @samp{a} in the Summary buffer of the + group where the posting shall be send to. Replying by mail + is + @samp{r} if you don't want to cite the + author, or import the cited text manually and + @samp{R} to cite the text of the original + message. For a follow up to a newsgroup, it's + @samp{f} and @samp{F} + (analog to @samp{r} and + @samp{R}. + + + Enter new headers above the line saying "--text follows + this line--", enter the text below the line. When ready + hit @samp{C-c C-c}, to send the message, + if you want to finish it later hit @samp{C-c + C-d} to save it in the drafts group, where you + can start editing it again by saying @samp{D + e}. + +@ifnottex +@node [5.2], [5.3], [5.1], FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.2: + + How to enable automatic word-wrap when composing messages? + + +Answer: + + Say + + +@example + +(add-hook 'message-mode-hook + (lambda () + (setq fill-column 72) + (turn-on-auto-fill))) + +@end example + +@noindent + in ~/.gnus. You can reformat a paragraph by hitting + @samp{M-q} (as usual) + +@ifnottex +@node [5.3], [5.4], [5.2], FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.3: + + How to set stuff like From, Organization, Reply-To, signature...? + + +Answer: + + There are other ways, but you should use posting styles + for this. (See below why). + This example should make the syntax clear: + + +@example + +(setq gnus-posting-styles + '((".*" + (name "Frank Schmitt") + (address "me@@there.bla") + (organization "Hamme net, kren mer och nimmi") + (signature-file "~/.signature") + ("X-SampleHeader" "foobar") + (eval (setq some-variable "Foo bar"))))) + +@end example + +@noindent + The ".*" means that this settings are the default ones + (see below), valid values for the first element of the + following lists are signature, signature-file, + organization, address, name or body. 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; if the value is `nil', the header + name will be removed. You can also say (eval (foo bar)), + then the function foo will be evaluated with argument bar + and the result will be thrown away. + +@ifnottex +@node [5.4], [5.5], [5.3], FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.4: + + Can I set things like From, Signature etc group based on the group I post too? + + +Answer: + + That's the strength of posting styles. Before, we used ".*" + to set the default for all groups. You can use a regexp + like "^gmane" and the following settings are only applied + to postings you send to the gmane hierarchy, use + ".*binaries" instead and they will be applied to postings + send to groups containing the string binaries in their + name etc. + + + You can instead of specifying a regexp specify a function + which is evaluated, only if it returns true, the + corresponding settings take effect. Two interesting + candidates for this are message-news-p which returns t if + the current Group is a newsgroup and the corresponding + message-mail-p. + + + Note that all forms that match are applied, that means in + the example below, when I post to + gmane.mail.spam.spamassassin.general, the settings under + ".*" are applied and the settings under message-news-p and + those under "^gmane" and those under + "^gmane\\.mail\\.spam\\.spamassassin\\.general$". Because + of this put general settings at the top and specific ones + at the bottom. + + +@example + +(setq gnus-posting-styles + '((".*" ;;default + (name "Frank Schmitt") + (organization "Hamme net, kren mer och nimmi") + (signature-file "~/.signature") ) + ((message-news-p) ;;Usenet news? + (address "mySpamTrap@@Frank-Schmitt.bla") + ("Reply-To" "hereRealRepliesOnlyPlease@@Frank-Schmitt.bla") ) + ((message-mail-p) ;;mail? + (address "usedForMails@@Frank-Schmitt.bla") ) + ("^gmane" ;;this is mail, too in fact + (address "usedForMails@@Frank-Schmitt.net") + ("Reply-To" nil) ) + ("^gmane.mail.spam.spamassassin.general$" + (eval (setq mail-envelope-from "Azzrael@@rz-online.de")) + (address "Azzrael@@rz-online.de")) )) + +@end example + +@ifnottex +@node [5.5], [5.6], [5.4], FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.5: + + Is there a spell-checker? Perhaps even on-the-fly spell-checking? + + +Answer: + + You can use ispell.el to spell-check stuff in Emacs. So the + first thing to do is to make sure that you've got either + @uref{http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html,ispell} + or @uref{http://aspell.sourceforge.net/,aspell} + installed and in your Path. Then you need + @uref{http://www.kdstevens.com/~stevens/ispell-page.html,ispell.el} + and for on-the-fly spell-checking + @uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html,flyspell.el}. + Ispell.el is shipped with Gnus Emacs and available through the Emacs package system, + flyspell.el is shipped with Emacs and part of XEmacs text-modes package which is + available through the package system, so there should be no need to install them + manually. + + + Ispell.el assumes you use ispell, if you choose aspell say + + +@example +(setq ispell-program-name "aspell") +@end example + + +@noindent + in your Emacs configuration file. + + + If you want your outgoing messages to be spell-checked, say + + +@example +(add-hook 'message-send-hook 'ispell-message) +@end example + +@noindent + In your ~/.gnus, if you prefer on-the-fly spell-checking say + + +@example +(add-hook 'message-mode-hook (lambda () (flyspell-mode 1))) +@end example + +@ifnottex +@node [5.6], [5.7], [5.5], FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.6: + + Can I set the dictionary based on the group I'm posting to? + + +Answer: + + Yes, say something like + + +@example -@lisp -;;; Don't auto-select first article if reading sources, or -;;; archives or jobs postings, etc. and just display the -;;; summary buffer (add-hook 'gnus-select-group-hook - (function - (lambda () - (cond ((string-match "sources" gnus-newsgroup-name) - (setq gnus-auto-select-first nil)) - ((string-match "jobs" gnus-newsgroup-name) - (setq gnus-auto-select-first nil)) - ((string-match "comp\\.archives" gnus-newsgroup-name) - (setq gnus-auto-select-first nil)) - ((string-match "reviews" gnus-newsgroup-name) - (setq gnus-auto-select-first nil)) - ((string-match "announce" gnus-newsgroup-name) - (setq gnus-auto-select-first nil)) - ((string-match "binaries" gnus-newsgroup-name) - (setq gnus-auto-select-first nil)) - (t - (setq gnus-auto-select-first t)))))) -@end lisp + (lambda () + (cond + ((string-match + "^de\\." (gnus-group-real-name gnus-newsgroup-name)) + (ispell-change-dictionary "deutsch8")) + (t + (ispell-change-dictionary "english"))))) + +@end example + -@item -Per Abrahamsen writes:@* -Another possibility is to create an @file{all.binaries.all.SCORE} file -like this: +@noindent + in ~/.gnus. Change "^de\\." and "deutsch8" to something + that suits your needs. + +@ifnottex +@node [5.7], [5.8], [5.6], FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.7: -@lisp -((local - (gnus-auto-select-first nil))) -@end lisp + Is there some kind of address-book, so I needn't remember + all those email addresses? + -and insert -@lisp - (setq gnus-auto-select-first t) -@end lisp +Answer: -in your @file{.gnus}. + There's an very basic solution for this, mail aliases. + You can store your mail addresses in a ~/.mailrc file using a simple + alias syntax: + -@end enumerate +@example -@item -Q3.5 Why aren't BBDB known posters marked in the summary buffer? +alias al "Al " + +@end example -Brian Edmonds writes:@* -Due to changes in Gnus 5.0, @file{bbdb-gnus.el} no longer marks known -posters in the summary buffer. An updated version, @file{gnus-bbdb.el} -is available at the locations listed below. This package also supports -autofiling of incoming mail to folders specified in the BBDB. Extensive -instructions are included as comments in the file. +@noindent + Then typing your alias (followed by a space or punctuation + character) on a To: or Cc: line in the message buffer will + cause gnus to insert the full address for you. See the + node "Mail Aliases" in Message (not Gnus) manual for + details. + -Send mail to @file{majordomo@@edmonds.home.cs.ubc.ca} with the following -line in the body of the message: @emph{get misc gnus-bbdb.el}. + However, what you really want is the Insidious Big Brother + Database bbdb. Get it through the XEmacs package system or from + @uref{http://bbdb.sourceforge.net/,bbdb's homepage}. + Now place the following in ~/.gnus, to activate bbdb for Gnus: + -Or get it from the World Wide Web:@* -@uref{http://www.cs.ubc.ca/spider/edmonds/gnus-bbdb.el}. +@example -@end itemize +(require 'bbdb) +(bbdb-initialize 'gnus 'message) + +@end example +@noindent + Now you probably want some general bbdb configuration, + place them in ~/.emacs: + -@node Reading Mail FAQ -@subsection Reading Mail +@example -@itemize @bullet -@item -Q4.1 What does the message ``Buffer has changed on disk'' mean in a mail -group? +(require 'bbdb) +;;If you don't live in Northern America, you should disable the +;;syntax check for telephone numbers by saying +(setq bbdb-north-american-phone-numbers-p nil) +;;Tell bbdb about your email address: +(setq bbdb-user-mail-names + (regexp-opt '("Your.Email@@here.bla" + "Your.other@@mail.there.bla"))) +;;cycling while completing email addresses +(setq bbdb-complete-name-allow-cycling t) +;;No popup-buffers +(setq bbdb-use-pop-up nil) + +@end example -Your filter program should not deliver mail directly to your folders, -instead it should put the mail into spool files. Gnus will then move -the mail safely from the spool files into the folders. This will -eliminate the problem. Look it up in the manual, in the section -entitled ``Mail & Procmail''. +@noindent + Now you should be ready to go. Say @samp{M-x bbdb RET + RET} to open a bbdb buffer showing all + entries. Say @samp{c} to create a new + entry, @samp{b} to search your BBDB and + @samp{C-o} to add a new field to an + entry. If you want to add a sender to the BBDB you can + also just hit `:' on the posting in the summary buffer and + you are done. When you now compose a new mail, + hit @samp{TAB} to cycle through know + recipients. + +@ifnottex +@node [5.8], [5.9], [5.7], FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.8: + + Sometimes I see little images at the top of article + buffer. What's that and how can I send one with my + postings, too? + + +Answer: + + Those images are called X-Faces. They are 48*48 pixel b/w + pictures, encoded in a header line. If you want to include + one in your posts, you've got to convert some image to a + X-Face. So fire up some image manipulation program (say + Gimp), open the image you want to include, cut out the + relevant part, reduce color depth to 1 bit, resize to + 48*48 and save as bitmap. Now you should get the compface + package from + @uref{ftp://ftp.cs.indiana.edu:/pub/faces/,this site}. + and create the actual X-face by saying + +@example -@item -Q4.2 How do you make articles un-expirable? +cat file.xbm | xbm2ikon |compface > file.face +cat ./file.face | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g' > ./file.face.quoted + +@end example -I am using nnml to read news and have used -@code{gnus-auto-expirable-newsgroups} to automagically expire articles -in some groups (Gnus being one of them). Sometimes there are -interesting articles in these groups that I want to keep. Is there any -way of explicitly marking an article as un-expirable - that is mark it -as read but not expirable? +@noindent + if you can't use compface, there's an online X-face converter at + @uref{http://www.dairiki.org/xface/}. + If you use MS Windows, you could also use the WinFace program from + @uref{http://www.xs4all.nl/~walterln/winface/}. + Now you only have to tell Gnus to include the X-face in your postings by saying + -Use @kbd{u}, @kbd{!}, @kbd{d} or @kbd{M-u} in the summary buffer. You -just remove the @kbd{E} mark by setting some other mark. It's not -necessary to tick the articles. +@example +(setq message-default-headers + (with-temp-buffer + (insert "X-Face: ") + (insert-file-contents "~/.xemacs/xface") + (buffer-string))) + +@end example -@item -Q4.3 How do I delete bogus nnml: groups? +@noindent + in ~/.gnus. + +@ifnottex +@node [5.9], [5.10], [5.8], FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.9: -My problem is that I have various mail (nnml) groups generated while -experimenting with Gnus. How do I remove them now? Setting the level to -9 does not help. Also @code{gnus-group-check-bogus-groups} does not -recognize them. + Sometimes I accidentally hit r instead of f in + newsgroups. Can Gnus warn me, when I'm replying by mail in + newsgroups? + -Removing mail groups is tricky at the moment. (It's on the to-do list, -though.) You basically have to kill the groups in Gnus, shut down Gnus, -edit the active file to exclude these groups, and probably remove the -nnml directories that contained these groups as well. Then start Gnus -back up again. +Answer: + Put this in ~/.gnus: + -@item -Q4.4 What happened to my new mail groups? +@example -I got new mail, but I have -never seen the groups they should have been placed in. +(setq gnus-confirm-mail-reply-to-news t) + +@end example -They are probably there, but as zombies. Press @kbd{A z} to list -zombie groups, and then subscribe to the groups you want with @kbd{u}. -This is all documented quite nicely in the user's manual. +@noindent + if you already use Gnus 5.10.0, if you still use 5.8.8 or + 5.9 try this instead: + +@example -@item -Q4.5 Not scoring mail groups +(defadvice gnus-summary-reply (around reply-in-news activate) + (interactive) + (when (or (not (gnus-news-group-p gnus-newsgroup-name)) + (y-or-n-p "Really reply? ")) + ad-do-it)) + +@end example + +@ifnottex +@node [5.10], [5.11], [5.9], FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.10: -How do you @emph{totally} turn off scoring in mail groups? + How to tell Gnus not to generate a sender header? + -Use an nnbabyl:all.SCORE (or nnmh, or nnml, or whatever) file containing: +Answer: + + Since 5.10.0 Gnus doesn't generate a sender header by + default. For older Gnus' try this in ~/.gnus: + @example -((adapt ignore) - (local (gnus-use-scoring nil)) - (exclude-files "all.SCORE")) + +(eval-after-load "message" + '(add-to-list 'message-syntax-checks '(sender . disabled))) + @end example + + +@ifnottex +@node [5.11], [5.12], [5.10], FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.11: + + I want gnus to locally store copies of my send mail and + news, how to do it? + + +Answer: + + You must set the variable gnus-message-archive-group to do + this. You can set it to a string giving the name of the + group where the copies shall go or like in the example + below use a function which is evaluated and which returns + the group to use. + -@end itemize +@example +(setq gnus-message-archive-group + '((if (message-news-p) + "nnml:Send-News" + "nnml:Send-Mail"))) + +@end example + + +@ifnottex +@node [5.12], , [5.11], FAQ 5 - Composing messages +@end ifnottex +@subheading Question 5.12: + + People tell me my Message-IDs are not correct, why + aren't they and how to fix it? + + +Answer: + + The message-ID is an unique identifier for messages you + send. To make it unique, Gnus need to know which machine + name to put after the "@@". If the name of the machine + where Gnus is running isn't suitable (it probably isn't + at most private machines) you can tell Gnus what to use + by saying: + + +@example + +(defun message-make-message-id() + (concat "<"(message-unique-id)"@@yourmachine.yourdomain.tld>")) + +@end example + + +@noindent + in ~/.gnus. If you have no idea what to insert for + "yourmachine.yourdomain.tld", you've got several + choices. You can either ask your provider if he allows + you to use something like + yourUserName.userfqdn.provider.net, or you can use + somethingUnique.yourdomain.tld if you own the domain + yourdomain.tld, or you can register at a service which + gives private users a FQDN for free, e.g. + @uref{http://www.stura.tu-freiberg.de/~dlx/addfqdn.html}. + (Sorry but this website is in German, if you know of an + English one offering the same, drop me a note). + + + Finally you can tell Gnus not to generate a Message-ID + for News at all (and letting the server do the job) by saying + +@example + +(setq message-required-news-headers + (remove' Message-ID message-required-news-headers)) + +@end example + +@noindent + you can also tell Gnus not to generate Message-IDs for mail by saying + + +@example + +(setq message-required-mail-headers + (remove' Message-ID message-required-mail-headers)) + +@end example + +@noindent + , however some mail servers don't generate proper + Message-IDs, too, so test if your Mail Server behaves + correctly by sending yourself a Mail and looking at the Message-ID. + + +@ifnottex +@node FAQ 6 - Old messages, FAQ 7 - Gnus in a dial-up environment, FAQ 5 - Composing messages, Frequently Asked Questions +@end ifnottex +@section Old messages + +@menu +* [6.1]:: How to import my old mail into Gnus? +* [6.2]:: How to archive interesting messages? +* [6.3]:: How to search for a specific message? +* [6.4]:: How to get rid of old unwanted mail? +* [6.5]:: I want that all read messages are expired (at least in some groups). How to do it? +* [6.6]:: I don't want expiration to delete my mails but to move them to another group. +@end menu + +@ifnottex +@node [6.1], [6.2], FAQ 6 - Old messages, FAQ 6 - Old messages +@end ifnottex +@subheading Question 6.1: + + How to import my old mail into Gnus? + + +Answer: + + The easiest way is to tell your old mail program to + export the messages in mbox format. Most Unix mailers + are able to do this, if you come from the MS Windows + world, you may find tools at + @uref{http://mbx2mbox.sourceforge.net/}. + + + Now you've got to import this mbox file into Gnus. To do + this, create a nndoc group based on the mbox file by + saying @samp{G f /path/file.mbox RET} in + Group buffer. You now have read-only access to your + mail. If you want to import the messages to your normal + Gnus mail groups hierarchy, enter the nndoc group you've + just created by saying @samp{C-u RET} + (thus making sure all messages are retrieved), mark all + messages by saying @samp{M P b} and + either copy them to the desired group by saying + @samp{B c name.of.group RET} or send them + through nnmail-split-methods (respool them) by saying + @samp{B r}. + +@ifnottex +@node [6.2], [6.3], [6.1], FAQ 6 - Old messages +@end ifnottex +@subheading Question 6.2: + + How to archive interesting messages? + + +Answer: + + If you stumble across an interesting message, say in + gnu.emacs.gnus and want to archive it there are several + solutions. The first and easiest is to save it to a file + by saying @samp{O f}. However, wouldn't + it be much more convenient to have more direct access to + the archived message from Gnus? If you say yes, put this + snippet by Frank Haun in + ~/.gnus: + + +@example + +(defun my-archive-article (&optional n) + "Copies one or more article(s) to a corresponding `nnml:' group, e.g. +`gnus.ding' goes to `nnml:1.gnus.ding'. And `nnml:List-gnus.ding' goes +to `nnml:1.List-gnus-ding'. + +Use process marks or mark a region in the summary buffer to archive +more then one article." + (interactive "P") + (let ((archive-name + (format + "nnml:1.%s" + (if (featurep 'xemacs) + (replace-in-string gnus-newsgroup-name "^.*:" "") + (replace-regexp-in-string "^.*:" "" gnus-newsgroup-name))))) + (gnus-summary-copy-article n archive-name))) + +@end example + +@noindent + You can now say @samp{M-x + my-archive-article} in summary buffer to + archive the article under the cursor in a nnml + group. (Change nnml to your preferred back end) + + + Of course you can also make sure the cache is enabled by saying + + +@example + +(setq gnus-use-cache t) + +@end example + +@noindent + then you only have to set either the tick or the dormant + mark for articles you want to keep, setting the read + mark will remove them from cache. + +@ifnottex +@node [6.3], [6.4], [6.2], FAQ 6 - Old messages +@end ifnottex +@subheading Question 6.3: + + How to search for a specific message? + + +Answer: + + There are several ways for this, too. For a posting from + a Usenet group the easiest solution is probably to ask + @uref{http://groups.google.com,groups.google.com}, + if you found the posting there, tell Google to display + the raw message, look for the message-id, and say + @samp{M-^ the@@message.id RET} in a + summary buffer. + Since Gnus 5.10.0 there's also a Gnus interface for + groups.google.com which you can call with + @samp{G W}) in group buffer. + + + Another idea which works for both mail and news groups + is to enter the group where the message you are + searching is and use the standard Emacs search + @samp{C-s}, it's smart enough to look at + articles in collapsed threads, too. If you want to + search bodies, too try @samp{M-s} + instead. Further on there are the + gnus-summary-limit-to-foo functions, which can help you, + too. + + + Of course you can also use grep to search through your + local mail, but this is both slow for big archives and + inconvenient since you are not displaying the found mail + in Gnus. Here comes nnir into action. Nnir is a front end + to search engines like swish-e or swish++ and + others. You index your mail with one of those search + engines and with the help of nnir you can search trough + the indexed mail and generate a temporary group with all + messages which met your search criteria. If this sound + cool to you get nnir.el from + @uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/} + or @uref{ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/}. + Instructions on how to use it are at the top of the file. + +@ifnottex +@node [6.4], [6.5], [6.3], FAQ 6 - Old messages +@end ifnottex +@subheading Question 6.4: + + How to get rid of old unwanted mail? + + +Answer: + + You can of course just mark the mail you don't need + anymore by saying @samp{#} with point + over the mail and then say @samp{B DEL} + to get rid of them forever. You could also instead of + actually deleting them, send them to a junk-group by + saying @samp{B m nnml:trash-bin} which + you clear from time to time, but both are not the intended + way in Gnus. + + + In Gnus, we let mail expire like news expires on a news + server. That means you tell Gnus the message is + expirable (you tell Gnus "I don't need this mail + anymore") by saying @samp{E} with point + over the mail in summary buffer. Now when you leave the + group, Gnus looks at all messages which you marked as + expirable before and if they are old enough (default is + older than a week) they are deleted. + +@ifnottex +@node [6.5], [6.6], [6.4], FAQ 6 - Old messages +@end ifnottex +@subheading Question 6.5: + + I want that all read messages are expired (at least in + some groups). How to do it? + + +Answer: + + If you want all read messages to be expired (e.g. in + mailing lists where there's an online archive), you've + got two choices: auto-expire and + total-expire. Auto-expire means, that every article + which has no marks set and is selected for reading is + marked as expirable, Gnus hits @samp{E} + for you every time you read a message. Total-expire + follows a slightly different approach, here all article + where the read mark is set are expirable. + + + To activate auto-expire, include auto-expire in the + Group parameters for the group. (Hit @samp{G + c} in summary buffer with point over the + group to change group parameters). For total-expire add + total-expire to the group-parameters. + + + Which method you choose is merely a matter of taste: + Auto-expire is faster, but it doesn't play together with + Adaptive Scoring, so if you want to use this feature, + you should use total-expire. + + + If you want a message to be excluded from expiration in + a group where total or auto expire is active, set either + tick (hit @samp{u}) or dormant mark (hit + @samp{u}), when you use auto-expire, you + can also set the read mark (hit + @samp{d}). + +@ifnottex +@node [6.6], , [6.5], FAQ 6 - Old messages +@end ifnottex +@subheading Question 6.6: + + I don't want expiration to delete my mails but to move them + to another group. + + +Answer: + + Say something like this in ~/.gnus: + + +@example + +(setq nnmail-expiry-target "nnml:expired") + +@end example + +@noindent + (If you want to change the value of nnmail-expiry-target + on a per group basis see the question "How can I disable + threading in some (e.g. mail-) groups, or set other + variables specific for some groups?") + + +@ifnottex +@node FAQ 7 - Gnus in a dial-up environment, FAQ 8 - Getting help, FAQ 6 - Old messages, Frequently Asked Questions +@end ifnottex +@section Gnus in a dial-up environment + +@menu +* [7.1]:: I don't have a permanent connection to the net, how can I minimize the time I've got to be connected? +* [7.2]:: So what was this thing about the Agent? +* [7.3]:: I want to store article bodies on disk, too. How to do it? +* [7.4]:: How to tell Gnus not to try to send mails / postings while I'm offline? +@end menu + + +@ifnottex +@node [7.1], [7.2], FAQ 7 - Gnus in a dial-up environment, FAQ 7 - Gnus in a dial-up environment +@end ifnottex +@subheading Question 7.1: + + I don't have a permanent connection to the net, how can + I minimize the time I've got to be connected? + + +Answer: + + You've got basically two options: Either you use the + Gnus Agent (see below) for this, or you can install + programs which fetch your news and mail to your local + disk and Gnus reads the stuff from your local + machine. + + + If you want to follow the second approach, you need a + program which fetches news and offers them to Gnus, a + program which does the same for mail and a program which + receives the mail you write from Gnus and sends them + when you're online. + + + Let's talk about Unix systems first: For the news part, + the easiest solution is a small nntp server like + @uref{http://www.leafnode.org/,Leafnode} or + @uref{http://infa.abo.fi/~patrik/sn/,sn}, + of course you can also install a full featured news + server like + @uref{http://www.isc.org/products/INN/,inn}. + Then you want to fetch your Mail, popular choices + are @uref{http://www.catb.org/~esr/fetchmail/,fetchmail} + and @uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/,getmail}. + You should tell those to write the mail to your disk and + Gnus to read it from there. Last but not least the mail + sending part: This can be done with every MTA like + @uref{http://www.sendmail.org/,sendmail}, + @uref{http://www.qmail.org/,postfix}, + @uref{http://www.exim.org/,exim} or + @uref{http://www.qmail.org/,qmail}. + + + On windows boxes I'd vote for + @uref{http://www.tglsoft.de/,Hamster}, + it's a small freeware, open-source program which fetches + your mail and news from remote servers and offers them + to Gnus (or any other mail and/or news reader) via nntp + respectively POP3 or IMAP. It also includes a smtp + server for receiving mails from Gnus. + +@ifnottex +@node [7.2], [7.3], [7.1], FAQ 7 - Gnus in a dial-up environment +@end ifnottex +@subheading Question 7.2: + + So what was this thing about the Agent? + + +Answer: + + The Gnus agent is part of Gnus, it allows you to fetch + mail and news and store them on disk for reading them + later when you're offline. It kind of mimics offline + newsreaders like e.g. Forte Agent. If you want to use + the Agent place the following in ~/.gnus if you are + still using 5.8.8 or 5.9 (it's the default since 5.10.0): + + +@example + +(setq gnus-agent t) + +@end example + + + Now you've got to select the servers whose groups can be + stored locally. To do this, open the server buffer + (that is press @samp{^} while in the + group buffer). Now select a server by moving point to + the line naming that server. Finally, agentize the + server by typing @samp{J a}. If you + make a mistake, or change your mind, you can undo this + action by typing @samp{J r}. When + you're done, type 'q' to return to the group buffer. + Now the next time you enter a group on a agentized + server, the headers will be stored on disk and read from + there the next time you enter the group. + +@ifnottex +@node [7.3], [7.4], [7.2], FAQ 7 - Gnus in a dial-up environment +@end ifnottex +@subheading Question 7.3: + + I want to store article bodies on disk, too. How to do it? + + +Answer: + + You can tell the agent to automatically fetch the bodies + of articles which fulfill certain predicates, this is + done in a special buffer which can be reached by + saying @samp{J c} in group + buffer. Please refer to the documentation for + information which predicates are possible and how + exactly to do it. + + + Further on you can tell the agent manually which + articles to store on disk. There are two ways to do + this: Number one: In the summary buffer, process mark a + set of articles that shall be stored in the agent by + saying @samp{#} with point over the + article and then type @samp{J s}. The + other possibility is to set, again in the summary + buffer, downloadable (%) marks for the articles you + want by typing @samp{@@} with point over + the article and then typing @samp{J u}. + What's the difference? Well, process marks are erased as + soon as you exit the summary buffer while downloadable + marks are permanent. You can actually set downloadable + marks in several groups then use fetch session ('J s' in + the GROUP buffer) to fetch all of those articles. The + only downside is that fetch session also fetches all of + the headers for every selected group on an agentized + server. Depending on the volume of headers, the initial + fetch session could take hours. + +@ifnottex +@node [7.4], , [7.3], FAQ 7 - Gnus in a dial-up environment +@end ifnottex +@subheading Question 7.4: + + How to tell Gnus not to try to send mails / postings + while I'm offline? + + +Answer: + + All you've got to do is to tell Gnus when you are online + (plugged) and when you are offline (unplugged), the rest + works automatically. You can toggle plugged/unplugged + state by saying @samp{J j} in group + buffer. To start Gnus unplugged say @samp{M-x + gnus-unplugged} instead of + @samp{M-x gnus}. Note that for this to + work, the agent must be active. + + +@ifnottex +@node FAQ 8 - Getting help, FAQ 9 - Tuning Gnus, FAQ 7 - Gnus in a dial-up environment, Frequently Asked Questions +@end ifnottex +@section Getting help + +@menu +* [8.1]:: How to find information and help inside Emacs? +* [8.2]:: I can't find anything in the Gnus manual about X (e.g. attachments, PGP, MIME...), is it not documented? +* [8.3]:: Which websites should I know? +* [8.4]:: Which mailing lists and newsgroups are there? +* [8.5]:: Where to report bugs? +* [8.6]:: I need real-time help, where to find it? +@end menu + +@ifnottex +@node [8.1], [8.2], FAQ 8 - Getting help, FAQ 8 - Getting help +@end ifnottex +@subheading Question 8.1: + + How to find information and help inside Emacs? + + +Answer: + + The first stop should be the Gnus manual (Say + @samp{C-h i d m Gnus RET} to start the + Gnus manual, then walk through the menus or do a + full-text search with @samp{s}). Then + there are the general Emacs help commands starting with + C-h, type @samp{C-h ? ?} to get a list + of all available help commands and their meaning. Finally + @samp{M-x apropos-command} lets you + search through all available functions and @samp{M-x + apropos} searches the bound variables. + +@ifnottex +@node [8.2], [8.3], [8.1], FAQ 8 - Getting help +@end ifnottex +@subheading Question 8.2: + + I can't find anything in the Gnus manual about X + (e.g. attachments, PGP, MIME...), is it not documented? + + +Answer: + + There's not only the Gnus manual but also the manuals + for message, emacs-mime, sieve and pgg. Those packages + are distributed with Gnus and used by Gnus but aren't + really part of core Gnus, so they are documented in + different info files, you should have a look in those + manuals, too. + +@ifnottex +@node [8.3], [8.4], [8.2], FAQ 8 - Getting help +@end ifnottex +@subheading Question 8.3: + + Which websites should I know? + + +Answer: + + The two most important ones are the + @uref{http://www.gnus.org,official Gnus website}. + and it's sister site + @uref{http://my.gnus.org,my.gnus.org (MGO)}, + hosting an archive of lisp snippets, howtos, a (not + really finished) tutorial and this FAQ. + + + Tell me about other sites which are interesting. + +@ifnottex +@node [8.4], [8.5], [8.3], FAQ 8 - Getting help +@end ifnottex +@subheading Question 8.4: + + Which mailing lists and newsgroups are there? + + +Answer: + + There's the newsgroup gnu.emacs.gnus (pull it from + e.g. news.gnus.org) which deals with general questions + and the ding mailing list (ding@@gnus.org) dealing with + development of Gnus. You can read the ding list via + NNTP, too under the name gnus.ding from news.gnus.org. + + + If you want to stay in the big8, + news.software.newssreaders is also read by some Gnus + users (but chances for qualified help are much better in + the above groups) and if you speak German, there's + de.comm.software.gnus. + +@ifnottex +@node [8.5], [8.6], [8.4], FAQ 8 - Getting help +@end ifnottex +@subheading Question 8.5: + + Where to report bugs? + + +Answer: + + Say @samp{M-x gnus-bug}, this will start + a message to the + @uref{mailto:bugs@@gnus.org,gnus bug mailing list} + including information about your environment which make + it easier to help you. + +@ifnottex +@node [8.6], , [8.5], FAQ 8 - Getting help +@end ifnottex +@subheading Question 8.6: + + I need real-time help, where to find it? + + +Answer: + + Point your IRC client to irc.my.gnus.org channel + #mygnus. Don't be afraid if people there speak German, + they are willing and capable of switching to + English when people from outside Germany enter. + + +@ifnottex +@node FAQ 9 - Tuning Gnus, FAQ - Glossary, FAQ 8 - Getting help, Frequently Asked Questions +@end ifnottex +@section Tuning Gnus + +@menu +* [9.1]:: Starting Gnus is really slow, how to speed it up? +* [9.2]:: How to speed up the process of entering a group? +* [9.3]:: Sending mail becomes slower and slower, what's up? +@end menu + +@ifnottex +@node [9.1], [9.2], FAQ 9 - Tuning Gnus, FAQ 9 - Tuning Gnus +@end ifnottex +@subheading Question 9.1: + + Starting Gnus is really slow, how to speed it up? + + +Answer: + + The reason for this could be the way Gnus reads it's + active file, see the node "The Active File" in the Gnus + manual for things you might try to speed the process up. + An other idea would be to byte compile your ~/.gnus (say + @samp{M-x byte-compile-file RET ~/.gnus + RET} to do it). Finally, if you have require + statements in your .gnus, you could replace them with + eval-after-load, which loads the stuff not at startup + time, but when it's needed. Say you've got this in your + ~/.gnus: + + +@example + +(require 'message) +(add-to-list 'message-syntax-checks '(sender . disabled)) + +@end example + +@noindent + then as soon as you start Gnus, message.el is loaded. If + you replace it with + + +@example + +(eval-after-load "message" + '(add-to-list 'message-syntax-checks '(sender . disabled))) + +@end example + +@noindent + it's loaded when it's needed. + +@ifnottex +@node [9.2], [9.3], [9.1], FAQ 9 - Tuning Gnus +@end ifnottex +@subheading Question 9.2: + + How to speed up the process of entering a group? + + +Answer: + + A speed killer is setting the variable + gnus-fetch-old-headers to anything different from nil, + so don't do this if speed is an issue. To speed up + building of summary say + + +@example + +(gnus-compile) + +@end example + +@noindent + at the bottom of your ~/.gnus, this will make gnus + byte-compile things like + gnus-summary-line-format. + then you could increase the value of gc-cons-threshold + by saying something like + + +@example + +(setq gc-cons-threshold 3500000) + +@end example + +@noindent + in ~/.emacs. If you don't care about width of CJK + characters or use Gnus 5.10.0 or younger together with a + recent GNU Emacs, you should say + + +@example + +(setq gnus-use-correct-string-widths nil) + +@end example + + +@noindent + in ~/.gnus (thanks to Jesper harder for the last + two suggestions). Finally if you are still using 5.8.8 + or 5.9 and experience speed problems with summary + buffer generation, you definitely should update to + 5.10.0 since there quite some work on improving it has + been done. + +@ifnottex +@node [9.3], , [9.2], FAQ 9 - Tuning Gnus +@end ifnottex +@subheading Question 9.3: + + Sending mail becomes slower and slower, what's up? + + +Answer: + + The reason could be that you told Gnus to archive the + messages you wrote by setting + gnus-message-archive-group. Try to use a nnml group + instead of an archive group, this should bring you back + to normal speed. + + +@ifnottex +@node FAQ - Glossary, , FAQ 9 - Tuning Gnus, Frequently Asked Questions +@end ifnottex +@section Glossary + +@table @dfn + +@item ~/.gnus + When the term ~/.gnus is used it just means your Gnus + configuration file. You might as well call it ~/.gnus.el or + specify another name. + + +@item Back End + In Gnus terminology a back end is a virtual server, a layer + between core Gnus and the real NNTP-, POP3-, IMAP- or + whatever-server which offers Gnus a standardized interface + to functions like "get message", "get Headers" etc. + + +@item Emacs + When the term Emacs is used in this FAQ, it means either GNU + Emacs or XEmacs. + + +@item Message + In this FAQ message means a either a mail or a posting to a + Usenet Newsgroup or to some other fancy back end, no matter + of which kind it is. + + +@item MUA + MUA is an acronym for Mail User Agent, it's the program you + use to read and write e-mails. + + +@item NUA + NUA is an acronym for News User Agent, it's the program you + use to read and write Usenet news. + +@end table + +@c @bye diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index b19428e..67a0380 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -1,4 +1,4 @@ -\input texinfo +>\input texinfo @setfilename gnus-ja @settitle T-gnus 6.15 Manual @@ -53,6 +53,7 @@ \newcommand{\gnustt}[1]{{\gnusselectttfont{}#1}} \newcommand{\gnuscode}[1]{\gnustt{#1}} +\newcommand{\gnusenv}[1]{\gnustt{#1}} \newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\gnusselectttfont{}#1}''} \newcommand{\gnuslisp}[1]{\gnustt{#1}} \newcommand{\gnuskbd}[1]{`\gnustt{#1}'} @@ -60,6 +61,7 @@ \newcommand{\gnusfile}[1]{`\gnustt{#1}'} \newcommand{\gnusdfn}[1]{\textit{#1}} \newcommand{\gnusi}[1]{\textit{#1}} +\newcommand{\gnusr}[1]{\textrm{#1}} \newcommand{\gnusstrong}[1]{\textbf{#1}} \newcommand{\gnusemph}[1]{\textit{#1}} \newcommand{\gnusvar}[1]{{\fontsize{10pt}{10}\selectfont\textsl{\textsf{#1}}}} @@ -68,7 +70,7 @@ \newcommand{\gnusversion}[1]{{\small\textit{#1}}} \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}} \newcommand{\gnusresult}[1]{\gnustt{=> #1}} -\newcommand{\gnusacronym}[1]{\textit{#1}} +\newcommand{\gnusacronym}[1]{\textsc{#1}} \newcommand{\gnusemail}[1]{\textit{#1}} \newcommand{\gnusbullet}{{${\bullet}$}} @@ -435,17 +437,18 @@ license to the document, as described in section 6 of the license. @ifinfo -Gnus $B$r;H$&$3$H$K$h$C$F(B Emacs $B$G%K%e!<%9(B (news) $B$r(B ($B$=$l$K%a!<(B -$B%k(B (mail) $B$b(B) $BFI$`$3$H$,$G$-$^$9!#%K%e!<%9$O(B @sc{nntp}$B!"%m!<%+%k%9%W!<%k!"(B -mbox $B%U%!%$%k$J$I$N$"$i$f$k6K0-$JO$rJT=8$9$k?M$KNO$rM?$($k$h$&$K!"(Bgnus $B$O%K%e!<%9$rFI$`?M$KNO @end iftex @menu -* Starting Up:: $B%K%e!<%9$r8+$D$1$k$N$K$O6lO+$,H<$&$+$bCN(B - $B$l$J$$(B +* Starting Up:: $B%K%e!<%9$r8+$D$1$k$N$K$O6lO+$,H<$&$+$bCN$l$J$$(B * Group Buffer:: $B%0%k!<%W$rA*Br$7!"9XFI$7!":o=|$9$k(B * Summary Buffer:: $B5-;v$rFI$_!"J]B8$7!"Ej9F$9$k(B * Article Buffer:: $B5-;v$rI=<($7!"07$&(B * Composing Messages:: $B%a!<%k$H%K%e!<%9$rAw$k$?$a$N>pJs(B -* Select Methods:: Gnus $B$OA4$F$N%a%C%;!<%8$r$$$m$$$m$JA*Br(B - $BJ}K!$GFI$`(B +* Select Methods:: Gnus $B$OA4$F$N%a%C%;!<%8$r$$$m$$$m$JA*BrJ}K!$GFI$`(B * Scoring:: $B5-;v$KCM$r$D$1$k(B * Various:: $B0lHLE*$J@_Dj(B * The End:: $B$5$i$P!"$=$7$F$5$h$&$J$i(B -* Appendices:: $BMQ8l!"(BEmacs $BF~Lg!"(BFAQ$B!"Nr;K!"FbIt9=B$(B +* Appendices:: $BMQ8l!"(BEmacs $BF~Lg!"(B@acronym{FAQ}$B!"Nr;K!"FbIt9=B$(B * Index:: $BJQ?t!"4X?t!"35G0$N:w0z(B * Key Index:: $B%-!<:w0z(B Other related manuals * Message:(message). Composing messages. -* Emacs-MIME:(emacs-mime). Composing messages; MIME-specific parts. +* Emacs-MIME:(emacs-mime). Composing messages; @acronym{MIME}-specific parts. * Sieve:(sieve). Managing Sieve scripts in Emacs. -* PGG:(pgg). PGP/MIME with Gnus. +* PGG:(pgg). @acronym{PGP/MIME} with Gnus. @detailmenu --- The Detailed Node Listing --- @@ -508,26 +509,20 @@ Starting Gnus * Finding the News:: $B%K%e!<%9$re$N(B gnus $B$r:nF0$5$;$k$3$H$,(B - $B$G$-$k(B +* The Server is Down:: $B$I$&$9$l$P$=$N$h$&$J$H$-$K%a!<%k$re$N(B gnus $B$r:nF0$5$;$k$3$H$,$G$-$k(B * Fetching a Group:: $B%0%k!<%W$rFI$`$?$a$@$1$K(B gnus $B$r5/F0$9$k(B * New Groups:: Gnus $B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+(B -* Changing Servers:: $B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7(B - $B$l$J$$(B -* Startup Files:: $B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k(B -- - @file{.newsrc} +* Changing Servers:: $B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7$l$J$$(B +* Startup Files:: $B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k(B -- @file{.newsrc} * Auto Save:: $B%/%i%C%7%e$+$i$N2sI|(B -* The Active File:: $BCY$$2s@~$+$i$N%U%!%$%k$NpJs$rJQ99$9$k(B * Group Levels:: $B%l%Y%k(B? $B$=$l$C$F2?(B? * Group Score:: $B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!(B -* Marking Groups:: $B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-(B - $B$^$9(B +* Marking Groups:: $B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-$^$9(B * Foreign Groups:: $B%0%k!<%W$N:n@.$H=$@5(B -* Group Parameters:: $B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l(B - $B$^$9(B -* Listing Groups:: Gnus $B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<((B - $B$G$-$^$9(B +* Group Parameters:: $B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l$^$9(B +* Listing Groups:: Gnus $B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<($G$-$^$9(B * Sorting Groups:: $B%0%k!<%W$N=gHV$NG[CVBX$((B * Group Maintenance:: $B$-$l$$$J(B @file{.newsrc} $B$NJ]$AJ}(B -* Browse Foreign Server:: $B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_(B - $B$h$&(B +* Browse Foreign Server:: $B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_$h$&(B * Exiting Gnus:: $B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&(B -* Group Topics:: $B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d(B - $B$9$k(B +* Group Topics:: $B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d$9$k(B * Misc Group Stuff:: $BB>$K$G$-$k$3$H(B Group Buffer Format @@ -567,16 +557,13 @@ Group Topics * Topic Variables:: Lisp $B$G%H%T%C%/$r%+%9%?%^%$%:$9$kJ}K!(B * Topic Sorting:: $B%H%T%C%/KhJL!9$KJB$YBX$($k(B * Topic Topology:: $BA4@$3&$NCO?^(B -* Topic Parameters:: $B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k(B - $B%Q%i%a!<%?(B +* Topic Parameters:: $B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k%Q%i%a!<%?(B Misc Group Stuff -* Scanning New Messages:: Gnus $B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&(B - $B$+$rJ9$/(B +* Scanning New Messages:: Gnus $B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&$+$rJ9$/(B * Group Information:: $B%0%k!<%W$H(B gnus $B$K4X$9$k>pJs$H%X%k%W(B -* Group Timestamp:: Gnus $B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-(B - $BO?$5$;$k(B +* Group Timestamp:: Gnus $B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k(B * File Commands:: Gnus $B$N%U%!%$%k$NFI$_=q$-(B * Sieve Commands:: Sieve $B%9%/%j%W%H$N4IM}(B @@ -588,21 +575,17 @@ Summary Buffer * Paging the Article:: $BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k(B * Reply Followup and Post:: $B5-;v$rEj9F$9$k(B * Delayed Articles:: $B5-;v$r8e$GAw$k(B -* Marking Articles:: $B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1(B - $B$k(B +* Marking Articles:: $B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1$k(B * Limiting:: $B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k(B * Threading:: $B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+(B -* Sorting the Summary Buffer:: $B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k(B - $B$+(B +* Sorting the Summary Buffer:: $B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+(B * Asynchronous Fetching:: Gnus $B$O5-;v$r@h$KC5n$7$J$/$5$;$k(B * Article Backlog:: $B4{$KFI$s$@5-;v$r;D$7$F$*$/(B * Saving Articles:: $B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!(B -* Decoding Articles:: Gnus $B$O0lO"$N(B (uu)encode $B$5$l$?5-;v$r07(B - $B$($k(B -* Article Treatment:: $B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G(B - $B$-$k(B +* Decoding Articles:: Gnus $B$O0lO"$N(B (uu)encode $B$5$l$?5-;v$r07$($k(B +* Article Treatment:: $B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G$-$k(B @c * MIME Commands:: Doing MIMEy things with the articles. @c * Charsets:: Character set issues. * Article Commands:: $B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k(B @@ -610,22 +593,17 @@ Summary Buffer * Finding the Parent:: $B;R5-;v$,C5$;$J$$$C$F(B? $B?F5-;v$r$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N(B -* Exiting the Summary Buffer:: $B%0%k!<%W%P%C%U%!$KLa$k!"(B - $B$^$?$O8=:_$N%0%k!<%W$r:F$SA*Br$9$k(B -* Crosspost Handling:: $B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l(B - $B$k$+(B -* Duplicate Suppression:: $B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBXA0$rI=<($7$J$$J}K!(B * Summary Buffer Mode Line:: $B%b!<%I9T$N8+$(J}$r7h$a$i$l$k(B * Summary Highlighting:: $B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k(B @@ -661,12 +639,10 @@ Threading Customizing Threading -* Loose Threads:: Gnus $B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C(B - $B%I$K$9$kJ}K!(B +* Loose Threads:: Gnus $B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C%I$K$9$kJ}K!(B * Filling In Threads:: $B%9%l%C%I$rKd$a$k(B * More Threading:: $B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t(B -* Low-Level Threading:: $B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&(B@dots{} $B$G(B - $B$b$"$J$?$O4V0c$C$F$$$?(B! +* Low-Level Threading:: $B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&(B@dots{} $B$G$b$"$J$?$O4V0c$C$F$$$?(B! Decoding Articles @@ -679,22 +655,18 @@ Decoding Articles Decoding Variables -* Rule Variables:: $B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$k(B - $BJQ?t(B +* Rule Variables:: $B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$kJQ?t(B * Other Decode Variables:: $BB>$NI|9f2=$NJQ?t(B * Uuencoding and Posting:: uuencode $B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t(B Article Treatment -* Article Highlighting:: $B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?(B - $B$$(B +* Article Highlighting:: $B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?$$(B * Article Fontisizing:: $B6/D4$5$l$?J8$rAGE($K$9$k(B * Article Hiding:: $BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&(B -* Article Washing:: $B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?(B - $B4X?t(B +* Article Washing:: $B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?4X?t(B * Article Header:: $B%X%C%@!<$r$$$m$$$mJQ7A$5$;$k(B -* Article Buttons:: URL $B$d(B Message-ID $B$d%"%I%l%9$J$I$r%/%j%C(B - $B%/$9$k(B +* Article Buttons:: URL $B$d(B Message-ID $B$d%"%I%l%9$J$I$r%/%j%C%/$9$k(B * Article Button Levels:: $B%\%?%s$N8+$(J}$r@)8f$9$k(B * Article Date:: $B$0$:$0$:8@$&$J!"@$3&;~$@(B! * Article Display:: X-Face, Picons, Smileys $B$rI=<($9$k(B @@ -716,7 +688,7 @@ Various Summary Stuff Article Buffer * Hiding Headers:: $B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k(B -* Using MIME:: @sc{mime} $B5-;v$H$7$F8+$;$k(B +* Using MIME:: @acronym{MIME} $B5-;v$H$7$F8+$;$k(B * Customizing Articles:: $B5-;v$N8+1I$($r;EN)$F$k(B * Article Keymap:: $B5-;v%P%C%U%!$G;H$($k%-!(B @@ -724,16 +696,12 @@ Article Buffer Composing Messages * Mail:: $B%a!<%k$HJVEz(B -* Posting Server:: $B$I$N%5!<%P!<$rDL$7$F%K%e!<%9$rEj9F$^$?$O(B - $B%a!<%k$rAw?.$9$k$Y$-$+(B? +* Posting Server:: $B$I$N%5!<%P!<$rDL$7$F%K%e!<%9$rEj9F$^$?$O%a!<%k$rAw?.$9$k$Y$-$+(B? * Mail and Post:: $BF1;~$K%a!<%k$r=P$7JVEz$9$k(B -* Archived Messages:: $BAw$C$?%a%C%;!<%8$r(B gnus $B$,Cy$a$F$*$/$H$3(B - $B$m(B -* Posting Styles:: $B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}(B - $BK!(B +* Archived Messages:: $BAw$C$?%a%C%;!<%8$r(B gnus $B$,Cy$a$F$*$/$H$3$m(B +* Posting Styles:: $B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}K!(B * Drafts:: $B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8(B -* Rejected Articles:: $B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K(B - $B2?$,5/$3$k(B? +* Rejected Articles:: $B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K2?$,5/$3$k(B? @c * Signing and encrypting:: How to compose secure messages. Select Methods @@ -741,11 +709,9 @@ Select Methods * Server Buffer:: $B;ve$N%5!<%P!<$r:n$C$FJT=8$9$k(B * Getting News:: USENET $B%K%e!<%9$r(B gnus $B$GFI$`(B * Getting Mail:: $B8D?ME*$J%a!<%k$r(B gnus $B$GFI$`(B -* Browsing the Web:: $B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$rj$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k(B -* Unavailable Servers:: $B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn(B - $B$A$F$$$k$+$b$7$l$J$$(B +* Unavailable Servers:: $B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn$A$F$$$k$+$b$7$l$J$$(B Getting News -* NNTP:: @sc{nntp} $B%5!<%P!<$+$i%K%e!<%9$rFI$`(B +* NNTP:: @acronym{NNTP} $B%5!<%P!<$+$i%K%e!<%9$rFI$`(B * News Spool:: $B%m!<%+%k%9%W!<%k$+$i%K%e!<%9$rFI$`(B -@sc{nntp} +@acronym{NNTP} * Direct Functions:: $B%5!<%P!<$KD>@\@\B3$9$k(B * Indirect Functions:: $B%5!<%P!<$K4V@\E*$K@\B3$9$k(B @@ -776,19 +741,15 @@ Getting Mail * Mail in a Newsreader:: $B%K%e!<%9%j!<%@$G%a!<%k(B ($BBg;v$JA0CV$-(B) * Getting Started Reading Mail:: $B4JC1$JNAM}K\$N$h$&$JNc(B * Splitting Mail:: $B$I$N$h$&$K%a!<%k%0%k!<%W$r:n@.$9$k$+(B -* Mail Sources:: Gnus $B$K$I$3$+$i%a!<%k$r$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%((B - $B%s%I$r;H$&(B +* Not Reading Mail:: $BB>$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(%s%I$r;H$&(B * Choosing a Mail Back End:: Gnus $B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k(B Mail Sources @@ -800,13 +761,11 @@ Mail Sources Choosing a Mail Back End * Unix Mail Box:: ($B$H$F$b(B) $BI8=`E*$J(B Un*x mbox $B$r;H$&(B -* Rmail Babyl:: Emacs $B$N%W%m%0%i%`$O(B rmail $B$N(B babyl $B%U%)!<(B - $B%^%C%H$r;H$&(B +* Rmail Babyl:: Emacs $B$N%W%m%0%i%`$O(B Rmail $B$N(B Babyl $B%U%)!<%^%C%H$r;H$&(B * Mail Spool:: $B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k(B? * MH Spool:: mhspool $B$N$h$&$J%P%C%/%(%s%I(B * Maildir:: $B$b$&0l$D$N#1%U%!%$%k(B/$B#1%a%C%;!<%87A<0(B -* Mail Folders:: $B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k(B - $B$r;}$D(B +* Mail Folders:: $B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k$r;}$D(B * Comparing Mail Back Ends:: $BF@<:$N?<$$F6;!(B Browsing the Web @@ -820,24 +779,21 @@ Browsing the Web * RSS:: RDF Site Summary $B$rFI$`(B * Customizing w3:: Gnus $B$+$i(B Emacs/W3 $B$rA`:n$9$k(B -@sc{imap} +@acronym{IMAP} * Splitting in IMAP:: nnimap $B$G%a!<%k$rJ,3d$9$k(B * Expiring in IMAP:: nnimap $B$K$h$k%a!<%k$N4|8B@Z$l>C5n(B -* Editing IMAP ACLs:: $B%a!<%k%\%C%/%9$X$NB>$NMxMQ$NMxMQA06u4V$r;H$&(B($B;H$o$J$$(B)$BJ}K!(B +* A note on namespaces:: gnus $B$G(B @acronym{IMAP} $BL>A06u4V$r;H$&(B($B;H$o$J$$(B)$BJ}K!(B Other Sources -* Directory Groups:: $B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$K(B - $BFI$`(B +* Directory Groups:: $B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$KFI$`(B * Anything Groups:: Dired? $BC/$,(B dired $B$J$s$F;H$&$N(B? * Document Groups:: $B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG(B * SOUP:: @sc{soup} $B%Q%1%C%H$r(B ``$B%*%U%i%$%s(B'' $B$GFI$`(B -* Mail-To-News Gateways:: $B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7(B - $B$F5-;v$rEj9F$9$k(B +* Mail-To-News Gateways:: $B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7$F5-;v$rEj9F$9$k(B Document Groups @@ -847,8 +803,7 @@ SOUP * SOUP Commands:: @sc{soup} $B%Q%1%C%H$r:n@.!"Aw=P$9$kL?Na(B * SOUP Groups:: @sc{soup} $B%Q%1%C%H$rFI$`%P%C%/%(%s%I(B -* SOUP Replies:: @code{nnsoup} $B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;(B - $B$kJ}K!(B +* SOUP Replies:: @code{nnsoup} $B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;$kJ}K!(B Combined Groups @@ -858,19 +813,17 @@ Combined Groups Gnus Unplugged * Agent Basics:: $B$3$l$i$O$I$&F0$/$N$+(B -* Agent Categories:: $B2?$r%@%&%s%m!<%I$9$k$+$r(B gnus $B%(!<%8%'%s(B - $B%H$K65$($kJ}K!(B +* Agent Categories:: $B2?$r%@%&%s%m!<%I$9$k$+$r(B gnus $B%(!<%8%'%s%H$K65$($kJ}K!(B * Agent Commands:: $B3F%P%C%U%!!<$G$N?7$7$$L?Na(B * Agent as Cache:: $B%(!<%8%'%s%H$OBg$-$J%-%c%C%7%e$G$b$"$k(B * Agent Expiry:: $B8E$$5-;v$r>C$9J}K!(B * Agent Regeneration:: $BDL?.@ZCG$dB>$N;v8N$+$i2sI|$9$kJ}K!(B -* Agent and IMAP:: $B%(!<%8%'%s%H$r(B IMAP $B$G;H$&J}K!(B +* Agent and IMAP:: $B%(!<%8%'%s%H$r(B @acronym{IMAP} $B$G;H$&J}K!(B * Outgoing Messages:: $BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+(B? * Agent Variables:: $B%+%9%?%^%$%:$O3Z$7(B * Example Setup:: $B%*%U%i%$%s?M4V$N$?$a$N(B @file{~/.gnus.el} $B$NNc(B * Batching Agents:: @code{cron} $B%8%g%V$K$h$k%K%e!<%9C5n%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 -* Score Decays:: $B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"(B - $B$k(B +* Score Decays:: $B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"$k(B GroupLens -* Using GroupLens:: $B$I$N$h$&$K(B gnus $B$K(B GroupLens $B$r;H$o$;$k(B - $B$h$&$K$9$k$+(B -* Rating Articles:: GropLens $B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k(B - $B$+$rCN$i$;$k(B -* Displaying Predictions:: GropuLens $B$K$h$C$FM?$($i$l$?M=8@$rI=<($9(B - $B$k(B +* Using GroupLens:: $B$I$N$h$&$K(B gnus $B$K(B GroupLens $B$r;H$o$;$k$h$&$K$9$k$+(B +* Rating Articles:: GropLens $B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k$+$rCN$i$;$k(B +* Displaying Predictions:: GropuLens $B$K$h$C$FM?$($i$l$?M=8@$rI=<($9$k(B * GroupLens Variables:: GoupLens $B$r%+%9%?%^%$%:$9$k(B Advanced Scoring @@ -933,18 +875,15 @@ Various * 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==Jb$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 * Predicate Specifiers:: $B=R8l$r@_Dj$9$k(B @@ -956,10 +895,8 @@ Various Formatting Variables -* Formatting Basics:: $B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"(B - $B$k(B -* Mode Line Formatting:: $B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N(B - $B5,B'(B +* 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 @@ -970,8 +907,7 @@ Formatting Variables Image Enhancements * 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=<((B - $B$9$kJ}K!(B +* Smileys:: $BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<($9$kJ}K!(B * X-Face:: $B%U%!%s%-!<$J$A$C$A$c$JGr9u$N3($rI=<($9$k(B * XVarious:: $B$=$NB>$N(B XEmacs $B$G(B Gnus $B$JJQ?t(B @@ -991,42 +927,34 @@ Appendices * On Writing Manuals:: $B$J$<$3$l$,=i?4ee$N%P!<%8%g%s$N(B Gnus * Why?:: Gnus $B$NL\E*$O2?(B? -* Compatibility:: Gnus $B$O(B @sc{gnus} $B$H$I$l$/$i$$8_49@-$,$"$k(B - $B$N(B? +* Compatibility:: Gnus $B$O(B @sc{gnus} $B$H$I$l$/$i$$8_49@-$,$"$k$N(B? * Conformity:: Gnus $B$OA4$F$NI8=`$rK~$?$=$&$H$9$k(B -* Emacsen:: Gnus $B$O$$$/$D$+$N8=BeE*$J(B Emacs $B4D6-$Ge$N$b$N(B---Gnus 5.4/5.5 * Quassia Gnus:: 2 $B$+$1$k(B 2 $B$O(B 4$B!"$b$7$/$O(B Gnus 5.6/5.7 -* Pterodactyl Gnus:: $B8^HVL\!"(BP $B$G;O$^$k!"$b$7$/$O(B Gnus 5.8 - /5.9 $B$H$7$FCN$i$l$F$$$k$b$N(B +* Pterodactyl Gnus:: $B8^HVL\!"(BP $B$G;O$^$k!"$b$7$/$O(B Gnus 5.8/5.9 $B$H$7$FCN$i$l$F$$$k$b$N(B Customization -* Slow/Expensive Connection:: $B%m!<%+%k$N(B Emacs $B$rN)$A>e$2$F!"B>$N$H$3(B - $B$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k(B +* Slow/Expensive Connection:: $B%m!<%+%k$N(B Emacs $B$rN)$A>e$2$F!"B>$N$H$3$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k(B * Slow Terminal Connection:: $B1s3V(B Emacs $B$rpJs7A<0(B * Extended Interactive:: $B5-9f@\F,<-$J$I(B @@ -1091,19 +1018,14 @@ Emacs for Heathens @menu * Finding the News:: $B%K%e!<%9$re$N(B gnus $B$r:nF0$5$;$k$3$H$,(B - $B$G$-$k(B +* The Server is Down:: $B$I$&$9$l$P$=$N$h$&$J$H$-$K%a!<%k$re$N(B gnus $B$r:nF0$5$;$k$3$H$,$G$-$k(B * Fetching a Group:: $B%0%k!<%W$rFI$`$?$a$@$1$K(B gnus $B$r5/F0$9$k(B * New Groups:: Gnus $B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+(B -* Changing Servers:: $B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7(B - $B$l$J$$(B -* Startup Files:: $B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k(B -- - @file{.newsrc} +* Changing Servers:: $B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7$l$J$$(B +* Startup Files:: $B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k(B -- @file{.newsrc} * Auto Save:: $B%/%i%C%7%e$+$i$N2sI|(B -* The Active File:: $BCY$$2s@~$+$i$N%U%!%$%k$Nl9g(B $B$O(B @file{/etc/nntpserver}) $B$,$3$N7o$K4X$7$F2?$+$r8@$C$F$$$J$$$+$rD4$Y$^(B $B$9!#$b$7$=$l$b<:GT$7$?$J$i!"(Bgnus $B$O(B Emacs $B$,F0:n$7$F$$$k%5!<%P!<(B -$B$r(B @sc{nntp} $B%5!<%P!<$H$7$F;H$*$&$H$7$^$9!#?oJ,$JEv$F?dNL$G$9$1$I$M!#(B +$B$r(B @acronym{NNTP} $B%5!<%P!<$H$7$F;H$*$&$H$7$^$9!#?oJ,$JEv$F?dNL$G$9$1$I$M!#(B @vindex gnus-nntp-server @code{gnus-nntp-server} $B$,@_Dj$5$l$F$$$k$H!"$3$NJQ?t(B @@ -1161,8 +1083,8 @@ gnus $B$O(B @code{gnus-nntpserver-file} ($B@_Dj$5$l$F$$$J$$>l9g(B @vindex gnus-secondary-servers @vindex gnus-nntp-server -Gnus $B$K(B @sc{nntp} $B%5!<%P!<$NL>A0$NF~NO$rBPOCE*$K;XDj$9$k$3$H$b$G$-$^$9!#(B -@code{gnus} $B$K?tCM$G$J$$@\F,0z?t$rEO$9$H(B ($BNc(B: @kbd{C-u M-x gnus})$B!"(B +Gnus $B$K(B @acronym{NNTP} $B%5!<%P!<$NL>A0$NF~NO$rBPOCE*$K;XDj$9$k$3$H$b$G$-(B +$B$^$9!#(B@code{gnus} $B$K?tCM$G$J$$@\F,0z?t$rEO$9$H(B ($BNc(B: @kbd{C-u M-x gnus})$B!"(B gnus $B$O(B @code{gnus-secondary-servers} $B%j%9%H(B ($B$b$7B8:_$9$k$J$i$P(B) $B$+$i%5!<(B $B%P!<$rA*$V$3$H$,$G$-$k$h$&$K$7$^$9!#$?$@C1$K@\B3$7$?$$$H;W$C$?%5!<%P!<$N(B $BL>A0$rBG$D$3$H$b$G$-$^$9!#(B($B$3$l$O(B @code{gnus-nntp-server} $B$r@_Dj$7!"$3$l(B @@ -1171,11 +1093,12 @@ gnus $B$O(B @code{gnus-secondary-servers} $B%j%9%H(B ($B$b$7B8:_$9$k$J$i$P @findex gnus-group-browse-foreign-server @kindex B ($B%0%k!<%W(B) -$B$7$+$7!"IaCJF|>oE*$K$O0l$D$N(B @sc{nntp} $B%5!<%P$r;H$$!"0c$C$?%5!<%P!<$K$O(B -$B6=L#$N$"$k%0%k!<%W$,>/$7$7$+$J$$>l9g!"%0%k!<%W%P%C%U%!$G(B @kbd{B} $BL?Na$r(B -$B;H$&$3$H$NJ}$,NI$$$G$7$g$&!#$=$l$O!"A*Br2DG=$J%0%k!<%W$rI=<($7!"$=$NCf$+(B -$B$i$I$l$G$b9%$-$J$b$N$r9XFI$9$k$3$H$,$G$-$^$9!#$3$l$O!"(B@file{.newsrc} $B$N(B -$BJ];}$r$:$C$H$d$j$d$9$/$7$^$9!#(B@xref{Foreign Groups, $B30It%0%k!<%W(B}. +$B$7$+$7!"IaCJF|>oE*$K$O0l$D$N(B @acronym{NNTP} $B%5!<%P$r;H$$!"0c$C$?%5!<%P!<(B +$B$K$O6=L#$N$"$k%0%k!<%W$,>/$7$7$+$J$$>l9g!"%0%k!<%W%P%C%U%!$G(B @kbd{B} $BL?(B +$BNa$r;H$&$3$H$NJ}$,NI$$$G$7$g$&!#$=$l$O!"A*Br2DG=$J%0%k!<%W$rI=<($7!"$=$N(B +$BCf$+$i$I$l$G$b9%$-$J$b$N$r9XFI$9$k$3$H$,$G$-$^$9!#$3$l(B +$B$O(B @file{.newsrc} $B$NJ];}$r$:$C$H$d$j$d$9$/$7$^$9!#(B +@xref{Foreign Groups, $B30It%0%k!<%W(B}$B!#(B @vindex gnus-secondary-select-methods @c @head @@ -1311,8 +1234,7 @@ Gnus $B$O!"?.Mj$G$-$k%W%m%0%i%`$N0l$D$H$7$F!"%5!<%P!<$H@\B3$G$-$J$$$H$-$O(B @menu * Checking New Groups:: $B$I$N%0%k!<%W$,?7$7$$$+$r7hDj$9$k(B -* Subscription Methods:: $B?7$7$$%0%k!<%W$KBP$7$F(B gnus $B$O2?$r$9$Y$-(B - $B$+(B +* Subscription Methods:: $B?7$7$$%0%k!<%W$KBP$7$F(B gnus $B$O2?$r$9$Y$-$+(B * Filtering New Groups:: Gnus $B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k(B @end menu @@ -1476,19 +1398,19 @@ options -n !alt.all !rec.all sci.all @section $B%5!<%P!<$r49$($k(B @cindex changing servers -$B$H$-$I$-!"$"$k(B @sc{nntp} $B%5!<%P!<$+$iJL$N%5!<%P!<$X0\F0$7$J$1$l$P$J$i$J(B -$B$$$3$H$,$"$j$^$9!#$3$N$h$&$J$3$H$O$a$C$?$K$*$-$^$;$s$,!"$*$=$i$/$"$J$?$,(B -$B;E;v$rJQ$($?$j!";H$C$F$$$k%5!<%P!<$,$H$F$bIT0BDj$G!"JL$N$b$N$K>h$j49$($?(B -$B$$$H$$$&$H$-$KI,MW$K$J$k$G$7$g$&!#(B +$B$H$-$I$-!"$"$k(B @acronym{NNTP} $B%5!<%P!<$+$iJL$N%5!<%P!<$X0\F0$7$J$1$l$P$J(B +$B$i$J$$$3$H$,$"$j$^$9!#$3$N$h$&$J$3$H$O$a$C$?$K$*$-$^$;$s$,!"$*$=$i$/$"$J(B +$B$?$,;E;v$rJQ$($?$j!";H$C$F$$$k%5!<%P!<$,$H$F$bIT0BDj$G!"JL$N$b$N$K>h$j49(B +$B$($?$$$H$$$&$H$-$KI,MW$K$J$k$G$7$g$&!#(B $B%5!<%P!<$rJQ99$9$k$N$O$H$F$b4JC1$G$9$h$M(B? @code{gnus-select-method} $B$r?7(B $B$7$$%5!<%P!<$r;X$7<($9$h$&$KJQ99$9$l$P$$$$$@$1$G$9$M(B? @emph{$B0c$$$^$9(B!} -$B5-;v$NHV9f$O0c$C$?(B @sc{nntp} $B%5!<%P!<$G$b(B ($B$I$&$K$+$7$F(B) $BF1$8$K$7$F$"$k!"(B -$B$H$$$&$3$H$O$"$j$^$;$s!#$=$7$F!"(Bgnus $B$,$I$N5-;v$rFI$s$@$+$r5-O?$9$kM#0l(B -$B$NJ}K!$O!"5-;vHV9f$r5-O?$9$k$3$H$G$9!#$G$9$+$i!"(B +$B5-;v$NHV9f$O0c$C$?(B @acronym{NNTP} $B%5!<%P!<$G$b(B ($B$I$&$K$+$7$F(B) $BF1$8$K$7$F(B +$B$"$k!"$H$$$&$3$H$O$"$j$^$;$s!#$=$7$F!"(Bgnus $B$,$I$N5-;v$rFI$s$@$+$r5-O?$9(B +$B$kM#0l$NJ}K!$O!"5-;vHV9f$r5-O?$9$k$3$H$G$9!#$G$9$+$i!"(B @code{gnus-select-method} $B$rJQ99$7$?$H$-$O!"%U%!%$%k(B @file{.newsrc} $B$O0U(B $BL#$,$J$/$J$j$^$9!#(B @@ -1705,10 +1627,10 @@ Gnus $B$O5/F0$7$?$H$-$d!"pJs$rF@$h$&$H$7$^$9!#$=$7$F!"$3$l$O$"$^$jB.$/$"$j$^$;$s!#$b$7$=(B -$B$l$,(B @code{some} $B$G(B @sc{nntp} $B%5!<%P!<$r;H$C$F$$$k$H$-$O!"(Bgnus $B$O$G$-$k(B -$B$@$1B.$/L?Na$r=P$7!"0l7b$G$9$Y$F$NJVEz$rFI$_9~$_$^$9!#$3$NJ}$,IaDL$O$h$j(B -$BNI$$7k2L$r$b$?$i$7$^$9$,!"%5!<%P!<$,L?Na(B @code{LIST ACTIVE group} $B$rM}2r(B -$B$7$J$$$J$i!"%5!<%P!<$K$H$C$F$O$"$^$jNI$$$H$O8@$($^$;$s!#(B +$B$l$,(B @code{some} $B$G(B @acronym{NNTP} $B%5!<%P!<$r;H$C$F$$$k$H$-$O!"(Bgnus $B$O$G(B +$B$-$k$@$1B.$/L?Na$r=P$7!"0l7b$G$9$Y$F$NJVEz$rFI$_9~$_$^$9!#$3$NJ}$,IaDL$O(B +$B$h$jNI$$7k2L$r$b$?$i$7$^$9$,!"%5!<%P!<$,L?Na(B @code{LIST ACTIVE group} $B$r(B +$BM}2r$7$J$$$J$i!"%5!<%P!<$K$H$C$F$O$"$^$jNI$$$H$O8@$($^$;$s!#(B Gnus $B$N5/F0$K$"$^$j$K;~4V$,$+$+$k$H;W$C$?$J$i!"$3$NJQ?t$K$3$l$i$N;0$D$N(B $B0c$C$?CM$r;n$7$F$_$F!"$I$l$,0lHVNI$$$+$rC5$7$F$/$@$5$$!#(B @@ -1827,20 +1749,15 @@ Gnus $B$N5/F0$K@.8y$7$?8e$K!"0lHV:G8e$KpJs$rJQ99$9$k(B * Group Levels:: $B%l%Y%k(B? $B$=$l$C$F2?(B? * Group Score:: $B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!(B -* Marking Groups:: $B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-(B - $B$^$9(B +* Marking Groups:: $B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-$^$9(B * Foreign Groups:: $B%0%k!<%W$N:n@.$H=$@5(B -* Group Parameters:: $B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l(B - $B$^$9(B -* Listing Groups:: Gnus $B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<((B - $B$G$-$^$9(B +* Group Parameters:: $B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l$^$9(B +* Listing Groups:: Gnus $B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<($G$-$^$9(B * Sorting Groups:: $B%0%k!<%W$N=gHV$NG[CVBX$((B * Group Maintenance:: $B$-$l$$$J(B @file{.newsrc} $B$NJ]$AJ}(B -* Browse Foreign Server:: $B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_(B - $B$h$&(B +* Browse Foreign Server:: $B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_$h$&(B * Exiting Gnus:: $B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&(B -* Group Topics:: $B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d(B - $B$9$k(B +* Group Topics:: $B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d$9$k(B * Misc Group Stuff:: $BB>$K$G$-$k$3$H(B @end menu @@ -1921,7 +1838,7 @@ Gnus $B$N5/F0$K@.8y$7$?8e$K!"0lHV:G8e$K!#(B @item D -$B%K%e!<%9%0%k!<%W$N@bL@!#(B +$B%K%e!<%9%0%k!<%W$N@bL@!#$3$l$i$,8=$l$kA0$K!"%0%k!<%W$N@bL@$rFI$`I,MW$,$"(B +$B$j$^$9!#$=$l$K$O(B @code{gnus-read-active-file} $B$r@_Dj$9$k$+!"%0%k!<%W%P%C(B +$B%U%!$G(B @kbd{M-d} $B%3%^%s%I$r;H$C$F2<$5$$!#(B @item o $B;J2ql9g(B @samp{m}$B!#(B @@ -2238,6 +2157,10 @@ Gnus $B$O(B @code{gnus-user-format-function-}@samp{X} $B4X?t$r8F$S=P$7$^$9!#$ $B$rpJs$O$b$&Lr$K$ON)$A$^$;$s!#$3$N%3%^%s%I$r;H$C$F4pK\%0%k!<%W$NA4$F$N%G!<(B -$B%?$r%/%j%"$9$k$3$H$,$G$-$^$9!#Cm0U$7$F;H$C$F$M!#(B +$B$b$7(B @acronym{NNTP} $B%5!<%P$rJL$N$b$N$K@Z$jBX$($?$H$9$k$H!"A4$F$N%^!<%/$H(B +$B4{FI>pJs$O$b$&Lr$K$ON)$A$^$;$s!#$3$N%3%^%s%I$r;H$C$F4pK\%0%k!<%W$NA4$F$N(B +$B%G!<%?$r%/%j%"$9$k$3$H$,$G$-$^$9!#Cm0U$7$F;H$C$F$M!#(B @end table @node Group Levels @@ -2582,7 +2505,7 @@ Gnus $B$ODL>o!"(B@code{gnus-activate-level} $B$+$=$l$h$j>.$5$$%l%Y%k$N%0%k!<% @cindex making groups $B?7$7$$%0%k!<%W$r:n@.$7$^$9(B (@code{gnus-group-make-group})$B!#(BGnus $B$O%W%m%s(B $B%W%H$rI=<($7$F!"L>A0$HJ}K!$H!">l9g$K$h$C$F$O(B @dfn{address} $B$NF~NO$r5a$a(B -$B$F$-$^$9!#$h$j4JC1$K(B @sc{nntp} $B%0%k!<%W$r9XFI$9$kJ}K!$O!"(B +$B$F$-$^$9!#$h$j4JC1$K(B @acronym{NNTP} $B%0%k!<%W$r9XFI$9$kJ}K!$O!"(B @pxref{Browse Foreign Server}$B!#(B @item G n @@ -2744,10 +2667,10 @@ kiboze $B%0%k!<%W$r:n@.$7$^$9!#%W%m%s%W%H$GL>A0$H!"(Bkiboze $B%0%k!<%W$K!V4^$ @vindex gnus-activate-foreign-newsgroups $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@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 +$B$3$l$OFC$K0c$C$?(B @acronym{NNTP} $B%5!<%P$+$i$?$/$5$s$N%0%k!<%W$r9XFI$7$F$$(B +$B$k>l9g$J$I!"$7$P$i$/;~4V$,$+$+$k$+$b$7$l$^$;$s!#(B@pxref{Group Levels} $B$b(B +$B;2>H$7$F2<$5$$!#(B@code{gnus-activate-level} $B$b30It%K%e!<%9%0%k!<%W$N3hF0(B +$B2=$K1F6A$r5Z$\$7$^$9!#(B @node Group Parameters @section $B%0%k!<%W%Q%i%a!<%?(B @@ -2846,10 +2769,12 @@ Manual} $B$r8+$F2<$5$$!#(B @item broken-reply-to @cindex broken-reply-to @code{(broken-reply-to . t)} $B$H$$$&MWAG$,$"$l$P!"$=$N%0%k!<%W$G(B -$B$O(B @code{Reply-To} $B$OL5;k$5$l$k!"$H$$$&0UL#$G$9!#$3$l$O$"$k(B listserv $B$K(B -$B$h$k%a!<%j%s%0%j%9%H$r9XFI$7$F$$$F!"$=$l$,(B @code{Reply-To} $BMs(B -$B$r(B listserv $B<+?H$KJV$9$h$&$K$D$1$i$l$F$$$k>l9g$KM-8z$G$7$g$&!#$3$l$O$*$+(B -$B$7$J?6$kIq$$$G$9!#$@$+$i$3$l$,MW$k$s$G$9(B! +$B$O(B @code{Reply-To} $B$OL5;k$5$l!"(B +@code{reply-to} $B$,(B @code{gnus-boring-article-headers} $B$NItJ,$G$"$l$P!"%X%C(B +$B%@!<$,1#$5$l$k$H$$$&0UL#$G$9!#$3$l$O$"$k(B listserv $B$K$h$k%a!<%j%s%0%j%9%H(B +$B$r9XFI$7$F$$$F!"$=$l$,(B @code{Reply-To} $BMs$r(B listserv $B<+?H$KJV$9$h$&$K$D(B +$B$1$i$l$F$$$k>l9g$KM-8z$G$7$g$&!#$3$l$O$*$+$7$J?6$kIq$$$G$9!#$@$+$i$3$l$,(B +$BMW$k$s$G$9(B! @item to-group @cindex to-group @@ -2928,8 +2853,8 @@ Manual} $B$r8+$F2<$5$$!#(B $BL$FI!"4{FI5-;v$NN>J}$rA4$FI=<($7$^$9!#(B @item an integer -$B$=$N%0%k!<%W$N:G8e$N(B @var{integer} $B8D$N5-;v$rI=<($7$^$9!#$3$l$O(B C-u -@var{integer} $B$G$=$N%0%k!<%W$KF~$k$N$HF1$8$G$9!#(B +$B$=$N%0%k!<%W$N:G8e$N(B @var{integer} $B8D$N5-;v$rI=<($7$^$9!#$3$l(B +$B$O(B @kbd{C-u @var{integer}} $B$G$=$N%0%k!<%W$KF~$k$N$HF1$8$G$9!#(B @item default $B=i4|@_Dj$G$NI=<(5-;v$rI=<($7$^$9!#$3$l$ODL>o$OL$FI5-;v$H0uIU$-5-;v$G$9!#(B @@ -3010,9 +2935,9 @@ See also @code{gnus-group-ignored-charsets-alist}. @item banner @cindex banner -@code{(banner . "regex")} $B$N$h$&$J9`L\$O!"5-;v$N$9$Y$F$N>l=j$G@55,I=(B -$B8=(B "regex" $B$K%^%C%A$9$k$b$N$r:o=|$7$^$9!#(B"regex" $B$NBe$o$j$K%7%s%\(B -$B%k(B @code{signature} ($B:G8e$N=pL>$r:o(B +@code{(banner . @var{regex})} $B$N$h$&$J9`L\$O!"5-;v$N$9$Y$F$N>l=j$G@55,I=(B +$B8=(B @var{regex} $B$K%^%C%A$9$k$b$N$r:o=|$7$^$9!#(B@var{regex} $B$NBe$o$j$K%7%s(B +$B%\%k(B @code{signature} ($B:G8e$N=pL>$r:o(B $B=|(B) $B$dO"A[%j%9%H(B @code{gnus-article-banner-alist} $B$N3FMWAG$r;H$&$3$H$b$G(B $B$-$^$9!#(B @@ -3045,6 +2970,18 @@ Sieve}$B!#(B @code{gnus-show-threads} $B$O!"$=$N35N,%P%C%U%!$NCf$N%m!<%+%kJQ?t$K$J$j!"(B form $B$N(B @code{nil} $B$O$=$3$GI>2A$5$l$^$9!#(B +$B$3$N5!G=$O!"JQ?t$r35N,%P%C%U%!$G%m!<%+%k$K@_Dj$9$k$3$H$KCm0U$7$F2<$5$$!#(B +$B$G$b!"$$$/$D$+$NJQ?t$O5-;v%P%C%U%!$+(B ($BJV?.!"%U%)%m!2A$5$l$^$9!#Be$o$j$K!"LdBj$NJQ?t(B +$B$r(B @code{gnus-newsgroup-variables} $B$K2C$($k$3$H$,=u$1$K$J$k$+$b$7$l$^$;(B +$B$s!#$7$?$,$C$F!"%0%k!<%W%Q%i%a!<%?$r2p$7$F(B @code{message-from-style} $B$r(B +$B@_Dj$7$?$$$J$i$P!"(B@file{~/.gnus}$B%U%!%$%k$N$I$3$+B>$N$H$3$m$K!"Ms$+$i%a!<%j%s%0%j%9%H$NI8<1%?%0$r$O$.(B $B$N%0%k!<%W4XO"(B @menu -* Scanning New Messages:: Gnus $B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&(B - $B$+$rJ9$/(B +* Scanning New Messages:: Gnus $B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&$+$rJ9$/(B * Group Information:: $B%0%k!<%W$H(B gnus $B$K4X$9$k>pJs$H%X%k%W(B -* Group Timestamp:: Gnus $B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-(B - $BO?$5$;$k(B +* Group Timestamp:: Gnus $B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k(B * File Commands:: Gnus $B$N%U%!%$%k$NFI$_=q$-(B * Sieve Commands:: Sieve $B%9%/%j%W%H$N4IM}(B @end menu @@ -4170,14 +4104,15 @@ Gnus $B$r%j%9%?!<%H$7$^$9(B (@code{gnus-group-restart})$B!#$3$l(B @kindex H f ($B%0%k!<%W(B) @findex gnus-group-fetch-faq @vindex gnus-group-faq-directory -@cindex FAQ +@cindex @acronym{FAQ} @cindex ange-ftp -$B8=:_$N%0%k!<%W$N(B FAQ $B$ro%j%b!<%H%^%7%s>e$N%G%#%l%/%H%j$G$9!#$3$NJQ?t$O%G%#%l%/%H%j$N%j%9(B -$B%H$G$"$C$F$b9=$$$^$;$s!#$3$N>l9g!"$3$N%3%^%s%I$K%W%l%U%#%C%/%9$rM?$($k$3(B -$B$H$G$$$/$D$+$N%5%$%H$NCf$+$iA*$V$3$H$,$G$-$^$9!#%U%!%$%k$No%j%b!<%H%^%7%s>e$N%G%#%l%/%H%j$G$9!#$3$NJQ?t$O%G%#%l%/(B +$B%H%j$N%j%9%H$G$"$C$F$b9=$$$^$;$s!#$3$N>l9g!"$3$N%3%^%s%I$K%W%l%U%#%C%/%9(B +$B$rM?$($k$3$H$G$$$/$D$+$N%5%$%H$NCf$+$iA*$V$3$H$,$G$-$^$9!#%U%!%$%k$Nl9g!"(B gnus $B$O(B @code{gnus-group-faq-directory} $B$NCM$rA4$F!"0l$D0l$D%*!<%W%s$7$F(B @@ -4411,21 +4346,17 @@ if address "sender" "owner-ding@@hpc.uh.edu" @{ * Paging the Article:: $BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k(B * Reply Followup and Post:: $B5-;v$rEj9F$9$k(B * Delayed Articles:: $B5-;v$r8e$GAw$k(B -* Marking Articles:: $B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1(B - $B$k(B +* Marking Articles:: $B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1$k(B * Limiting:: $B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k(B * Threading:: $B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+(B -* Sorting the Summary Buffer:: $B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k(B - $B$+(B +* Sorting the Summary Buffer:: $B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+(B * Asynchronous Fetching:: Gnus $B$O5-;v$r@h$KC5n$7$J$/$5$;$k(B * Article Backlog:: $B4{$KFI$s$@5-;v$r;D$7$F$*$/(B * Saving Articles:: $B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!(B -* Decoding Articles:: Gnus $B$O0lO"$N(B (uu)encode $B$5$l$?5-;v$r07(B - $B$($k(B -* Article Treatment:: $B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G(B - $B$-$k(B +* Decoding Articles:: Gnus $B$O0lO"$N(B (uu)encode $B$5$l$?5-;v$r07$($k(B +* Article Treatment:: $B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G$-$k(B @c * MIME Commands:: Doing MIMEy things with the articles. @c * Charsets:: Character set issues. * Article Commands:: $B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k(B @@ -4433,15 +4364,11 @@ if address "sender" "owner-ding@@hpc.uh.edu" @{ * Finding the Parent:: $B;R5-;v$,C5$;$J$$$C$F(B? $B?F5-;v$r$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N(B -* Exiting the Summary Buffer:: $B%0%k!<%W%P%C%U%!$KLa$k!"(B - $B$^$?$O8=:_$N%0%k!<%W$r:F$SA*Br$9$k(B -* Crosspost Handling:: $B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l(B - $B$k$+(B -* Duplicate Suppression:: $B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBXA0$rI=<($7$J$$J}K!(B * Summary Buffer Mode Line:: $B%b!<%I9T$N8+$(J}$r7h$a$i$l$k(B * Summary Highlighting:: $B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k(B @@ -4558,14 +4484,19 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From @end example $B0J2<$N%*%W%7%g%s$G8+1I$($r%+%9%?%^%$%:$9$k$3$H$,$G$-$^$9!#%G%#%U%)%k%H(B -$B$N(B ASCII $BJ8;z$r@~IA2hMQ$N?^0F$GCV$-49$($k$3$H$K$h$C$F!"%9%l%C%II=<($r$r;H(B $B$$$^$9!#%G%#%U%)%k%H$O(B @samp{> } $B$G$9!#(B +@item gnus-sum-thread-tree-false-root +@vindex gnus-sum-thread-tree-false-root +$B%9%l%C%I$N$K$;$N:,$K;H$o$l$^$9(B (@pxref{Loose Threads})$B!#(B@code{nil} $B$@$C(B +$B$?$i!"Be$o$j$KBjL>$r;H$$$^$9!#%G%#%U%)%k%H$O(B @samp{> } $B$G$9!#(B + @item gnus-sum-thread-tree-single-indent @vindex gnus-sum-thread-tree-single-indent $BC10l$N%a%C%;!<%8$N%9%l%C%I$K;H$o$l$^$9!#(B@code{nil} $B$@$C$?$i!"Be$o$j$KBj(B @@ -4713,11 +4644,11 @@ Gnus $B$OJQ?t(B @code{gnus-extract-address-components} $B$NCM$r(B @code{From @end enumerate @vindex nnmail-extra-headers -$B4XO"$7$?JQ?t$O(B @code{nnmail-extra-headers} $B$G!"(Boverview (@sc{nov}) $B%U%!(B -$B%$%k$K$$$DDI2C$N%X%C%@!<$r4^$a$k$+$r@)8f$7$^$9!#8E$$(B overview $B%U%!%$%k$,(B -$B$"$k>l9g$O!"$3$NJQ?t$rJQ99$7$?8e$K%5!<%P!<%P%C%U%!$K(B @kbd{^} $B$GF~$C$FE,(B -$B@Z$J%a!<%k%5!<%P!<(B ($BNc$($P(B nnml) $B$G(B @kbd{g} $B$r2!$7!":F@8@.$9$kI,MW$,$"$j(B -$B$^$9!#(B +$B4XO"$7$?JQ?t$O(B @code{nnmail-extra-headers} $B$G!"(B +overview (@acronym{NOV}) $B%U%!%$%k$K$$$DDI2C$N%X%C%@!<$r4^$a$k$+$r@)8f$7(B +$B$^$9!#8E$$(B overview $B%U%!%$%k$,$"$k>l9g$O!"$3$NJQ?t$rJQ99$7$?8e$K%5!<%P!<(B +$B%P%C%U%!$K(B @kbd{^} $B$GF~$C$FE,@Z$J%a!<%k%5!<%P!<(B ($BNc$((B +$B$P(B nnml) $B$G(B @kbd{g} $B$r2!$7!":F@8@.$9$kI,MW$,$"$j$^$9!#(B @vindex gnus-summary-line-format gnus $B$K!"(B@code{gnus-summary-line-format} $BJQ?t$N(B @code{%n} $B;EMM(B @@ -4743,9 +4674,9 @@ gnus $B$K!"(B@code{gnus-summary-line-format} $BJQ?t$N(B @code{%n} $B;EMM(B $B%K%e!<%94IM}?M!"$^$?$O%K%e!<%94IM}?M$r@bF@$7$F%5%]!<%H$NDI2C$r$7$F$b$i$*(B $B$&$H;W$C$F$$$k%f!<%6!<$N$_$J$5$s$X$N$4Cm0U(B: -$B>e5-$N$3$H$O!":n@.$5$l$k(B @sc{nov} $B%U%!%$%k$rA`:n$G$-$k%a!<%k%0%k!<%W$G$O(B -$B$?$$$F$$$N>l9gLrN)$A$^$9!#$7$+$7!"4IM}?M$r@bF@$7$F(B ($BFC$K(B INN $B$NIaDL$Ne5-$N$3$H$O!":n@.$5$l$k(B @acronym{NOV} $B%U%!%$%k$rA`:n$G$-$k%a!<%k%0%k!<(B +$B%W$G$O$?$$$F$$$N>l9gLrN)$A$^$9!#$7$+$7!"4IM}?M$r@bF@$7$F(B ($BFC$K(B INN $B$NIa(B +$BDL$NH$7$F2<$5$$!#(B @kindex S B r ($B35N,(B) @findex gnus-summary-reply-broken-reply-to $B8=:_$N5-;v$r=q$$$??M$KBP$7$FJVEz$r$7$^$9$,(B @code{Reply-To} $B%U%#!<%k%I$O(B -$BL5;k$7$^$9(B (@code{gnus-summary-reply-broken-reply-to})$B!#(B +$BL5;k$7$^$9(B (@code{gnus-summary-reply-broken-reply-to})$B!#%a!<%j%s%0%j%9%H(B +$B$,$=$N%j%9%H$r;X$9(B @code{Reply-To} $B$r2a$C$F@_Dj$9$k$?$a$K$3$l$,I,MW$J$N(B +$B$G$"$l$P!"$"$J$?$O$?$V$sBe$o$j$K(B @code{broken-reply-to} $B%0%k!<%W%Q%i%a!<(B +$B%?$r@_Dj$7$?$$$H;W$$!"$=$l$OF0:n$9$k$G$7$g$&!#(B @item S B R @kindex S B R ($B35N,(B) @@ -6295,12 +6229,10 @@ Gnus $B$O=i4|@_Dj$G5-;v$r%9%l%C%I$K$7$^$9!#(B@dfn{$B%9%l%C%I$K$9$k(B} $B$H$ @cindex customizing threading @menu -* Loose Threads:: Gnus $B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C(B - $B%I$K$9$kJ}K!(B +* Loose Threads:: Gnus $B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C%I$K$9$kJ}K!(B * Filling In Threads:: $B%9%l%C%I$rKd$a$k(B * More Threading:: $B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t(B -* Low-Level Threading:: $B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&(B@dots{} $B$G(B - $B$b$"$J$?$O4V0c$C$F$$$?(B! +* Low-Level Threading:: $B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&(B@dots{} $B$G$b$"$J$?$O4V0c$C$F$$$?(B! @end menu @node Loose Threads @@ -6505,6 +6437,11 @@ Gnus $B$O(B @code{Subject} $BMs$r8+$k$3$H$K$h$C$F%9%l%C%I$r=8$a$^$9!#$3$l$O!" $B$O2?$b$"$j$^$;$s$,!"L?Na(B @kbd{A T} $B$r$h$/;H$&$N$G$"$l$PLr$KN)$D$G$7$g(B $B$&(B (@pxref{Finding the Parent})$B!#(B +@item gnus-fetch-old-ephemeral-headers +@vindex gnus-fetch-old-ephemeral-headers +@code{gnus-fetch-old-headers} $B$HF1$8$G$9$,!"0l;~%K%e!<%9%0%k!<%W$N$?$a$K(B +$B$@$1;H$o$l$^$9!#(B + @item gnus-build-sparse-threads @vindex gnus-build-sparse-threads $B8E$$%X%C%@!<$rJ,$J5-;v$NMW5a$H!"M>J,$J@\B3$G!#(B +$B5-;v$N@h(B-$BJ,$J5-;v$NMW5a$H!"M>J,$J@\B3$G!#(B $B$O$$!"$3$l$GK\Ev$O$3$N$h$&$J$3$H$r$9$Y$-$GL5$$;v$,J,$+$C$?$G$7$g(B $B$&(B@dots{} $BK\Ev$K$=$&$7$?$$$H;W$o$J$$8B$j$O!#(B @@ -6942,12 +6879,12 @@ Gnus $B$O$"$J$?$,FI$`$G$"$m$&5-;v$h$j$b$?$/$5$s$N5-;v$ro$K(B}$BCY$$(B @sc{nntp} $B@\B3$G$"$k$J$i$P!"5-;v%-%c%C%7%e$r$9$k$3(B -$B$H$r9M$($k$+$b$7$l$^$;$s!#$=$&$9$k$H!"$=$l$>$l$N5-;v$O$"$J$?$N%[!<%`%G%#(B -$B%l%/%H%j$N2<$K%m!<%+%k$KN/$a$i$^$9!#4{$K?dB,$5$l$F$$$k$+$bCN$l$^$;$s$,!"(B -$B$3$l$O(B @emph{$B5pBg$J(B}$B%G%#%9%/%9%Z!<%9$r?)$$!"(Bi$B%N!<%I$bHs>o$KB.$/?)$$$D$V(B -$B$92DG=@-$,$"$k$?$a!"$=$l$O$"$J$?$NF,$r1K$,$;$k;v$K$J$k$+$b$7$l$^$;$s!#(B -$B%&%)%C%+$NCf$G!#(B +$B$b$7(B@emph{$BHs>o$K(B}$BCY$$(B @acronym{NNTP} $B@\B3$G$"$k$J$i$P!"5-;v%-%c%C%7%e$r(B +$B$9$k$3$H$r9M$($k$+$b$7$l$^$;$s!#$=$&$9$k$H!"$=$l$>$l$N5-;v$O$"$J$?$N%[!<(B +$B%`%G%#%l%/%H%j$N2<$K%m!<%+%k$KN/$a$i$^$9!#4{$K?dB,$5$l$F$$$k$+$bCN$l$^$;(B +$B$s$,!"$3$l$O(B @emph{$B5pBg$J(B}$B%G%#%9%/%9%Z!<%9$r?)$$!"(Bi$B%N!<%I$bHs>o$KB.$/?)(B +$B$$$D$V$92DG=@-$,$"$k$?$a!"$=$l$O$"$J$?$NF,$r1K$,$;$k;v$K$J$k$+$b$7$l$^$;(B +$B$s!#%&%)%C%+$NCf$G!#(B $B$G$bCm0U?<$/;H$o$l$l$P!"$=$l$O5-;v$rJ]B8$9$k4JC1$JJ}K!$K$J$jF@$^$9!#(B @@ -6969,7 +6906,8 @@ Gnus $B$O$"$J$?$,FI$`$G$"$m$&5-;v$h$j$b$?$/$5$s$N5-;v$rJ}$H$b%7%s%\%k$N%j%9%H$G$9!#A0/(B -$B$J$/$9$k0l$D$NJ}K!$O!"M_$7$/$J$$5-;v$N%9%3%"$rDc$/$7!"4{FI$N0u$rIU$1$k;v(B -$B$G$9!#$=$&$7$?>l9g!"$=$l$i$O$3$NL?Na$G$O%@%&%s%m!<%I$5$l$^$;$s!#(B +$B/$J$/$9$k0l$D$NJ}K!$O!"M_$7$/$J$$5-;v$N%9%3%"$rDc$/$7!"4{FI$N0u$rIU$1(B +$B$k;v$G$9!#$=$&$7$?>l9g!"$=$l$i$O$3$NL?Na$G$O%@%&%s%m!<%I$5$l$^$;$s!#(B @vindex gnus-uncacheable-groups @vindex gnus-cacheable-groups @@ -7007,9 +6945,9 @@ Gnus $B$O$"$J$?$,FI$`$G$"$m$&5-;v$h$j$b$?$/$5$s$N5-;v$r$NItJ,(B) $B$,2?$i$+$NM}M3$G$0$A$c$0$A$c$K$J$C$F$7$^$C$?>l9g!"(B gnus $B$OJ*;v$r@5$7$/$9$k$?$a$KFs$D$N4X?t$r$*4+$a$7$^$9!#(B -@kbd{M-x gnus-cache-generate-nov-databases} $B$O$9$Y$F$N(B @sc{nov} $B%U%!%$%k(B -$B$r(B ($B:F(B) $B:n@.$7!"(B@kbd{gnus-cache-generate-active} $B$O%"%/%F%#%V%U%!%$%k(B -$B$r(B ($B:F(B) $B:n@.$7$^$9!#(B +@kbd{M-x gnus-cache-generate-nov-databases} $B$O$9$Y$F$N(B @acronym{NOV} $B%U%!(B +$B%$%k$r(B ($B:F(B) $B:n@.$7!"(B@kbd{gnus-cache-generate-active} $B$O%"%/%F%#%V%U%!%$(B +$B%k$r(B ($B:F(B) $B:n@.$7$^$9!#(B @findex gnus-cache-move-cache @code{gnus-cache-move-cache} $B$O$9$Y$F$N(B @code{gnus-cache-directory} $B$r$I(B @@ -7119,7 +7057,7 @@ Gnus $B$O$?$/$5$s$NJ}K!$G5-;v$rJ]B8$9$k;v$,$G$-$^$9!#0J2<$N$b$N$OHs>o$KN((B @item O r @kindex O r ($B35N,(B) @findex gnus-summary-save-article-rmail -$B8=:_$N5-;v$r(B rmail $B$NMM<0$GJ]B8$7$^(B +$B8=:_$N5-;v$r(B Rmail $B$NMM<0$GJ]B8$7$^(B $B$9(B (@code{gnus-summary-save-article-rmail})$B!#(B @item O f @@ -7167,9 +7105,9 @@ Prefixes}) $B$,M?$($i$l$k$H!"%Q%$%W$X$N=PNO$K40A4$J%X%C%@!<$r4^$a$^$9!#(B @kindex O P ($B35N,(B) @findex gnus-summary-muttprint @vindex gnus-summary-muttprint-program -$B8=:_$N5-;v$r(B muttprint $B$KJ]B8$7$^$9!#$3$l$O!"30It%W%m%0%i%`(B Muttprint -(@uref{http://muttprint.sourceforge.net/} $B;2>H(B) $B$r;H$C$F5-;v$r0u:~$7$^$9!#(B -$B%W%m%0%i%`L>$H;HMQ$9$k%*%W%7%g%s$O!"JQ(B +$B8=:_$N5-;v$r(B muttprint $B$KJ]B8$7$^$9!#$3$l$O30It%W%m%0%i(B +$B%`(B @uref{http://muttprint.sourceforge.net/, Muttprint} $B$r;H$C$F5-;v$r0u(B +$B:~$7$^$9!#%W%m%0%i%`L>$H;HMQ$9$k%*%W%7%g%s$O!"JQ(B $B?t(B @code{gnus-summary-muttprint-program} $B$G;XDj$5$l$^$9!#(B (@code{gnus-summary-muttprint})$B!#(B @end table @@ -7197,7 +7135,7 @@ Gnus $B$,$"$J$?$NK>$`$H$*$j$K$J$k$h$&$K!"JQ(B @findex gnus-summary-save-in-rmail @vindex gnus-rmail-save-name @findex gnus-plain-save-name -$B$3$l$O%G%#%U%)%k%H$NMM<0!"(B@dfn{babyl} $B$G$9!#JQ(B +$B$3$l$O%G%#%U%)%k%H$NMM<0!"(B@dfn{Babyl} $B$G$9!#JQ(B $B?t(B @code{gnus-ramil-save-name} $B$KF~$C$F$$$k4X?t$r!"5-;v$rJ]B8$9$k$?$a$N(B $B%U%!%$%kL>$r$ $B$b$75-;v$r%9%W!<%k$N$h$&$J3,AX$KJ]B8$7$?$$$N$G$"$l$P!"$NI|9f2=$NJQ?t(B * Uuencoding and Posting:: uuencode $B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t(B @end menu @@ -7604,10 +7541,10 @@ Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9 @item gnus-uu-ignore-files-by-type @vindex gnus-uu-ignore-files-by-type -$B$3$NJQ?t$K9gCW$9$k(B @sc{mime} $B$N7?$r;}$D%U%!%$%k$O1\Mw$5$l$^$;$s!#(BGnus $B$O(B -$B%U%!%$%kL>$K4p$E$$$F7?$r?dB,$7$F$$$k;v$KCm0U$7$F$/$@$5$$!#(B -@code{gnus-uu} $B$O(B ($B$^$@(B) @sc{mime} $B%Q%C%1!<%8$G$O$"$j$^$;$s$N$G!"$3$l$O(B -$B>/$7JQ$G$9!#(B +$B$3$NJQ?t$K9gCW$9$k(B @acronym{MIME} $B$N7?$r;}$D%U%!%$%k$O1\Mw$5$l$^$;$s!#(B +gnus $B$O%U%!%$%kL>$K4p$E$$$F7?$r?dB,$7$F$$$k;v$KCm0U$7$F$/$@$5$$!#(B +@code{gnus-uu} $B$O(B ($B$^$@(B) @acronym{MIME} $B%Q%C%1!<%8$G$O$"$j$^$;$s$N$G!"$3(B +$B$l$O>/$7JQ$G$9!#(B @item gnus-uu-tmp-dir @vindex gnus-uu-tmp-dir @@ -7656,8 +7593,8 @@ Gnus $B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K(B@dfn{$B5,B'JQ?t(B}$B$rMQ$$$^$9 @vindex gnus-uu-view-with-metamail @cindex metamail @code{nil} $B$G$J$$$N$O!"(B@code{gnus-uu} $B$O5,B'JQ?t$GDj5A$5$l$?1\MwL?Na$rL5(B -$B;k$7$F!"%U%!%$%kL>$K4p$E$$$?(B @sc{mime} $BFbMF$N7?$K$K4p$E$$$?(B @acronym{MIME} $BFbMF$N7?$KpJs$O>C$75n$j$?$$$H$b;W$&(B -* Article Washing:: $B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?(B - $B4X?t(B +* Article Washing:: $B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?4X?t(B * Article Header:: $B%X%C%@!<$r$$$m$$$mJQ7A$5$;$k(B -* Article Buttons:: URL $B$d(B Message-ID $B$d%"%I%l%9$J$I$r%/%j%C(B - $B%/$9$k(B +* Article Buttons:: URL $B$d(B Message-ID $B$d%"%I%l%9$J$I$r%/%j%C%/$9$k(B * Article Button Levels:: $B%\%?%s$N8+$(J}$r@)8f$9$k(B * Article Date:: $B$0$:$0$:8@$&$J!"@$3&;~$@(B! * Article Display:: X-Face, Picons, Smileys $B$rI=<($9$k(B @@ -7904,7 +7838,11 @@ Fonts})$B!#F1$8%a%C%;!<%8$NCf$KJ#?t$N5-;v$+$i$N0zMQ$,$"$k$H!"(Bgnus $B$O$=$l$ @vindex gnus-emphasis-bold-italic @vindex gnus-emphasis-underline-bold-italic $B=i4|@_Dj$G$O<7$D$N5,B'$,$"$j!"$=$l$i$O0J2<$N%U%'%$%9$rMQ$$$^(B -$B$9(B: @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic}, @code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic}, @code{gnus-emphasis-underline-italic}, @code{gnus-emphasis-underline-bold}, @code{gnus-emphasis-underline-bold-italic}. +$B$9(B: @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic}, +@code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic}, +@code{gnus-emphasis-underline-italic}, +@code{gnus-emphasis-underline-bold}, +@code{gnus-emphasis-underline-bold-italic}$B!#(B $B$3$l$i$N%U%'%$%9$rJQ99$7$?$$$N$G$"$l$P!"(B @kbd{M-x customize} $B$+(B @code{copy-face} $B$r;H$&;v$,$G$-$^$9!#Nc$($P!"(B @@ -7936,7 +7874,7 @@ Fonts})$B!#F1$8%a%C%;!<%8$NCf$KJ#?t$N5-;v$+$i$N0zMQ$,$"$k$H!"(Bgnus $B$O$=$l$ @kindex W W a ($B35N,(B) @findex gnus-article-hide $B5-;v%P%C%U%!$G$?$/$5$s$N1#F?$r$7$^$9(B (@kbd{gnus-article-hide})$B!#FC$K!"$3(B -$B$N4X?t$O%X%C%@!$r1#$7$^$9!#(B +$B$N4X?t$O%X%C%@!$r1#$7$^$9!#(B @item W W h @kindex W W h ($B35N,(B) @@ -7977,8 +7915,8 @@ Fonts})$B!#F1$8%a%C%;!<%8$NCf$KJ#?t$N5-;v$+$i$N0zMQ$,$"$k$H!"(Bgnus $B$O$=$l$ @item W W P @kindex W W P ($B35N,(B) @findex gnus-article-hide-pem -@sc{pem} (privacy enhanced messages ($B%W%i%$%P%7!<3HD%%a%C%;!<%8(B)) $BItJ,$r(B -$B1#$7$^$9(B (@code{gnus-article-hide-pem})$B!#(B +@acronym{PEM} (privacy enhanced messages ($B%W%i%$%P%7!<3HD%%a%C%;!<(B +$B%8(B)) $BItJ,$r1#$7$^$9(B (@code{gnus-article-hide-pem})$B!#(B @item W W B @kindex W W B ($B35N,(B) @@ -8163,7 +8101,7 @@ gnus $B$,5-;v$rI=<($9$k4{Dj$N$d$jJ}$rJQ$($?$$$H$-(B @item W m @kindex W m ($B35N,(B) @findex gnus-summary-toggle-mime -$BI=<($9$kA0$K5-;v$K(B @sc{mime} $B=hM}$r!\$7$/$O(B @uref{http://emacs-w3m.namazu.org/} $B$r;2(B -$B>H$7$F2<$5$$(B)$B!#(B +@uref{http://emacs-w3m.namazu.org/, emacs-w3m} $B$r;H$$$^$9!#(B @item links -Links $B$r;H$$$^(B -$B$9(B (@uref{http://artax.karlin.mff.cuni.cz/~mikulas/links/} $B$r;2>H(B)$B!#(B +@uref{http://links.sf.net/, Links} $B$r;H$$$^$9!#(B @item lynx -Lynx $B$r;H$$$^$9(B (@uref{http://lynx.browser.org/} $B$r;2>H(B)$B!#(B +@uref{http://lynx.isc.org/, Lynx} $B$r;H$$$^$9!#(B @item html2text -html2text ($B%7%s%W%k$J(B @sc{html} $B%3%s%P!<%?!o$=$N%K%e!<%9%0%k!<%W3,AX$N%a%$%s%F%$%J!<$K$h$C$F=pL>$5$l$F$$$^$9!#G'(B -$B>Z$r9T$J$&$?$a$K$O!"%a%$%s%F%$%J!<$N8x3+80$r$"$J$?$N%-!<%j%s%0$KDI2C$7$J(B -$B$1$l$P$J$j$^$;$s!#(B@footnote{$BB?$/$N%K%e!<%9%0%k!<%W3,AX$N%a%$%s%F%$%J!<(B -$B$N(B PGP $B$N80$O(B @uref{ftp://ftp.isc.org/pub/pgpcontrol/README.html} $B$+$iF~(B -$BZ$r9T$J$&$?$a$K$O!"%a%$%s%F%$%J!<$N(B @acronym{PGP} $B8x3+80$r$"$J$?$N%-!<(B +$B%j%s%0$KDI2C$7$J$1$l$P$J$j$^$;$s!#(B@footnote{$BB?$/$N%K%e!<%9%0%k!<%W3,AX$N(B +$B%a%$%s%F%$%J!<$N(B @acronym{PGP} $B$N80(B +$B$O(B @uref{ftp://ftp.isc.org/pub/pgpcontrol/README.html} $B$+$iF~H$K(B@dfn{$B%\%?%s(B}$B$rIU$1$^$9(B: $B$=$l$>$l$NF~NOMWAG$," (gnus-button-emacs-level 10)) ("\\" (gnus-button-man-level 10)) @@ -8632,8 +8572,8 @@ Message-ID$B!"%a!<%k%"%I%l%9$*$h$S%K%e!<%9$N(B URL $B$NI=<($r@)8f$7$^$9!#4XO" @item gnus-button-tex-level @vindex gnus-button-tex-level -Tex $B$^$?$O(B LaTex $B$K4X$9$k;29MJ88%!"Nc$($P(B CTAN $B$N(B URL$B!"$NI=<($r@)8f$7$^(B -$B$9!#JQ?t(B @code{gnus-ctan-url}, +@TeX{} $B$^$?$O(B LaTex $B$K4X$9$k;29MJ88%!"Nc$($P(B CTAN $B$N(B URL$B!"$NI=<($r@)8f$7(B +$B$^$9!#JQ?t(B @code{gnus-ctan-url}, @code{gnus-button-ctan-handler}, @code{gnus-button-ctan-directory-regexp} $B$*$h$S(B @code{gnus-button-handle-ctan-bogus-regexp} $B$r;2>H$7$F2<$5$$!#(B @@ -8802,13 +8742,13 @@ gnus $B$G%a!<%k$rFI$`$3$H$NM-Mx$JE@$O!"C1=c$J%P%0$rAG@2$i$7$$IT>rM}$KCV$-(B @lisp (setq gnus-signature-separator - '("^-- $" ; $BI8=`(B - "^-- *$" ; $BIaDL$N2u$7J}(B - "^-------*$" ; $BB?$/$N?M$OD9!rM}$KCV$-(B @findex gnus-summary-refer-parent-article $B8=:_$N5-;v$N?F5-;v$rFI$_$?$/$F!"$=$l$,35N,%P%C%U%!$KI=<($5$l$F$$$J$/$F$b!"(B $B$*$=$i$/$=$l$O2DG=$G$7$g$&!#$H$$$&$N$O!"8=:_$N%0%k!<%W(B -$B$,(B @sc{nntp} $B$GC5n$5$l$F$$$J$$>e!"8=:_$N5-(B -$B;v$N(B @code{References} $B$,$V$A2u$5$l$F$$$J$1$l$P!"$?$@!"(B +$B$,(B @acronym{NNTP} $B$GC5n$5$l$F$$$J$$>e!"8=:_(B +$B$N5-;v$N(B @code{References} $B$,$V$A2u$5$l$F$$$J$1$l$P!"$?$@!"(B @kbd{^} $B$+(B @kbd{A r} $B$r2!$;$PNI$$$@$1$G(B $B$9(B (@code{gnus-summary-refer-parent-article})$B!#$b$7A4$F$,>erM}$KCV$-(B @kindex M-^ ($B35N,(B) @cindex Message-ID @cindex fetching by Message-ID -$B$I$N%0%k!<%W$KB0$7$F$$$k$+$K4X$o$i$:!"G$0U$N5-;v$r(B @sc{nntp} $B%5!<%P!<$K(B -$B?R$M$k;v$,$G$-$^$9!#(B +$B$I$N%0%k!<%W$KB0$7$F$$$k$+$K4X$o$i$:!"G$0U$N5-;v$r(B @acronym{NNTP} $B%5!<%P!<(B +$B$K?R$M$k;v$,$G$-$^$9!#(B @kbd{M-^} (@code{gnus-summary-refer-article}) $B$O(B @code{Message-ID}$B!"$=$l(B $B$O$"$ND9$/!"$J$+$J$+FI$`;v$N$G$-$J(B $B$$(B @samp{<38o6up$6f2@@hymir.ifi.uio.no>} $B$N$h$&$J;2>H$r$"$J$?$K?R$M$^$9!#(B @@ -9002,10 +8942,10 @@ gnus $B$G%a!<%k$rFI$`$3$H$NM-Mx$JE@$O!"C1=c$J%P%0$rAG@2$i$7$$IT>rM}$KCV$-(B @vindex gnus-refer-article-method $B$b$7$"$J$?$NFI$s$G$$$k%0%k!<%W$,(B @code{Message-ID} $B$G$Nl9g!"(B -@code{gnus-refer-article-method} $B$r(B @sc{nntp} $B$K@_Dj$9$k;v$,$G$-$^$9!#$*(B -$B$=$i$/!"$"$J$?$,2qOC$7$F$$$k(B @sc{nntp} $B%5!<%P!<$,$"$J$?$NFI$s$G$$$k%9%W!<(B -$B%k$r99?7$7$F$$$k$HHs>o$KNI$$$G$7$g$&!#$7$+$7!"$=$l$O$I$&$7$F$bI,MW$J$o$1(B -$B$G$O$"$j$^$;$s!#(B +@code{gnus-refer-article-method} $B$r(B @acronym{NNTP} $B$K@_Dj$9$k;v$,$G$-$^(B +$B$9!#$*$=$i$/!"$"$J$?$,2qOC$7$F$$$k(B @acronym{NNTP} $B%5!<%P!<$,$"$J$?$NFI$s(B +$B$G$$$k%9%W!<%k$r99?7$7$F$$$k$HHs>o$KNI$$$G$7$g$&!#$7$+$7!"$=$l$O$I$&$7$F(B +$B$bI,MW$J$o$1$G$O$"$j$^$;$s!#(B $B$=$l$OA*BrJ}K!$N%j%9%H$G$"$k$3$H$b$G$-!"FCJL$J%7%s%\%k(B @code{current} $B$G(B $B$"$k$3$H$b$G$-$^$9!#8e))} $B$G$9!#(B @item gnus-tree-parent-child-edges @@ -9526,13 +9466,14 @@ Gnus $B$,F1$8(B @code{Message-ID} $B$r;}$DFs$D$N5-;v$rH/8+$7$?$H$-$O!"2?$+;W$ @kindex H f ($B35N,(B) @findex gnus-summary-fetch-faq @vindex gnus-grou-faq-directory -$B8=:_$N%0%k!<%W$N(B FAQ (frequently asked questions ($BIQHK$K$5$l$kl9g$O!"$3$NL?Na$K@\F,0z?t$rM?$($k;v$G$$$m$$$m$J%5%$(B -$B%H(B (site) $B$+$iA*$V;v$,$G$-$^$9!#$*$=$i$/(B @code{ange-ftp} $B$b$7$/(B -$B$O(B @code{efs} $B$,%U%!%$%k$Nl9g$O!"$3$N(B +$BL?Na$K@\F,0z?t$rM?$($k;v$G$$$m$$$m$J%5%$%H(B (site) $B$+$iA*$V;v$,$G$-$^$9!#(B +$B$*$=$i$/(B @code{ange-ftp} $B$b$7$/$O(B @code{efs} $B$,%U%!%$%k$No$KNI$$$G$9!"$H$$$&$N(B -$B$O$=$l$OB.EY$r$H$F$bB.$/$9$k$+$i$G$9(B) $B$N;HMQ2DG=$J(B @sc{nntp} $B%5!<%P!<$r(B -$B;H$C$F$$$k$3$H$G$9!#$3$l$O320-$J$N$G$9$,!"$"$!!"Ha$7$$$+$J!"Hs>o$KNI$/$"(B -$B$k;v$G$9!#(BGnus $B$O$"$J$?$,FI$s$@A4$F$N5-;v$K(B @code{Xref} $B9T$rEPO?$9$k;v$G!"(B -$B@5$7$$;v$r$7$h$&$H$7$^$9$,!"5-;v$r:o=|$9$k$+!"FI$^$J$$$G4{FI$N0u$rIU$1$k(B -$B$H!"(Bgnus $B$O$3$l$i$N5-;v$K(B @code{Xref} $B$N9T$r$N$>$-$^$o$k5!2q$rF@$k;v$,L5(B -$B$/!"Aj8_;2>H5!9=$rMQ$$$k;v$,$G$-$^$;$s!#(B +$B$O$=$l$OB.EY$r$H$F$bB.$/$9$k$+$i$G$9(B) $B$N;HMQ2DG=$J(B @acronym{NNTP} $B%5!<%P!<(B +$B$r;H$C$F$$$k$3$H$G$9!#$3$l$O320-$J$N$G$9$,!"$"$!!"Ha$7$$$+$J!"Hs>o$KNI$/(B +$B$"$k;v$G$9!#(BGnus $B$O$"$J$?$,FI$s$@A4$F$N5-;v$K(B @code{Xref} $B9T$rEPO?$9$k;v(B +$B$G!"@5$7$$;v$r$7$h$&$H$7$^$9$,!"5-;v$r:o=|$9$k$+!"FI$^$J$$$G4{FI$N0u$rIU(B +$B$1$k$H!"(Bgnus $B$O$3$l$i$N5-;v$K(B @code{Xref} $B$N9T$r$N$>$-$^$o$k5!2q$rF@$k;v(B +$B$,L5$/!"Aj8_;2>H5!9=$rMQ$$$k;v$,$G$-$^$;$s!#(B @cindex LIST overview.fmt @cindex overview.fmt -$B$"$J$?$N(B @sc{nntp} $B%5!<%P!<$,$=$N354Q%U%!%$(B +$B$"$J$?$N(B @acronym{NNTP} $B%5!<%P!<$,$=$N354Q%U%!%$(B $B%k(B (overview file) $B$K(B @code{Xref} $BMs$r4^$s$G$$$k$+$rD4$Y$k$K$O!"(B @samp{telnet your.nntp.server nntp} $B$H$7$F!"(B@code{inn} $B%5!<%P!<(B $B$G(B @samp{More READER} $B$H$7!"$=$l$+$i(B @samp{LIST overview.fmt} $B$H$9$k;v$r(B @@ -9848,17 +9789,17 @@ Gnus $B$K$$$D$G$b@5$7$$(B @code{Xref} $B$ro$KNI$/$"$k;v$G$9!"$"$!(B -$BHa$7$$!#(B +@acronym{NNTP} $B%5!<%P!<$O(B @file{.overview} $B%G!<%?%Y!<%9$K(B @code{Xref} $BMs(B +$B$r4^$a$k$N$K<:GT$9$k$+$bCN$l$^$;$s!#$3$l$O0-$$;v$G!"Hs>o$KNI$/$"$k;v$G$9!"(B +$B$"$!Ha$7$$!#(B @item -$BF1$8%0%k!<%W(B ($B$b$7$/$O$$$/$D$+$N4XO"$7$?%0%k!<%W(B) $B$r0c$C$?(B @sc{nntp} $B%5!<(B -$B%P!<$+$iFI$s$G$$$k$+$b$7$l$^$;$s!#(B +$BF1$8%0%k!<%W(B ($B$b$7$/$O$$$/$D$+$N4XO"$7$?%0%k!<%W(B) $B$r0c$C(B +$B$?(B @acronym{NNTP} $B%5!<%P!<$+$iFI$s$G$$$k$+$b$7$l$^$;$s!#(B @item $B%0%k!<%W$KEj9F$5$l$?5-;v$H=EJ#$9$k%a!<%k$r(B @@ -10118,8 +10083,9 @@ Gnus $B$O%X%C%@!<$NJB$YBX$((B (sort) $B$b9T$$$^$9(B ($B$3$l$O%G%#%U%)%k%H$G @code{Followup-To} $BMs$,(B @code{Newsgroups} $BMs$HF10l$G$"$k>l9g$K$O>C5n$7$^(B $B$9!#(B @item reply-to -@code{Reply-To} $BMs$,(B @code{From} $BMs$HF1$8%"%I%l%9$r<($7$F$$$k>l9g$K$O>C(B -$B5n$7$^$9!#(B +@code{Reply-To} $BMs$,(B @code{From} $BMs$HF1$8%"%I%l%9$r<($7$F$$$k$+!"(B +@code{broken-reply-to} $B%0%k!<%W%Q%i%a!<%?$,@_Dj$5$l$F$$$k>l9g$K$O>C5n$7(B +$B$^$9!#(B @item newsgroups @code{Newsgroups} $BMs$,8=:_$N%0%k!<%WL>$7$+4^$s$G$$$J$$>l9g$K$O>C5n$7$^$9!#(B @item to-address @@ -10150,29 +10116,29 @@ Gnus $B$O%X%C%@!<$NJB$YBX$((B (sort) $B$b9T$$$^$9(B ($B$3$l$O%G%#%U%)%k%H$G @node Using MIME @section MIME $B$r;H$&(B -@cindex @sc{mime} +@cindex @acronym{MIME} $B%Q%s%H%^%$%`(B (mime) $B$H$O!"0UL#$bL5$/6uCf$G$N$_$@$i$J$b$N$rL5$N$_$@$i$J$b$N(B +$B$rL5\$7$$>pJs$O!"%^%K%e%"%k$r;2>H$7$F$/$@$5(B -$B$$(B ($B$^$@$J$$$1$I(B (;_;))$B!#(B +$B$O(B @acronym{SEMI} MIME-View $B%W%m%0%i%`$r8F$S=P$7$F\$7$$>pJs$O!"%^%K%e%"%k$r;2>H$7$F$/$@(B +$B$5$$(B ($B$^$@$J$$$1$I(B (;_;))$B!#(B -@sc{mime} $B$r>o$K;HMQ$7$?$1$l$P!"(B +@acronym{MIME} $B$r>o$K;HMQ$7$?$1$l$P!"(B @code{gnus-show-mime} $B$r(B @code{t} $B$K@_Dj$7$F$/$@$5$$!#(B @code{gnus-show-mime} $B$r@_Dj$7$F$$$k$H!"1?$,0-$$$H5-;v%P%C%U%!$K$O8N>c$7(B $B$?$h$&$J2hLL$,8+$($k$3$H$b$"$k$G$7$g$&!#$3$l$OHr$1$h$&$,$"$j$^$;$s!#(B @@ -10180,13 +10146,13 @@ Gnus $B$O(B @code{gnus-article-display-method-for-mime} $B$K5-;v$r2!$7IU$1$k$ GNUS $B$d(B Gnus $B$G$O!"$3$N$?$A$N0-$$LdBj$G6C$+$5$l$J$$$h$&$K$9$k$K$O!"35N,(B $B%P%C%U%!$K$*$$$F@Z$jBX$(5!G=$r;H$&$H$$$&$N$,:GA1$+$bCN$l$^$;$s(B ($BNc$($P!"(B @samp{alt.sing-a-long} $B%0%k!<%W$KF~$k$H!"$"$J$?$N5$$E$+$J$$$&$A(B -$B$K(B @sc{mime} $B$O5-;vCf$N%5%&%s%I%U%!%$%k$rI|9f$7$F!"2?$d$i2x$7$2$JD9$$D9(B -$B$$2N$,$"$J$?$N%9%T!<%+!<$+$iBg2;6A$GN.$l=P$7!"$"$J$?$O%\%j%e!<%`%\%?%s$r(B -$B8+$D$1$i$l$:!"$H$$$&$N$O$=$s$J$b$N$O$b$H$b$H$D$$$F$J$$$+$i$G!"$_$s$J$O$"(B -$B$J$?$NJ}$rbK$_$O$8$a!"$"$J$?$O%W%m%0%i%`$r;_$a$h$&$H$9$k$1$I$G$-$J$/$F!"(B -$B%\%j%e!<%`$r@)8f$9$k%W%m%0%i%`$b8+$D$1$i$l$J$/$F!"$=$7$FIt20Cf$NA40w$OFM(B -$BA3$"$J$?$N$3$H$r7ZJN$N4c:9$7$G8+$k$h$&$K$J$C$F$7$^$$!"$"$J$?$O$A$g$C$HLL(B -$BGr$/$J$$;W$$$r$9$k!"$H$+(B)$B!#(B +$B$K(B @acronym{MIME} $B$O5-;vCf$N%5%&%s%I%U%!%$%k$rI|9f$7$F!"2?$d$i2x$7$2$JD9(B +$B$$D9$$2N$,$"$J$?$N%9%T!<%+!<$+$iBg2;6A$GN.$l=P$7!"$"$J$?$O%\%j%e!<%`%\%?(B +$B%s$r8+$D$1$i$l$:!"$H$$$&$N$O$=$s$J$b$N$O$b$H$b$H$D$$$F$J$$$+$i$G!"$_$s$J(B +$B$O$"$J$?$NJ}$rbK$_$O$8$a!"$"$J$?$O%W%m%0%i%`$r;_$a$h$&$H$9$k$1$I$G$-$J$/(B +$B$F!"%\%j%e!<%`$r@)8f$9$k%W%m%0%i%`$b8+$D$1$i$l$J$/$F!"$=$7$FIt20Cf$NA40w(B +$B$OFMA3$"$J$?$N$3$H$r7ZJN$N4c:9$7$G8+$k$h$&$K$J$C$F$7$^$$!"$"$J$?$O$A$g$C(B +$B$HLLGr$/$J$$;W$$$r$9$k!"$H$+(B)$B!#(B $B8=e%9%/%m!<%k$9$k?7$7$$%F%-%9%H$,(B $BL5$/$F$b5-;v%P%C%U%!$r%9%/%m!<%k$9$k$3$H$r2DG=$K$7$^$9!#%G%#%U%)%k%H(B -$B$O(B @code{nil} $B$G$9!#(B($BLuCm(B: $B8=e%9%/%m!<%k$7$J$$$,!"Hs(B-@code{nil} $B$K$9$k$H5-;v$,(B +$B8+$($J$/$J$k$^$G%9%/%m!<%k$9$k!#(B) @vindex gnus-article-mode-line-format @item gnus-article-mode-line-format @@ -10506,7 +10474,7 @@ GNUS $B$d(B Gnus $B$G$O!"$3$N$?$A$N0-$$LdBj$G6C$+$5$l$J$$$h$&$K$9$k$K$O!"35N, @c FIXMETGNUS Does this work? @item m -$B5-;v$N(B @sc{mime} $BItJ,$N?t$G$9!#(B +$B5-;v$N(B @acronym{MIME} $BItJ,$N?t$G$9!#(B @end table @vindex gnus-break-pages @@ -10525,10 +10493,10 @@ GNUS $B$d(B Gnus $B$G$O!"$3$N$?$A$N0-$$LdBj$G6C$+$5$l$J$$$h$&$K$9$k$K$O!"35N, @cindex $B9q:]2=%I%a%$%sL>(B @vindex gnus-use-idna @item gnus-use-idna -$B$3$NJQ?t$O(B @sc{From:}$B!"(B@sc{To:} $B$*$h$S(B @sc{Cc:} $B%X%C%@!<$K$"$k9q:]2=%I%a(B -$B%$%sL>$r!"(Bgnus $B$,(B IDNA $B%G%3!<%I$9$k$+$I$&$+$r@)8f$7$^$9!#$3$l$K$O(B GNU -Libidn (@url{http://www.gnu.org/software/libidn/}) $B$,I,MW$G!"$3$NJQ?t$O(B -$B$=$l$r%$%s%9%H!<%k$7$F$"$k>l9g$@$1M-8z$K$J$j$^$9!#(B +$B$3$NJQ?t$O(B @samp{From:}$B!"(B@samp{To:} $B$*$h$S(B @samp{Cc:} $B%X%C%@!<$K$"$k9q:](B +$B2=%I%a%$%sL>$r!"(Bgnus $B$,(B IDNA $B%G%3!<%I$9$k$+$I$&$+$r@)8f$7$^$9!#$3$l$K(B +$B$O(B @uref{http://www.gnu.org/software/libidn/, GNU Libidn} $B$,I,MW$G!"$3$N(B +$BJQ?t$O$=$l$r%$%s%9%H!<%k$7$F$"$k>l9g$@$1M-8z$K$J$j$^$9!#(B @end table @node Composing Messages @@ -10553,16 +10521,12 @@ Libidn (@url{http://www.gnu.org/software/libidn/}) $B$,I,MW$G!"$3$NJQ?t$O(B @menu * Mail:: $B%a!<%k$HJVEz(B -* Posting Server:: $B$I$N%5!<%P!<$rDL$7$F%K%e!<%9$rEj9F$^$?$O(B - $B%a!<%k$rAw?.$9$k$Y$-$+(B? +* Posting Server:: $B$I$N%5!<%P!<$rDL$7$F%K%e!<%9$rEj9F$^$?$O%a!<%k$rAw?.$9$k$Y$-$+(B? * Mail and Post:: $BF1;~$K%a!<%k$r=P$7JVEz$9$k(B -* Archived Messages:: $BAw$C$?%a%C%;!<%8$r(B gnus $B$,Cy$a$F$*$/$H$3(B - $B$m(B -* Posting Styles:: $B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}(B - $BK!(B +* Archived Messages:: $BAw$C$?%a%C%;!<%8$r(B gnus $B$,Cy$a$F$*$/$H$3$m(B +* Posting Styles:: $B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}K!(B * Drafts:: $B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8(B -* Rejected Articles:: $B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K(B - $B2?$,5/$3$k(B? +* Rejected Articles:: $B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K2?$,5/$3$k(B? @c * Signing and encrypting:: How to compose secure messages. @end menu @@ -10648,8 +10612,8 @@ gnus $B$O>o$KEj9F$K$I$NJ}K!$r;H$&$+$r$"$J$?$K?R$M$^$9!#(B $B?t(B @code{message-send-mail-with-sendmail} $B$O5-;v$r=gHVBT$A$KF~(B $B$l(B (queuing) $B$?$jAw?.$9$k$?$a$K!"%P%$%J%j!<$G(B @code{sendmail} $B$K%Q%$%W$7(B $B$^$9!#%m!<%+%k%7%9%F%`$,(B @code{sendmail} $B$G%a!<%k$rAw?.$9$k$h$&$K@_Dj$5(B -$B$l$F$$$J$/$F$b!"$"$J$?$,1s3V(B @sc{smtp} $B%5!<%P!<$K@\B3$9$k8"Mx$r;}$C$F$$(B -$B$k$J$i$P!"(B +$B$l$F$$$J$/$F$b!"$"$J$?$,1s3V(B @acronym{SMTP} $B%5!<%P!<$K@\B3$9$k8"Mx$r;}$C(B +$B$F$$$k$J$i$P!"(B @code{message-send-mail-function} $B$r(B @code{smtpmail-send-it} $B$K@_Dj$9$k(B $B$3$H$,$G$-$^$9!#(B@code{smtpmail} $B%Q%C%1!<%8$r;H$&$?$a$K@5$7$$@_Dj$,$J$5$l(B $B$F$$$k$+$I$&$+3NG'$7$F2<$5$$!#Nc$G$9(B: @@ -10657,14 +10621,14 @@ gnus $B$O>o$KEj9F$K$I$NJ}K!$r;H$&$+$r$"$J$?$K?R$M$^$9!#(B @lisp (setq message-send-mail-function 'smtpmail-send-it smtpmail-default-smtp-server "YOUR SMTP HOST") -;; FLIM $BHG$N(B smtpmail.el $B$N$?$a$K!"0J2<$NJQ?t$r@_Dj$9$kI,MQ$,$"$j$^$9!#(B -;; $B$I$A$i$N(B smtpmail.el $B$,;H$o$l$k$+$O(B `load-path' $B$K0M$j$^$9!#(B +;; @r{FLIM $BHG$N(B smtpmail.el $B$N$?$a$K!"0J2<$NJQ?t$r@_Dj$9$kI,MQ$,$"$j$^$9!#(B} +;; @r{$B$I$A$i$N(B smtpmail.el $B$,;H$o$l$k$+$O(B `load-path' $B$K0M$j$^$9!#(B} (setq smtp-default-smtp-server "YOUR SMTP HOST") @end lisp $B$3$l$H;w$?$b$N$K(B @code{message-smtpmail-send-it} $B$,$"$j$^$9!#(B -ISP $B$,(B POP-before-SMTP $B$NG'>Z$rMW5a$7$F$$$k>l9g$KM-MQ$G$9!#4X(B -$B?t(B @code{mail-source-touch-pop} $B$N@bL@J8$r8+$F$/$@$5$$!#(B +ISP $B$,(B @acronym{POP}-before-@acronym{SMTP} $B$NG'>Z$rMW5a$7$F$$$k>l9g$KM-(B +$BMQ$G$9!#4X?t(B @code{mail-source-touch-pop} $B$N@bL@J8$r8+$F$/$@$5$$!#(B $BB>$N2DG=$J(B @code{message-send-mail-function} $B$NA*Br;h(B $B$O(B @code{message-send-mail-with-mh}, @@ -10681,10 +10645,10 @@ ISP $B$,(B POP-before-SMTP $B$NG'>Z$rMW5a$7$F$$$k>l9g$KM-MQ$G$9!#4X(B @findex gnus-mailing-list-groups @cindex mailing lists -$B$b$7$"$J$?$N%K%e!<%9%5!<%P!<$,K\Ev$K%a!<%j%s%0%j%9%H$+$i(B @sc{nntp} $B%5!<(B -$B%P!<$X$N%2!<%H%&%'%$$rDs6!$7$F$$$k$N$G$"$l$P!"$=$l$i$N%0%k!<%W$OLdBj$J$/(B -$BFI$a$k$G$7$g$&!#$7$+$74JC1$K$O$=$l$i$KEj9F(B/$B%U%)%m!<%"%C%W$9$k$3$H$O$G$-(B -$B$^$;$s!#0l$D$N2r7hK!$O%0%k!<%W%Q%i%a!<(B +$B$b$7$"$J$?$N%K%e!<%9%5!<%P!<$,K\Ev$K%a!<%j%s%0%j%9%H$+(B +$B$i(B @acronym{NNTP} $B%5!<%P!<$X$N%2!<%H%&%'%$$rDs6!$7$F$$$k$N$G$"$l$P!"$=$l(B +$B$i$N%0%k!<%W$OLdBj$J$/FI$a$k$G$7$g$&!#$7$+$74JC1$K$O$=$l$i$KEj9F(B/$B%U%)%m!<(B +$B%"%C%W$9$k$3$H$O$G$-$^$;$s!#0l$D$N2r7hK!$O%0%k!<%W%Q%i%a!<(B $B%?(B (@pxref{Group Parameters}) $B$K(B @code{to-address} $B$r2C$($k;v$G$9!#4JC1(B $B$K$G$-$k$N$O!"(B@code{gnus-mailing-list-groups} $B$r!"K\Ev$K%a!<%j%s%0%j%9%H(B $B$G$"$k$h$&$J%0%k!<%W$K9gCW$9$k@55,I=8=$K@_Dj$9$k$3$H$G$9!#$=$N8e$O!"$9$/(B @@ -10981,17 +10945,17 @@ from date id references chars lines xref extra $B$N3F%X%C%@!<$+$i@.$k%Y%/(B (organization "People's Front Against MWM")) ("^rec.humor" (signature my-funny-signature-randomizer)) - ((equal (system-name) "gnarly") ;; $BMM<0(B + ((equal (system-name) "gnarly") ;; @r{$BMM<0(B} (signature my-quote-randomizer)) - (message-news-p ;; $B4X?t%7%s%\%k(B + (message-news-p ;; @r{$B4X?t%7%s%\%k(B} (signature my-news-signature)) - (window-system ;; $BJQ?t%7%s%\%k(B + (window-system ;; @r{$BJQ?t%7%s%\%k(B} ("X-Window-System" (format "%s" window-system))) - ;; Lars $B$5$s$KJV;v$r$9$k$H$-$O(B - ;; Organization $B%X%C%@!<$rIU$1$h$&!#(B + ;; @r{Lars $B$5$s$KJV;v$r$9$k$H$-$O(B} + ;; @r{Organization $B%X%C%@!<$rIU$1$h$&!#(B} ((header "to" "larsi.*org") (Organization "Somewhere, Inc.")) - ((posting-from-work-p) ;; $B%f!<%6!<$,Dj5A$7$?4X?t(B + ((posting-from-work-p) ;; @r{$B%f!<%6!<$,Dj5A$7$?4X?t(B} (signature-file "~/.work-signature") (address "user@@bar.foo") (body "You are fired.\n\nSincerely, your boss.") @@ -11138,10 +11102,10 @@ from date id references chars lines xref extra $B$N3F%X%C%@!<$+$i@.$k%Y%/(B @cindex using s/mime @cindex using smime -Gnus can digitally sign and encrypt your messages, using vanilla PGP -format or @sc{pgp/mime} or @sc{s/mime}. For decoding such messages, -see the @code{mm-verify-option} and @code{mm-decrypt-option} options -(@pxref{Security}). +Gnus can digitally sign and encrypt your messages, using vanilla +@acronym{PGP} format or @acronym{PGP/MIME} or @acronym{S/MIME}. For +decoding such messages, see the @code{mm-verify-option} and +@code{mm-decrypt-option} options (@pxref{Security}). @vindex gnus-message-replysign @vindex gnus-message-replyencrypt @@ -11154,7 +11118,7 @@ are in reply to encrypted messages. Gnus offers @code{gnus-message-replysignencrypted} (on by default) will sign automatically encrypted messages. -Instructing MML to perform security operations on a @sc{mime} part is +Instructing MML to perform security operations on a @acronym{MIME} part is done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c C-m c} key map for encryption, as follows. @@ -11164,37 +11128,37 @@ C-m c} key map for encryption, as follows. @kindex C-c C-m s s @findex mml-secure-message-sign-smime -Digitally sign current message using @sc{s/mime}. +Digitally sign current message using @acronym{S/MIME}. @item C-c C-m s o @kindex C-c C-m s o @findex mml-secure-message-sign-pgp -Digitally sign current message using PGP. +Digitally sign current message using @acronym{PGP}. @item C-c C-m s p @kindex C-c C-m s p @findex mml-secure-message-sign-pgp -Digitally sign current message using @sc{pgp/mime}. +Digitally sign current message using @acronym{PGP/MIME}. @item C-c C-m c s @kindex C-c C-m c s @findex mml-secure-message-encrypt-smime -Digitally encrypt current message using @sc{s/mime}. +Digitally encrypt current message using @acronym{S/MIME}. @item C-c C-m c o @kindex C-c C-m c o @findex mml-secure-message-encrypt-pgp -Digitally encrypt current message using PGP. +Digitally encrypt current message using @acronym{PGP}. @item C-c C-m c p @kindex C-c C-m c p @findex mml-secure-message-encrypt-pgpmime -Digitally encrypt current message using @sc{pgp/mime}. +Digitally encrypt current message using @acronym{PGP/MIME}. @item C-c C-m C-n @kindex C-c C-m C-n @@ -11212,9 +11176,9 @@ Remove security related MML tags from message. @cindex select methods @dfn{$B30It%0%k!<%W(B} (foreign group) $B$H$O!"IaDL(B ($B$b$7$/$O%G%#%U%)%k%H(B) $B$N(B -$BJ}K!$GFI$^$l$J$$%0%k!<%W$N;v$G$9!#Nc$($P!"$=$l$O0c$C$?(B @sc{nntp} $B%5!<%P!<(B -$B$N%0%k!<%W$G$"$C$?$j!";ve$N%0%k!<%W$G$"$C$?$j!"8D?ME*$J%a!<%k%0%k!<%W(B -$B$G$"$C$?$j$9$k$G$7$g$&!#(B +$BJ}K!$GFI$^$l$J$$%0%k!<%W$N;v$G$9!#Nc$($P!"$=$l$O0c$C$?(B @acronym{NNTP} $B%5!<(B +$B%P!<$N%0%k!<%W$G$"$C$?$j!";ve$N%0%k!<%W$G$"$C$?$j!"8D?ME*$J%a!<%k%0%k!<(B +$B%W$G$"$C$?$j$9$k$G$7$g$&!#(B $B30It%0%k!<%W(B ($B$b$7$/$O!"K\Ev$KA4$F%0%k!<(B $B%W(B) $B$O(B @dfn{$BL>A0(B} $B$H(B @dfn{$BA*BrJ}K!(B} $B$G;XDj$5$l$^$9!#8eA0(B} $B$O%P%C%/%(%s%I$,%0%k!<%W$rG'<1$9$kL>A0$G$9!#(B -$B$?$H$($P!"(B@sc{nntp} $B%5!<%P!<$N%0%k!<%W(B @samp{soc.motss} $B$OL>(B +$B$?$H$($P!"(B@acronym{NNTP} $B%5!<%P!<$N%0%k!<%W(B @samp{soc.motss} $B$OL>(B $BA0(B @samp{soc.motss} $B$HA*BrJ}K!(B @code{(nntp "some.where.edu")} $B$r;}$A$^$9!#(B @code{nntp} $B%P%C%/%(%s%I$O$3$N%0%k!<%W$r(B @samp{soc.motss} $B$H$7$FCN$C$F$$(B $B$k$@$1$G$9$,!"(Bgnus $B$O$3$N%0%k!<%W(B @@ -11241,11 +11205,9 @@ Remove security related MML tags from message. * Server Buffer:: $B;ve$N%5!<%P!<$r:n$C$FJT=8$9$k(B * Getting News:: USENET $B%K%e!<%9$r(B gnus $B$GFI$`(B * Getting Mail:: $B8D?ME*$J%a!<%k$r(B gnus $B$GFI$`(B -* Browsing the Web:: $B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$rj$J%&%'%V$N;q8;$+$i%a%C%;!<%8$re$N3,AX$rCV$/$3$H$G$"$C$F!"$=$l$>$l$N(B $B%P%C%/%(%s%I$,$^$5$K5?;wE*$J%5!<%P!<$KAjEv$9$k$H8@$C$F$bNI$$$G$7$g$&!#(B -$BNc$($P(B @code{nntp} $B%P%C%/%(%s%I$O!"0[$J$k$$$/$D$+$Nc(B -$B$,$A$J(B @sc{nntp} $B%5!<%P!<(B @samp{news.funet.fi} $B$N%]!<%H(B 13 $B$rFI$_$?$$>l(B -$B9g$H$+!#$&$*$C$[$s!#$H$K$+$/$G$9$M!"$3$N%5!<%P!<$r;H$&$=$l$>$l$N%0%k!<%W(B -$B$K$D$$$F$=$&$$$&$3$H$r@_Dj$7$J$1$l$P$J$i$J$$$H$7$?$i!"BgJQ$J:n6H$K$J$C$F(B -$B$7$^$&$G$7$g$&!#$=$3$G(B gnus $B$O!"$=$&$$$&:n6H$r%5!<%P!<%P%C%U%!$G9T$J$&$?(B -$B$a$K!"A*BrJ}K!$KL>A0$rIU$1$kc$,$A$J(B @acronym{NNTP} $B%5!<%P!<(B @samp{news.funet.fi} $B$N%]!<%H(B 13 $B$rFI(B +$B$_$?$$>l9g$H$+!#$&$*$C$[$s!#$H$K$+$/$G$9$M!"$3$N%5!<%P!<$r;H$&$=$l$>$l$N(B +$B%0%k!<%W$K$D$$$F$=$&$$$&$3$H$r@_Dj$7$J$1$l$P$J$i$J$$$H$7$?$i!"BgJQ$J:n6H(B +$B$K$J$C$F$7$^$&$G$7$g$&!#$=$3$G(B gnus $B$O!"$=$&$$$&:n6H$r%5!<%P!<%P%C%U%!$G(B +$B9T$J$&$?$a$K!"A*BrJ}K!$KL>A0$rIU$1$k$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k(B -* Unavailable Servers:: $B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn(B - $B$A$F$$$k$+$b$7$l$J$$(B +* Unavailable Servers:: $B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn$A$F$$$k$+$b$7$l$J$$(B @end menu @vindex gnus-server-mode-hook @@ -11444,9 +11406,9 @@ Remove security related MML tags from message. @cindex proxy @cindex firewall -$BKIJI(B (firewall) $B$NCf$K$$$F!"KIJI%^%7%s$+$i$N(B @sc{nntp} $B%5!<%P!<$X$N@\B3(B -$B$7$+$J$$$N$G$"$l$P!"(Bgnus $B$KKIJI%^%7%s$K(B @code{rlogin} $B$7$F!"$=$3$+(B -$B$i(B @sc{nntp} $B%5!<%P!<$K(B telnet $B$r$9$k$h$&$K;X<($9$k;v$,$G$-$^$9!#(B +$BKIJI(B (firewall) $B$NCf$K$$$F!"KIJI%^%7%s$+$i$N(B @acronym{NNTP} $B%5!<%P!<$X$N(B +$B@\B3$7$+$J$$$N$G$"$l$P!"(Bgnus $B$KKIJI%^%7%s$K(B @code{rlogin} $B$7$F!"$=$3$+(B +$B$i(B @acronym{NNTP} $B%5!<%P!<$K(B telnet $B$r$9$k$h$&$K;X<($9$k;v$,$G$-$^$9!#(B $B$3$l$r$9$k;v$O>/$7$P$+$i$7$$$G$9$,!";ve$N%5!<%P!<$NDj5A$O$*$=$i$/$3$N(B $B$h$&$J$b$N$K$J$k$Y$-$G$9(B: @@ -11521,6 +11483,8 @@ Remove security related MML tags from message. @node Server Variables @subsection $B%5!<%P!J}$G(B)$B!"(B $BJQ?t$NDj5A$,%m!<%I$5$l$F$$$k4V$K!"$$$/$D$+$NJQ?t$OB>$NJQ?t$G=i4|2=$5(B @@ -11545,6 +11509,8 @@ Remove security related MML tags from message. (nnml-newsgroups-file "~/my-mail/newsgroups")) @end lisp +$B%5!<%P!C5n$7$^(B @cindex news back ends $B%K%e!<%9%j!<%@!<$OIaDL$O%K%e!<%9$rFI$`;v$K;H$o$l$^$9!#(BGnus $B$O8=:_$O%K%e!<(B -$B%:$rC5n$7$^(B @subsection NNTP @cindex nntp -@sc{nntp} $B%5!<%P!<$N30It%0%k!<%W$r9XFI$9$k$N$OHf3SE*4JC1$G$9!#C1(B -$B$K(B @code{nntp} $B$rJ}K!$H$7$F;XDj$7!"(B@sc{nntp} $B%5!<%P!<$N%"%I%l(B +@acronym{NNTP} $B%5!<%P!<$N30It%0%k!<%W$r9XFI$9$k$N$OHf3SE*4JC1$G$9!#C1(B +$B$K(B @code{nntp} $B$rJ}K!$H$7$F;XDj$7!"(B@acronym{NNTP} $B%5!<%P!<$N%"%I%l(B $B%9(B (address) $B$r!"$&!<$s!"%"%I%l%9$H$7$F;XDj$9$k$@$1$G$9!#(B -$B$b$7(B @sc{nntp} $B%5!<%P!<$,I8=`$G$J$$%]!<%H(B (port) $B$K0LCV$7$F$$$k$H$-$O!"(B -$BA*BrJ}K!$N;0HVL\$NMWAG$r$3$N%]!<%H$N?t;z$K@_Dj$9$k;v$G@5$7$$%]!<%H$K@\B3(B -$B$9$k;v$,$G$-$k$G$7$g$&!#$=$N$?$a$K%0%k!<%W>pJs$rJT=8$7$J$1$l$P$J$j$^$;(B -$B$s(B (@pxref{Foreign Groups})$B!#(B +$B$b$7(B @acronym{NNTP} $B%5!<%P!<$,I8=`$G$J$$%]!<%H(B (port) $B$K0LCV$7$F$$$k$H$-(B +$B$O!"A*BrJ}K!$N;0HVL\$NMWAG$r$3$N%]!<%H$N?t;z$K@_Dj$9$k;v$G@5$7$$%]!<%H$K(B +$B@\B3$9$k;v$,$G$-$k$G$7$g$&!#$=$N$?$a$K%0%k!<%W>pJs$rJT=8$7$J$1$l$P$J$j$^(B +$B$;$s(B (@pxref{Foreign Groups})$B!#(B $B30It%0%k!<%W$NL>A0$O4pK\%0%k!<%W$HF1$8$G$b9=$$$^$;$s!#C5n$7$^(B @cindex nntp authentification @findex nntp-send-authinfo @findex nntp-send-mode-reader -$B$O@\B3$,$G$-$?8e$Ko$K$3$N%U%C%/$K$"$k$Y$-$G$9!#(B @@ -11665,8 +11631,8 @@ Gnus $B$,$I$l$+$N%5!<%P!<$+$i@\B35qH]$rC5n$7$^(B @vindex nntp-authinfo-function @findex nntp-send-authoinfo @vindex nntp-authinfo-file -$B$3$N4X?t$O(B @sc{nntp} $B%5!<%P!<$K(B @samp{AUTHINFO} $B$rAw$k$?$a$K;H$o$l$^$9!#(B -$B%G%#%U%)%k%H$N4X?t$O(B @code{nntp-send-authinfo} $B$G!"(B +$B$3$N4X?t$O(B @acronym{NNTP} $B%5!<%P!<$K(B @samp{AUTHINFO} $B$rAw$k$?$a$K;H$o$l(B +$B$^$9!#%G%#%U%)%k%H$N4X?t$O(B @code{nntp-send-authinfo} $B$G!"(B @file{~/.authinfo} ($B$b$7$/$OJQ?t(B @code{nntp-authinfo-file} $B$K@_Dj$7$?$I(B $B$N$h$&$J$b$N$G$b(B) $B$r;HMQ2DG=$J5-:\$rD4$Y$k$?$a$KC5$7$^$9!#$b$70l$D$b8+$D(B $B$+$i$J$+$C$?$i!"$"$J$?$K%m%0%$%sL>$H%Q%9%o!<%I$NF~NO$rB%?J$7$^$9!#%U%!%$(B @@ -11748,10 +11714,10 @@ default force yes @item nntp-maximum-request @vindex nntp-maximum-request -$B$b$7(B @sc{nntp} $B%5!<%P!<$,(B @sc{nov} $B%X%C%@!<$N5!G=$rDs6!$7$F$$$J$$$N$G$"(B -$B$l$P!"$3$N%P%C%/%(%s%I$OL?Na(B @code{head} $B$r$$$/$D$bAw$C$F!"%X%C%@!<$r=8(B -$B$a$^$9!#$3$NF0:n$rB.$/$9$k$?$a$K!"%P%C%/%(%s%I$OJVEz$rBT$?$:$K$3$NL?Na$r(B -$B$?$/$5$sAw$j!"$=$l$+$iA4$F$NJVEz$rFI$_$^$9!#$3$l$OJQ(B +$B$b$7(B @acronym{NNTP} $B%5!<%P!<$,(B @acronym{NOV} $B%X%C%@!<$N5!G=$rDs6!$7$F$$(B +$B$J$$$N$G$"$l$P!"$3$N%P%C%/%(%s%I$OL?Na(B @code{head} $B$r$$$/$D$bAw$C$F!"%X%C(B +$B%@!<$r=8$a$^$9!#$3$NF0:n$rB.$/$9$k$?$a$K!"%P%C%/%(%s%I$OJVEz$rBT$?$:$K$3(B +$B$NL?Na$r$?$/$5$sAw$j!"$=$l$+$iA4$F$NJVEz$rFI$_$^$9!#$3$l$OJQ(B $B?t(B @code{nntp-maximum-request} $B$K$h$C$F@)8f$5$l!"%G%#%U%)%k%H$G(B 400 $B$G$9!#(B $B$b$7%M%C%H%o!<%/$,8N>c$,$A$G$"$k$J$i!"$3$NJQ?t$r(B 1 $B$K@_Dj$9$k$Y$-$G$7$g(B $B$&!#(B @@ -11772,7 +11738,7 @@ default force yes @c @cindex dynamic IP addresses @c If you're running Gnus on a machine that has a dynamically assigned @c address, Gnus may become confused. If the address of your machine -@c changes after connecting to the @sc{nntp} server, Gnus will simply sit +@c changes after connecting to the @acronym{NNTP} server, Gnus will simply sit @c waiting forever for replies from the server. To help with this @c unfortunate problem, you can set this command to a number. Gnus will @c then, if it sits waiting for a reply from the server longer than that @@ -11788,7 +11754,8 @@ default force yes @item nntp-server-hook @vindex nntp-server-hook -$B$3$N%U%C%/$O(B @sc{nntp} $B%5!<%P!<$K@\B3$9$k:G8e$N0lJb$H$7$Fl(B -$B9g$O!"$3$NJQ?t$rK\Ev$K>.$5$J?t;z$K@_Dj$9$k$H$*$=$i$/l9g$O!"$3$NJQ?t$rK\Ev$K>.$5$J?t;z$K@_Dj$9$k$H$*$=$i$/@\@\B3$9$k$?$a$N4X?t(B @cindex direct connection functions -$B$3$l$i$N4X?t$O!"$"$J$?$N%^%7%s$H(B @sc{nntp}$B%5!<%P!<$r@\B3$9$k$?$a$KD>@\8F(B -$B$P$l$^$9!#$^$?!"$=$l$i$NF0:n$O$=$l$i$,6&DL$K;2>H$9$kJQ?t$K1F6A$5$l$^(B -$B$9(B (@pxref{Common Variables})$B!#(B +$B$3$l$i$N4X?t$O!"$"$J$?$N%^%7%s$H(B @acronym{NNTP}$B%5!<%P!<$r@\B3$9$k$?$a$K(B +$BD>@\8F$P$l$^$9!#$^$?!"$=$l$i$NF0:n$O$=$l$i$,6&DL$K;2>H$9$kJQ?t$K1F6A$5$l(B +$B$^$9(B (@pxref{Common Variables})$B!#(B @table @code @findex nntp-open-network-stream @@ -11932,13 +11900,13 @@ LIST $B%3%^%s%I$N%*%W%7%g%s$K;H$C$F!"(B($B%5!<%P!<$N(B) $B%j%9%H=PNO$r@_Dj$ @findex nntp-open-tls-stream @item nntp-open-tls-stream -@dfn{$B0BA4$J(B} $B%A%c%s%M%k$r;H$C$F%5!<%P!<$K@\B3$7$^$9!#$3$l$r;H$&$?$a$K$O!"(B -GNUTLS (@uref{http://www.gnu.org/software/gnutls/} $B;2>H(B) $B$r%$%s%9%H!<%k(B -$B$7$F$*$+$J$1$l$P$J$j$^$;$s!#$=$l$+$i%5!<%P!<$rA0$O;H$($^$;$s!#(B +;; @r{$B%]!<%H(B 563 $B$,(B "nntps" $B$H$7$F(B @file{/etc/services} $B$GDj5A:Q$_$G$"$C$F$b(B} +;; @r{@samp{gnutls-cli -p} $B$G$=$NL>A0$O;H$($^$;$s!#(B} ;; (nntp "snews.bar.com" (nntp-open-connection-function nntp-open-tls-stream) @@ -11948,13 +11916,14 @@ GNUTLS (@uref{http://www.gnu.org/software/gnutls/} $B;2>H(B) $B$r%$%s%9%H!<%k @findex nntp-open-ssl-stream @item nntp-open-ssl-stream -@dfn{$B0BA4$J(B} $B%A%c%s%M%k$r;H$C$F%5!<%P!<$K@\B3$7$^$9!#$3$l$r;H$&$?$a$K$O!"(B -OpenSSL (@uref{http://www.openssl.org}) $B$+(B SSLeay $B$r%$%s%9%H!<%k$7$F$*$+(B -$B$J$1$l$P$J$j$^$;$s!#$=$l$+$i%5!<%P!<$rA0$O;H$($^$;$s!#(B +;; @r{$B%]!<%H(B 563 $B$,(B "snews" $B$H$7$F(B @file{/etc/services} $B$GDj5A:Q$_$G$"$C$F$b(B} +;; @r{@samp{openssl s_client -port} $B$G$=$NL>A0$O;H$($^$;$s!#(B} ;; (nntp "snews.bar.com" (nntp-open-connection-function nntp-open-ssl-stream) @@ -11964,12 +11933,12 @@ OpenSSL (@uref{http://www.openssl.org}) $B$+(B SSLeay $B$r%$%s%9%H!<%k$7$F$*$ @findex nntp-open-telnet-stream @item nntp-open-telnet-stream -$BC1$K(B @samp{telnet} $B$7$F(B @sc{nntp} $B%5!<%P!<$K@\B3$7$^$9!#$"$J$?$O!"%G%#%U%)(B -$B%k%H$N(B @code{nntp-open-network-stream} $B$,$=$l$r$9$k$N$K$b$+$+$o$i$:!"$J(B -$B$<$3$N4X?t$,$"$k$N$+IT;W5D$K;W$&$+$b$7$l$^$;$s!#$=$NM}M3(B ($B$N0l$D(B) $B$O!"$b(B -$B$7$"$J$?$,KIJI$NCf$K$$$?$H$7$F$b(B @code{runsocks} $B$N$h$&$J%3%^%s%I%i%C%Q!<(B -$B$N$*$+$2$G30$N@$3&$rD>@\%"%/%;%9$G$-$k$J$i$P!"$"$J$?$O$=$l$r$3$N$h$&$K;H(B -$B$&$3$H$,$G$-$k$N$G$9(B: +$BC1$K(B @samp{telnet} $B$7$F(B @acronym{NNTP} $B%5!<%P!<$K@\B3$7$^$9!#$"$J$?$O!"(B +$B%G%#%U%)%k%H$N(B @code{nntp-open-network-stream} $B$,$=$l$r$9$k$N$K$b$+$+$o(B +$B$i$:!"$J$<$3$N4X?t$,$"$k$N$+IT;W5D$K;W$&$+$b$7$l$^$;$s!#$=$NM}M3(B ($B$N0l(B +$B$D(B) $B$O!"$b$7$"$J$?$,KIJI$NCf$K$$$?$H$7$F$b(B @code{runsocks} $B$N$h$&$J%3%^(B +$B%s%I%i%C%Q!<$N$*$+$2$G30$N@$3&$rD>@\%"%/%;%9$G$-$k$J$i$P!"$"$J$?$O$=$l$r(B +$B$3$N$h$&$K;H$&$3$H$,$G$-$k$N$G$9(B: @lisp (nntp "socksified" @@ -11986,8 +11955,8 @@ Emacs $B$N%;%C%7%g%sA4BN$r%i%C%W$7$F!"%G%#%U%)%k%H$N%a%=%C%I$r;H$&$H$$$&$N(B @subsubsection $B4V@\E*$K@\B3$9$k$?$a$N4X?t(B @cindex indirect connection functions -$B$3$l$i$N4X?t$O!"H$9$kJQ?t$K1F6A$5$l$^$9(B (@pxref{Common Variables})$B!#(B @@ -11996,8 +11965,8 @@ Emacs $B$N%;%C%7%g%sA4BN$r%i%C%W$7$F!"%G%#%U%)%k%H$N%a%=%C%I$r;H$&$H$$$&$N(B @item nntp-open-via-rlogin-and-telnet @findex nntp-open-via-rlogin-and-telnet $B1s3V%7%9%F%`$K(B @samp{rlogin} $B$7$F!"$=$3$+$iK\Ev(B -$B$N(B @sc{nntp} $B%5!<%P!<$K(B @samp{telnet} $B$7$^$9!#$3$l$O!"Nc$($P$"$J$?$,;O$a(B -$B$KKIJI%^%7%s$K@\B3$7$J$1$l$P$J$i$J$$>l9g$KJXMx$G$9!#(B +$B$N(B @acronym{NNTP} $B%5!<%P!<$K(B @samp{telnet} $B$7$^$9!#$3$l$O!"Nc$($P$"$J$?(B +$B$,;O$a$KKIJI%^%7%s$K@\B3$7$J$1$l$P$J$i$J$$>l9g$KJXMx$G$9!#(B @code{nntp-open-via-rlogin-and-telnet}-$BMQ$NJQ?t(B: @@ -12082,28 +12051,29 @@ Emacs $B$N%;%C%7%g%sA4BN$r%i%C%W$7$F!"%G%#%U%)%k%H$N%a%=%C%I$r;H$&$H$$$&$N(B @item nntp-address @vindex nntp-address -@sc{nntp} $B%5!<%P!<$N%"%I%l%9$G$9!#(B +@acronym{NNTP} $B%5!<%P!<$N%"%I%l%9$G$9!#(B @item nntp-port-number @vindex nntp-port-number -$B@\B3$9$k(B @sc{nntp} $B%5!<%P!<$N%]!<%HHV9f$G$9!#%G%#%U%)%k%H(B -$B$O(B @samp{nntp} $B$G$9!#(B@sc{tls}/@sc{ssl} $B$r2p$7$?(B @sc{nntp} $B$r;H$&$K$O!"%]!<(B -$B%H$NL>A0$G$O$J$/$F@0?t(B ($B$D$^$j(B @samp{snews} $B$d(B @samp{nntps} $B$G$O$J$/(B -$B$F(B @samp{563}) $B$r;XDj$7$F2<$5$$!#30It$N(B TLS/SSL $B%D!<%k$O%]!<%H$NL>A0$G$O(B -$BF0:n$7$J$$$+$i$G$9!#(B +$B@\B3$9$k(B @acronym{NNTP} $B%5!<%P!<$N%]!<%HHV9f$G$9!#%G%#%U%)%k%H(B +$B$O(B @samp{nntp} $B$G$9!#(B@acronym{TLS}/@acronym{SSL} $B$r2p$7(B +$B$?(B @acronym{NNTP} $B$r;H$&$K$O!"%]!<%H$NL>A0$G$O$J$/$F@0?t(B ($B$D$^(B +$B$j(B @samp{snews} $B$d(B @samp{nntps} $B$G$O$J$/$F(B @samp{563}) $B$r;XDj$7$F2<$5$$!#(B +$B30It$N(B @acronym{TLS}/@acronym{SSL} $B%D!<%k$O%]!<%H$NL>A0$G$OF0:n$7$J$$$+(B +$B$i$G$9!#(B @item nntp-end-of-line @vindex nntp-end-of-line -@sc{nntp} $B%5!<%P!<$H$*OC$r$7$F$$$k$H$-$K9T$N=*$o$j$N0u$H$7$F;H$o$l$kJ8;z(B -$BNs$G$9!#$3$l$O%G%#%U%)%k%H$G(B @samp{\r\n} $B$G$9$,!"AG$G$O$J$$@\B3MQ$N4X?t(B -$B$r;H$C$F$$$k$H$-$O(B @samp{\n} $B$G$"$k$Y$-$G$9!#(B +@acronym{NNTP} $B%5!<%P!<$H$*OC$r$7$F$$$k$H$-$K9T$N=*$o$j$N0u$H$7$F;H$o$l(B +$B$kJ8;zNs$G$9!#$3$l$O%G%#%U%)%k%H$G(B @samp{\r\n} $B$G$9$,!"AG$G$O$J$$@\B3MQ(B +$B$N4X?t$r;H$C$F$$$k$H$-$O(B @samp{\n} $B$G$"$k$Y$-$G$9!#(B @item nntp-telnet-command @vindex nntp-telnet-command -@samp{telnet} $B$rDL$7$F(B @sc{nntp} $B%5!<%P!<$H@\B3$9$k$H$-$K;H$&%3%^%s%I$G(B -$B$9!#$3$l$OCf4V$N%[%9%H$H@\B3$9$k$?$a$N$b$N$G$O(B $B!v$"$j$^$;$s!v!#$3$l$OC1(B -$B$KK\Ev$N(B @sc{nntp} $B%5!<%P!<$H@\B3$9$k$?$a$N$b$N$G$9!#%G%#%U%)%k%H(B -$B$O(B @samp{telnet} $B$G$9!#(B +@samp{telnet} $B$rDL$7$F(B @acronym{NNTP} $B%5!<%P!<$H@\B3$9$k$H$-$K;H$&%3%^%s(B +$B%I$G$9!#$3$l$OCf4V$N%[%9%H$H@\B3$9$k$?$a$N$b$N$G$O(B @emph{$B$"$j$^$;$s(B}$B!#$3(B +$B$l$OC1$KK\Ev$N(B @acronym{NNTP} $B%5!<%P!<$H@\B3$9$k$?$a$N$b$N$G$9!#%G%#%U%)(B +$B%k%H$O(B @samp{telnet} $B$G$9!#(B @item nntp-telnet-switches @vindex nntp-telnet-switches @@ -12144,7 +12114,7 @@ Emacs $B$N%;%C%7%g%sA4BN$r%i%C%W$7$F!"%G%#%U%)%k%H$N%a%=%C%I$r;H$&$H$$$&$N(B @item nnspool-nov-directory @vindex nnspool-nov-directory -@code{nnspool} $B$,(B @sc{nov} $B%U%!%$%k$rC5$9$H$3$m$G$9!#$3$l$OIaDL(B +@code{nnspool} $B$,(B @acronym{NOV} $B%U%!%$%k$rC5$9$H$3$m$G$9!#$3$l$OIaDL(B $B$O(B @file{/usr/spool/news/over.view/} $B$G$9!#(B @item nnspool-lib-dir @@ -12170,8 +12140,8 @@ Emacs $B$N%;%C%7%g%sA4BN$r%i%C%W$7$F!"%G%#%U%)%k%H$N%a%=%C%I$r;H$&$H$$$&$N(B @item nnspool-nov-is-evil @vindex nnspool-nov-is-evil -@code{nil} $B$G$J$$$H!"(B@code{nnspool} $B$O$=$l$,8+$D$1$?$I$s$J(B @sc{nov} $B%U%!(B -$B%$%k$b;H$*$&$H$O$7$^$;$s!#(B +@code{nil} $B$G$J$$$H!"(B@code{nnspool} $B$O$=$l$,8+$D$1$?$I$s(B +$B$J(B @acronym{NOV} $B%U%!%$%k$b;H$*$&$H$O$7$^$;$s!#(B @item nnspool-sift-nov-with-sed @vindex nnspool-sift-nov-with-sed @@ -12193,19 +12163,15 @@ Emacs $B$N%;%C%7%g%sA4BN$r%i%C%W$7$F!"%G%#%U%)%k%H$N%a%=%C%I$r;H$&$H$$$&$N(B * Mail in a Newsreader:: $B%K%e!<%9%j!<%@$G%a!<%k(B ($BBg;v$JA0CV$-(B) * Getting Started Reading Mail:: $B4JC1$JNAM}K\$N$h$&$JNc(B * Splitting Mail:: $B$I$N$h$&$K%a!<%k%0%k!<%W$r:n@.$9$k$+(B -* Mail Sources:: Gnus $B$K$I$3$+$i%a!<%k$r$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%((B - $B%s%I$r;H$&(B +* Not Reading Mail:: $BB>$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(%s%I$r;H$&(B * Choosing a Mail Back End:: Gnus $B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k(B @end menu @@ -12237,16 +12203,16 @@ gnus $B$O$U$D$&F1$8.?M?t$KMxMQ$5$l$F$$$k%m!<%+%k%K%e!<%9%0%k!<%W$r9VFI$7$F$$(B -$B$^$9!#$=$l$i$O(B @sc{nntp} $B$GG[Aw$5$l$k!"%K%e!<%9!"$G$9!#;d$?$A$O<+J,$N;E(B -$B;v$KLrN)$F$k$?$a$K!"$=$l$i$NKDBg$J5-;v$NCGJR$rFI$s$@$jJV;v$r$7$J$1$l$P(B -$B$J$j$^$;$s!#$=$7$F$=$l$i$OJ]B8$5$l$F$$$J$$$+$b$7$l$^$;$s$+$i!"6=L#$N$"(B -$B$k5-;v$r8D?M%a!<%k$HF1$8$h$&$KJ]B8$7$J$1$l$P$J$i$J$$$G$7$g$&!#(B +$B$"$k?M$?$A$O>.?M?t$KMxMQ$5$l$F$$$k%m!<%+%k%K%e!<%9%0%k!<%W$r9VFI$7$F$$$^(B +$B$9!#$=$l$i$O(B @acronym{NNTP} $B$GG[Aw$5$l$k!"%K%e!<%9!"$G$9!#;d$?$A$O<+J,$N(B +$B;E;v$KLrN)$F$k$?$a$K!"$=$l$i$NKDBg$J5-;v$NCGJR$rFI$s$@$jJV;v$r$7$J$1$l$P(B +$B$J$j$^$;$s!#$=$7$F$=$l$i$OJ]B8$5$l$F$$$J$$$+$b$7$l$^$;$s$+$i!"6=L#$N$"$k(B +$B5-;v$r8D?M%a!<%k$HF1$8$h$&$KJ]B8$7$J$1$l$P$J$i$J$$$G$7$g$&!#(B $BG[Aw$N;EAH$_$N0c$$$O$I$&$G$b$h$$$3$H$G!"Bg;v$J$N$O$$$+$Ko$K4JC1$G$9!#$"$J$?$N%a!<%k%P%C%/(B $B%k$K9gCW$9$k$?$a$K!"$3$N@55,I=8=$O(B @emph{$B$$$D$b(B} @samp{*}$B$G$"$k$Y$-$G$9!#(B ($B$3$l$i$NK!B'$OO"A[%j%9%H$N=i$a$+$i=*$o$j$^$G=gHV$K!$A$^(B -$B$9(B''$B!#Aj8_Ej9F$r;HMQ2DG=$K$7$F$$$k>l9g!"A4$F$N9gCW$7$?K!B'$,(B ``$B>!$A$^$9(B''$B!#(B) +$B$9(B''$B!#Aj8_Ej9F$r;HMQ2DG=$K$7$F$$$k>l9g!"A4$F$N9gCW$7$?K!B'$,(B ``$B>!$A$^(B +$B$9(B''$B!#(B) $B$b$7$"$J$?<+?H$G$3$l$r$$$8$/$j$^$o$7$?$$$H$-$O!"$"$J$?$NA*$s$@4X?t$r$3$N(B $BJQ?t$K@_Dj$9$k;v$,$G$-$^$9!#$3$N4X?t$OF~$C$FMh$?%a!<%k%a%C%;!<%8$N%X%C%@!<(B @@ -12387,13 +12354,13 @@ nnmail-split-history} $B$r;H$&;v$,$G$-$^$9!#$3$l$+$i%9%W!<%k$7D>$=$&$H$9$k(B @vindex nnmail-mail-splitting-charset @vindex nnmail-mail-splitting-decodes ($BLuCm(B: $B%*%j%8%J%k$N(B Gnus $B$H$O;EMM$,HyL/$K0[$J$k$3$H$KCm0U$7$F2<$5$$(B) $B%G%#(B -$B%U%)%k%H$G$OJ,3d%3!<%I$O(B @sc{mime} $B%(%s%3!<%I$5$l$?%X%C%@!<$r%G%3!<%I$9(B -$B$k$N$G!"Hs(B-ASCII $BJ8;zNs$K%^%C%A$5$;$k$3$H$,$G$-$^$9!#JQ(B -$B?t(B @code{nnmail-mail-splitting-charset} $B$,(B @sc{mime} $BJ8;z=8(B -$B9g(B (mime-charset) $B$G$"$C$?$i$=$l!"(B@sc{mime} $BJ8;z=89g$G$O$J$$(B +$B%U%)%k%H$G$OJ,3d%3!<%I$O(B @acronym{MIME} $B%(%s%3!<%I$5$l$?%X%C%@!<$r%G%3!<(B +$B%I$9$k$N$G!"Hs(B-@acronym{ASCII} $BJ8;zNs$K%^%C%A$5$;$k$3$H$,$G$-$^$9!#JQ(B +$B?t(B @code{nnmail-mail-splitting-charset} $B$,(B @acronym{MIME} $BJ8;z=8(B +$B9g(B (mime-charset) $B$G$"$C$?$i$=$l!"(B@acronym{MIME} $BJ8;z=89g$G$O$J$$(B $BHs(B-@code{nil} $B$JCM$@$C$?$i$=$N$H$-$N(B @code{default-mime-charset} $B$NCM$G!"(B -(@sc{mime} $B%(%s%3!<%I$5$l$?$b$N$G$O$J$$(B) $BHs(B-ASCII $B%S%C%H%Q%?!<%s$b%G%3!<(B -$B%I$7$^$9!#$3$NF0:n(B +(@acronym{MIME} $B%(%s%3!<%I$5$l$?$b$N$G$O$J$$(B) $BHs(B-@acronym{ASCII} $B%S%C%H(B +$B%Q%?!<%s$b%G%3!<%I$7$^$9!#$3$NF0:n(B $B$O(B @code{nnmail-mail-splitting-decodes} $B$r(B @code{nil} $B$K$9$k$3$H$K$h$C$F(B $B40A4$K;_$a$k$3$H$,$G$-!"@8$N%X%C%@!<$N%G!<%?$r85$K5-;v$K%^%C%A$5$;$?$$>l(B $B9g$K$OM-8z$G$7$g$&!#(B @@ -12420,8 +12387,8 @@ Gnus $B$O$"$J$?$K<+J,<+?H$KD7$MJV$C$F$/$k$h$&$J2DG=@-$N$"$kA4$F$N5!2q$rDs(B @subsection Mail Sources $B$$$m$s$J$H$3$m$+$i%a!<%k$rA0$G$9!#=i4|CM$O(B @code{MAIL} $B4D6-JQ?t$NCM(B +$B%U%!%$%k$NL>A0$G$9!#=i4|CM$O(B @env{MAIL} $B4D6-JQ?t$NCM(B $B$+(B @code{rmail-spool-directory} $B$NCM(B ($BIaDL(B $B$O(B @file{usr-mail/spool/user-name} $B$N$h$&$J$b$N(B) $B$G$9!#(B @@ -12481,10 +12448,10 @@ POP $B%a!<%k%5!<%P!l9g$O!"(BPOP $B$d(B @sc{imap} $B$J(B -$B$I$G%a!<%k$r$O;HMQ$G(B -$B$-$^$;$s(B---$B%a!<%k$r0\F0$7$F$$$k$H$-$K%a!<%k%9%W!<%k$r%m%C%/$9$kJ}K!$,$"(B -$B$j$^$;$s!#(B +$B%a!<%k%9%W!<%k%U%!%$%k$,%m!<%+%k%^%7%s$KL5$$>l9g$O!"(B +@acronym{POP} $B$d(B @acronym{IMAP} $B$J$I$G%a!<%k$r$O;HMQ$G$-$^$;$s(B---$B%a!<%k$r0\F0$7$F$$$k$H$-$K(B +$B%a!<%k%9%W!<%k$r%m%C%/$9$kJ}K!$,$"$j$^$;$s!#(B $BE,@Z$J%5!<%P!<$r@_CV$9$k$3$H$,IT2DG=$J$i!"JQ$o$j$K(B ssh $B$r;H$&$3$H$,$G$-(B $B$^$9!#(B @@ -12553,32 +12520,32 @@ rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP @end lisp @item pop -POP $B%5!<%P!<$+$i%a!<%k$rA0$G$9!#=i4|CM$O(B @code{MAILHOST} $B4D6-JQ?t$+$iA0$G$9!#=i4|CM$O(B @env{MAILHOST} $B4D6-JQ?t$+$i$G$J$1$l$P$J$j$^$;$s!#=i(B -$B4|CM$O(B @samp{pop3} $B$G$9!#%7%9%F%`$K$h$C$F$O(B @samp{"pop-3"} $B$H$7$J$1$l$P(B -$B$J$i$J$$$+$b$7$l$^$;$s!#(B +@acronym{POP} $B%5!<%P!<$N%]!<%HHV9f$G$9!#$3$l$O?tCM(B ($BNc$((B +$B$P(B @samp{:port 1234}) $B$+J8;zNs(B ($BNc$($P(B @samp{:port "pop3"}) $B$G$9!#$b$7J8(B +$B;zNs$J$i(B Unix $B%7%9%F%`$K$*$1$k(B @file{/etc/services} $B$K:\$C$F$$$k%5!<%S%9(B +$BL>$G$J$1$l$P$J$j$^$;$s!#=i4|CM$O(B @samp{pop3} $B$G$9!#%7%9%F%`$K$h$C$F(B +$B$O(B @samp{"pop-3"} $B$H$7$J$1$l$P$J$i$J$$$+$b$7$l$^$;$s!#(B @item :user -POP $B%5!<%P!<$KM?$($kMxMQ$G$9!#=i4|CM$O%m%0%$%sL>$G$9!#(B +@acronym{POP} $B%5!<%P!<$KM?$($kMxMQ$G$9!#=i4|CM$O%m%0%$%sL>$G$9!#(B @item :password -POP $B%5!<%P!<$KM?$($k%Q%9%o!<%I$G$9!#;XDj$5$l$J$$>l9g$O!"MxMQl9g$O!"MxMQZJ}<0$r;H$&$+$r(B @@ -12630,10 +12598,11 @@ POP $B%5!<%P!<$+$i%a!<%k$r$G!"=i4|(B POP $B%5!<%P!<$+$i$G!"=i4|(B @acronym{POP} $B%5!<%P!<$+$i(B +$BA0$G$9!#=i4|CM$O4D6-JQ(B -$B?t(B @code{MAILDIR} $B$+$ie$G%a!<%k$rFI$`%W%m%H%3%k$H$7$F07$$$?$/$J$$$H(B -$B$-$O!"(Bgnus $B$G$O(B POP $B%5!<%P!<$HF1MM$K07$&$3$H$,$G$-!"M?$($i$l(B -$B$?(B @sc{imap} $B%a!<%k%\%C%/%9$+$i5-;v$r\$7$/$O(B @xref{IMAP} $B$r(B -$B;2>H$7$F2<$5$$!#(B +@acronym{IMAP} $B%5!<%P!<$+$i%a!<%k$re$G%a!<%k$rFI$`%W%m%H%3(B +$B%k$H$7$F07$$$?$/$J$$$H$-$O!"(Bgnus $B$G$O(B @acronym{POP} $B%5!<%P!<$HF1MM$K07$&(B +$B$3$H$,$G$-!"M?$($i$l$?(B @acronym{IMAP} $B%a!<%k%\%C%/%9$+$i5-;v$r\$7$/$O(B @xref{IMAP} $B$r;2>H$7$F2<$5$$!#(B -Kerberos, GSSAPI, TLS/SSL $B$*$h$S(B STARTTLS $B$N$?$a$N30It%W%m%0%i%`$H%i%$%V(B -$B%i%j$,I,MW$G$"$k$3$H$KN10U$7$F2<$5$$!#(B@xref{IMAP}$B!#(B +Kerberos, GSSAPI, @acronym{TLS}/@acronym{SSL} $B$*$h$S(B STARTTLS $B$N$?$a$N30(B +$BIt%W%m%0%i%`$H%i%$%V%i%j$,I,MW$G$"$k$3$H$KN10U$7$F2<$5$$!#(B@xref{IMAP}$B!#(B $B%-!<%o!<%I(B: @table @code @item :server -@sc{imap} $B%5!<%P!<$NL>A0!#=i4|CM$O4D6-JQ?t(B @code{MAILHOST} $B$+$iF@$^$9!#(B +@acronym{IMAP} $B%5!<%P!<$NL>A0!#=i4|CM$O4D6-JQ?t(B @env{MAILHOST} $B$+$iF@$^(B +$B$9!#(B @item :port -@sc{imap} $B%5!<%P!<$N%]!<%HHV9f!#IaDL$O=i4|CM$O(B @samp{143} $B$G!"(BTLS/SSL $B@\(B -$BB3$K$O(B @samp{993} $B$G$9!#(B +@acronym{IMAP} $B%5!<%P!<$N%]!<%HHV9f!#IaDL$O=i4|CM$O(B @samp{143} $B$G!"(B +@acronym{TLS}/@acronym{SSL} $B@\B3$K$O(B @samp{993} $B$G$9!#(B @item :user -@sc{imap} $B%5!<%P!<$KEO$9MxMQ$G$9!#=i4|CM$O%m%0%$%sL>$G$9!#(B +@acronym{IMAP} $B%5!<%P!<$KEO$9MxMQ$G$9!#=i4|CM$O%m%0%$%sL>$G$9!#(B @item :password -@sc{imap} $B%5!<%P!<$KEO$9%Q%9%o!<%I$G$9!#;XDj$5$l$F$$$J$$$H$-$O!"MxMQJ}$+$i%a!<%k$rJ}$+$i%a!<%k$r$N(B (ding) $B4XO"$N%a!<%k$N$?$a$N%0%k!<%W$K$O(B - ;; $BAj8_Ej9F$7$^$;$s!#(B + ;; @r{$B%(%i!<$G$J$$%a%C%;!<%8$OA4$F$N4XO"$7$?%0%k!<%W$KAj8_Ej9F$5$l$^(B} + ;; @r{$B$9$,!"(B(ding) $B%j%9%H$HB>$N(B (ding) $B4XO"$N%a!<%k$N$?$a$N%0%k!<%W$K(B} + ;; @r{$B$OAj8_Ej9F$7$^$;$s!#(B} (& (| (any "ding@@ifi\\.uio\\.no" "ding.list" "ding.list") ("subject "ding" "ding.misc")) - ;; $BB>$N%a!<%j%s%0%j%9%H(B... + ;; @r{$BB>$N%a!<%j%s%0%j%9%H(B@dots{}} (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") - ;; $B0J2<$N$I$A$i$N%a!<%j%s%0%j%9%H$bF1$8@\F,<-$J$N$G!"(Bbugs- - ;; $B$@$1$KEj9F$5$l$?$b$N$,(B mypkg.list $B$KAj8_Ej9F$5$l$J$$$h(B - ;; $B$&$K$7$F$$$^$9!#$7$+$7K\Ev$KAj8_Ej9F$5$l$?5-;v$rAj8_Ej9F(B - ;; $B$9$k$3$H$O5v$7$F$$$^$9!#(B + ;; @r{$B0J2<$N$I$A$i$N%a!<%j%s%0%j%9%H$bF1$8@\F,<-$J$N$G!"(Bbugs-} + ;; @r{$B$@$1$KEj9F$5$l$?$b$N$,(B mypkg.list $B$KAj8_Ej9F$5$l$J$$$h(B} + ;; @r{$B$&$K$7$F$$$^$9!#$7$+$7K\Ev$KAj8_Ej9F$5$l$?5-;v$rAj8_Ej9F(B} + ;; @r{$B$9$k$3$H$O5v$7$F$$$^$9!#(B} (any "bugs-mypackage@@somewhere" "mypkg.bugs") (any "mypackage@@somewhere\" - "bugs-mypackage" "mypkg.list") - ;; $B?M!9(B... + ;; @r{$B?M!9(B@dots{}} (any "larsi@@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen")) - ;; $B9gCW$7$J$+$C$?%a!<%k$OA4$F$rJa$^$($k%0%k!<%W$X9T$-$^$9!#(B + ;; @r{$B9gCW$7$J$+$C$?%a!<%k$OA4$F$rJa$^$($k%0%k!<%W$X9T$-$^$9!#(B} "misc.misc") @end lisp @@ -13201,11 +13170,11 @@ table) $B$K=>$C$F40A4$K9gCW$7$J$1$l$P$J$j$^$;$s!#@55,I=8=$G%U%#!<%k%IL>$+(B $B;H$C$F$3$s$JIw$K=q$-$^$9(B: @lisp -(setq nnmail-treat-duplicates 'warn ; $B$^$?$O(B 'delete +(setq nnmail-treat-duplicates 'warn ; @r{$B$^$?$O(B @code{delete}} nnmail-cache-accepted-message-ids t nnmail-split-fancy '(| (: nnmail-split-fancy-with-parent) - ;; $B;D$j$N?6$jJ,$1J}$O$3$3$K=q$/(B + ;; @r{$B;D$j$N?6$jJ,$1J}$O$3$3$K=q$/(B} )) @end lisp @@ -13323,18 +13292,18 @@ nnml:mail.others: $B%W$@$1$K;H$&$3$H$,$G$-$^$9!#(B @lisp -(: gnus-group-split-fancy GROUPS NO-CROSSPOST CATCH-ALL) +(: gnus-group-split-fancy @var{groups} @var{no-crosspost} @var{catch-all}) @end lisp @var{groups} $B$O=PNO$NJ,3d$r@8@.$9$k$?$a$K%Q%i%a!<%?$,Av::$5$l$k%0%k!<%W(B $BL>$N%j%9%H$+@55,I=8=$G$9!#(B@var{no-crosspost} $B$OAj8_Ej9F$r;HMQ6X;_$K$k$?(B $B$a$K;H$&$3$H$,$G$-$^$9!#$=$N>l9g!"C10l$N(B @code{|} $BJ,3d$,=PNO$5$l$^$9!#(B @var{catch-all} $B$O(B @var{gnus-group-split-default-catch-all-group} $B$N$h$&(B -$B$K!":G8e$Nl9g!"%0%k!<%W(B -$B$K(B @var{split-spec} $B$,(B @code{catch-all} $B$K@_Dj$5$l$F$$$k$b$N$,$"$k$H!"$3(B -$B$N%0%k!<%W$,(B @var{catch-all} $B0z?t$r>e=q$-$7$^$9!#(B +$B$K!":G8e$Nl9g!"%0%k!<%W$K(B @var{split-spec} $B$,(B @code{catch-all} $B$K@_Dj$5$l$F$$$k(B +$B$b$N$,$"$k$H!"$3$N%0%k!<%W$,(B @var{catch-all} $B0z?t$r>e=q$-$7$^$9!#(B @findex gnus-group-split-setup $BIT1?$J$3$H$K!"A4$F$N%0%k%W$H%Q%i%a!<%?$rAv::$9$k$3$H$OHs>o$KCY$$$G$9!#FC(B @@ -13354,7 +13323,7 @@ nnml:mail.others: $B$P!"(B@file{~/.gnus.el} $B$K0J2<$N$b$N$rDI2C$7$F$/$@$5$$(B: @lisp -(gnus-group-split-setup AUTO-UPDATE CATCH-ALL) +(gnus-group-split-setup @var{auto-update} @var{catch-all}) @end lisp @var{auto-update} $B$,(B @code{nil} $B$GL5$$$H!"(B @@ -13733,12 +13702,12 @@ Quoted Readable $BId9f2=$rI|9f2=$7$^$9!#(B @lisp (setq nnmail-split-fancy - '(| ;; $B=EJ#%a%C%;!<%8$OJ,N%$5$l$?%0%k!<%W$X9T$-$^$9!#(B + '(| ;; @r{$B=EJ#%a%C%;!<%8$OJ,N%$5$l$?%0%k!<%W$X9T$-$^$9!#(B} ("gnus-warning" "duplicat\\(e\\|ion\\) of message" "duplicate") - ;; $B%G!<%b%s$d%]%9%H%^%9%?!<$d;w$?$h$&$J$b$N$+$i$N(B - ;; $B%a%C%;!<%8$OB>$N$H$3$m$X!#(B + ;; @r{$B%G!<%b%s$d%]%9%H%^%9%?!<$d;w$?$h$&$J$b$N$+$i$N(B} + ;; @r{$B%a%C%;!<%8$OB>$N$H$3$m$X!#(B} (any mail "mail.misc") - ;; $BB>$NK!B'!#(B + ;; @r{$BB>$NK!B'!#(B} [ ... ] )) @end lisp @@ -13746,7 +13715,7 @@ Quoted Readable $BId9f2=$rI|9f2=$7$^$9!#(B @lisp (setq nnmail-split-methods '(("duplicates" "^Gnus-Warning:.*duplicate") - ;; $BB>$NK!B'!#(B + ;; @r{$BB>$NK!B'!#(B} [...])) @end lisp @@ -13773,8 +13742,8 @@ Quoted Readable $BId9f2=$rI|9f2=$7$^$9!#(B @vindex nnmh-get-new-mail @vindex nnfolder-get-new-mail $BNc$($P!"(B@code{nnml} $B$G%a!<%k$rFI$`;v$KHs>o$KK~B-$7$F$$$F!"8E(B -$B$$(B @sc{rmail} $B%U%!%$%k$,(B @code{nnbabyl} $B$G1#$5$l$F$$$k$N$r$5$C$H8+$?$$$@(B -$B$1$J$i!"$3$l$OM>J,$G$7$g$&!#$9$Y$F$N%P%C%/%(%s%I$O(B $B%P%C%/%(%s%I(B- +$B$$(B Rmail $B%U%!%$%k$,(B @code{nnbabyl} $B$G1#$5$l$F$$$k$N$r$5$C$H8+$?$$$@$1$J(B +$B$i!"$3$l$OM>J,$G$7$g$&!#$9$Y$F$N%P%C%/%(%s%I$O(B $B%P%C%/%(%s%I(B- @code{get-new-mail} $B$H$$$&JQ?t$r;}$C$F$$$^$9!#$b$7(B @code{nnbabyl} $B$N%a!<(B $B%kFI$_9~$_$r;HMQIT2D$K$7$?$$$N$G$"$l$P!"%0%k!<%W$N;ve$N%5!<%P!<(B $B$r(B @code{nnbabyl-get-new-mail} $B$r(B @code{nil} $B$K@_Dj$9$k$h$&$KJT=8$7$^$9!#(B @@ -13795,13 +13764,11 @@ Gnus $B$O%a!<%k%0%k!<%W$rF0:n$9$k$h$&$K$9$k$H%a!<%k%9%W!<%k$rFI$_9~$_$^$9!#(B @menu * Unix Mail Box:: ($B$H$F$b(B) $BI8=`E*$J(B Un*x mbox $B$r;H$&(B -* Rmail Babyl:: Emacs $B$N%W%m%0%i%`$O(B rmail $B$N(B babyl $B%U%)!<(B - $B%^%C%H$r;H$&(B +* Rmail Babyl:: Emacs $B$N%W%m%0%i%`$O(B Rmail $B$N(B Babyl $B%U%)!<%^%C%H$r;H$&(B * Mail Spool:: $B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k(B? * MH Spool:: mhspool $B$N$h$&$J%P%C%/%(%s%I(B * Maildir:: $B$b$&0l$D$N#1%U%!%$%k(B/$B#1%a%C%;!<%87A<0(B -* Mail Folders:: $B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k(B - $B$r;}$D(B +* Mail Folders:: $B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k$r;}$D(B * Comparing Mail Back Ends:: $BF@<:$N?<$$F6;!(B @end menu @@ -13838,12 +13805,12 @@ Gnus $B$O%a!<%k%0%k!<%W$rF0:n$9$k$h$&$K$9$k$H%a!<%k%9%W!<%k$rFI$_9~$_$^$9!#(B @node Rmail Babyl @subsubsection Rmail Babyl @cindex nnbabyl -@cindex rmail mbox +@cindex Rmail mbox @vindex nnbabyl-active-file @vindex nnbabyl-mbox-file -@dfn{nnbabyl} $B%P%C%/%(%s%I$O%a!<%k$rC_B"$9$k$?$a$K(B babyl $B%a!<%k%\%C%/(B -$B%9(B ($BJLL>(B @dfn{rmail mbox}) $B$r;H$$$^$9!#(B@code{nnbabyl} $B$O$=$l$>$l$N5-;v$K(B +@dfn{nnbabyl} $B%P%C%/%(%s%I$O%a!<%k$rC_B"$9$k$?$a$K(B Babyl $B%a!<%k%\%C%/(B +$B%9(B ($BJLL>(B @dfn{Rmail mbox}) $B$r;H$$$^$9!#(B@code{nnbabyl} $B$O$=$l$>$l$N5-;v$K(B $B$=$l$,$I$N%0%k!<%W$KB0$7$F$$$k$+$r<($9DI2C$N%X%C%@!<$r2C$($^$9!#(B $B;ve$N%5!<%P!<$N@_Dj(B: @@ -13851,7 +13818,7 @@ Gnus $B$O%a!<%k%0%k!<%W$rF0:n$9$k$h$&$K$9$k$H%a!<%k%9%W!<%k$rFI$_9~$_$^$9!#(B @table @code @item nnbabyl-mbox-file @vindex nnbabyl-mbox-file -rmail mbox $B%U%!%$%k$NL>A0!#4{DjCM$O(B @file{~/RMAIL} $B$G$9!#(B +Rmail mbox $B%U%!%$%k$NL>A0!#4{DjCM$O(B @file{~/RMAIL} $B$G$9!#(B @item nnbabyl-active-file @vindex nnbabyl-active-file @@ -13867,7 +13834,7 @@ rmail box $B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#4{DjCM(B @node Mail Spool @subsubsection $B%a!<%k%9%W!<%k(B @cindex nnml -@cindex mail @sc{nov} spool +@cindex mail @acronym{NOV} spool @dfn{nnml} $B%9%W!<%k%a!<%kMM<0$OB>$NCN$i$l$?MM<0$H$O8_49@-$,$"$j$^$;$s!#(B $B$=$l$O>/$7Cm0U$7$F;H$o$l$k$Y$-$G$9!#(B @@ -13892,8 +13859,8 @@ rmail box $B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#4{DjCM(B @code{nnml} $B$O5-;vJ,3d$K4X$7$F$O$*$=$i$/0lHVCY$$%P%C%/%(%s%I$G$7$g$&!#$=(B $B$l$OB?$/$N%U%!%$%k$r:n$i$J$1$l$P$J$i$:!"$=$l$OF~$C$F$/$k%a!<%k$N$?$a(B -$B$N(B @sc{nov} $B%G!<%?%Y!<%9$b:n@.$7$J$1$l$P$J$j$^$;$s!#$3$l$N$?$a$K!"%a!<%k(B -$B$rFI$`;v$K4X$7$F$O$?$V$s:GB.$N%P%C%/%(%s%I$K$J$j$^$9!#(B +$B$N(B @acronym{NOV} $B%G!<%?%Y!<%9$b:n@.$7$J$1$l$P$J$j$^$;$s!#$3$l$N$?$a$K!"(B +$B%a!<%k$rFI$`;v$K4X$7$F$O$?$V$s:GB.$N%P%C%/%(%s%I$K$J$j$^$9!#(B @cindex self contained nnml servers @cindex marks @@ -13936,12 +13903,12 @@ rmail box $B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#4{DjCM(B @item nnml-nov-is-evil @vindex nnml-nov-is-evil -@code{nil} $B$G$J$1$l$P!"$3$N%P%C%/%(%s%I$O$I$N(B @sc{nov} $B%U%!%$%k$bL5;k$7(B -$B$^$9!#4{DjCM$O(B @code{nil} $B$G$9!#(B +@code{nil} $B$G$J$1$l$P!"$3$N%P%C%/%(%s%I$O$I$N(B @acronym{NOV} $B%U%!%$%k$bL5(B +$B;k$7$^$9!#4{DjCM$O(B @code{nil} $B$G$9!#(B @item nnml-nov-file-name @vindex nnml-nov-file-name -@sc{nov} $B%U%!%$%k$NL>A0!#%G%#%U%)%k%H$O(B @file{.overview} $B$G$9!#(B +@acronym{NOV} $B%U%!%$%k$NL>A0!#%G%#%U%)%k%H$O(B @file{.overview} $B$G$9!#(B @item nnml-prepare-save-mail-hook @vindex nnml-prepare-save-mail-hook @@ -13963,23 +13930,23 @@ rmail box $B$N$?$a$N%"%/%F%#%V%U%!%$%k$NL>A0!#4{DjCM(B @end table @findex nnml-generate-nov-databases -@code{nnml} $B%0%k!<%W$H(B @sc{nov} $B%U%!%$%k$,40A4$KNI$$>uBV$G$J$/$J$C$F$7$^$C(B -$B$?$J$i!"(B@kbd{M-x nnml-generate-nov-databases} $B$HBG$D;v$K$h$C$F!"40A4$K99(B -$B?7$9$k;v$,$G$-$^$9!#$3$NL?Na$O!"$=$l$>$lA4$F$N%U%!%$%k$r8+$k;v$K$h$C(B -$B$F(B @code{nnml} $B3,AXA4BN$r%H%m!<%k5{LV$G$5$i$$$^$9$N$G!"$=$l$,=*$o$k$^$G(B -$B$K$O;~4V$,$+$+$k$+$b$7$l$^$;$s!#$3$N5!G=$X$N$h$jNI$$%$%s%?!<%U%'!<%9$O%5!<(B -$B%P!<%P%C%U%!$G8+$D$+$k$G$7$g$&(B (@pxref{Server Commands})$B!#(B +@code{nnml} $B%0%k!<%W$H(B @acronym{NOV} $B%U%!%$%k$,40A4$KNI$$>uBV$G$J$/$J$C(B +$B$F$7$^$C$?$J$i!"(B@kbd{M-x nnml-generate-nov-databases} $B$HBG$D;v$K$h$C$F!"(B +$B40A4$K99?7$9$k;v$,$G$-$^$9!#$3$NL?Na$O!"$=$l$>$lA4$F$N%U%!%$%k$r8+$k;v$K(B +$B$h$C$F(B @code{nnml} $B3,AXA4BN$r%H%m!<%k5{LV$G$5$i$$$^$9$N$G!"$=$l$,=*$o$k(B +$B$^$G$K$O;~4V$,$+$+$k$+$b$7$l$^$;$s!#$3$N5!G=$X$N$h$jNI$$%$%s%?!<%U%'!<%9(B +$B$O%5!<%P!<%P%C%U%!$G8+$D$+$k$G$7$g$&(B (@pxref{Server Commands})$B!#(B @node MH Spool @subsubsection MH $B%9%W!<%k(B @cindex nnmh @cindex mh-e mail spool -@code{nnmh} $B$O!"(B@sc{nov} $B%G!<%?%Y!<%9$r:n$i$J$$$3$H$H%"%/%F%#%V%U%!%$%k(B -$B$d0u%U%!%$%k$rJ];}$7$J$$;v$r=|$$$F!"(B@code{nnml} $B$H;w$F$$$^$9!#$=$N$3$H(B -$B$O(B @code{nnmh} $B$r(B @code{nnml} $B$h$j(B @emph{$B$+$J$j(B} $BCY$$%P%C%/%(%s%I$K$7$F(B -$B$$$^$9$,!"$=$l$O(B procmail $B$N%9%/%j%W%H$r=q$/$?$a$K$:$C$H$d$j$d$9$/$J$C$F(B -$B$b$$$^$9!#(B +@code{nnmh} $B$O!"(B@acronym{NOV} $B%G!<%?%Y!<%9$r:n$i$J$$$3$H$H%"%/%F%#%V%U%!(B +$B%$%k$d0u%U%!%$%k$rJ];}$7$J$$;v$r=|$$$F!"(B@code{nnml} $B$H;w$F$$$^$9!#$=$N$3(B +$B$H$O(B @code{nnmh} $B$r(B @code{nnml} $B$h$j(B @emph{$B$+$J$j(B} $BCY$$%P%C%/%(%s%I$K$7(B +$B$F$$$^$9$,!"$=$l$O(B procmail $B$N%9%/%j%W%H$r=q$/$?$a$K$:$C$H$d$j$d$9$/$J$C(B +$B$F$b$$$^$9!#(B $B;ve$N%5!<%P!<$N@_Dj(B: @@ -14027,9 +13994,9 @@ nnmaildir $B$O40A4$K?.Mj$G$-$k$3$H$rL\;X$7$F$$$^$9(B: @kbd{C-g} $B$O%a%b%j!$l$N(B maildir $B$K3JG<$7$^$9!#$=$l(B -$B$K$h$C$F!"$"$k(B Gnus $B$N4D6-$+$iJL$N>l=j$K(B maildir $BA4BN$r%3%T!<$9$k$3$H$,(B -$B$G$-!"0u$OJ]B8$5$l$^$9!#(B +nnmaildir $B$O5-;v$N0u$H(B @acronym{NOV} $B%G!<%?$r$=$l$>$l$N(B maildir $B$K3JG<$7(B +$B$^$9!#$=$l$K$h$C$F!"$"$k(B Gnus $B$N4D6-$+$iJL$N>l=j$K(B maildir $BA4BN$r%3%T!<(B +$B$9$k$3$H$,$G$-!"0u$OJ]B8$5$l$^$9!#(B $B2>A[%5!<%P!<$N@_Dj(B: @@ -14195,15 +14162,15 @@ nnmaildir $B$O(B @code{expiry-target} $B%0%k!<%W%Q%i%a!<%?(B $BK\BN$G9T$o$l$k$+!"$"$k$$$OM-1W$G$J$1$l$PJ|4~$5$l$k$Y$-$G$9!#(B @item nov-cache-size -NOV $B%a%b%j!<%-%c%C%7%e$N%5%$%:$r;XDj$9$k@0?t$G$9!#%9%T!<%I%"%C%W$N$?$a$K!"(B -nnmaildir $B$O$=$l$>$l$N%0%k!<%W$N8BDj$5$l$??t$N5-;v$KBP$7$F!"%a%b%j!<>e(B -$B$K(B NOV $B%G!<%?$rJ];}$7$^$9!#(B($B$3$l$O$?$V$sM-MQ$G$O$J$/!">-Mh$O$*$=$i$/:o=|(B -$B$5$l$k$G$7$g$&(B)$B!#$3$N%Q%i%a!<%?$NCM$O!"%5!<%P!<$,3+DL$7$?8e$G:G=i$K%0%k!<(B -$B%W$,8+$i$l$?$H$-!"$9$J$o$A0lHL$K$O:G=i$K(B Gnus $B$r5/F0$7$?$H$-!"$@$1CmL\$5(B -$B$l$^$9!#%5!<%P!<$,JD$8$i$l$F:F$S3+DL$5$l$k$^$G$O!"(BNOV $B%-%c%C%7%e$N%5%$%:(B -$B$OJQ99$5$l$^$;$s!#%G%#%U%)%k%H$O35N,%P%C%U%!$KI=<($5$l$k5-;v$N?t$N8+@Q(B -$B$j(B (@code{tick} $B0u$,$"$C$F(B @code{read} $B$,L5$$5-;v$N?t$K>/!9$NM>J,$r2C$((B -$B$?$b$N(B) $B$G$9!#(B +@acronym{NOV} $B%a%b%j!<%-%c%C%7%e$N%5%$%:$r;XDj$9$k@0?t$G$9!#%9%T!<%I%"%C(B +$B%W$N$?$a$K!"(Bnnmaildir $B$O$=$l$>$l$N%0%k!<%W$N8BDj$5$l$??t$N5-;v$KBP$7$F!"(B +$B%a%b%j!<>e$K(B @acronym{NOV} $B%G!<%?$rJ];}$7$^$9!#(B($B$3$l$O$?$V$sM-MQ$G$O$J$/!"(B +$B>-Mh$O$*$=$i$/:o=|$5$l$k$G$7$g$&(B)$B!#$3$N%Q%i%a!<%?$NCM$O!"%5!<%P!<$,3+DL(B +$B$7$?8e$G:G=i$K%0%k!<%W$,8+$i$l$?$H$-!"$9$J$o$A0lHL$K$O:G=i$K(B Gnus $B$r5/F0(B +$B$7$?$H$-!"$@$1CmL\$5$l$^$9!#%5!<%P!<$,JD$8$i$l$F:F$S3+DL$5$l$k$^$G$O!"(B +@acronym{NOV} $B%-%c%C%7%e$N%5%$%:$OJQ99$5$l$^$;$s!#%G%#%U%)%k%H$O35N,%P%C(B +$B%U%!$KI=<($5$l$k5-;v$N?t$N8+@Q$j(B (@code{tick} $B0u$,$"$C$F(B @code{read} $B$,(B +$BL5$$5-;v$N?t$K>/!9$NM>J,$r2C$($?$b$N(B) $B$G$9!#(B @end table @subsubsection $B5-;v$N<1JL(B @@ -14217,15 +14184,16 @@ maildir $B$N(B @file{.nnmaildir/} $B%5%V%G%#%l%/%H%j$N?'!9$J>l=j$K5-;v$K4XO"$ $B$N40A4$J%Q%9L>$,(B @code{nnmaildir-article-file-name} $BJQ?t$+$iF@$i$l$^$9!#(B @subsubsection NOV $B%G!<%?(B -@code{uniq} $B$K$h$C$F<1JL$5$l$k5-;v$O!"$=$N(B NOV $B%G!<%?(B ($B35N,%P%C%U%!$N9T(B -$B$r@8@.$9$k$?$a$K;H$o$l$k(B) $B$r(B @file{.nnmaildir/nov/uniq} $B$K3JG<$7$^$9!#(B -@code{nnmaildir-generate-nov-databases} $B4X?t$O$"$j$^$;$s!#(B($B$=$NI,MW$O$"(B -$B$^$j$"$j$^$;$s!#5-;v$N(B NOV $B%G!<%?$O5-;v$+(B @code{nnmail-extra-headers} $B$,(B -$BJQ2=$7$?$H$-$K<+F0E*$K99?7$5$l$^$9!#(B) $BBP1~$9$k(B NOV $B%U%!%$%k$r$?$@>C$9$3(B -$B$H$K$h$C$FC10l$N5-;v$N(B NOV $B%G!<%?$N@8@.$r(B nnmaildir $B$K6/@)$9$k$3$H$O$G$-(B -$B$^$9!#$7$+$7(B @emph{$B$4MQ?4(B}$B!#$3$l$O(B nnmaildir $B$,$3$N5-;v$K?7$7$$5-;vHV9f(B -$B$r3d$j?6$i$;!"(B@code{seen} $B0u!"%(!<%8%'%s%H!"$*$h$S%-%c%C%7%e$K$H$C$FLLE](B -$B$J$3$H$K$J$j$^$9!#(B +@code{uniq} $B$K$h$C$F<1JL$5$l$k5-;v$O!"$=$N(B @acronym{NOV} $B%G!<%?(B ($B35N,%P%C(B +$B%U%!$N9T$r@8@.$9$k$?$a$K;H$o$l$k(B) $B$r(B @file{.nnmaildir/nov/uniq} $B$K3JG<$7(B +$B$^$9!#(B@code{nnmaildir-generate-nov-databases} $B4X?t$O$"$j$^$;$s!#(B($B$=$NI,(B +$BMW$O$"$^$j$"$j$^$;$s!#5-;v$N(B @acronym{NOV} $B%G!<%?$O5-;v(B +$B$+(B @code{nnmail-extra-headers} $B$,JQ2=$7$?$H$-$K<+F0E*$K99?7$5$l$^(B +$B$9!#(B) $BBP1~$9$k(B @acronym{NOV} $B%U%!%$%k$r$?$@>C$9$3$H$K$h$C$FC10l$N5-;v(B +$B$N(B @acronym{NOV} $B%G!<%?$N@8@.$r(B nnmaildir $B$K6/@)$9$k$3$H$O$G$-$^$9!#$7$+(B +$B$7(B @emph{$B$4MQ?4(B}$B!#$3$l$O(B nnmaildir $B$,$3$N5-;v$K?7$7$$5-;vHV9f$r3d$j?6$i(B +$B$;!"(B@code{seen} $B0u!"%(!<%8%'%s%H!"$*$h$S%-%c%C%7%e$K$H$C$FLLE]$J$3$H$K$J(B +$B$j$^$9!#(B @subsubsection $B5-;v$N0u(B @file{.nnmaildir/marks/flag/uniq} $B%U%!%$%k$,$"$k>l9g$K!"(B@code{uniq} $B$K$h$C(B @@ -14316,16 +14284,16 @@ i$B%N!<%I(B $B$r@aLs$9$k$?$a$KC1$K(B @file{.nnmaildir/markfile} $B$X$N%O!<% @item nnfolder-nov-is-evil @vindex nnfolder-nov-is-evil -$B$b$7Hs(B@code{nil}$B$J$i!"$3$N%P%C%/%(%s%I$O(B @sc{nov} $B%U%!%$%k$rL5;k$7$^$9!#(B -$B4{DjCM$O(B @code{nil} $B$G$9!#(B +$B$b$7Hs(B@code{nil}$B$J$i!"$3$N%P%C%/%(%s%I$O(B @acronym{NOV} $B%U%!%$%k$rL5;k$7(B +$B$^$9!#4{DjCM$O(B @code{nil} $B$G$9!#(B @item nnfolder-nov-file-suffix @vindex nnfolder-nov-file-suffix -@sc{nov} $B%U%!%$%k$N3HD%;R$G$9!#%G%#%U%)%k%H$O(B @file{.nov} $B$G$9!#(B +@acronym{NOV} $B%U%!%$%k$N3HD%;R$G$9!#%G%#%U%)%k%H$O(B @file{.nov} $B$G$9!#(B @item nnfolder-nov-directory @vindex nnfolder-nov-directory -@sc{nov} $B%U%!%$%k$,3JG<$5$l$k%G%#%l%/%H%j$G$9!#(B@code{nil} $B$@$C$?(B +@acronym{NOV} $B%U%!%$%k$,3JG<$5$l$k%G%#%l%/%H%j$G$9!#(B@code{nil} $B$@$C$?(B $B$i(B @code{nnfolder-directory} $B$,;H$o$l$^$9!#(B @item nnfolder-marks-is-evil @@ -14361,11 +14329,11 @@ i$B%N!<%I(B $B$r@aLs$9$k$?$a$KC1$K(B @file{.nnmaildir/markfile} $B$X$N%O!<% $B$G$9!#(B $BF1$835G0$,(B Usenet $B<+?H$K$bB8:_$7$^$9!#5-;v$X$N@\?($O:#F|$G$O!"IaDL(B -$B$O(B @sc{nntp} $B$G$J$5$l$^$9$,!"@N!9$NM+]5$J?@\5-;v$N%G%#%l%/%H%j!<%9%W!<%k$KF'$_9~$`$H$$$&$b$N(B -$B$G$7$?!#$=$l$G$b!"$?$^$?$^%5!<%P!<(B ($B$b$7$/$O!"(BNFS $B$G%9%W!<%k$,FI$a$k$h(B -$B$&$J>l9g(B) $B$K$$$k$h$&$J>l9g$O!"$3$l$i$NJ}K!$rA*$V$?$a(B +$B$O(B @acronym{NNTP} $B$G$J$5$l$^$9$,!"@N!9$NM+]5$J?@\5-;v$N%G%#%l%/%H%j!<%9%W!<%k$KF'$_9~$`$H(B +$B$$$&$b$N$G$7$?!#$=$l$G$b!"$?$^$?$^%5!<%P!<(B ($B$b$7$/$O!"(BNFS $B$G%9%W!<%k$,FI(B +$B$a$k$h$&$J>l9g(B) $B$K$$$k$h$&$J>l9g$O!"$3$l$i$NJ}K!$rA*$V$?$a(B $B$K(B @code{nntp} $B$d(B @code{nnspool} $B%P%C%/%(%s%I$N$I$A$i$+$rA*$V$3$H$,$G$-(B $B$^$7$?!#(B @@ -14398,12 +14366,12 @@ UNIX $B%7%9%F%`$ONr;KE*$KC10l$N!"Hs>o$K0lHLE*$J!">euBV%S%C%H$r%U%!(B $B%$%k$N$=$l$>$l$N%a%C%;!<%8$N@hF,$K2C$($k$3$H$r$7$F$$$^$7$?!#(B -RMAIL $B$O(B Emacs $B$N:G=i$N%a!<%k%j!<%@!<$G!"(BRichard Stallman $B$K$h$C$F=q$+$l!"(B -Stallman $B$O$=$N(B TOPS/Babyl $B4D6-$N=P?H$G$"$k$?$a!"(BRMAIL $B$r4{$KB8:_$7$F$$(B +Rmail $B$O(B Emacs $B$N:G=i$N%a!<%k%j!<%@!<$G!"(BRichard Stallman $B$K$h$C$F=q$+$l!"(B +Stallman $B$O$=$N(B TOPS/Babyl $B4D6-$N=P?H$G$"$k$?$a!"(BRmail $B$r4{$KB8:_$7$F$$(B $B$?%a!<%k%U%!%$%k$N0lB2$rM}2r$9$kMM$K=q$-$^$7$?!#(BGnus ($B$3$NLdBj$K4X$7$F(B $B$O(B VM $B$b(B) $B$3$N7A<0$r%5%]!<%H$7B3$1$F$$$^$9!#$=$l$O!"$=$N%a!<%i!e$N7A<0$NN>J}$O%a!<%k$r%U%!%$%k%7%9%F%`$NC1FH$N%U%!%$%k$KF~$l!"%a!<%k$r(B @@ -14418,11 +14386,12 @@ RMAIL $B<+?H$b$b$A$m$s$^$@B8:_$7$F$$$F!"$^$@(B Stallman $B$K$h$C$F0];}$5$l$F$ $B$K(B 1:1 $B$GJ,$1$i$l$^$9!#(BUsenet $BMM<0$N%"%/%F%#%V%U%!%$%k(B (INN $B$d(B CNews $B$K(B $B4p$E$$$?%K%e!<%9%7%9%F%`$G(B ($BNc$($P(B) @file{/var/lib/news/active} $B$d!"F0(B $B;l(B @samp{NNTP LIST} $B$GJV$5$l$k$b$N$KN`;w$7$?$b$N(B) $B$r0];}$7!":#$+$i$@$H$+(B -$B$J$jA0$K(B @sc{nntp} $B%5!<%P!<$N$?$a$KDj5A$5$l$F$$$k!"(B@dfn{overview} $B%U%!%$(B -$B%k$b!"%0%k!<%W$XF~$k$H$-$N8zN($N$?$a$K:n@.$7$^$9!#%a!<%kJ,3d$G$O!"$?$/$5(B -$B$s$N%U%!%$%k$N:n@.$H!"(B@code{nnml} $B%"%/%F%#%V%U%!%$%k$N99?7!"%a%C%;!<%8Kh(B -$B$N(B overview $B$X$NDI2C$N$?$a$KCY$/$J$j$^$9$,!";HMQ;~$K$O%"%/%F%#%V%U%!%$%k(B -$B$H(B overview $B$G$N:w0z5!G=$K$h$j!"$H$F$D$b$J$/B.$/$J$j$^$9!#(B +$B$J$jA0$K(B @acronym{NNTP} $B%5!<%P!<$N$?$a$KDj5A$5$l$F$$$k!"(B +@dfn{overview} $B%U%!%$%k$b!"%0%k!<%W$XF~$k$H$-$N8zN($N$?$a$K:n@.$7$^$9!#(B +$B%a!<%kJ,3d$G$O!"$?$/$5$s$N%U%!%$%k$N:n@.$H!"(B@code{nnml} $B%"%/%F%#%V%U%!%$(B +$B%k$N99?7!"%a%C%;!<%8Kh$N(B overview $B$X$NDI2C$N$?$a$KCY$/$J$j$^$9$,!";HMQ;~(B +$B$K$O%"%/%F%#%V%U%!%$%k$H(B overview $B$G$N:w0z5!G=$K$h$j!"$H$F$D$b$J$/B.$/$J(B +$B$j$^$9!#(B @code{nnml} $B$O(B @dfn{inode} $B$rHs>o$K$?$/$5$s>CHq$7$^$9!#$9$J$o$A!"%U%!%$(B $B%k%7%9%F%`$G?7$7$$%U%!%$%k$rF~$l$k$?$a$N2DG=$J>l=j$rDj5A$9$k;q8;$r$?$/$5(B @@ -14472,7 +14441,7 @@ Rand MH $B%a!<%k1\Mw%7%9%F%`$O(B UNIX $B%7%9%F%`$K$+$J$jD9$$4VB8:_$7$F$$$^$9! $B$4$H$K0l$D3JG<$9$k$N$G!"(B@code{nnml} $B$NLsFsG\$NNL$N(B i$B%N!<%I$r;H$$$^$9!#(B (@code{df -i} $B$r;H$C$F(B i$B%N!<%I$N3d$jEv$F$,$I$l$[$I$?$/$5$s$"$k$+$rD4$Y$F(B $B2<$5$$!#(B) $B$=$N$?$a$KCY$/$J$C$?$jB?$/$N>l=j$r$NHs%V%m%C%/9=B$$N%U%!%$%k(B +@uref{http://www.namesys.com/, ReiserFS} $B$dB>$NHs%V%m%C%/9=B$$N%U%!%$%k(B $B%7%9%F%`$X$NE>49$r8!F$$7$F2<$5$$!#(B maildir $B$O/$7Hw$($D$D$"$j(B $B$K(B Emacs/W3 $B$H(B url $B%i%$%V%i%j$,I,MW$G$9!#(B $B$3$l$i$N%&%'%V%=!<%9$N0lHV$NLdBj$OD94|4V$OF0:n$7$J$$2DG=@-$,9b$$$3$H$G$9!#(B -@sc{html} $B%G!<%?$+$i>pJs$r=8$a$k$N$O$;$$$<$$?dB,$G!"9=B$$,JQ2=$7$?$H$-$K(B -$B$O!"(Bgnus $B%P%C%/%(%s%I$OF0:n$7$^$;$s!#$G$b!"$"$kDxEY?7$7$$%P!<%8%g%s$N%P%C(B -$B%/%(%s%I$r;H$C$F$$$l$PBg>fIW$N$O$:$G$9!#(B +@acronym{HTML} $B%G!<%?$+$i>pJs$r=8$a$k$N$O$;$$$<$$?dB,$G!"9=B$$,JQ2=$7$?(B +$B$H$-$K$O!"(Bgnus $B%P%C%/%(%s%I$OF0:n$7$^$;$s!#$G$b!"$"$kDxEY?7$7$$%P!<%8%g(B +$B%s$N%P%C%/%(%s%I$r;H$C$F$$$l$PBg>fIW$N$O$:$G$9!#(B $B$3$l$i$N%&%'%VJ}K!$K6&DL$9$k$3$H$O!"%&%'%V%=!<%9$O$7$P$7$PMn$A$F$$$?$j!"(B $B;HMQ2DG=$G$J$+$C$?$j!"C1=c$K3Z$7$`$K$OCY$9$.$k$3$H$,$"$k!"$H$$$&$3$H$G$9!#(B @@ -14678,7 +14647,7 @@ gnus $B$r=*N;$7$?$$$+$b$7$l$^$;$s!#(B @cindex Slashdot @cindex nnslashdot -Slashdot (@uref{http://slashdot.org/}) $B$O?M5$$N$"$k%K%e!<%9%5%$%H$G!"%K%e!<(B +@uref{http://slashdot.org/, Slashdot} $B$O?M5$$N$"$k%K%e!<%9%5%$%H$G!"%K%e!<(B $B%95-;v$N8e$K3hH/$J5DO@$,$J$5$l$F$$$^$9!#(B@code{nnslashdot} $B$G$OJXMx$JJ}K!(B $B$G$3$N2q5D<<$rFI$`$3$H$,$G$-$^$9!#(B @@ -14701,11 +14670,11 @@ Slashdot (@uref{http://slashdot.org/}) $B$O?M5$$N$"$k%K%e!<%9%5%$%H$G!"%K%e!<( @kbd{G DEL} $B$,:G$b/$7(B @sc{html} $B$KJQ49$5$l$^$9!#FC$K!"(B@samp{> } $B$G0zMQ$5$l(B -$B$?%F%-%9%H$O$=$NBe$o$j$K(B @code{blockquote} $B$G0zMQ$5$l!"=pL>$K$O$=$l$>$l(B -$B$N9T$N:G8e$K(B @code{br} $B$,DI2C$5$l$^$9!#$=$l0J30$O!"%a%C%;!<%8%P%C%U%!$K(B -$BD>@\(B @sc{html} $B$r=q$/$3$H$,$G$-$^$9!#(BSlashdot $B$O$$$/$D$+(B @sc{html} $B$rA*(B -$BJL$9$k$3$H$K5$$r$D$1$F$/$@$5$$!#(B +$B$r$9$k$H$-$O!">/$7(B @acronym{HTML} $B$KJQ49$5$l$^$9!#FC$K!"(B@samp{> } $B$G0zMQ(B +$B$5$l$?%F%-%9%H$O$=$NBe$o$j$K(B @code{blockquote} $B$G0zMQ$5$l!"=pL>$K$O$=$l(B +$B$>$l$N9T$N:G8e$K(B @code{br} $B$,DI2C$5$l$^$9!#$=$l0J30$O!"%a%C%;!<%8%P%C%U%!(B +$B$KD>@\(B @acronym{HTML} $B$r=q$/$3$H$,$G$-$^$9!#(BSlashdot $B$O$$$/$D(B +$B$+(B @acronym{HTML} $B$rA*JL$9$k$3$H$K5$$r$D$1$F$/$@$5$$!#(B $B0J2<$NJQ?t$G?6$kIq$$$rJQ$($k$3$H$,$G$-$^$9(B: @@ -14761,10 +14730,10 @@ Slashdot (@uref{http://slashdot.org/}) $B$O?M5$$N$"$k%K%e!<%9%5%$%H$G!"%K%e!<( @cindex nnultimate @cindex Ultimate Bulletin Board -Ultimate Bulletin Board (@uref{http://www.ultimatebb.com/}) $B$O$*$=$i$/0l(B -$BHVNI$/;H$o$l$F$$$k%&%'%V7G<(HD%7%9%F%`$G$7$g$&!#$H$F$b@0A3$H$7$FNI$$3&LL(B -$B$G!"(Bgnus $B$,%0%k!<%W$r:G?7$N>uBV$KJ]$C$F$*$/$?$a$K>pJs$rF@$k$3$H$,2DG=$G(B -$B$9!#(B +@uref{http://www.ultimatebb.com/, The Ultimate Bulletin Board} $B$O$*$=$i(B +$B$/0lHVNI$/;H$o$l$F$$$k%&%'%V7G<(HD%7%9%F%`$G$7$g$&!#$H$F$b@0A3$H$7$FNI$$(B +$B3&LL$G!"(Bgnus $B$,%0%k!<%W$r:G?7$N>uBV$KJ]$C$F$*$/$?$a$K>pJs$rF@$k$3$H$,2D(B +$BG=$G$9!#(B @code{nnultimate} $B$r;O$a$k$?$a$N0lHV4JC1$JJ}K!$O%0%k!<%W%P%C%U%!$G0J2<$N(B $B$h$&$J$b$N$r$9$k$3$H$G$9(B: @kbd{B nnultimate RET @@ -14797,11 +14766,11 @@ http://www.tcj.com/messboard.ubbcgi/ RET}$B!#(B($B6=L#$N$"$k2q5D<<(B @findex gnus-group-make-warchive-group @code{nnwarchive} $B$r;O$a$k$?$a$N0lHV4JC1$JJ}K!$O%0%k!<%W%P%C%U%!$G0J2<$N(B $B$h$&$J$b$N$r$9$k$3$H$G$9(B: @kbd{M-x gnus-group-make-warchive-group RET -an_egroup RET egroups RET www.egroups.comRET your@@email.address RET}$B!#(B -(@sc{an_egroup} $B$r9XFI$7$F$$$k%a!<%j%s%0%j%9%H$K!"(B -@sc{your@@emailaddress} $B$rEE;R%a!<%k%"%I%l%9$KCV$-49$($F$/$@$5$$!#(B) -$B$^$?$O(B @kbd{B nnwarchive RET mail-archive RET} $B$G%P%C%/%(%s%I$r%V%i%&%:(B -$B$7$F2<$5$$!#(B +@var{an_egroup} RET egroups RET www.egroups.com RET +@var{your@@email.address} RET}$B!#(B(@var{an_egroup} $B$r9XFI$7$F$$$k%a!<%j%s(B +$B%0%j%9%H$K!"(B@var{your@@emailaddress} $B$rEE;R%a!<%k%"%I%l%9$KCV$-49$($F2<(B +$B$5$$!#(B) $B$^$?$O(B @kbd{B nnwarchive RET mail-archive RET} $B$G%P%C%/%(%s%I$r(B +$B%V%i%&%:$7$F2<$5$$!#(B $B0J2<$N(B @code{nnwarchive} $BJQ?t$rJQ$($k$3$H$,2DG=$G$9(B: @@ -14847,7 +14816,7 @@ an_egroup RET egroups RET www.egroups.comRET your@@email.address RET}$B!#(B $BJ}$H$bL>A0$NJd40$,$G$-$^$9!#(B @c $B$^$?$O(B @kbd{B nnshimbun RET asahi RET} $B$G%P%C%/%(%s%I$r%V%i%&%:$9$k$3$H(B @c $B$K$h$C$F$b5-;v$rFI$`$3$H$,$G$-$^$9!#(B -$B2C$($F!"(B@sc{html} $B$N%I%-%e%a%s%H$r%$%s%i%$%sI=<($5$;$?$$>l9g$O!"(B +$B2C$($F!"(B@acronym{HTML} $B$N%I%-%e%a%s%H$r%$%s%i%$%sI=<($5$;$?$$>l9g$O!"(B @file{~/.gnus.el} $B%U%!%$%k$K0J2<$N@_Dj$r$7$F2<$5$$!#(B @lisp @@ -14974,19 +14943,19 @@ Web Newspaper $B$K4X$9$k0J2<$N(B @code{nnshimbun} $BJQ?t$rJQ$($k$3$H$,2DG=$G$ $B8D!9$KF|?t$r@_Dj$7$J$$>l9g$O%G%#%U%)%k%H$NCM$,E,MQ$5$l$^$9!#(B}$B!#$"$"!"$b(B $B$A$m$s$"$J$?$,;0F|A0$N?7J95-;v$r>C5n$9$k$h$&$K@_Dj$7$?$+$i$H$$$C$F!"?7J9(B $BC$($F$7$^$&$o$1$G$O$"$j$^$;$s!#>C$($k$N(B -$B$O$"$J$?8D?M$,;}$C$F$$$k(B @code{nnshimbun} $BMQ$N(B @sc{nov} $B%U%!%$(B -$B%k(B @footnote{@code{nnshimbun} $BMQ$N(B @sc{nov} $B%U%!%$%k$H(B +$B$O$"$J$?8D?M$,;}$C$F$$$k(B @code{nnshimbun} $BMQ$N(B @acronym{NOV} $B%U%!%$(B +$B%k(B @footnote{@code{nnshimbun} $BMQ$N(B @acronym{NOV} $B%U%!%$%k$H(B $B$O(B ``~/News/shimbun/asahi/national/.overview'' $B$N$h$&$J$b$N$G$9!#(B} $B$N3:(B $BEv$9$kItJ,$G!"$=$l$K$h$C$F$=$N5-;v$OFsEY$H35N,%P%C%U%!$K8=$l$J$/$J$j$^$9!#(B @code{nnshimbun} $B%P%C%/%(%s%I$G$O5-;v$N4|8B@Z$l>C5n$r9T$J$o$J$$(B -$B$H(B @sc{nov} $B%U%!%$%k$,:]8BL5$/B@$jB3$1!"?7J9l9g$K$O!"2a5n$NA45-;v$rJ]M-$7$F(B -$B$$$k>l9g$,>/$J$/$J$$$G$7$g$&!#@N$"$J$?$,6=$8$?0lO"$N5-;v$rFI$_JV$7$F2{$+(B -$B$7$`$?$a$K!"$=$&$$$&%0%k!<%W$G$O4|8B@Z$l>C5n$O$5$;$?$/$J$$$H;W$&$+$b$7$l(B -$B$^$;$s!#(B +$B$H(B @acronym{NOV} $B%U%!%$%k$,:]8BL5$/B@$jB3$1!"?7J9l9g$K$O!"2a5n$NA45-;v$rJ](B +$BM-$7$F$$$k>l9g$,>/$J$/$J$$$G$7$g$&!#@N$"$J$?$,6=$8$?0lO"$N5-;v$rFI$_JV$7(B +$B$F2{$+$7$`$?$a$K!"$=$&$$$&%0%k!<%W$G$O4|8B@Z$l>C5n$O$5$;$?$/$J$$$H;W$&$+(B +$B$b$7$l$^$;$s!#(B $B$N%a!<%k%P%C%/%(%s%I$HF1MM$NJ}(B $BK!$G%0%k!<%WKh$K<+F04|8B@Z$l>C5n2DG=$K$7$?$j!";D$7$F$*$/4|4V$r@_Dj$9$k$3(B @@ -15145,59 +15114,60 @@ Gnus $B$O%&%'%V%Z!<%8$rH(B -$B$9$k$h$&$K$J$k$G$7$g$&!#(B +$B$G(B @acronym{HTML} $B%j%s%/$rC!$1$P!"(B@code{browse-url} $B$r;H$C$F$=$N%j%s%/$r(B +$B;2>H$9$k$h$&$K$J$k$G$7$g$&!#(B @node IMAP @section IMAP @cindex nnimap -@cindex IMAP - -@sc{imap} $B$O%a!<%k(B ($B$b$7$/$O!"%K%e!<%9!"$b$7$/$O(B @dots{}) $B$rFI$`$?$a$N%M%C(B -$B%H%o!<%/%W%m%H%3%k$G$9!#8=BeIw$N(B @sc{nntp} $B$H9M$($F$/$@$5$$!#(B -@sc{imap} $B%5!<%P!<$X$N@\B3$O%K%e!<%9%5!<%P!<$X$N@\B3$HHs>o$K;w$F$$$F!"$=(B -$B$N%5!<%P!<$N%M%C%H%o!<%/%"%I%l%9$r;XDj$9$k$@$1$K$J$C$F$$$^$9!#(B - -@sc{imap} $B$K$OFs$D$NFCo$K;w$F$$(B +$B$F!"$=$N%5!<%P!<$N%M%C%H%o!<%/%"%I%l%9$r;XDj$9$k$@$1$K$J$C$F$$$^$9!#(B + +@acronym{IMAP} $B$K$OFs$D$NFCH$7$F2<$5$$!#(B -@sc{imap} $B$r%a!<%k$rCyB"$9$k%W%m%H%3%k$H$7$F;H$$$?$$$H$-$O!"(B +@acronym{IMAP} $B$r%a!<%k$rCyB"$9$k%W%m%H%3%k$H$7$F;H$$$?$$$H$-$O!"(B @code{gnus-secondary-select-methods} $B$K(B nnimap $B$rEPO?$7$F2<$5$$!#$3$l$K(B -$B$h$C$F(B gnus $B$O(B @sc{imap} $B%5!<%P!<$KCyB"$5$l$F$$$k%a!<%k$rA`:n$9$k$h$&$K(B -$B$J$j$^$9!#$3$l$,$3$3$G@bL@$9$k;H$$J}$G$9!#(B +$B$h$C$F(B gnus $B$O(B @acronym{IMAP} $B%5!<%P!<$KCyB"$5$l$F$$$k%a!<%k$rA`:n$9$k$h(B +$B$&$K$J$j$^$9!#$3$l$,$3$3$G@bL@$9$k;H$$J}$G$9!#(B -$B$$$/$D$+$N(B @sc{imap} $B%5!<%P!<$r(B @file{~/.gnus.el} $B$G@_Dj$9$k$H!"$?$V$s0J(B -$B2<$N$h$&$J$b$N$K$J$k$G$7$g$&!#(B($BCm(B: TLS/SSL $B$G$O30It%W%m%0%i%`$H%i%$%V%i(B -$B%j$,I,MW$G$9!#0J2<$r;2>H$7$F2<$5$$!#(B) +$B$$$/$D$+$N(B @acronym{IMAP} $B%5!<%P!<$r(B @file{~/.gnus.el} $B$G@_Dj$9$k$H!"$?(B +$B$V$s0J2<$N$h$&$J$b$N$K$J$k$G$7$g$&!#(B($BCm(B: @acronym{TLS}/@acronym{SSL} $B$G(B +$B$O30It%W%m%0%i%`$H%i%$%V%i%j$,I,MW$G$9!#0J2<$r;2>H$7$F2<$5$$!#(B) @lisp (setq gnus-secondary-select-methods - '((nnimap "simpleserver") ; $BIaDL$N@_Dj(B - ; SSH $B%]!<%H$r%U%)%o!<%I$7$?%5!<%P!<(B: + '((nnimap "simpleserver") ; @r{$BIaDL$N@_Dj(B} + ; @r{SSH $B%]!<%H$r%U%)%o!<%I$7$?%5!<%P!<(B:} (nnimap "dolk" (nnimap-address "localhost") (nnimap-server-port 1430)) - ; $B%m!<%+%k%[%9%H$G1?E>$7$F$$$k(B UW $B%5!<%P!<(B: + ; @r{$B%m!<%+%k%[%9%H$G1?E>$7$F$$$k(B UW $B%5!<%P!<(B:} (nnimap "barbar" (nnimap-server-port 143) (nnimap-address "localhost") (nnimap-list-pattern ("INBOX" "mail/*"))) - ; $BF?L>$G;H$($k(B cyrus $B$N8x=0%5!<%P!<(B: + ; @r{$BF?L>$G;H$($k(B cyrus $B$N8x=0%5!<%P!<(B:} (nnimap "cyrus.andrew.cmu.edu" (nnimap-authenticator anonymous) (nnimap-list-pattern "archive.*") (nnimap-stream network)) - ; $BI8=`$G$O$J$$%]!<%H$N(B SSL $B%5!<%P!<(B: + ; @r{$BI8=`$G$O$J$$%]!<%H$N(B @acronym{SSL} $B%5!<%P!<(B:} (nnimap "vic20" (nnimap-address "vic20.somewhere.com") (nnimap-server-port 9930) @@ -15216,13 +15186,13 @@ Gnus $B$O%&%'%V%Z!<%8$rl9g$O2>A[%5!<%P!<(B -$B$N$b$N$K$J$j$^$9!#(B +$B1s3V(B @acronym{IMAP} $B%5!<%P!<$N%"%I%l%9$G$9!#;XDj$5$l$F$$$J$$>l9g$O2>A[%5!<(B +$B%P!<$N$b$N$K$J$j$^$9!#(B @item nnimap-server-port @vindex nnimap-server-port $B@\B3$r;n$_$k%5!<%P!<$N%]!<%H$G$9!#%G%#%U%)%k%H$O%]!<%H(B 143$B!"$^$?(B -$B$O(B TLS/SSL $B$G$O(B 993 $B$G$9!#(B +$B$O(B @acronym{TLS}/@acronym{SSL} $B$G$O(B 993 $B$G$9!#(B $B$3$l$O@0?t$G$J$1$l$P$J$j$^$;$s!#0J2<$O%5!<%P!<;XDj$NNc$G$9!#(B @@ -15235,9 +15205,9 @@ Gnus $B$O%&%'%V%Z!<%8$ro$KB?$/$N%a!<%k%\%C%/%9$,$"$k$1$l$I!"6=L#$N$"$k$b$N$O>/$7$@$1$G(B -$B$"$k$H$-$K;HMQ$7$^$9!#%5!<%P!<$K$O%[!<%`%G%#%l%/%H%j!<$r(B @sc{imap} $B7PM3(B -$B$G=P$9$b$N$b$"$j$^$9$N$G!"$=$N>l9g$O$*$=$i$/%a!<%k%\%C%/%9(B -$B$r(B @file{~/Mail/*} $B$K@)8B$7$?$$$G$7$g$&!#(B +$B$"$k$H$-$K;HMQ$7$^$9!#%5!<%P!<$K$O%[!<%`%G%#%l%/%H%j!<(B +$B$r(B @acronym{IMAP} $B7PM3$G=P$9$b$N$b$"$j$^$9$N$G!"$=$N>l9g$O$*$=$i$/%a!<%k(B +$B%\%C%/%9$r(B @file{~/Mail/*} $B$K@)8B$7$?$$$G$7$g$&!#(B $BJ8;zNs$O(B REFERENCE $B$H>e$NJ8;zNs$H$N(B cons $B$G$"$k$3$H$b$G$-$^$9!#$I(B $B$N(B REFERENCE $B$,;HMQ$5$l$k$+$O%5!<%P!Z$K$h$k(B IMAP $B@\B3$r5/F0$9$k$?$a$N(B -$B%3%^%s%I9T$N%j%9%H$r;XDj$7$^$9!#$3$l$i$O@\B3$,3NN)$9$k$^$G!"$^$?$O%j%9%H(B -$B$,;H$$?T$/$5$l$k$^$G!"=g$0$j$K;n$5$l$^$9!#%G%#%U%)%k%H$G$O!"(B +$B$3$N%Q%i%a!<%?$O!"I{%7%'%k$G(B GSSAPI $BG'>Z$K$h$k(B @acronym{IMAP} $B@\B3$r5/F0(B +$B$9$k$?$a$N%3%^%s%I9T$N%j%9%H$r;XDj$7$^$9!#$3$l$i$O@\B3$,3NN)$9$k$^$G!"$^(B +$B$?$O%j%9%H$,;H$$?T$/$5$l$k$^$G!"=g$0$j$K;n$5$l$^$9!#%G%#%U%)%k%H$G$O!"(B @uref{http://www.gnu.org/software/gsasl/} $B$K$"$k(B GNU SASL $B$K$h(B $B$k(B @samp{gsasl} $B$H!"(BCyrus IMAPD $B$K$h$k(B @samp{imtest} $B%W%m%0%i(B $B%`(B (@code{imap-kerberos4-program} $B;2>H(B) $B$,;n$5$l$^$9!#(B @vindex imap-ssl-program -SSL $B@\B3$N$?$a$N(B OpenSSL $B%W%m%0%i%`$O(B @uref{http://www.openssl.org/} $B$+(B -$B$iF~l9g!"JQ(B +@acronym{IMAP} $B@\B3$K(B @code{shell} $B%9%H%j!<%`$r;H$&>l9g!"JQ(B $B?t(B @code{imap-shell-program} $B$O2?$N%W%m%0%i%`$r8F$V$+$r;XDj$7$^$9!#(B @item nnimap-authenticator @@ -15366,13 +15338,13 @@ nnimap $B$O$=$l$b%5%]!<%H$7$^$9!#$7$+$7!"(BSSLeay $B$N:G?7HG$G$"$k(B 0.9.x  @cindex Expunging @vindex nnimap-expunge-on-close -$B%Q%k%a%K%G%9$H0c$C$F!"(B@sc{imap} $B$N@_7W\$7$/@bL@$9$k$H!"(B@sc{imap} $B$OC5n$7$J$$!"5-;v$K(B @code{Deleted} $B$H$$$&0u$rIU$1$k35G0$,$"$j!"$3(B -$B$l(B ($B$($C$H!"(B@code{Deleted} $B$H$$$&0u$rIU$1$k$3$H$G(B -$B$9(B) $B$,(B nnimap $B$,(B Gnus $B$G5-;v$r>C5n$9$k$H$-$K$9$k$3$H$G$9(B (@kbd{B DEL} $B$J(B -$B$I$G(B)$B!#(B -($BLuCm(B: $B%Q%k%a%K%G%9$O5*85A0(B 5 $B@$5*$N%.%j%7%"$N(B Elea $BGI$NE/3X\$7$/@bL@$9$k$H!"(B +@acronym{IMAP} $B$OC5n$7$J$$!"5-;v$K(B @code{Deleted} $B$H$$$&(B +$B0u$rIU$1$k35G0$,$"$j!"$3$l(B ($B$($C$H!"(B@code{Deleted} $B$H$$$&0u$rIU$1$k$3$H(B +$B$G$9(B) $B$,(B nnimap $B$,(B Gnus $B$G5-;v$r>C5n$9$k$H$-$K$9$k$3$H$G(B +$B$9(B (@kbd{B DEL} $B$J$I$G(B)$B!#(B($BLuCm(B: $B%Q%k%a%K%G%9$O5*85A0(B 5 $B@$5*$N%.%j%7%"(B +$B$N(B Elea $BGI$NE/3XC5n$5$l$F$$$J$$$N(B $B$G!"C5n$9$k$?$a$NJ}K!$,I,MW$H$J$j$^$9!#=[4D$7$F$$$k$h$&$K46$8$^$9(B @@ -15390,8 +15362,9 @@ nnimap $B$O$=$l$b%5%]!<%H$7$^$9!#$7$+$7!"(BSSLeay $B$N:G?7HG$G$"$k(B 0.9.x  $B5-;v$r>C5n$7$^$9!#(B @item never $B7h$7$F5-;v$r>C5n$7$^$;$s!#8=:_$O!">C5n$N0u$,IU$$$?5-;v$r(B nnimap $B$GI=<($9(B -$B$kJ}K!$O$"$j$^$;$s$,!"B>$N(B @sc{imap} $B%/%i%$%"%s%H$O$G$O$G$-$k$+$b$7$l$^(B -$B$;$s!#$N(B @acronym{IMAP} $B%/%i%$%"%s%H$O$G$O$G$-$k$+$b$7(B +$B$l$^$;$s!#C5n$5$l$?5-;v$r:o=|$9$k$+$I$&$+(B $B$r?R$M$^$9!#(B @@ -15400,12 +15373,12 @@ nnimap $B$O$=$l$b%5%]!<%H$7$^$9!#$7$+$7!"(BSSLeay $B$N:G?7HG$G$"$k(B 0.9.x  @item nnimap-importantize-dormant @vindex nnimap-importantize-dormant -$BHs(B-@code{nil} ($B%G%#%U%)%k%H(B) $B$@$C$?$i!"B>$N(B @sc{imap} $B%/%i%$%"%s%H$N$?$a(B -$B$KJ]N15-;v$r0uIU$-$H$7$F$b0u$rIU$1$^$9!#(Bgnus $B$NFbIt$G$O!"J]N15-;v$O85!9(B -$B$9$G$KJ]N15-;v$H$7$F$N$_0u$,IU$1$i$l$F$$$^$9!#$3$l$O!"B>$N(B @sc{imap} $B%/(B -$B%i%$%"%s%H$K$*$1$kJ]N15-;v$r!"$"$?$+$b0uIU$-$N$h$&$K$-$oN)$?$;$^$9!#(B($BJL(B -$B$N8@$$J}$r$9$k$H!"(Bgnus $B$OFs$D$N0u$rIU$1!"(B@sc{imap} $B$O$?$C$?0l$D$@$H$$$&(B -$B$3$H$G$9!#(B) +$BHs(B-@code{nil} ($B%G%#%U%)%k%H(B) $B$@$C$?$i!"B>$N(B @acronym{IMAP} $B%/%i%$%"%s%H(B +$B$N$?$a$KJ]N15-;v$r0uIU$-$H$7$F$b0u$rIU$1$^$9!#(Bgnus $B$NFbIt$G$O!"J]N15-;v(B +$B$O85!9$9$G$KJ]N15-;v$H$7$F$N$_0u$,IU$1$i$l$F$$$^$9!#$3$l$O!"B>(B +$B$N(B @acronym{IMAP} $B%/%i%$%"%s%H$K$*$1$kJ]N15-;v$r!"$"$?$+$b0uIU$-$N$h$&$K(B +$B$-$oN)$?$;$^$9!#(B($BJL$N8@$$J}$r$9$k$H!"(Bgnus $B$OFs$D$N0u$rIU$1!"(B +@acronym{IMAP} $B$O$?$C$?0l$D$@$H$$$&$3$H$G$9!#(B) $B$?$V$s$3$l$r$$$8$j$^$o$9$N$O!"$"$J$?$,%f!<%6C10L$NJ]N1%U%i%0$rIU$1$h$&$H(B $B$9$k$@$1$NM}M3$K$h$k$G$7$g$&!#$3$s$J46$8$G(B: @@ -15425,7 +15398,7 @@ nnimap $B$O$=$l$b%5%]!<%H$7$^$9!#$7$+$7!"(BSSLeay $B$N:G?7HG$G$"$k(B 0.9.x  @vindex nnimap-expunge-search-string $B$3$NJQ?t$K$O!"4|8B@Z$l>C5n$9$k$N$,K>$^$7$$5-;v$rC5$9$H$-$K%5!<%P!<$KAw$C(B -$B$?(B @sc{imap} $B$N8!:w%3%^%s%I$,F~$C$F$$$^$9!#%G%#%U%)%k%H(B +$B$?(B @acronym{IMAP} $B$N8!:w%3%^%s%I$,F~$C$F$$$^$9!#%G%#%U%)%k%H(B $B$O(B @code{"UID %s NOT SINCE %s"} $B$G!"$3$3$G:G=i$N(B @code{%s} $B$O(B UID $B$GCV$-(B $B49$($i$l!"FsHVL\$N(B @code{%s} $B$OF|IU$GCV$-49$($i$l$^$9!#(B @@ -15446,10 +15419,9 @@ nnimap $B$K5-;v$NFbItE*$JF|IU$NBe$o$j$K(B Date: $B$r;H$&$h$&$K$5$;$^$9!#$5$i$ @menu * Splitting in IMAP:: nnimap $B$G%a!<%k$rJ,3d$9$k(B * Expiring in IMAP:: nnimap $B$K$h$k%a!<%k$N4|8B@Z$l>C5n(B -* Editing IMAP ACLs:: $B%a!<%k%\%C%/%9$X$NB>$NMxMQ$NMxMQA06u4V$r;H$&(B($B;H$o$J$$(B)$BJ}K!(B +* A note on namespaces:: gnus $B$G(B @acronym{IMAP} $BL>A06u4V$r;H$&(B($B;H$o$J$$(B)$BJ}K!(B @end menu @node Splitting in IMAP @@ -15457,10 +15429,10 @@ nnimap $B$K5-;v$NFbItE*$JF|IU$NBe$o$j$K(B Date: $B$r;H$&$h$&$K$5$;$^$9!#$5$i$ @cindex splitting imap mail $BJ,3d$O(B gnus $B$NMxMQA0$r;XDj$7$?J8;zNs$+J8;zNs(B -$B$N%j%9%H$G$9!#=i4|CM$O(B @code{nil} $B$G!"J,3d$O;HMQ$7$J$$$h$&$K$J$C$F$$$^$9(B! +$BJ,3d$N85$H$J$k(B @acronym{IMAP} $B$N%a!<%k%\%C%/%9$NL>A0$r;XDj$7$?J8;zNs$+J8(B +$B;zNs$N%j%9%H$G$9!#=i4|CM$O(B @code{nil} $B$G!"J,3d$O;HMQ$7$J$$$h$&$K$J$C$F$$(B +$B$^$9(B! @lisp (setq nnimap-split-inbox @@ -15501,9 +15474,9 @@ Nnmail $B$KBP1~$9$k$b$N$O$"$j$^$;$s!#(B $B$5$l$^$9!#(B $B$3$NJQ?t$O%j%9%H$N%j%9%H$+$i@.$j$^$9!#I{%j%9%H$N:G=i$NMWAG(B -$B$O(B @sc{imap} $B$N%a!<%k%\%C%/%9$G!"Fs$D$a$NMWAG$N@55,I=8=$K9gCW$7$?5-;v$N(B -$B0\F0@h$r;XDj$7$^$9!#$o$+$j$^$7$?$+(B? $B$$$$$(!";d$b$o$+$j$^$;$s!#Nc$,I,MW$G(B -$B$9!#(B +$B$O(B @acronym{IMAP} $B$N%a!<%k%\%C%/%9$G!"Fs$D$a$NMWAG$N@55,I=8=$K9gCW$7$?5-(B +$B;v$N0\F0@h$r;XDj$7$^$9!#$o$+$j$^$7$?$+(B? $B$$$$$(!";d$b$o$+$j$^$;$s!#Nc$,I,(B +$BMW$G$9!#(B @lisp (setq nnimap-split-rule @@ -15576,10 +15549,10 @@ Nnmail $B$GBP1~$9$k$b$N(B: @code{nnmail-split-methods}. $B$3$N=R8l$K%^%C%A$9$k(B @code{nnimap-split-inbox} $B$K$"$k%a!<%k$OJ,3d$5$l$^(B $B$9!#$3$l$OJ8;zNs$G4{DjCM$O(B @samp{UNSEEN UNDELETED} $B$G$9!#(B -$B$b$7$"$J$?$,(B inbox $B$K$"$k%a!<%k$rFI$`$?$a$KJL$N(B @sc{imap} $B%/%i%$%"%s%H$r(B -$B;H$C$F$$$k$,!"9XFIEY$K4X$o$i$:$K$9$Y$F$N5-;v$r(B gnus $B$KJ,3d$5$;$?$$$J$i$P!"(B -$B$3$l$OLr$KN)$D$+$b$7$l$^$;$s!#$=$N>l9g$O(B @samp{UNDELETED} $B$KJQ$($l$PNI$$(B -$B$G$7$g$&!#(B +$B$b$7$"$J$?$,(B inbox $B$K$"$k%a!<%k$rFI$`$?$a$KJL$N(B @acronym{IMAP} $B%/%i%$%"(B +$B%s%H$r;H$C$F$$$k$,!"9XFIEY$K4X$o$i$:$K$9$Y$F$N5-;v$r(B gnus $B$KJ,3d$5$;$?$$(B +$B$J$i$P!"$3$l$OLr$KN)$D$+$b$7$l$^$;$s!#$=$N>l9g$O(B @samp{UNDELETED} $B$KJQ$((B +$B$l$PNI$$$G$7$g$&!#(B @item nnimap-split-fancy @cindex splitting, fancy @@ -15619,19 +15592,19 @@ Nnmail $B$GBP1~$9$k$b$N(B: @code{nnmail-split-fancy}. @code{nnimap} $B$O40A4$J(B @code{nnmail} $BM3Mh$N%P%C%/%(%s%I$G$O$"$j$^$;$s$,!"(B $B$?$$$F$$$N4|8B@Z$l>C5n(B (@pxref{Expiring Mail}) $B$NI8=`5!G=$r%5%]!<%H$7$^(B -$B$9!#(BIMAP $B$NJ,3d(B (@pxref{Splitting in IMAP}) $B$G$O(B @code{nnmail} $B$NJQ?t$r(B -$BJ#@=$7$J$$(B ($BNc$($P(B @var{nnimap-expiry-wait} $B$r@8@.$7$J$$(B) $BE@$,0c$&$N$G$9(B -$B$,!"(B@code{nnmail} $B$NJQ?t$rN.MQ$7$^$9!#0J2<$O(B @code{nnimap} $B$N4|8B@Z$l>C(B -$B5n=hM}$G;H$o$l$kJQ?t$G$9!#(B - -$B4|8B@Z$l>C5n$N0u$,$I$N$h$&$KE,@Z$K(B @sc{imap} $B%5!<%P!<$K5-O?$5$l$k$+$K$D(B -$B$$$F$b$3$3$G8@5Z$7$F$*$-$^$7$g$&!#4|8B@Z$l>C5n$N0u$O(B @code{imap} $B%/%i%$(B -$B%"%s%HFCM-$N0u$G$"$k(B @code{gnus-expire} $B$KJQ49$5$l!"%a%C%;!<%8$K5-O?$5$l(B -$B$^$9!#$3$l$O!"B>$N%/%i%$%"%s%H$O%a%C%;!<%8$N%/%i%$%"%s%HFCM-$N%U%i%0$r8+(B -$B$k$+$b$7$l$J$$$N$KBP$7$F!"(BGnus $B$O$?$V$s(B @code{gnus-expire} $B$N0u$rE,@Z$K(B -$B07$$M}2r$9$k$@$1$G$"$k$3$H$r0UL#$7$^$9!#$^$?$3$l$O%5!<%P!<$,!"%/%i%$%"%s(B -$B%HFCM-$N%U%i%0$N%a%C%;!<%8$X$N915WE*$JJ]B8$r%5%]!<%H$7$J$1$l$P$J$i$J$$$3(B -$B$H$b0UL#$7$^$9!#9,$$$K!"$?$$$F$$$O%5%]!<%H$7$^$9!#(B +$B$9!#(B@acronym{IMAP} $B$NJ,3d(B (@pxref{Splitting in IMAP}) $B$G(B +$B$O(B @code{nnmail} $B$NJQ?t$rJ#@=$7$J$$(B ($BNc$($P(B @var{nnimap-expiry-wait} $B$r(B +$B@8@.$7$J$$(B) $BE@$,0c$&$N$G$9$,!"(B@code{nnmail} $B$NJQ?t$rN.MQ$7$^$9!#0J2<(B +$B$O(B @code{nnimap} $B$N4|8B@Z$l>C5n=hM}$G;H$o$l$kJQ?t$G$9!#(B + +$B4|8B@Z$l>C5n$N0u$,$I$N$h$&$KE,@Z$K(B @acronym{IMAP} $B%5!<%P!<$K5-O?$5$l$k$+(B +$B$K$D$$$F$b$3$3$G8@5Z$7$F$*$-$^$7$g$&!#4|8B@Z$l>C5n$N0u$O(B @code{imap} $B%/(B +$B%i%$%"%s%HFCM-$N0u$G$"$k(B @code{gnus-expire} $B$KJQ49$5$l!"%a%C%;!<%8$K5-O?(B +$B$5$l$^$9!#$3$l$O!"B>$N%/%i%$%"%s%H$O%a%C%;!<%8$N%/%i%$%"%s%HFCM-$N%U%i%0(B +$B$r8+$k$+$b$7$l$J$$$N$KBP$7$F!"(BGnus $B$O$?$V$s(B @code{gnus-expire} $B$N0u$rE,(B +$B@Z$K07$$M}2r$9$k$@$1$G$"$k$3$H$r0UL#$7$^$9!#$^$?$3$l$O%5!<%P!<$,!"%/%i%$(B +$B%"%s%HFCM-$N%U%i%0$N%a%C%;!<%8$X$N915WE*$JJ]B8$r%5%]!<%H$7$J$1$l$P$J$i$J(B +$B$$$3$H$b0UL#$7$^$9!#9,$$$K!"$?$$$F$$$O%5%]!<%H$7$^$9!#(B @table @code @item nnmail-expiry-wait @@ -15643,23 +15616,23 @@ Nnmail $B$GBP1~$9$k$b$N(B: @code{nnmail-split-fancy}. @item nnmail-expiry-target $B$3$NJQ?t$O%5%]!<%H$5$l$F$$$F!"FbItE*$K$O$3$l$r07$&(B @code{nnmail} $B4X?t$r(B -$B8F$V$3$H$K$h$C$F$5$l$k(B) -$B$H$$$&:GE,2=$b4^$_$^$9!#(B +$B8F$V$3$H$K$h$C$F$5$l$k(B) $B$H$$$&:GE,2=$b4^$_$^$9!#(B @end table @node Editing IMAP ACLs @subsection IMAP $B$N(B ACL $B$rJT=8$9$k!#(B @cindex editing imap acls @cindex Access Control Lists -@cindex Editing @sc{imap} ACLs +@cindex Editing @acronym{IMAP} ACLs @kindex G l @findex gnus-group-nnimap-edit-acl -ACL $B$O(B Access Control List ($B;HMQ@)8B0lMw(B) $B$NN,$G$9!#(B@sc{imap} $B$G(B +ACL $B$O(B Access Control List ($B;HMQ@)8B0lMw(B) $B$NN,$G$9!#(B@acronym{IMAP} $B$G(B $B$O(B ACL $B$OB>$NMxMQ$NMxMQ/$J$/$H$b(B Cyrus $B$N%5!<%P!<$K$*$$$F$O!"(B``plussing'' $B$,F0:n$9$k$?$a$K(B ($B$D(B -$B$^$j!"(Buser+mail@@domain $B$,(B INBOX.mailbox $B$H$$$&(B @sc{imap} $B$N%a!<%k%\%C%/(B -$B%9$K$J$k(B)$B!"MxMQA06u4V$K4X$9$kCm0U(B -@cindex IMAP namespace +@cindex @acronym{IMAP} namespace @cindex namespaces -IMAP $B%W%m%H%3%k$K$OL>A06u4V(B (namespaces) $B$H8F$P$l$k35G0$,$"$j!"0J2<(B -$B$N(B RFC2060 $B$NJ8=q$G5-=R$5$l$F$$$^$9!#(B +@acronym{IMAP} $B%W%m%H%3%k$K$OL>A06u4V(B (namespaces) $B$H8F$P$l$k35G0$,$"$j!"(B +$B0J2<$N(B RFC2060 $B$NJ8=q$G5-=R$5$l$F$$$^$9!#(B @example 5.1.2. $B%a!<%k%\%C%/%9L>A06u4VL?L>5,B'(B @@ -15720,11 +15694,11 @@ IMAP $B%W%m%H%3%k$K$OL>A06u4V(B (namespaces) $B$H8F$P$l$k35G0$,$"$j!"0J2<(B ($BLuCp(B: http://kame.zit.to/~obata/imap/rfc/rfc2060ja.txt $B$h$jE>:\(B) @end example -$B$3$3$K$O(B gnus $B$K$*$1$k(B IMAP $B$NZ$9$kJ8=q$,L5$$$N$G$9(B -$B$,!"$$$/$D$+$N%5!<%P!<$O(B gnus $B$N%a!<%k%\%C%/%9$NL>A0$N;H$$J}$G$OF0:n$7$J(B -$B$$$d$jJ}$GL>A06u4V@\F,<-$r;H$C$F$$$^$9!#(B +$B$3$3$K$O(B gnus $B$K$*$1$k(B @acronym{IMAP} $B$NZ$9$kJ8=q$,(B +$BL5$$$N$G$9$,!"$$$/$D$+$N%5!<%P!<$O(B gnus $B$N%a!<%k%\%C%/%9$NL>A0$N;H$$J}$G(B +$B$OF0:n$7$J$$$d$jJ}$GL>A06u4V@\F,<-$r;H$C$F$$$^$9!#(B -$B6qBNE*$K$O!"%o%7%s%H%sBg3X$N(B IMAP $B%5!<%P!<(B +$B6qBNE*$K$O!"%o%7%s%H%sBg3X$N(B @acronym{IMAP} $B%5!<%P!<(B $B$O(B @code{#driver.mbx/read-mail} $B$N$h$&$J%a!<%k%\%C%/%9L>$r;H$C$F$$$F!"$=(B $B$l$O(B @sc{create} $B$H(B @sc{append} $B%3%^%s%I$G$@$1M-8z$G$9!#%a!<%k%\%C%/%9$,(B $B:n$i$l$?8e(B ($B$^$?$O%a%C%;!<%8$,%a!<%k%\%C%/%9$KDI2C$5$l$?8e(B) $B$G$O!"$=$l$O(B @@ -15733,9 +15707,9 @@ IMAP $B%W%m%H%3%k$K$OL>A06u4V(B (namespaces) $B$H8F$P$l$k35G0$,$"$j!"0J2<(B $B%k%\%C%/%9L>$rJ]>Z$G$-$J$$$N$G!"@dBP$KL>A06u4V@\F,<-$,IU$$$?%a!<%k%\%C%/(B $B%9L>$r(B gnus $B$G;H$C$F$O$$$1$^$;$s!#(B -@code{#driver.*/} $B@\F,<-$K$D$$$F$N$5$i$J$k;H$$J}$N>pJs(B -$B$O(B UoW @sc{imapd} $B$NJ8=q$r8+$F2<$5$$!#$=$l$i$O6/NO$J9)6q$J$N$G!"$I$s$J8z(B -$B2L$,$"$k$+$,3N$+$J>l9g$@$1;H$C$F2<$5$$!#(B +@code{#driver.*/} $B@\F,<-$K$D$$$F$N$5$i$J$k;H$$J}$N>pJs$O(B UoW IMAPD $B$NJ8(B +$B=q$r8+$F2<$5$$!#$=$l$i$O6/NO$J9)6q$J$N$G!"$I$s$J8z2L$,$"$k$+$,3N$+$J>l9g(B +$B$@$1;H$C$F2<$5$$!#(B @node Other Sources @section $B$=$NB>$N%0%k!<%W8;(B @@ -15746,13 +15720,11 @@ Gnus $B$O$?$@C1$K%K%e!<%9$d%a!<%k$rFI$`0J>e$N$3$H$,$G$-$^$9!#0J2<(B $B$9!#(B @menu -* Directory Groups:: $B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$K(B - $BFI$`(B +* Directory Groups:: $B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$KFI$`(B * Anything Groups:: Dired? $BC/$,(B dired $B$J$s$F;H$&$N(B? * Document Groups:: $B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG(B * SOUP:: @sc{soup} $B%Q%1%C%H$r(B ``$B%*%U%i%$%s(B'' $B$GFI$`(B -* Mail-To-News Gateways:: $B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7(B - $B$F5-;v$rEj9F$9$k(B +* Mail-To-News Gateways:: $B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7$F5-;v$rEj9F$9$k(B @end menu @node Directory Groups @@ -15776,7 +15748,7 @@ Gnus $B$O$?$@C1$K%K%e!<%9$d%a!<%k$rFI$`0J>e$N$3$H$,$G$-$^$9!#0J2<(B @samp{$B%7%J(B} $B$N8~$3$&$N%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$H$7$FFI$`$3$H$r2D(B $BG=$K$9$k$N$G$9!#$*!<$$!"J,;6%K%e!<%9$h(B! -@code{nndir} $B$O(B @sc{nov} $B%U%!%$%k$,B8:_$9$l$P$=$l$rMxMQ$7$^$9!#(B +@code{nndir} $B$O(B @acronym{NOV} $B%U%!%$%k$,B8:_$9$l$P$=$l$rMxMQ$7$^$9!#(B @code{nndir} $B$O(B ``$BFI$_=P$7@lMQ(B'' $B$N%P%C%/%(%s%I$G$9(B --- $B$3$NA*BrJ}K!$G$O!"(B $B5-;v$N:o=|$d4|8B@Z$l>C5n$r9T$J$&$3$H$O$G$-$^$;$s!#(B@code{nndir} $B$,;H$($k(B @@ -15860,11 +15832,11 @@ Gnus $B$O$?$@C1$K%K%e!<%9$d%a!<%k$rFI$`0J>e$N$3$H$,$G$-$^$9!#0J2<(B $B$l$F$$$^$9!#(B @table @code -@cindex babyl -@cindex rmail mbox +@cindex Babyl +@cindex Rmail mbox @item babyl -babyl (rmail) $B7A<0$N%a!<%k%\%C%/%9!#(B +Babyl (Rmail) $B7A<0$N%a!<%k%\%C%/%9!#(B @cindex mbox @cindex Unix mbox @@ -15890,13 +15862,13 @@ rnews $B$N%P%C%AE>Aw7A<0!#(B Netscape $B$N%a!<%k%\%C%/%9!#(B @item mime-parts -@sc{mime} $BItJ,%a%C%;!<%8(B (multipart)$B!#(B +@acronym{MIME} $BItJ,%a%C%;!<%8(B (multipart)$B!#(B @item standard-digest $BI8=`(B (RFC 1153) $B$^$H$aAw$j7A<0!#(B @item mime-digest -@sc{mime} $B$N$^$H$aAw$j%a%C%;!<%8!#(B +@acronym{MIME} $B$N$^$H$aAw$j%a%C%;!<%8!#(B @item lanl-gov-announce $B%m%9%"%i%b%99qN)8&5f=j(B (LANL) Gov Announce $B$+$i$NH/I=%a%C%;!<%8!#(B @@ -16084,8 +16056,8 @@ Clarinet $B$N%K%e!<%99`L\$rMWLs$7$?$^$H$aAw$j!#(B @code{nndoc-add-type} $B4X?t$r;HMQ$7$^$9!#$3$l$OFs$D$N%Q%i%a!<%?$r$H$j$^(B $B$9(B --- $B0l$DL\$O$=$NDj5A<+?H$G!"Fs$DL\$N(B ($B>JN,2DG=$J(B) $B%Q%i%a!<%?$O$3$NDj(B $B5A$r!"J8=ql9g$O(B @code{nil} $B$rJV$7!"$=(B @@ -16187,8 +16159,7 @@ Gnus $B$+$i(B @kbd{G s s} $BL?Na$r;H$C$F$3$N%Q%1%C%H$+$i%a!<%k$r=P$7$^$9!#(B @menu * SOUP Commands:: @sc{soup} $B%Q%1%C%H$r:n@.!"Aw=P$9$kL?Na(B * SOUP Groups:: @sc{soup} $B%Q%1%C%H$rFI$`%P%C%/%(%s%I(B -* SOUP Replies:: @code{nnsoup} $B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;(B - $B$kJ}K!(B +* SOUP Replies:: @code{nnsoup} $B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;$kJ}K!(B @end menu @node SOUP Commands @@ -16543,8 +16514,8 @@ nnvirtual $B%0%k!<%W(B (@dfn{nnvirtual group}) $B$O$N%0%k!<%W$N=89g0J>e @dfn{Kiboze} $B$9$k!"$H$O!"(B``$B%K%e!<%9%9%W!<%kA4It(B ($B$"$k$$$O$=$N0lIt(B) $B$+(B $B$i(B grep $B$9$k$3$H(B'' $B$H%*%C%/%9%U%)!<%IBg<-E5$K$h$C$FDj5A$5$l$F$$$^$9!#(B @code{nnkiboze} $B$O$3$l$r$"$J$?$N$?$a$K9T$C$F$/$l$k%P%C%/%(%s%I$G$9!#4r$7(B -$B$$$M(B! $B$3$l$G$I$s$J(B @sc{nntp} $B%5!<%P!<$G$b!"Lr$KN)$?$J$$MW5a$G;_$^$C$F$7(B -$B$^$&$^$G9s;H$9$k$3$H$,$G$-$k$M!#$"$"!"$J$s$F9,$;$J$s$@(B! +$B$$$M(B! $B$3$l$G$I$s$J(B @acronym{NNTP} $B%5!<%P!<$G$b!"Lr$KN)$?$J$$MW5a$G;_$^$C(B +$B$F$7$^$&$^$G9s;H$9$k$3$H$,$G$-$k$M!#$"$"!"$J$s$F9,$;$J$s$@(B! @kindex G k ($B%0%k!<%W(B) kiboze $B%0%k!<%W$r:n@.$9$k$K$O!"%0%k!<%W%P%C%U%!$G(B @kbd{G k} $BL?Na$r;H$$$^(B @@ -16569,9 +16540,9 @@ Gnus $B$O$=$N(B @code{nnkiboze} $B%0%k!<%W$N0lIt$H$J$k$Y$-5-;v$,$"$k$+$I$&$+$ $B$l$iA4$F$KBP$7$F%9%3%"=hM}$rpJs$r3JG<$9$k!"(B@file{.newsrc} $B$NJd=u%U%!%$%k(B -$B$G$9!#(B +$B$N(B @acronym{NOV} $B%X%C%@!<9T$r4^$s$G$$$F!"$b$&0lJ}$O9=@.5-;v$r8+$D$1$k$?(B +$B$a$K$I$N%0%k!<%W$,8!:w$5$l$?$+$N>pJs$r3JG<$9$k!"(B@file{.newsrc} $B$NJd=u%U%!(B +$B%$%k$G$9!#(B -@code{nnkiboze} $B%0%k!<%WFb$N4{FI$H$J$C$?5-;v$O!"$=$N5-;v$N(B @sc{nov} $B9T(B -$B$,(B @sc{nov} $B%U%!%$%k$+$i:o=|$5$l$^$9!#(B +@code{nnkiboze} $B%0%k!<%WFb$N4{FI$H$J$C$?5-;v$O!"$=$N5-;v(B +$B$N(B @acronym{NOV} $B9T$,(B @acronym{NOV} $B%U%!%$%k$+$i:o=|$5$l$^$9!#(B @node Namazu Groups @subsection Namazu $B$r;H$C$F%a!<%k$N;3$+$i5-;v$rC$9J}K!(B * Agent Regeneration:: $BDL?.@ZCG$dB>$N;v8N$+$i2sI|$9$kJ}K!(B -* Agent and IMAP:: $B%(!<%8%'%s%H$r(B IMAP $B$G;H$&J}K!(B +* Agent and IMAP:: $B%(!<%8%'%s%H$r(B @acronym{IMAP} $B$G;H$&J}K!(B * Outgoing Messages:: $BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+(B? * Agent Variables:: $B%+%9%?%^%$%:$O3Z$7(B * Example Setup:: $B%*%U%i%$%s?M4V$N$?$a$N(B @file{~/.gnus.el} $B$NNc(B * Batching Agents:: @code{cron} $B%8%g%V$K$h$k%K%e!<%9l9g$O!"$?$V$s$3$N:G8e$NE@$O0UL# @findex gnus-agent-regenerate-group @kindex M-x gnus-agent-regenerate-group -$B%3%^%s%I(B @code{gnus-agent-regenerate-group} $B$O!"%m!<%+%k$N(B NOV ($B%X%C(B -$B%@!<(B) $B%G!<%?%Y!<%9$r=$I|$9$k$?$a$K!"8D!9$N5-;v$N%m!<%+%k$J%3%T!<$r;H$$$^(B -$B$9!#$=$N8e$=$l$O!"$I$N5-;v$,%m!<%+%k$K3JG<$5$l$k$+$rN"IU$1$k$?$a$NFbIt%G!<(B -$B%?9=B$$r99?7$7$^$9!#0z?t$rM?$($k$H!"%(!<%8%'%s%H$NCf$N5-;v$KL$FI$N0u$rIU(B -$B$1$^$9!#(B +$B%3%^%s%I(B @code{gnus-agent-regenerate-group} $B$O!"%m!<%+%k(B +$B$N(B @acronym{NOV} ($B%X%C%@!<(B) $B%G!<%?%Y!<%9$r=$I|$9$k$?$a$K!"8D!9$N5-;v$N%m!<(B +$B%+%k$J%3%T!<$r;H$$$^$9!#$=$N8e$=$l$O!"$I$N5-;v$,%m!<%+%k$K3JG<$5$l$k$+$r(B +$BN"IU$1$k$?$a$NFbIt%G!<%?9=B$$r99?7$7$^$9!#0z?t$rM?$($k$H!"%(!<%8%'%s%H$N(B +$BCf$N5-;v$KL$FI$N0u$rIU$1$^$9!#(B @node Agent and IMAP @subsection $B%(!<%8%'%s%H$r(B IMAP $B$G;H$&J}K!(B $B%(!<%8%'%s%H$O(B nnimap $B$r4^$`(B gnus $B$N$I$s$J%P%C%/%(%s%I$G$bF0:n$7$^$9!#$7(B -$B$+$7(B @sc{nntp} $B$H(B @sc{imap} $B$K$O$$$/$D$+$N35G0$N0c$$$,$"$k$N$G!"$3$N9`$G(B -$B$O(B gnus $B%(!<%8%'%s%H$r(B @sc{imap} $B$N(B @dfn{unplugged} $B$J%b!<%I$N%/%i%$%"%s(B -$B%H$H$7$F1_3j$K;H$($k$h$&$K$9$k$?$a$N!"$$$/$D$+$N>pJs$rDs6!$7$^$9!#(B +$B$+$7(B @acronym{NNTP} $B$H(B @acronym{IMAP} $B$K$O$$$/$D$+$N35G0$N0c$$$,$"$k$N$G!"(B +$B$3$N9`$G$O(B gnus $B%(!<%8%'%s%H$r(B @acronym{IMAP} $B$N(B @dfn{unplugged} $B$J%b!<(B +$B%I$N%/%i%$%"%s%H$H$7$F1_3j$K;H$($k$h$&$K$9$k$?$a$N!"$$$/$D$+$N>pJs$rDs6!(B +$B$7$^$9!#(B $B?4$KN1$a$F$*$/:G=i$N$3$H$O!"A4$F$N%U%i%0(B (read, ticked $B$J$I(B) $B$O(B nntp $B$N(B -$B>l9g$K$*$1$k(B @file{.newsrc} $B$G$O$J$/$F(B @sc{imap} $B%5!<%P!<$KJ];}$5$l$k$H(B -$B$$$&$3$H$G$9!#$7$?$,$C$F!"(Bgnus $B$O(B @dfn{unplugged} $B$N$H$-$N%U%i%0$NJQ2=$r(B -$B3P$($F$*$$$F!":F$S@\B3$7$?$H$-$K$=$l$i$N%U%i%0$rF14|$5$;$kI,MW$,$"$j$^$9!#(B +$B>l9g$K$*$1$k(B @file{.newsrc} $B$G$O$J$/$F(B @acronym{IMAP} $B%5!<%P!<$KJ];}$5$l(B +$B$k$H$$$&$3$H$G$9!#$7$?$,$C$F!"(Bgnus $B$O(B @dfn{unplugged} $B$N$H$-$N%U%i%0$NJQ(B +$B2=$r3P$($F$*$$$F!":F$S@\B3$7$?$H$-$K$=$l$i$N%U%i%0$rF14|$5$;$kI,MW$,$"$j(B +$B$^$9!#(B gnus $B$O%(!<%8%'%s%H$N85$G(B nnimap $B%0%k!<%W$rFI$`$H$-!"%U%i%0$NJQ2=$K@d$((B $B$:Cm0U$7$F$$$^$9!#$"$J$?$,:F$S@\B3$7$?$H$-!"(Bgnus $B$O$"$J$?$,2?$i$+$N%U%i(B @@ -17518,9 +17489,9 @@ gnus $B$O%(!<%8%'%s%H$N85$G(B nnimap $B%0%k!<%W$rFI$`$H$-!"%U%i%0$NJQ2=$K@d$( $B$=$l$r9T$J$&$3$H$b$G$-$^$9!#$3$l$K$O%0%k!<%W%P%C%U%!$N(B @kbd{J Y} $B%-!<$K(B $B3d$jEv$F$i$l$?(B @code{gnus-agent-synchronize-flags} $B%3%^%s%I$r;H$$$^$9!#(B -$B$"$J$?$,!"(B@dfn{unplugged} $B$N$H$-$N(B @sc{imap} $B%/%i%$%"%s%H$K4|BT$9$k$G$"(B -$B$m$&$$$/$D$+$N5!G=$O!"8=:_$N%(!<%8%'%s%H$K$O@9$j9~$^$l$F$$$^$;$s!#$=$l$i(B -$B$O0J2<$NDL$j$G$9!#(B +$B$"$J$?$,!"(B@dfn{unplugged} $B$N$H$-$N(B @acronym{IMAP} $B%/%i%$%"%s%H$K4|BT$9$k(B +$B$G$"$m$&$$$/$D$+$N5!G=$O!"8=:_$N%(!<%8%'%s%H$K$O@9$j9~$^$l$F$$$^$;$s!#$=(B +$B$l$i$O0J2<$NDL$j$G$9!#(B @itemize @bullet @@ -17582,9 +17553,9 @@ Gnus $B%(!<%8%'%s%H$,%U%!%$%k$r3JG<$9$k>l=j!#=i4|@_DjCM(B @item gnus-agent-cache @vindex gnus-agent-cache -plugged $B$N$H$-$K!"%m!<%+%k$K;}$C$F$$$k(B @sc{nov} $B$H5-;v$r;H$&$+$I$&$+$r@)(B -$B8f$9$kJQ?t$G!"Nc$($P%(!<%8%'%s%H$r%-%c%C%7%e$H$7$F;H$&$K$OI,?\$G$9!#%G%#(B -$B%U%)%k%H$G$OHs(B-@code{nil} $B$G!"%(!<%8%'%s%H$r%-%c%C%7%e$H$7$F;H$$$^$9!#(B +plugged $B$N$H$-$K!"%m!<%+%k$K;}$C$F$$$k(B @acronym{NOV} $B$H5-;v$r;H$&$+$I$&(B +$B$+$r@)8f$9$kJQ?t$G!"Nc$($P%(!<%8%'%s%H$r%-%c%C%7%e$H$7$F;H$&$K$OI,?\$G$9!#(B +$B%G%#%U%)%k%H$G$OHs(B-@code{nil} $B$G!"%(!<%8%'%s%H$r%-%c%C%7%e$H$7$F;H$$$^$9!#(B @item gnus-agent-go-online @vindex gnus-agent-go-online @@ -17654,21 +17625,21 @@ gnus $B$,%5!<%P!<$K@\B3$G$-$J$H$-$K2?$,5/$-$?$+$rJ*8l$j$^$9!#%(!<%8%'%s%H(B $B$H$3$m$+$i;O$a$i$l$k$G$7$g$&!#(B @lisp -;;; Gnus $B$,$I$N$h$&$K%K%e!<%9$ro$H$F$b;~4V$,(B -$B$+$+$j$^$9$,!"0lEY$@$1$7$+o$H$F$b;~(B +$B4V$,$+$+$j$^$9$,!"0lEY$@$1$7$+.$5$/$9$k$?$a$K!"@E$+$K:o=|$5$l$^$9!#(B @menu -* Summary Score Commands:: $B8=:_$N%0%k!<%W$N$?$a$N%9%3%"EPO?$rDI2C$9(B - $B$k(B +* Summary Score Commands:: $B8=:_$N%0%k!<%W$N$?$a$N%9%3%"EPO?$rDI2C$9$k(B * Group Score Commands:: $B0lHLE*$J%9%3%"L?Na(B -* Score Variables:: $B$"$J$?$N%9%3%"$r%+%9%?%^%$%:$9$k(B - ($B$^$!!"$J$s$FMQ8l$G$7$g$&(B) +* Score Variables:: $B$"$J$?$N%9%3%"$r%+%9%?%^%$%:$9$k(B ($B$^$!!"$J$s$FMQ8l$G$7$g$&(B) * Score File Format:: $B%9%3%"%U%!%$%k$K2?$rF~$l$k$+(B * Score File Editing:: $BC5n%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 -* Score Decays:: $B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"(B - $B$k(B +* Score Decays:: $B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"$k(B @end menu @node Summary Score Commands @@ -18010,8 +17973,8 @@ File Editing})$B!#(B @item e ``$BDI2C(B'' $B$N%X%C%@!<(B ($B$9$J$o$A!"(B(@code{gnus-extra-headers} $B$K@_Dj$5$l$F$$(B -$B$F!"(B@sc{nntp} $B%5!<%P!<$,(B overview $B$K$=$l$i$N>pJs$r5-O?$7$F$$$k(B) $B$K%9%3%"(B -$B$rIU$1$^$9!#(B +$B$F!"(B@acronym{NNTP} $B%5!<%P!<$,(B overview $B$K$=$l$i$N>pJs$r5-O?$7$F$$$k(B) $B$K(B +$B%9%3%"$rIU$1$^$9!#(B @item f $B%U%)%m!<%"%C%W(B (followup) $B$K%9%3%"$rIU$1$^$9(B---$B$3$l$OCx$H$N9gCW$r$7!"(B @@ -18167,7 +18130,7 @@ Gnus $B$O2?EY$b%9%3%"O"A[%j%9%H$rFI$_9~$`$N$rHr$1$k$?$a$K!"$=$l$N%-%c%C%7%e(B @item gnus-kill-files-directory @vindex gnus-kill-files-directory $BA4$F$N:o=|$H%9%3%"$N%U%!%$%k$O$3$N%G%#%l%/%H%j!<$KC_@Q$5$l!"$=$l$O=i4|@_(B -$BDj$G4D6-JQ?t(B @code{SAVEDIR} $B$K$h$C$F=i4|2=$5$l$^$9!#$3$l$O=i4|@_Dj(B +$BDj$G4D6-JQ?t(B @env{SAVEDIR} $B$K$h$C$F=i4|2=$5$l$^$9!#$3$l$O=i4|@_Dj(B $B$G(B @file{~/News/} $B$G$9!#(B @item gnus-score-file-suffix @@ -18297,9 +18260,10 @@ Gnus $B$O0lHLE*$J%9%3%"%U%!%$%k$rFCDj$N%9%3%"%U%!%$%k8~$1$N$b$N$h$jA0$KE,(B @item gnus-score-thread-simplify @vindex gnus-score-thread-simplify $B$3$NJQ?t$,(B @code{nil} $B$G$J$$$H!"5-;vI=Bj$O%9%l%C%I$HF1$8J}K!$GI=Bj%9%3%"(B -$B$N$?$a$KC1=c2=$5$l$^$9(B---$B8=:_$N(B gnus-simplify-subject-functions $B$NCM$K$h$C(B -$B$F!#%9%3%"EPO?$,(B @code{$BJ8;zNsItJ,(B} $B$+(B @code{$B@53N$J(B} $B9gCW$r;H$C$F$$$k$H!"(B -$B9gCW$b$3$NJ}K!$GC1=c2=$5$l$^$9!#(B +$B$N$?$a$KC1=c2=$5$l$^$9(B---$B8=:_(B +$B$N(B @code{gnus-simplify-subject-functions} $B$NCM$K$h$C$F!#%9%3%"EPO?(B +$B$,(B @code{$BJ8;zNsItJ,(B} $B$+(B @code{$B@53N$J(B} $B9gCW$r;H$C$F$$$k$H!"9gCW$b$3$NJ}K!(B +$B$GC1=c2=$5$l$^$9!#(B @end table @node Score File Format @@ -18404,9 +18368,9 @@ gnus $B$K5-;vA4BN$rl9g%9(B $B%3%"EPO?$N(B 5 $BHVL\$NMWAG$,%9%3%"$rIU$1$k%X%C%@!<$NL>A0$K$J$j$^$9!#(B -@sc{nntp} $B%5!<%P!<$,(B overview $B$K(B NNTP-Posting-Host $B$r5-O?$7$F$$$k$J$i$P!"(B -@file{all.SCORE} $B%U%!%$%k$N0J2<$NEPO?$O!"C10l$N%[%9%H$+$i(B spam $B$N967b$,(B -$B$"$k>l9g$KM-8z$G$9!#(B +@acronym{NNTP} $B%5!<%P!<$,(B overview $B$K(B NNTP-Posting-Host $B$r5-O?$7$F$$$k$J(B +$B$i$P!"(B@file{all.SCORE} $B%U%!%$%k$N0J2<$NEPO?$O!"C10l$N%[%9%H$+$i(B spam $B$N(B +$B967b$,$"$k>l9g$KM-8z$G$9!#(B @lisp ("111.222.333.444" -1000 nil s "NNTP-Posting-Host") @@ -18852,9 +18816,9 @@ gnus $B$O%0%k!<%WL>$NA4$F$N8l$K$D$$$F!"C18lE,1~@-%9%3%"$r$7$^$;$s!#$[$H$s(B @lisp (setq gnus-home-score-file - ;; All groups that match the regexp "\\.emacs" + ;; @r{$B@55,I=8=(B @code{"\\.emacs"} $B$K9gCW$9$k$9$Y$F$N%0%k!<%W(B} '(("\\.emacs" "emacs.SCORE") - ;; All the comp groups in one score file + ;; @r{$B$9$Y$F$N(B comp $B%0%k!<%W$rC10l$N%9%3%"%U%!%$%k$G(B} ("^comp" "comp.SCORE"))) @end lisp @@ -19132,7 +19096,7 @@ Gnus $B$O$^$@!"$"$N$&$6$C$?$$8E$$>C5n%U%!%$%k$r%5%]!<%H$7$F$$$^$9!#C(B $B$7(B gnus $B$,(B @code{rn} $B$N>C5n%U%!%$%k$i$7$-$b$N$K=P2q$C$?$i!"2?$H$+$=$l$r(B $B2rC5n%U%!%$%k$rJT=8$9$k$?$a$NFs$D$N35N,%P%C%U%!4X?t$,$"$j$^$9!#(B +@sc{gnus} $B>C5n%U%!%$%k$rJT=8$9$k$?$a$NFs$D$N35N,%P%C%U%!4X?t$,$"$j$^$9!#(B @table @kbd @item M-k @@ -19216,7 +19180,7 @@ GNUS $B>C5n%U%!%$%k$rJT=8$9$k$?$a$NFs$D$N35N,%P%C%U%!4X?t$,$"$j$^$9!#(B @section GroupLens @cindex GroupLens -GoupLens (@uref{http://www.cs.umn.edu/Research/GroupLens/}) $B$O!"KhF|:n@.(B +@uref{http://www.cs.umn.edu/Research/GroupLens/, GroupLens} $B$O!"KhF|:n@.(B $B$5$l$kB?$/$NNL$N%K%e!<%95-;v$+$i$N?M$H6&$K8+$D$1$k$N$r=u(B $B$1$k$?$a$N6&F1A*JL5!9=$G$9!#(B @@ -19232,22 +19196,18 @@ GoupLens (@uref{http://www.cs.umn.edu/Research/GroupLens/}) $B$O!"KhF|:n@.(B $B$O(B (pseudonym) $B$rEPO?$7$J$1$l$P$J$j$^$;$s!#(B -@uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html} $B$,8=:_!"$A$^$?(B -$B$KB8:_$9$kM#0l$N(B better bit $B$G$9!#(B +GroupLens $B$r;H$&$?$a$K$O!"8=:_$A$^$?$KB8:_$9$kM#0l$N(B better bit $B$G$"(B +$B$k(B @uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html, Better Bit +Bureau (BBB)} $B$KI.L>(B (pseudonym) $B$rEPO?$7$J$1$l$P$J$j$^$;$s!#(B $BEPO?$7$?8e$G!"$$$/$D$+$NJQ?t$r@_Dj$9$kI,MW$,$"$j$^$9!#(B @@ -19624,18 +19584,15 @@ Gnus $B$O0lF|$K0l2s%9%3%"$rIeGT$5$;$h$&$H$7$^$9!#Nc$($P!"$b$7(B gnus $B$r;MF| @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==Jb$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 * Predicate Specifiers:: $B=R8l$r@_Dj$9$k(B @@ -19771,10 +19728,8 @@ Gnus $B$r=*N;$9$kA0$K3NG'$rMW5a$7$^$9!#$3$NJQ?t$O=i4|@_Dj$G(B @code{t} $B$G$9 $B9f$,$I$3$K$G$b$"$j$^$9!#(B @menu -* Formatting Basics:: $B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"(B - $B$k(B -* Mode Line Formatting:: $B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N(B - $B5,B'(B +* 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 @@ -19961,19 +19916,19 @@ Manual} (GNU Emacs) $B$^$?$O(B @code{balloon-help-mode} (XEmacs) $B$N@bL@J8;z $B$3$l$O%0%k!<%W%P%C%U%!$NBeBXeEy$N=qK!;EMM$r@_Dj$9$k!#(B +;; @r{$B?7$7$$>eEy$N=qK!;EMM$r@_Dj$9$k!#(B} (setq gnus-group-line-format "%M%S%3@{%5y%@}%2[:%] %(%1@{%g%@}%)\n") @end lisp @@ -20561,8 +20516,8 @@ Gnus $B$O$5$^$6$^$J@)8f;R(B @dfn{handlers} $B$rDj5A$9$k$3$H$K$h$C$F$=$N$h$&$J (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::$9$k@)8f(B -$B;R$G$9!#(B +$B0J2<$O(B Emacs $B$,2?$b$7$F$$$J$$$H$-!"0l;~4VKh$K(B @acronym{PGP} $B%X%C%@!<$rAv(B +$B::$9$k@)8f;R$G$9!#(B @lisp (gnus-demon-scan-pgp 60 t) @@ -20863,8 +20818,7 @@ gnus $B$O$3$l$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=<((B - $B$9$kJ}K!(B +* Smileys:: $BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<($9$kJ}K!(B * X-Face:: $B%U%!%s%-!<$J$A$C$A$c$JGr9u$N3($rI=<($9$k(B * XVarious:: $B$=$NB>$N(B XEmacs $B$G(B Gnus $B$JJQ?t(B @end menu @@ -21299,10 +21253,10 @@ Spam $B$KBP=h$9$k0l$D$NJ}K!$O!"(Bgnus $B$KA4$F$N(B spam $B$r(B @samp{spam} @samp{spam} $B%0%k!<%W$K9T$-$^$9!#(B($B$3$N%"%$%G%"$O$*$=$i$/(B Tim Pierce $B;a$K(B $B$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 @sc{smtp} $B%5!<%P!<(B -$B$HD>@\OC$7!"(B@code{To} $B%X%C%@!<$K$"$J$?$N%a!<%k%"%I%l%9$,L@<($5$l$J$$$h$&(B -$B$K$7$^$9!#$J$s$G$=$s$J$3$H$r$9$k$N$+$O$o$+$j$^$;$s$,(B --- $B$*$=$i$/;d$?$A(B -$B$NN"$r$+$/5!9=$NN"$r$+$/$?$a$+$J(B? $B$I$A$i$K$7$F$b!"BP=h$O4JC1$J$3$H$G(B +$B$3$l$K2C$($F!"B?$/$N%a!<%k(B spam $B20$O!"$"$J$?$N$H$3$m$N(B @acronym{SMTP} $B%5!<(B +$B%P!<$HD>@\OC$7!"(B@code{To} $B%X%C%@!<$K$"$J$?$N%a!<%k%"%I%l%9$,L@<($5$l$J$$(B +$B$h$&$K$7$^$9!#$J$s$G$=$s$J$3$H$r$9$k$N$+$O$o$+$j$^$;$s$,(B --- $B$*$=$i$/;d(B +$B$?$A$NN"$r$+$/5!9=$NN"$r$+$/$?$a$+$J(B? $B$I$A$i$K$7$F$b!"BP=h$O4JC1$J$3$H$G(B $B$9(B --- $B$"$J$?08$F$G$J$$$b$N$rA4It(B @samp{spam} $B%0%k!<%W$K$$$l$k$@$1$G$9!#(B $B$3$l$O$*9%$_J,N%5,B'$N:G8e$K$3$s$JIw$KF~$l$k$3$H$G$G$-$^$9!#(B @@ -21627,15 +21581,16 @@ Spam $B%0%k!<%W$G$O!"%G%#%U%)%k%H$G$9$Y$F$N%a%C%;!<%8$,(B spam $B$G$"$k$H2r$O(B @samp{spam} $B$G$9$,!"%+%9%?%^%$%:$9$k$3$H$O(B $B2DG=$G$9!#(B -@emph{IMAP $BMxMQl9g$O!"%V!<(B $B%kJQ?t(B @code{nnimap-split-download-body} $B$,@_Dj$5$l$kI,MW$,$"$j$^$9!#%G%#(B $B%U%)%k%H$G$O!"(Bnnimap $B%P%C%/%(%s%I$O%a%C%;!<%8%X%C%@!<$@$1$rpJs$rF@$k(B) $B$r;H$&$J$i$P!"$3$NJQ?t$r@_Dj(B -$B$7$J$1$l$P$J$j$^$;$s!#(BIMAP $B$NF0:n$rCY$/$7$F$7$^$&$N$G!"%G%#%U%)%k%H$G$O(B -$B@_Dj$5$l$F$$$^$;$s!#(B +@code{spam-check-bogofilter}$B!"(B@code{spam-check-ifile} $B$^$?(B +$B$O(B @code{spam-check-stat} ($B$=$l$i$NJ,3d4o$O%a%C%;!<%8$NK\J8A4BN$+$i>pJs(B +$B$rF@$k(B) $B$r;H$&$J$i$P!"$3$NJQ?t$r@_Dj$7$J$1$l$P$J$j$^$;$s!#(B +@acronym{IMAP} $B$NF0:n$rCY$/$7$F$7$^$&$N$G!"%G%#%U%)%k%H$G$O@_Dj$5$l$F$$(B +$B$^$;$s!#(B @xref{Splitting in IMAP}. @@ -22078,19 +22033,19 @@ Spam $B$G$O$J$$(B ($BL$J,N`$^$?$O(B ham) $B%0%k!<%W$@$1$KE,MQ$5$l$k!#(B") @lisp (defun spam-blackbox-register-spam-routine () (spam-generic-register-routine - ;; spam $BMQ$N4X?t(B + ;; @r{spam $BMQ$N4X?t(B} (lambda (article) (let ((from (spam-fetch-field-from-fast article))) (when (stringp from) (blackbox-do-something-with-this-spammer from)))) - ;; ham $BMQ$N4X?t(B + ;; @r{ham $BMQ$N4X?t(B} nil)) (defun spam-blackbox-register-ham-routine () (spam-generic-register-routine - ;; spam $BMQ$N4X?t(B + ;; @r{spam $BMQ$N4X?t(B} nil - ;; ham $BMQ$N4X?t(B + ;; @r{ham $BMQ$N4X?t(B} (lambda (article) (let ((from (spam-fetch-field-from-fast article))) (when (stringp from) @@ -22175,9 +22130,10 @@ nnml $B%P%C%/%(%s%I$O0lDL$N%a!<%k$K$D$-0l$D$N%U%!%$%k$G!"$9$Y$F$N%a!<%k$r(B $B>o(B @samp{nnml:mail.misc} $B%0%k!<%W$KBP1~(B) $B$KBP$7(B $B$F(B @code{spam-stat-process-non-spam-directory} $B$r8F$V$G$7$g$&!#(B -$B$"$J$?$,(B IMAP $B$r;H$C$F$$$k$J$i%a!<%k$r%m!<%+%k$K$O;}$C$F$$$J$$$N$G!"$=$l(B -$B$OF0$+$J$$$G$7$g$&!#0l$D$N2r7h:v$O!"(Bgnus $B%(!<%8%'%s%H$G5-;v$r%-%c%C%7%e(B -$B$9$k$3$H$G$9!#$=$&$9$l$P(B @code{spam-stat-process-spam-directory} $B$H$7(B +$B$"$J$?$,(B @acronym{IMAP} $B$r;H$C$F$$$k$J$i%a!<%k$r%m!<%+%k$K$O;}$C$F$$$J$$(B +$B$N$G!"$=$l$OF0$+$J$$$G$7$g$&!#0l$D$N2r7h:v$O!"(Bgnus $B%(!<%8%'%s%H$G5-;v$r(B +$B%-%c%C%7%e$9$k$3$H$G$9!#$=$&$9$l(B +$B$P(B @code{spam-stat-process-spam-directory} $B$H$7(B $B$F(B @file{"~/News/agent/nnimap/mail.yourisp.com/personal_spam"} $B$N$h$&$J(B $B$b$N$,;H$($^$9!#(B@xref{Agent as Cache}$B!#(B @@ -22390,7 +22346,7 @@ Save table: (spam-stat-save) @item gnus-directory @vindex gnus-directory gnus $B$,3JG<$9$k$?$/$5$s$N%U%!%$%kL>$H%G%#%l%/%H%jL>$NJQ?t$O!"$3$l$K$h$C(B -$B$F=i4|2=$5$l$^$9!#%G%#%U%)%k%HCM$O(B @samp{SAVEDIR} $B4D6-JQ?t$NCM$+!"$=$NJQ(B +$B$F=i4|2=$5$l$^$9!#%G%#%U%)%k%HCM$O(B @env{SAVEDIR} $B4D6-JQ?t$NCM$+!"$=$NJQ(B $B?t$,@_Dj$5$l$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$KFI$_9~(B @@ -22480,7 +22436,8 @@ gnus $B$,3JG<$9$k$?$/$5$s$N%U%!%$%kL>$H%G%#%l%/%H%jL>$NJQ?t$O!"$3$l$K$h$C(B $BDL>o(B @samp{:} $B$r;H$C$F$$$k(B) $B$r$a$A$c$a$A$c$K$7$F$7$^$&$+$b$7$l$J$$!"$$$/(B $B$D$+$N(B @strong{$BK\Ev$K(B} $B;H$($J$$%0%k!<%WL>$rJa$^$($^$9!#(B -@sc{imap} $B%f!<%6$O%0%k!<%WL>$K(B @samp{/} $B$r;H$$$?$$$H;W$&$G$7$g$&$1$l$I!#(B +@acronym{IMAP} $B%f!<%6$O%0%k!<%WL>$K(B @samp{/} $B$r;H$$$?$$$H;W$&$G$7$g$&$1(B +$B$l$I!#(B @end table @node The End @@ -22543,8 +22500,7 @@ but at the common table.@* * On Writing Manuals:: $B$J$<$3$l$,=i?4ee$N%P!<%8%g%s$N(B Gnus * Why?:: Gnus $B$NL\E*$O2?(B? -* Compatibility:: Gnus $B$O(B @sc{gnus} $B$H$I$l$/$i$$8_49@-$,$"$k(B - $B$N(B? +* Compatibility:: Gnus $B$O(B @sc{gnus} $B$H$I$l$/$i$$8_49@-$,$"$k$N(B? * Conformity:: Gnus $B$OA4$F$NI8=`$rK~$?$=$&$H$9$k(B -* Emacsen:: Gnus $B$O$$$/$D$+$N8=BeE*$J(B Emacs $B4D6-$GN$5$l!"(BT-gnus, Nana-gnus $B$*$h$S(B Chaos $B$N0[$J$C$?7O(B -$BE}$,$"$j$^$9!#$3$l$i$O6/NO$J(B @sc{mime} $B$N5!G=$H3F9q8lBP1~$N5!G=$rDs6!$9(B -$B$k$b$N$G!"FC$KF|K\?M$N%f!<%6$K$H$C$FBg;v$J$b$N$G$9!#(B +$BE}$,$"$j$^$9!#$3$l$i$O6/NO$J(B @acronym{MIME} $B$N5!G=$H3F9q8lBP1~$N5!G=$rDs(B +$B6!$9$k$b$N$G!"FC$KF|K\?M$N%f!<%6$K$H$C$FBg;v$J$b$N$G$9!#(B @node Why? @subsection $B$J$<(B? @@ -22791,7 +22744,7 @@ RFC 1036 $B$N8e7Q$H$7$F=q$$$F$$$k$b$N$G$9!#%K%e!<%95-;v$NMM<0$KBP$7$F!"$$(B @item MIME - RFC 2045-2049 etc @cindex MIME -@sc{mime} $B4XO"$N$9$Y$F$N(B RFC $B$,%5%]!<%H$5$l$F$$$^$9!#(B +@acronym{MIME} $B4XO"$N$9$Y$F$N(B RFC $B$,%5%]!<%H$5$l$F$$$^$9!#(B @item Disposition Notifications - RFC 2298 Message Mode $B$O/99?7$5$l$F$$$^$9!#(BRFC 2195 $B$O(B @sc{imap} $B$N(B CRAM-MD5 $BG'>Z$K$D$$$F=R$Y(B -$B$F$$$^$9!#(BRFC 2086 $B$O(B @sc{imap} $B$N;HMQ@)8B0lMw(B (ACL) $B$K$D$$$F=R$Y$F$$$^(B -$B$9!#(BRFC 2359 $B$O(B @sc{imap} $B$N%W%m%H%3%k$N3HD%$K$D$$$F=R$Y$F$$$^$9!#(BRFC -2595 $B$O(B @sc{imap} $B$K$*$1$kE,@Z$J(B TLS $B$NE}9g(B (STARTTLS) $B$K$D$$$F=R$Y$F$$(B -$B$^$9!#(BRFC 1731 $B$O(B @sc{imap} $B$N(B GSSAPI/Kerberos4 $B$N/99?7$5$l$F$$$^$9!#(B +RFC 2195 $B$O(B @acronym{IMAP} $B$N(B CRAM-MD5 $BG'>Z$K$D$$$F=R$Y$F$$$^$9!#(B +RFC 2086 $B$O(B @acronym{IMAP} $B$N;HMQ@)8B0lMw(B (ACL) $B$K$D$$$F=R$Y$F$$$^$9!#(B +RFC 2359 $B$O(B @acronym{IMAP} $B$N%W%m%H%3%k$N3HD%$K$D$$$F=R$Y$F$$$^$9!#(B +RFC 2595 $B$O(B @acronym{IMAP} $B$K$*$1$kE,@Z$J(B @acronym{TLS} $B$NE}(B +$B9g(B (STARTTLS) $B$K$D$$$F=R$Y$F$$$^$9!#(B +RFC 1731 $B$O(B @acronym{IMAP} $B$N(B GSSAPI/Kerberos4 $B$N$N7A<0$NId9f2=(B/$BI|9f2=$d%P%0=$@5!"?7$7$$5!G=(B -$B$J$I$N$[$s$H$&$KB?$/$N$b$N!#(B +nnwarchive $B$H(B @acronym{MIME} $B$HB>$N7A<0$NId9f2=(B/$BI|9f2=$d%P%0=$@5!"?7$7$$(B +$B5!G=$J$I$N$[$s$H$&$KB?$/$N$b$N!#(B @item Per Abrahamsen--custom$B!"%9%3%"!"%O%$%i%$%H$H(B @sc{soup} $B%3!<%I(B ($BB>$NB?$/(B @@ -22932,7 +22889,7 @@ Luis Fernandes---$B%G%6%$%s$H%0%i%U%#%C%/!#(B Joe Reiss---$B%9%^%$%j!<$N4i$N:n!#(B @@ -22971,7 +22928,7 @@ Scott Byer---@file{nnfolder.el} $B$N3HD%$H2~D{!#(B Peter Mutsaers---$B8E;v5-;v$N%9%3%"%3!<%I!#(B @item -Ken Raebburn---POP $B%a!<%k%5%]!<%H!#(B +Ken Raebburn---@acronym{POP} $B%a!<%k%5%]!<%H!#(B @item Hallvard B Furuseth---$B$$$m$$$m$J>.$5$JJ*$dItJ,!"FC$K(B .newsrc $B%U%!%$%k$r(B @@ -23227,14 +23184,11 @@ Lloyd Zusman. @cindex new features @menu -* ding Gnus:: $B:G=i$N?7$7$$(B Gnus $B$G$"$k(B Gnus 5.0/5.1 $B$N(B - $B?7$7$$;v(B -* September Gnus:: $B8x<0$K(B Gnus 5.2/5.3 $B$H$7$FCN$i$l$F$$$k$b(B - $B$N(B +* ding Gnus:: $B:G=i$N?7$7$$(B Gnus $B$G$"$k(B Gnus 5.0/5.1 $B$N?7$7$$;v(B +* September Gnus:: $B8x<0$K(B Gnus 5.2/5.3 $B$H$7$FCN$i$l$F$$$k$b$N(B * Red Gnus:: $B;0HVL\$N:G>e$N$b$N(B---Gnus 5.4/5.5 * Quassia Gnus:: 2 $B$+$1$k(B 2 $B$O(B 4$B!"$b$7$/$O(B Gnus 5.6/5.7 -* Pterodactyl Gnus:: $B8^HVL\!"(BP $B$G;O$^$k!"$b$7$/$O(B Gnus 5.8 - /5.9 $B$H$7$FCN$i$l$F$$$k$b$N(B +* Pterodactyl Gnus:: $B8^HVL\!"(BP $B$G;O$^$k!"$b$7$/$O(B Gnus 5.8/5.9 $B$H$7$FCN$i$l$F$$$k$b$N(B @end menu $B$3$N%j%9%H$O!"$b$A$m$s!"(B@emph{$B$?$$$F$$$N(B} $B=EMW$J?7$7$$5!G=$K4X$9(B @@ -23255,8 +23209,8 @@ Format} $B$H(B @pxref{Summary Buffer Format}) $B$K$h$C$F@_Dj$rJQ$($k;v$,$G$-$ $B$h$&$K$J$j$^$7$?!#(B @item -$B%m!<%+%k%9%W!<%k$H!"$$$/$D$+$N(B @sc{nntp} $B%5!<%P!<$rF1;~$K;H$&;v$,$G$k$h(B -$B$&$K$J$j$^$7$?(B (@pxref{Select Methods})$B!#(B +$B%m!<%+%k%9%W!<%k$H!"$$$/$D$+$N(B @acronym{NNTP} $B%5!<%P!<$rF1;~$K;H$&;v$,$G(B +$B$-$k$h$&$K$J$j$^$7$?(B (@pxref{Select Methods})$B!#(B @item $B%0%k!<%W$r;ve$N%0%k!<%W$K7k9g$G$-$k$h$&$K$J$j$^$7$?(B (@pxref{Virtual @@ -23334,8 +23288,8 @@ uudecode $B$N4X?t$,3HD%$5$l!"0lHL2=$5$l$^$7$?(B (@pxref{Decoding Articles})$B $B$J$j$^$7$?(B (@pxref{Finding the Parent})$B!#(B @item -Gnus $B$O(B FAQ $B$H%0%k!<%W$N5-=R$rl9g$G$b!"Ej9F$G$-$k$h$&$K$J$j$^$7(B +$B?7$7$$%a!<%k$+$i%K%e!<%9$X$N%P%C%/%(%s%I$,(B @acronym{NNTP} $B%5!<%P!<$,Ej9F(B +$B$r5v2D$7$F$$$J$$>l9g$G$b!"Ej9F$G$-$k$h$&$K$J$j$^$7(B $B$?(B (@pxref{Mail-To-News Gateways})$B!#(B @item @@ -23836,7 +23790,8 @@ M******** sm*rtq**t*s $B$rE,@Z$JJ8>O$KK]0F$9$k?7$7$$L?Na$,$"$j$^$9(B--- @item @code{nntp} $B$O(B @file{~/.authinfo} $B$r;H$&$h$&$K$J$j!"$3$l(B $B$O(B @file{.netrc} $B$N$h$&$J%U%!%$%k$G!"$I$3$G$I$N$h$&(B -$B$K(B @sc{authinfo} $B$r(B @sc{nntp} $B%5!<%P!<$KAw$k$+$r@)8f$9$k$?$a$N$b$N$G$9!#(B +$B$K(B @sc{authinfo} $B$r(B @acronym{NNTP} $B%5!<%P!<$KAw$k$+$r@)8f$9$k$?$a$N$b$N(B +$B$G$9!#(B @item $B35N,%P%C%U%!$N%0%k!<%W%Q%i%a!<%?$rJT=8$9$k$?$a$NL?Na$,2C$($i$l$^$7$?!#(B @@ -23911,22 +23866,22 @@ Gnus 5.8 $B$N?7$7$$5!G=(B: Sources $B$GF@$k$3$H$,$G$-$^$9!#(B @item -Gnus $B$O(B @sc{mime} $B$KBP1~$7$?%j!<%@!<$K$J$j$^$7$?!#$3$l$O(B Gnus $B$NB?$/$NIt(B -$BJ,$K1F6A$7$F$$$F!"$?$/$5$s$N?7$7$$%3%^%s%I$,DI2C$5$l$F$$$^$9!#>\:Y$O%^%K%e(B -$B%"%k$r;2>H$7$F2<$5$$!#(B($BLuCm(B: T-gnus $B$O(B @sc{semi} $B$*$h$S(B @sc{flim} $B$N=t5!(B -$BG=$K4p$E$$$F$$$^$9!#(B) +Gnus $B$O(B @acronym{MIME} $B$KBP1~$7$?%j!<%@!<$K$J$j$^$7$?!#$3$l$O(B Gnus $B$NB?(B +$B$/$NItJ,$K1F6A$7$F$$$F!"$?$/$5$s$N?7$7$$%3%^%s%I$,DI2C$5$l$F$$$^$9!#>\:Y(B +$B$O%^%K%e%"%k$r;2>H$7$F2<$5$$!#(B($BLuCm(B: T-gnus $B$O(B @acronym{SEMI} $B$*$h(B +$B$S(B @acronym{FLIM} $B$N=t5!G=$K4p$E$$$F$$$^$9!#(B) @item Gnus $B$O$^$?3F9q8lBP1~$K$J$j$^$7$?!#$3$3$G$OMWLs$G$-$J$$$/$i$$$K(B Gnus $B$N(B $BB?$/$NItJ,$K1F6A$7$F$$$F!"?7$7$$$?$/$5$s$NJQ?t$,DI2C$5$l$F$$$^$9!#(B($BLuCm(B: -T-gnus $B$O(B @sc{semi} $B$*$h$S(B @sc{flim} $B$N=t5!G=$K4p$E$$$F$$$^$9!#(B) +T-gnus $B$O(B @acronym{SEMI} $B$*$h$S(B @acronym{FLIM} $B$N=t5!G=$K4p$E$$$F$$$^$9!#(B) @item @code{gnus-auto-select-first} $B$,4X?t$G$"$C$F$b$h$/$J$j$^$7$?!#(B @item -Summary $B%P%C%U%!$H(B @sc{nov} $B%U%!%$%k$K4^$a$kDI2C$N%X%C%@!<$r!"%f!<%6$,7h(B -$B$a$k$3$H$,$G$-$k$h$&$K$J$j$^$7$?!#(B +Summary $B%P%C%U%!$H(B @acronym{NOV} $B%U%!%$%k$K4^$a$kDI2C$N%X%C%@!<$r!"%f!<(B +$B%6$,7h$a$k$3$H$,$G$-$k$h$&$K$J$j$^$7$?!#(B @item @code{gnus-article-display-hook} $B$,:o=|$5$l$^$7$?!#Be$o$j(B @@ -23942,7 +23897,7 @@ Gnus posting styles $B$,:F$S2~Au$5$l$^$7$?!#8=:_$OHyL/$K0c$&5,B'$GF0:n$7$^(B $B>o$KJQ2=$9$k9=@.$rB3$1$^$9!#(B @item -Gnus $B$O(B @code{nnimap} $B$K$h$C$F(B @sc{imap} $B%a!<%k$rFI$`$3$H$,$G$-$^$9!#(B +Gnus $B$O(B @code{nnimap} $B$K$h$C$F(B @acronym{IMAP} $B%a!<%k$rFI$`$3$H$,$G$-$^$9!#(B @end itemize @iftex @@ -24031,10 +23986,10 @@ Gnus $B$O(B @code{nnimap} $B$K$h$C$F(B @sc{imap} $B%a!<%k$rFI$`$3$H$,$G$-$^ @item $B%K%e!<%9(B (news) @cindex news $B$3$l$O$"$J$?$,$=$N$?$a$K$3$N$b$N$r;H$$$?$$$H;W$C$F$$$k$b$N$G$9(B---$B%K%e!<(B -$B%9$rFI$`;v$G$9!#%K%e!<%9$O0lHLE*$K$O6a$/$N(B @sc{nntp} $B%5!<%P!<$+$iP$o$l$k$G$7$g$&!#$"$J$?$NCN$i$J$$$H$3$m$G!#(B +$B%9$rFI$`;v$G$9!#%K%e!<%9$O0lHLE*$K$O6a$/$N(B @acronym{NNTP} $B%5!<%P!<$+$iP$o$l$k$G$7$g$&!#$"$J$?$NCN$i$J$$$H$3$m$G!#(B @item $B%a!<%k(B (mail) @cindex mail @@ -24056,20 +24011,21 @@ Gnus $B$O(B @code{nnimap} $B$K$h$C$F(B @sc{imap} $B%a!<%k$rFI$`$3$H$,$G$-$^ @cindex back end gnus $B$O%a!<%k$H%K%e!<%9$,$[$H$s$IF1$8$@$H$_$J$7$^$9!#K\Ev$K!#0c$$$OC$(5n$j$^$9!#(B @@ -24235,8 +24192,7 @@ Gnus $B$,%0%k!<%W$KF~$k$H!"%0%k!<%W$NA4$F$NL$FI5-;v$N%X%C%@!<$r%P%C%/%(%s(B $BAm9gE,;X<(@h$rM?$($k$?$a$K9M0F$5$l$F$$$^$9!#(B @menu -* Slow/Expensive Connection:: $B%m!<%+%k$N(B Emacs $B$rN)$A>e$2$F!"B>$N$H$3(B - $B$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k!#(B +* Slow/Expensive Connection:: $B%m!<%+%k$N(B Emacs $B$rN)$A>e$2$F!"B>$N$H$3$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k(B * Slow Terminal Connection:: $B1s3V(B Emacs $B$ro$K:Y$$@~$N8~$3$&$N%^%7(B -$B%s$+$i%K%e!<%9$ro$K(B} $B$h$/F0:n$7$^$9(B---$B2? $B$r>C$7$F2<$5$$!#(B @item -FAQ $B$H(B how-to $B$rFI$`$?$a$K%X%k%W%0%k!<%W(B ($B%0%k!<%W%P%C%U%!(B +@acronym{FAQ} $B$H(B how-to $B$rFI$`$?$a$K%X%k%W%0%k!<%W(B ($B%0%k!<%W%P%C%U%!(B $B$G(B @kbd{G h}) $B$rFI$s$G2<$5$$!#(B @item @@ -24486,8 +24442,7 @@ gnus $B$H$=$N%P%C%/%(%s%I4V$N%$%s%?!<%U%'!<%9(B ($B$3$l$O40A4$K5-=R$5$l$F$$( * Gnus Utility Functions:: $B;HMQ$G$-$k6&DL$N4X?t$HJQ?t(B * Back End Interface:: Gnus $B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+(B * Score File Syntax:: $B%9%3%"%U%!%$%k5,3J$N(B BNF $BDj5A(B -* Headers:: Gnus $B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<(B - $B$9$k$+(B +* Headers:: Gnus $B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<$9$k$+(B * Ranges:: $B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0(B * Group Info:: $B%0%k!<%W>pJs7A<0(B * Extended Interactive:: $B5-9f@\F,<-$J$I(B @@ -24615,10 +24570,10 @@ Gnus $B=*N;;~$K>C5n$9$k%P%C%U%!$N0lMw$K8=:_$N%P%C%U%!$rDI2C$7$^$9!#(B @node Back End Interface @subsection $B%P%C%/%(%s%I%$%s%?!<%U%'!<%9(B -Gnus $B$O(B @sc{nntp} $B$d%9%W!<%k!"%a!<%k!"2>A[%0%k!<%W$K$D$$$F$O2?$K$bCN$j$^(B -$B$;$s!#$?$@2>A[%5!<%P!<(B @dfn{virtual servers} $B$HBPOC$9$kJ}K!$rCN$C$F$$$k(B -$B$@$1$G$9!#2>A[%5!<%P!<$O%P%C%/%(%s%I(B @dfn{back end} $B$H$$$/$D$+$N%P%C%/%((B -$B%s%IJQ?t(B @dfn{back end variables} $B$+$i$J$j$^$9!#A0A[%0%k!<%W$K$D$$$F$O2?$K$b(B +$BCN$j$^$;$s!#$?$@2>A[%5!<%P!<(B @dfn{virtual servers} $B$HBPOC$9$kJ}K!$rCN$C(B +$B$F$$$k$@$1$G$9!#2>A[%5!<%P!<$O%P%C%/%(%s%I(B @dfn{back end} $B$H$$$/$D$+$N%P%C(B +$B%/%(%s%IJQ?t(B @dfn{back end variables} $B$+$i$J$j$^$9!#A0J,$J%X%C(B $B%@!<(B'' $B$ro!"(B@code{articles} $B$NCf$N:G>.HV9f(B @@ -24958,8 +24913,8 @@ Gnus $B%0%k!<%W>pJs(B (@pxref{Group Info}) $B$,JQ992U=j$H$7$F%P%C%/%((B $B5-;v$N0u$r@_Dj(B/$B>C5n(B/$BDI2C$7$^$9!#IaDL$O(B gnus $B$O5-;v$N0u(B ($B4{FI!"2D;k!";~8B(B $B>C5n$J$I(B) $B$rFbIt$G07$$!"(B@file{~/.newsrc.eld} $B$KJ]B8$7$^$9!#$7$+$7!"%P%C(B -$B%/%(%s%I$K$O(B (@sc{imap} $B$N$h$&$K(B) $B5-;v$NA4$F$N>pJs$r%5!<%P!<$K<}$a$k$N(B -$B$G!"(Bgnus $B$O0u$N>pJs$r%5!<%P!<$KEAC#$7$J$1$l$P$J$i$J$$$b$N$,$"$j$^$9!#(B +$B%/%(%s%I$K$O(B (@acronym{IMAP} $B$N$h$&$K(B) $B5-;v$NA4$F$N>pJs$r%5!<%P!<$K<}$a(B +$B$k$N$G!"(Bgnus $B$O0u$N>pJs$r%5!<%P!<$KEAC#$7$J$1$l$P$J$i$J$$$b$N$,$"$j$^$9!#(B @var{action} $B$O$3$N$h$&$JMM<0$N0u@_Dj$NMW5a$N%j%9%H$G$9(B: @@ -25014,10 +24969,11 @@ Gnus $B%0%k!<%W>pJs(B (@pxref{Group Info}) $B$,JQ992U=j$H$7$F%P%C%/%((B $B$3$N4X?t$O!"%P%C%/%(%s%I$,E~Ce5-;v$r3NG'$9$kMW5a$r9T$J$&$H$-$K$$$D$G(B $B$b(B (gnus $B$+$=$l0J30$K$h$C$F(B)$B!"$"$l$d$3$l$d$H8F$S=P$5$l$k$3$H$,$"$j$^$9!#(B $B%a!<%k%P%C%/%(%s%I$O$3$N4X?t$,5/F0$5$l$?$H$-!"E57?E*$K$O%9%W!<%k%U%!%$%k(B -$B$rFI$`$+(B POP $B%5!<%P!<$KLd$$9g$o$;$K$$$-$^$9!#(B@var{group} $B$OFC$K5$$KN1$a(B -$B$kI,MW$O$"$j$^$;$s(B --- $B$b$7%P%C%/%(%s%I$,!"0l$D$@$1$N%0%k!<%W$rAv::$9$k(B -$B$N$OBgJQ$9$.$k$HH=CG$7$?>l9g$K$O!"A4%0%k!<%W$NA4Av::$r9T$J$C$F$b9=$$$^$;(B -$B$s!#$G$9$,!"l9g$K$O!"A4%0%k!<%W$NA4Av::$r9T$J$C$F(B +$B$b9=$$$^$;$s!#$G$9$,!" / ] @node Headers @subsection $B%X%C%@!<(B -$BFbItE*$K$O(B gnus $B$OIT;W5D$JN.57$G!"(B@sc{nov} $BMM<0$KBP1~$9$k5-;v$N%X%C%@!<(B -$B$rN/$a$F$*$/MM<0$r;H$$$^$9!#$"$k?M$O!":no$KIiC4$N$+$1$i$l$9$.$?8l$G$9!#(B ``$B%X%C%@!<(B'' $B$O(B RFC1036 $B$G$O5-;v$NF,$N9T$N;v(B ($BNc$($P!"(B@code{From}) $B$rOC(B @@ -25513,11 +25470,12 @@ space = *[ " " / / ] $B$3$l$O6e$D$NMWAG$+$i$J$k%Y%/%H%k$G!"4pK\E*$K!"$=$l$>$l$N%X%C(B $B%@!<(B ($B$"DK(B) $B$,0l$D$N6u$->l=j$r@j$a$F$$$^$9!#(B -$B$3$l$i$N6u$->l=j$O!"=gHV(B -$B$K(B: @code{number}, @code{subject}, @code{from}, @code{date}, @code{id}, @code{chars}, @code{lines}, @code{xref}, @code{extra} $B$G(B -$B$9!#$3$l$i$N6u$->l=j$K?($C$F@_Dj$9$k%^%/%m$,$"$j$^$9(B---$B$=$l$i$OA4$F!"$=(B -$B$l$>$l(B @code{mail-header-} $B$H(B @code{mail-header-set-} $B$$$&M=A[$5$l$kL>A0(B -$B$r;}$C$F$$$^$9!#(B +$B$3$l$i$N6u$->l=j$O!"=gHV$K(B: @code{number}, @code{subject}, @code{from}, +@code{date}, @code{id}, @code{chars}, @code{lines}, @code{xref}, +@code{extra} $B$G$9!#$3$l$i$N6u$->l=j$K?($C$F@_Dj$9$k%^%/%m$,$"$j$^(B +$B$9(B --- $B$=$l$i$OA4$F!"$=$l$>(B +$B$l(B @code{mail-header-} $B$H(B @code{mail-header-set-} $B$$$&M=A[$5$l$kL>A0$r;}$C(B +$B$F$$$^$9!#(B @code{extra} $B$N>l=j$O%X%C%@!<(B/$BCM$NBP$NO"A[%j%9%H$G$"$k0J30$O$3$l$i$NA4$F(B $B$N>l=j$OJ8;zNs$G$9(B (@pxref{To From Newsgroups})$B!#(B @@ -25969,8 +25927,8 @@ Gnus $B$O(B Emacs Lisp $B$K$h$C$F=q$+$l$F$$$F!"$=$l$O$?$/$5$s$NC` #1}} -\newcommand{\gnusacronym}[1]{\textit{#1}} +\newcommand{\gnusacronym}[1]{\textsc{#1}} \newcommand{\gnusemail}[1]{\textit{#1}} \newcommand{\gnusbullet}{{${\bullet}$}} @@ -382,17 +384,17 @@ license to the document, as described in section 6 of the license. @ifinfo -You can read news (and mail) from within Emacs by using gnus. The news -can be gotten by any nefarious means you can think of---@sc{nntp}, local +You can read news (and mail) from within Emacs by using T-gnus. The news +can be gotten by any nefarious means you can think of---@acronym{NNTP}, local spool or your mbox file. All at the same time, if you want to push your luck. -T-gnus provides @sc{mime} features based on @sc{semi} API. So T-gnus -supports your right to read strange messages including big images or -other various kinds of formats. T-gnus also supports +T-gnus provides @acronym{MIME} features based on @acronym{SEMI} API. So +T-gnus supports your right to read strange messages including big images +or other various kinds of formats. T-gnus also supports internationalization/localization and multiscript features based on MULE -API. So T-gnus does not discriminate various language communities. -Oh, if you are a Klingon, please wait Unicode Next Generation. +API. So T-gnus does not discriminate various language communities. Oh, +if you are a Klingon, please wait Unicode Next Generation. This manual corresponds to T-gnus 6.15. @@ -435,16 +437,16 @@ the program. * Scoring:: Assigning values to articles. * Various:: General purpose settings. * The End:: Farewell and goodbye. -* Appendices:: Terminology, Emacs intro, FAQ, History, Internals. +* Appendices:: Terminology, Emacs intro, @acronym{FAQ}, History, Internals. * Index:: Variable, function and concept index. * Key Index:: Key Index. Other related manuals * Message:(message). Composing messages. -* Emacs-MIME:(emacs-mime). Composing messages; MIME-specific parts. +* Emacs-MIME:(emacs-mime). Composing messages; @acronym{MIME}-specific parts. * Sieve:(sieve). Managing Sieve scripts in Emacs. -* PGG:(pgg). PGP/MIME with Gnus. +* PGG:(pgg). @acronym{PGP/MIME} with Gnus. @detailmenu --- The Detailed Node Listing --- @@ -636,7 +638,7 @@ Various Summary Stuff Article Buffer * Hiding Headers:: Deciding what headers should be displayed. -* Using MIME:: Pushing articles through @sc{mime} before reading them. +* Using MIME:: Pushing articles through @acronym{MIME} before reading them. * Customizing Articles:: Tailoring the look of the articles. * Article Keymap:: Keystrokes available in the article buffer. * Misc Article:: Other stuff. @@ -658,7 +660,7 @@ Select Methods * Getting News:: Reading USENET news with Gnus. * Getting Mail:: Reading your personal mail with Gnus. * Browsing the Web:: Getting messages from a plethora of Web sources. -* IMAP:: Using Gnus as a @sc{imap} client. +* IMAP:: Using Gnus as a @acronym{IMAP} client. * Other Sources:: Reading directories, files, SOUP packets. * Combined Groups:: Combining groups into one group. * Gnus Unplugged:: Reading news and mail offline. @@ -675,10 +677,10 @@ Server Buffer Getting News -* NNTP:: Reading news from an @sc{nntp} server. +* NNTP:: Reading news from an @acronym{NNTP} server. * News Spool:: Reading news from the local spool. -@sc{nntp} +@acronym{NNTP} * Direct Functions:: Connecting directly to the server. * Indirect Functions:: Connecting indirectly to the server. @@ -709,7 +711,7 @@ Mail Sources Choosing a Mail Back End * Unix Mail Box:: Using the (quite) standard Un*x mbox. -* Rmail Babyl:: Emacs programs use the rmail babyl format. +* Rmail Babyl:: Emacs programs use the Rmail Babyl format. * Mail Spool:: Store your mail in a private spool? * MH Spool:: An mhspool-like back end. * Maildir:: Another one-file-per-message format. @@ -726,13 +728,13 @@ Browsing the Web * RSS:: Reading RDF site summary. * Customizing w3:: Doing stuff to Emacs/w3 from Gnus. -@sc{imap} +@acronym{IMAP} * Splitting in IMAP:: Splitting mail with nnimap. * Expiring in IMAP:: Expiring mail with nnimap. * Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox. * Expunging mailboxes:: Equivalent of a ``compress mailbox'' button. -* A note on namespaces:: How to (not) use IMAP namespace in Gnus. +* A note on namespaces:: How to (not) use @acronym{IMAP} namespace in Gnus. Other Sources @@ -765,7 +767,7 @@ Gnus Unplugged * Agent as Cache:: The Agent is a big cache too. * Agent Expiry:: How to make old articles go away. * Agent Regeneration:: How to recover from lost connections and other accidents. -* Agent and IMAP:: How to use the Agent with IMAP. +* Agent and IMAP:: How to use the Agent with @acronym{IMAP}. * Outgoing Messages:: What happens when you post/mail something? * Agent Variables:: Customizing is fun. * Example Setup:: An example @file{~/.gnus.el} file for offline people. @@ -988,7 +990,7 @@ news. This variable should be a list where the first element says native method. All groups not fetched with this method are foreign groups. -For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where +For instance, if the @samp{news.somewhere.edu} @acronym{NNTP} server is where you want to get your daily dosage of news from, you'd say: @lisp @@ -1007,12 +1009,13 @@ server is running Leafnode; in this case, use @code{(nntp "localhost")}. @vindex gnus-nntpserver-file @cindex NNTPSERVER -@cindex @sc{nntp} server +@cindex @acronym{NNTP} server If this variable is not set, gnus will take a look at the -@code{NNTPSERVER} environment variable. If that variable isn't set, +@env{NNTPSERVER} environment variable. If that variable isn't set, gnus will see whether @code{gnus-nntpserver-file} -(@file{/etc/nntpserver} by default) has any opinions on the matter. If -that fails as well, gnus will try to use the machine running Emacs as an @sc{nntp} server. That's a long shot, though. +(@file{/etc/nntpserver} by default) has any opinions on the matter. +If that fails as well, gnus will try to use the machine running Emacs +as an @acronym{NNTP} server. That's a long shot, though. @vindex gnus-nntp-server If @code{gnus-nntp-server} is set, this variable will override @@ -1022,7 +1025,7 @@ If @code{gnus-nntp-server} is set, this variable will override @vindex gnus-secondary-servers @vindex gnus-nntp-server You can also make gnus prompt you interactively for the name of an -@sc{nntp} server. If you give a non-numerical prefix to @code{gnus} +@acronym{NNTP} server. If you give a non-numerical prefix to @code{gnus} (i.e., @kbd{C-u M-x gnus}), gnus will let you choose between the servers in the @code{gnus-secondary-servers} list (if any). You can also just type in the name of any server you feel like visiting. (Note that this @@ -1032,7 +1035,7 @@ server.) @findex gnus-group-browse-foreign-server @kindex B (Group) -However, if you use one @sc{nntp} server regularly and are just +However, if you use one @acronym{NNTP} server regularly and are just interested in a couple of groups from a different server, you would be better served by using the @kbd{B} command in the group buffer. It will let you have a look at what groups are available, and you can subscribe @@ -1348,7 +1351,7 @@ New groups that match this regexp are subscribed using @section Changing Servers @cindex changing servers -Sometimes it is necessary to move from one @sc{nntp} server to another. +Sometimes it is necessary to move from one @acronym{NNTP} server to another. This happens very rarely, but perhaps you change jobs, or one server is very flaky and you want to use another. @@ -1358,7 +1361,7 @@ Changing the server is pretty easy, right? You just change @emph{Wrong!} Article numbers are not (in any way) kept synchronized between different -@sc{nntp} servers, and the only way Gnus keeps track of what articles +@acronym{NNTP} servers, and the only way Gnus keeps track of what articles you have read is by keeping track of article numbers. So when you change @code{gnus-select-method}, your @file{.newsrc} file becomes worthless. @@ -1576,7 +1579,7 @@ variable. If this variable is @code{nil}, gnus will ask for group info in total lock-step, which isn't very fast. If it is @code{some} and you use an -@sc{nntp} server, gnus will pump out commands as fast as it can, and +@acronym{NNTP} server, gnus will pump out commands as fast as it can, and read all the replies in one swoop. This will normally result in better performance, but if the server does not support the aforementioned @code{LIST ACTIVE group} command, this isn't very nice to the server. @@ -1797,7 +1800,7 @@ Number of unseen articles. Estimated total number of articles. (This is really @var{max-number} minus @var{min-number} plus 1.) -Gnus uses this estimation because the @sc{nntp} protocol provides +Gnus uses this estimation because the @acronym{NNTP} protocol provides efficient access to @var{max-number} and @var{min-number} but getting the true unread message count is not possible efficiently. For hysterical raisins, even the mail back ends, where the true number of @@ -1823,7 +1826,10 @@ Group comment (@pxref{Group Parameters}) or group name if there is no comment element in the group parameters. @item D -Newsgroup description. +Newsgroup description. You need to read the group descriptions +before these will appear, and to do that, you either have to set +@code{gnus-read-active-file} or use the group buffer @kbd{M-d} +command. @item o @samp{m} if moderated. @@ -2127,6 +2133,10 @@ number (@code{-n}), the @code{n} oldest articles will be fetched. If it is positive, the @code{n} articles that have arrived most recently will be fetched. +@vindex gnus-large-ephemeral-newsgroup +Same as @code{gnus-large-newsgroup}, but only used for ephemeral +newsgroups. + @vindex gnus-select-group-hook @vindex gnus-auto-select-first @vindex gnus-auto-select-subject @@ -2271,7 +2281,7 @@ read articles (@code{gnus-group-clear-data}). @item M-x gnus-group-clear-data-on-native-groups @kindex M-x gnus-group-clear-data-on-native-groups @findex gnus-group-clear-data-on-native-groups -If you have switched from one @sc{nntp} server to another, all your marks +If you have switched from one @acronym{NNTP} server to another, all your marks and read ranges have become worthless. You can use this command to clear out all data that you have on your native groups. Use with caution. @@ -2498,7 +2508,7 @@ consulted. @cindex making groups Make a new group (@code{gnus-group-make-group}). Gnus will prompt you for a name, a method and possibly an @dfn{address}. For an easier way -to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}. +to subscribe to @acronym{NNTP} groups, @pxref{Browse Foreign Server}. @item G r @kindex G r (Group) @@ -2646,7 +2656,7 @@ methods. If @code{gnus-activate-foreign-newsgroups} is a positive number, gnus will check all foreign groups with this level or lower at startup. This might take quite a while, especially if you subscribe to lots of -groups from different @sc{nntp} servers. Also @pxref{Group Levels}; +groups from different @acronym{NNTP} servers. Also @pxref{Group Levels}; @code{gnus-activate-level} also affects activation of foreign newsgroups. @@ -2749,10 +2759,11 @@ of whether it has any unread articles. @item broken-reply-to @cindex broken-reply-to Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To} -headers in this group are to be ignored. This can be useful if you're -reading a mailing list group where the listserv has inserted -@code{Reply-To} headers that point back to the listserv itself. This is -broken behavior. So there! +headers in this group are to be ignored, and for the header to be hidden +if @code{reply-to} is part of @code{gnus-boring-article-headers}. This +can be useful if you're reading a mailing list group where the listserv +has inserted @code{Reply-To} headers that point back to the listserv +itself. That is broken behavior. So there! @item to-group @cindex to-group @@ -2836,7 +2847,7 @@ Display all articles, both read and unread. @item an integer Display the last @var{integer} articles in the group. This is the same as -entering the group with C-u @var{integer}. +entering the group with @kbd{C-u @var{integer}}. @item default Display the default visible articles, which normally includes unread and @@ -2919,9 +2930,9 @@ instead of @code{gnus-post-method}. @item banner @cindex banner -An item like @code{(banner . "regex")} causes any part of an article -that matches the regular expression "regex" to be stripped. Instead of -"regex", you can also use the symbol @code{signature} which strips the +An item like @code{(banner . @var{regexp})} causes any part of an article +that matches the regular expression @var{regexp} to be stripped. Instead of +@var{regexp}, you can also use the symbol @code{signature} which strips the last signature or any of the elements of the alist @code{gnus-article-banner-alist}. @@ -2954,8 +2965,20 @@ that group. @code{gnus-show-threads} will be made into a local variable in the summary buffer you enter, and the form @code{nil} will be @code{eval}ed there. +Note that this feature sets the variable locally to the summary buffer. +But some variables are evaluated in the article buffer, or in the +message buffer (of a reply or followup or otherwise newly created +message). As a workaround, it might help to add the variable in +question to @code{gnus-newsgroup-variables}. @xref{Various Summary +Stuff}. So if you want to set @code{message-from-style} via the group +parameters, then you may need the following statement elsewhere in your +@file{~/.gnus} file: +@lisp +(add-to-list 'gnus-newsgroup-variables 'message-from-style) +@end lisp + @vindex gnus-list-identifiers -A use for this feature, is to remove a mailing list identifier tag in +A use for this feature is to remove a mailing list identifier tag in the subject fields of articles. E.g. if the news group @samp{nntp+news.gnus.org:gmane.text.docbook.apps} has the tag @samp{DOC-BOOK-APPS:} in the subject of all articles, this tag can be @@ -2963,7 +2986,6 @@ removed from the article subjects in the summary buffer for the group by putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")} into the group parameters for the group. - This can also be used as a group-specific hook function, if you'd like. If you want to hear a beep when you enter a group, you could put something like @code{(dummy-variable (ding))} in the parameters of that @@ -3024,7 +3046,7 @@ These commands all list various slices of the groups available. List all groups that have unread articles (@code{gnus-group-list-groups}). If the numeric prefix is used, this command will list only groups of level ARG and lower. By default, it -only lists groups of level five (i. e., +only lists groups of level five (i.e., @code{gnus-group-default-list-level}) or lower (i.e., just subscribed groups). @@ -4032,7 +4054,7 @@ whether they are empty or not. @item gnus-group-name-charset-method-alist @vindex gnus-group-name-charset-method-alist An alist of method and the charset for group names. It is used to show -non-ASCII group names. +non-@acronym{ASCII} group names. For example: @lisp @@ -4044,9 +4066,9 @@ For example: @cindex UTF-8 group names @vindex gnus-group-name-charset-group-alist An alist of regexp of group name and the charset for group names. It -is used to show non-ASCII group names. @code{((".*" utf-8))} is the -default value if UTF-8 is supported, otherwise the default is -@code{nil}. +is used to show non-@acronym{ASCII} group names. @code{((".*" +utf-8))} is the default value if UTF-8 is supported, otherwise the +default is @code{nil}. For example: @lisp @@ -4121,13 +4143,13 @@ news. @vindex gnus-group-faq-directory @cindex FAQ @cindex ange-ftp -Try to fetch the FAQ for the current group -(@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from -@code{gnus-group-faq-directory}, which is usually a directory on a -remote machine. This variable can also be a list of directories. In -that case, giving a prefix to this command will allow you to choose -between the various sites. @code{ange-ftp} (or @code{efs}) will be used -for fetching the file. +Try to fetch the @acronym{FAQ} for the current group +(@code{gnus-group-fetch-faq}). Gnus will try to get the @acronym{FAQ} +from @code{gnus-group-faq-directory}, which is usually a directory on +a remote machine. This variable can also be a list of directories. +In that case, giving a prefix to this command will allow you to choose +between the various sites. @code{ange-ftp} (or @code{efs}) will be +used for fetching the file. If fetching from the first site is unsuccessful, gnus will attempt to go through @code{gnus-group-faq-directory} and try to open them one by one. @@ -4514,13 +4536,18 @@ lines. A thread could be drawn like this: You can customize the appearance with the following options. Note that it is possible to make the thread display look really neat by -replacing the default ASCII characters with graphic line-drawing -glyphs. +replacing the default @acronym{ASCII} characters with graphic +line-drawing glyphs. @table @code @item gnus-sum-thread-tree-root @vindex gnus-sum-thread-tree-root Used for the root of a thread. If @code{nil}, use subject -instead. The default is @samp{> }. +instead. The default is @samp{> }. + +@item gnus-sum-thread-tree-false-root +@vindex gnus-sum-thread-tree-false-root +Used for the false root of a thread (@pxref{Loose Threads}). If +@code{nil}, use subject instead. The default is @samp{> }. @item gnus-sum-thread-tree-single-indent @vindex gnus-sum-thread-tree-single-indent @@ -4675,7 +4702,7 @@ headers are used instead. @vindex nnmail-extra-headers A related variable is @code{nnmail-extra-headers}, which controls when -to include extra headers when generating overview (@sc{nov}) files. +to include extra headers when generating overview (@acronym{NOV}) files. If you have old overview files, you should regenerate them after changing this variable, by entering the server buffer using @kbd{^}, and then @kbd{g} on the appropriate mail server (e.g. nnml) to cause @@ -4707,7 +4734,7 @@ convince their news server administrator to provide some additional support: The above is mostly useful for mail groups, where you have control over -the @sc{nov} files that are created. However, if you can persuade your +the @acronym{NOV} files that are created. However, if you can persuade your nntp admin to add (in the usual implementation, notably INN): @example @@ -5220,6 +5247,10 @@ command uses the process/prefix convention. @findex gnus-summary-reply-broken-reply-to Mail a reply to the author of the current article but ignore the @code{Reply-To} field (@code{gnus-summary-reply-broken-reply-to}). +If you need this because a mailing list incorrectly sets a +@code{Reply-To} header pointing to the list, you probably want to set +the @code{broken-reply-to} group parameter instead, so things will work +correctly. @xref{Group Parameters}. @item S B R @kindex S B R (Summary) @@ -6569,6 +6600,11 @@ This variable can also be set to @code{invisible}. This won't have any visible effects, but is useful if you use the @kbd{A T} command a lot (@pxref{Finding the Parent}). +@item gnus-fetch-old-ephemeral-headers +@vindex gnus-fetch-old-ephemeral-headers +Same as @code{gnus-fetch-old-headers}, but only used for ephemeral +newsgroups. + @item gnus-build-sparse-threads @vindex gnus-build-sparse-threads Fetching old headers can be slow. A low-rent similar effect can be @@ -6948,7 +6984,7 @@ say something like: @cindex article pre-fetch @cindex pre-fetch -If you read your news from an @sc{nntp} server that's far away, the +If you read your news from an @acronym{NNTP} server that's far away, the network latencies may make reading articles a chore. You have to wait for a while after pressing @kbd{n} to go to the next article before the article appears. Why can't gnus just go ahead and fetch the article @@ -6969,7 +7005,7 @@ thing to do, but I don't see any real alternatives. Setting up that extra connection takes some time, so gnus startup will be slower. Gnus will fetch more articles than you will read. This will mean that -the link between your machine and the @sc{nntp} server will become more +the link between your machine and the @acronym{NNTP} server will become more loaded than if you didn't use article pre-fetch. The server itself will also become more loaded---both with the extra article requests, and the extra connection. @@ -7041,7 +7077,7 @@ The default value is @code{(read exit)}. @cindex article caching @cindex caching -If you have an @emph{extremely} slow @sc{nntp} connection, you may +If you have an @emph{extremely} slow @acronym{NNTP} connection, you may consider turning article caching on. Each article will then be stored locally under your home directory. As you may surmise, this could potentially use @emph{huge} amounts of disk space, as well as eat up all @@ -7082,7 +7118,7 @@ So where does the massive article-fetching and storing come into the picture? The @code{gnus-jog-cache} command will go through all subscribed newsgroups, request all unread articles, score them, and store them in the cache. You should only ever, ever ever ever, use this -command if 1) your connection to the @sc{nntp} server is really, really, +command if 1) your connection to the @acronym{NNTP} server is really, really, really slow and 2) you have a really, really, really huge disk. Seriously. One way to cut down on the number of articles downloaded is to score unwanted articles down and have them marked as read. They will @@ -7108,7 +7144,7 @@ The cache stores information on what articles it contains in its active file (@code{gnus-cache-active-file}). If this file (or any other parts of the cache) becomes all messed up for some reason or other, gnus offers two functions that will try to set things right. @kbd{M-x -gnus-cache-generate-nov-databases} will (re)build all the @sc{nov} +gnus-cache-generate-nov-databases} will (re)build all the @acronym{NOV} files, and @kbd{gnus-cache-generate-active} will (re)generate the active file. @@ -7230,7 +7266,7 @@ Save the current article in mail format @item O r @kindex O r (Summary) @findex gnus-summary-save-article-rmail -Save the current article in rmail format +Save the current article in Rmail format (@code{gnus-summary-save-article-rmail}). @item O f @@ -7279,10 +7315,10 @@ complete headers in the piped output. @findex gnus-summary-muttprint @vindex gnus-summary-muttprint-program Save the current article into muttprint. That is, print it using the -external program Muttprint (see -@uref{http://muttprint.sourceforge.net/}). The program name and -options to use is controlled by the variable -@code{gnus-summary-muttprint-program}. (@code{gnus-summary-muttprint}). +external program @uref{http://muttprint.sourceforge.net/, +Muttprint}. The program name and options to use is controlled by the +variable @code{gnus-summary-muttprint-program}. +(@code{gnus-summary-muttprint}). @end table @@ -7312,7 +7348,7 @@ functions below, or you can create your own. @findex gnus-summary-save-in-rmail @vindex gnus-rmail-save-name @findex gnus-plain-save-name -This is the default format, @dfn{babyl}. Uses the function in the +This is the default format, @dfn{Babyl}. Uses the function in the @code{gnus-rmail-save-name} variable to get a file name to save the article in. The default is @code{gnus-plain-save-name}. @@ -7366,7 +7402,7 @@ reader to use this setting. @vindex gnus-article-save-directory All of these functions, except for the last one, will save the article in the @code{gnus-article-save-directory}, which is initialized from the -@code{SAVEDIR} environment variable. This is @file{~/News/} by +@env{SAVEDIR} environment variable. This is @file{~/News/} by default. As you can see above, the functions use different functions to find a @@ -7469,9 +7505,9 @@ If you'd like to save articles in a hierarchy that looks something like a spool, you could @lisp -(setq gnus-use-long-file-name '(not-save)) ; to get a hierarchy +(setq gnus-use-long-file-name '(not-save)) ; @r{to get a hierarchy} (setq gnus-default-article-saver - 'gnus-summary-save-in-file) ; no encoding + 'gnus-summary-save-in-file) ; @r{no encoding} @end lisp Then just save with @kbd{o}. You'd then read this hierarchy with @@ -7740,9 +7776,9 @@ Files with name matching this regular expression won't be viewed. @item gnus-uu-ignore-files-by-type @vindex gnus-uu-ignore-files-by-type -Files with a @sc{mime} type matching this variable won't be viewed. +Files with a @acronym{MIME} type matching this variable won't be viewed. Note that Gnus tries to guess what type the file is based on the name. -@code{gnus-uu} is not a @sc{mime} package (yet), so this is slightly +@code{gnus-uu} is not a @acronym{MIME} package (yet), so this is slightly kludgey. @item gnus-uu-tmp-dir @@ -7792,7 +7828,7 @@ Hook run before sending a message to @code{uudecode}. @vindex gnus-uu-view-with-metamail @cindex metamail Non-@code{nil} means that @code{gnus-uu} will ignore the viewing -commands defined by the rule variables and just fudge a @sc{mime} +commands defined by the rule variables and just fudge a @acronym{MIME} content type based on the file name. The result will be fed to @code{metamail} for viewing. @@ -8093,7 +8129,7 @@ too much cruft in most articles. @findex gnus-article-hide Do quite a lot of hiding on the article buffer (@kbd{gnus-article-hide}). In particular, this function will hide -headers, PGP, cited text and the signature. +headers, @acronym{PGP}, cited text and the signature. @item W W h @kindex W W h (Summary) @@ -8135,7 +8171,7 @@ subject. This can also be a list of regular expressions. @item W W P @kindex W W P (Summary) @findex gnus-article-hide-pem -Hide @sc{pem} (privacy enhanced messages) cruft +Hide @acronym{PEM} (privacy enhanced messages) cruft (@code{gnus-article-hide-pem}). @item W W B @@ -8331,8 +8367,8 @@ Toggle whether to display all headers in the article buffer permanently @item W m @kindex W m (Summary) @findex gnus-summary-toggle-mime -Toggle whether to run the article through @sc{mime} before displaying -(@code{gnus-summary-toggle-mime}). +Toggle whether to run the article through @acronym{MIME} before +displaying (@code{gnus-summary-toggle-mime}). @item W o @kindex W o (Summary) @@ -8416,16 +8452,26 @@ Translate CRLF pairs (i. e., @samp{^M}s on the end of the lines) into LF CRs into LF (this takes care of Mac line endings) (@code{gnus-article-remove-cr}). +@kindex W q (Summary) +@findex gnus-article-de-quoted-unreadable +Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}). +Quoted-Printable is one common @acronym{MIME} encoding employed when +sending non-@acronym{ASCII} (i.e., 8-bit) articles. It typically +makes strings like @samp{déjà vu} look like @samp{d=E9j=E0 vu}, which +doesn't look very readable to me. Note that this is usually done +automatically by Gnus if the message in question has a +@code{Content-Transfer-Encoding} header that says that this encoding +has been done. If a prefix is given, a charset will be asked for. + @item W 6 @kindex W 6 (Summary) @findex gnus-article-de-base64-unreadable -Treat base64 (@code{gnus-article-de-base64-unreadable}). -Base64 is one common @sc{mime} encoding employed when sending non-ASCII -(i. e., 8-bit) articles. Note that this is usually done -automatically by Gnus if the message in question has a -@code{Content-Transfer-Encoding} header that says that this encoding has -been done. -If a prefix is given, a charset will be asked for. +Treat base64 (@code{gnus-article-de-base64-unreadable}). Base64 is +one common @acronym{MIME} encoding employed when sending +non-@acronym{ASCII} (i.e., 8-bit) articles. Note that this is +usually done automatically by Gnus if the message in question has a +@code{Content-Transfer-Encoding} header that says that this encoding +has been done. If a prefix is given, a charset will be asked for. @item W Z @kindex W Z (Summary) @@ -8445,9 +8491,9 @@ the newlines (@code{gnus-article-unsplit-urls}). @item W h @kindex W h (Summary) @findex gnus-article-wash-html -Treat @sc{html} (@code{gnus-article-wash-html}). Note that this is +Treat @acronym{HTML} (@code{gnus-article-wash-html}). Note that this is usually done automatically by Gnus if the message in question has a -@code{Content-Type} header that says that the message is @sc{html}. +@code{Content-Type} header that says that the message is @acronym{HTML}. If a prefix is given, a charset will be asked for. @@ -8455,7 +8501,7 @@ If a prefix is given, a charset will be asked for. The default is to use the function specified by @code{mm-text-html-renderer} (@pxref{Display Customization, ,Display Customization, emacs-mime, The Emacs MIME Manual}) to convert the -@sc{html}, but this is controlled by the +@acronym{HTML}, but this is controlled by the @code{gnus-article-wash-function} variable. Pre-defined functions you can use include: @@ -8464,17 +8510,16 @@ can use include: Use Emacs/w3. @item w3m -Use emacs-w3m (see @uref{http://emacs-w3m.namazu.org/} for more -information). +Use @uref{http://emacs-w3m.namazu.org/, emacs-w3m}. @item links -Use Links (see @uref{http://artax.karlin.mff.cuni.cz/~mikulas/links/}). +Use @uref{http://links.sf.net/, Links}. @item lynx -Use Lynx (see @uref{http://lynx.browser.org/}). +Use @uref{http://lynx.isc.org/, Lynx}. @item html2text -Use html2text -- a simple @sc{html} converter included with Gnus. +Use html2text---a simple @acronym{HTML} converter included with Gnus. @end table @@ -8493,17 +8538,19 @@ Add clickable buttons to the article headers @item W p @kindex W p (Summary) @findex gnus-article-verify-x-pgp-sig -Verify a signed control message (@code{gnus-article-verify-x-pgp-sig}). -Control messages such as @code{newgroup} and @code{checkgroups} are -usually signed by the hierarchy maintainer. You need to add the PGP -public key of the maintainer to your keyring to verify the -message.@footnote{PGP keys for many hierarchies are available at -@uref{ftp://ftp.isc.org/pub/pgpcontrol/README.html}} +Verify a signed control message +(@code{gnus-article-verify-x-pgp-sig}). Control messages such as +@code{newgroup} and @code{checkgroups} are usually signed by the +hierarchy maintainer. You need to add the @acronym{PGP} public key of +the maintainer to your keyring to verify the +message.@footnote{@acronym{PGP} keys for many hierarchies are +available at @uref{ftp://ftp.isc.org/pub/pgpcontrol/README.html}} @item W s @kindex W s (Summary) @findex gnus-summary-force-verify-and-decrypt -Verify a signed (PGP, @sc{pgp/mime} or @sc{s/mime}) message +Verify a signed (@acronym{PGP}, @acronym{PGP/MIME} or +@acronym{S/MIME}) message (@code{gnus-summary-force-verify-and-decrypt}). @xref{Security}. @item W a @@ -8615,7 +8662,7 @@ one that handles article bodies and one that handles article heads: This is an alist where each entry has this form: @lisp -(REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR) +(@var{regexp} @var{button-par} @var{use-p} @var{function} @var{data-par}) @end lisp @table @var @@ -8663,12 +8710,12 @@ article head only, and that each entry has an additional element that is used to say what headers to apply the buttonize coding to: @lisp -(HEADER REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR) +(@var{header} @var{regexp} @var{nutton-par} @var{use-p} @var{function} @var{data-par}) @end lisp @var{header} is a regular expression. -@subsubheading Related variables and functions +@subsubsection Related variables and functions @item gnus-button-@var{*}-level @xref{Article Button Levels}. @@ -8758,7 +8805,7 @@ specific groups (@pxref{Group Parameters}). Here's an example for the variable @code{gnus-parameters}: @lisp -;; increase `gnus-button-*-level' in some groups: +;; @r{increase @code{gnus-button-*-level} in some groups:} (setq gnus-parameters '(("\\<\\(emacs\\|gnus\\)\\>" (gnus-button-emacs-level 10)) ("\\" (gnus-button-man-level 10)) @@ -8804,7 +8851,7 @@ Related variables and functions include @item gnus-button-tex-level @vindex gnus-button-tex-level -Controls the display of references to TeX or LaTeX stuff, e.g. for CTAN +Controls the display of references to @TeX{} or LaTeX stuff, e.g. for CTAN URLs. See the variables @code{gnus-ctan-url}, @code{gnus-button-ctan-handler}, @code{gnus-button-ctan-directory-regexp}, and @@ -8920,7 +8967,7 @@ try to match the headers to what you have (@pxref{Picons}). Smileys are those little @samp{:-)} symbols that people like to litter their messages with (@pxref{Smileys}). -All these functions are toggles--if the elements already exist, +All these functions are toggles---if the elements already exist, they'll be removed. @table @kbd @@ -8985,13 +9032,13 @@ from the end of the body towards the beginning.) One likely value is: @lisp (setq gnus-signature-separator - '("^-- $" ; The standard - "^-- *$" ; A common mangling - "^-------*$" ; Many people just use a looong - ; line of dashes. Shame! - "^ *--------*$" ; Double-shame! - "^________*$" ; Underscores are also popular - "^========*$")) ; Pervert! + '("^-- $" ; @r{The standard} + "^-- *$" ; @r{A common mangling} + "^-------*$" ; @r{Many people just use a looong} + ; @r{line of dashes. Shame!} + "^ *--------*$" ; @r{Double-shame!} + "^________*$" ; @r{Underscores are also popular} + "^========*$")) ; @r{Pervert!} @end lisp The more permissive you are, the more likely it is that you'll get false @@ -9050,43 +9097,43 @@ Translate the article from one language to another @cindex viewing attachments The following commands all understand the numerical prefix. For -instance, @kbd{3 b} means ``view the third @sc{mime} part''. +instance, @kbd{3 b} means ``view the third @acronym{MIME} part''. @table @kbd @item b @itemx K v @kindex b (Summary) @kindex K v (Summary) -View the @sc{mime} part. +View the @acronym{MIME} part. @item K o @kindex K o (Summary) -Save the @sc{mime} part. +Save the @acronym{MIME} part. @item K c @kindex K c (Summary) -Copy the @sc{mime} part. +Copy the @acronym{MIME} part. @item K e @kindex K e (Summary) -View the @sc{mime} part externally. +View the @acronym{MIME} part externally. @item K i @kindex K i (Summary) -View the @sc{mime} part internally. +View the @acronym{MIME} part internally. @item K | @kindex K | (Summary) -Pipe the @sc{mime} part to an external command. +Pipe the @acronym{MIME} part to an external command. @end table -The rest of these @sc{mime} commands do not use the numerical prefix in +The rest of these @acronym{MIME} commands do not use the numerical prefix in the same manner: @table @kbd @item K b @kindex K b (Summary) -Make all the @sc{mime} parts have buttons in front of them. This is +Make all the @acronym{MIME} parts have buttons in front of them. This is mostly useful if you wish to save (or perform other actions) on inlined parts. @@ -9101,7 +9148,7 @@ be viewed in a more pleasant manner @item X m @kindex X m (Summary) @findex gnus-summary-save-parts -Save all parts matching a @sc{mime} type to a directory +Save all parts matching a @acronym{MIME} type to a directory (@code{gnus-summary-save-parts}). Understands the process/prefix convention (@pxref{Process/Prefix}). @@ -9127,13 +9174,13 @@ This command looks in the @code{Content-Type} header to determine the charset. If there is no such header in the article, you can give it a prefix, which will prompt for the charset to decode as. In regional groups where people post using some common encoding (but do not -include @sc{mime} headers), you can set the @code{charset} group/topic +include @acronym{MIME} headers), you can set the @code{charset} group/topic parameter to the required charset (@pxref{Group Parameters}). @item W M v @kindex W M v (Summary) @findex gnus-mime-view-all-parts -View all the @sc{mime} parts in the current article +View all the @acronym{MIME} parts in the current article (@code{gnus-mime-view-all-parts}). @end table @@ -9143,7 +9190,7 @@ Relevant variables: @table @code @item gnus-ignored-mime-types @vindex gnus-ignored-mime-types -This is a list of regexps. @sc{mime} types that match a regexp from +This is a list of regexps. @acronym{MIME} types that match a regexp from this list will be completely ignored by Gnus. The default value is @code{nil}. @@ -9157,35 +9204,35 @@ To have all Vcards be ignored, you'd say something like this: @item gnus-article-loose-mime @vindex gnus-article-loose-mime If non-@code{nil}, Gnus won't required the @samp{MIME-Version} header -before interpreting the message as a @sc{mime} message. This helps +before interpreting the message as a @acronym{MIME} message. This helps when reading messages from certain broken mail user agents. The default is @code{nil}. @item gnus-article-emulate-mime @vindex gnus-article-emulate-mime -There are other, non-@sc{mime} encoding methods used. The most common +There are other, non-@acronym{MIME} encoding methods used. The most common is @samp{uuencode}, but yEncode is also getting to be popular. If -This variable is non-@code{nil}, Gnus will look in message bodies to +this variable is non-@code{nil}, Gnus will look in message bodies to see if it finds these encodings, and if so, it'll run them through the -Gnus @sc{mime} machinery. The default is @code{t}. +Gnus @acronym{MIME} machinery. The default is @code{t}. @item gnus-unbuttonized-mime-types @vindex gnus-unbuttonized-mime-types -This is a list of regexps. @sc{mime} types that match a regexp from -this list won't have @sc{mime} buttons inserted unless they aren't +This is a list of regexps. @acronym{MIME} types that match a regexp from +this list won't have @acronym{MIME} buttons inserted unless they aren't displayed or this variable is overridden by @code{gnus-buttonized-mime-types}. The default value is @code{(".*/.*")}. This variable is only used when -@code{gnus-inhibit-mime-unbuttonizing} is nil. +@code{gnus-inhibit-mime-unbuttonizing} is @code{nil}. @item gnus-buttonized-mime-types @vindex gnus-buttonized-mime-types -This is a list of regexps. @sc{mime} types that match a regexp from -this list will have @sc{mime} buttons inserted unless they aren't +This is a list of regexps. @acronym{MIME} types that match a regexp from +this list will have @acronym{MIME} buttons inserted unless they aren't displayed. This variable overrides @code{gnus-unbuttonized-mime-types}. The default value is @code{nil}. This variable is only used when @code{gnus-inhibit-mime-unbuttonizing} -is nil. +is @code{nil}. To see e.g. security buttons but no other buttons, you could set this variable to @code{("multipart/signed")} and leave @@ -9193,12 +9240,12 @@ variable to @code{("multipart/signed")} and leave @item gnus-inhibit-mime-unbuttonizing @vindex gnus-inhibit-mime-unbuttonizing -If this is non-nil, then all @sc{mime} parts get buttons. The default -value is @code{nil}. +If this is non-@code{nil}, then all @acronym{MIME} parts get buttons. The +default value is @code{nil}. @item gnus-article-mime-part-function @vindex gnus-article-mime-part-function -For each @sc{mime} part, this function will be called with the @sc{mime} +For each @acronym{MIME} part, this function will be called with the @acronym{MIME} handle as the parameter. The function is meant to be used to allow users to gather information from the article (e. g., add Vcard info to the bbdb database) or to do actions based on parts (e. g., automatically @@ -9219,11 +9266,11 @@ Here's an example function the does the latter: @vindex gnus-mime-multipart-functions @item gnus-mime-multipart-functions -Alist of @sc{mime} multipart types and functions to handle them. +Alist of @acronym{MIME} multipart types and functions to handle them. @vindex mm-file-name-rewrite-functions @item mm-file-name-rewrite-functions -List of functions used for rewriting file names of @sc{mime} parts. +List of functions used for rewriting file names of @acronym{MIME} parts. Each function takes a file name as input and returns a file name. Ready-made functions include@* @@ -9264,9 +9311,9 @@ to your @file{~/.gnus.el} file. @section Charsets @cindex charsets -People use different charsets, and we have @sc{mime} to let us know what +People use different charsets, and we have @acronym{MIME} to let us know what charsets they use. Or rather, we wish we had. Many people use -newsreaders and mailers that do not understand or use @sc{mime}, and +newsreaders and mailers that do not understand or use @acronym{MIME}, and just send out messages without saying what character sets they use. To help a bit with this, some local news hierarchies have policies that say what character set is the default. For instance, the @samp{fj} @@ -9278,7 +9325,7 @@ variable, which is an alist of regexps (use the first item to match full group names) and default charsets to be used when reading these groups. @vindex gnus-newsgroup-ignored-charsets -In addition, some people do use soi-disant @sc{mime}-aware agents that +In addition, some people do use soi-disant @acronym{MIME}-aware agents that aren't. These blithely mark messages as being in @code{iso-8859-1} even if they really are in @code{koi-8}. To help here, the @code{gnus-newsgroup-ignored-charsets} variable can be used. The @@ -9289,7 +9336,7 @@ which includes values some agents insist on having in there. @vindex gnus-group-posting-charset-alist When posting, @code{gnus-group-posting-charset-alist} is used to -determine which charsets should not be encoded using the @sc{mime} +determine which charsets should not be encoded using the @acronym{MIME} encodings. For instance, some hierarchies discourage using quoted-printable header encoding. @@ -9319,7 +9366,7 @@ encode using quoted-printable) or @code{t} (always use 8bit). Other charset tricks that may be useful, although not Gnus-specific: -If there are several @sc{mime} charsets that encode the same Emacs +If there are several @acronym{MIME} charsets that encode the same Emacs charset, you can choose what charset to use by saying the following: @lisp @@ -9328,7 +9375,7 @@ charset, you can choose what charset to use by saying the following: @end lisp This means that Russian will be encoded using @code{koi8-r} instead of -the default @code{iso-8859-5} @sc{mime} charset. +the default @code{iso-8859-5} @acronym{MIME} charset. If you want to read messages in @code{koi8-u}, you can cheat and say @@ -9441,7 +9488,7 @@ Commands}). @findex gnus-summary-refer-parent-article If you'd like to read the parent of the current article, and it is not displayed in the summary buffer, you might still be able to. That is, -if the current group is fetched by @sc{nntp}, the parent hasn't expired +if the current group is fetched by @acronym{NNTP}, the parent hasn't expired and the @code{References} in the current article are not mangled, you can just press @kbd{^} or @kbd{A r} (@code{gnus-summary-refer-parent-article}). If everything goes well, @@ -9484,7 +9531,7 @@ by giving the @kbd{A T} command a numerical prefix. @kindex M-^ (Summary) @cindex Message-ID @cindex fetching by Message-ID -You can also ask the @sc{nntp} server for an arbitrary article, no +You can also ask the @acronym{NNTP} server for an arbitrary article, no matter what group it belongs to. @kbd{M-^} (@code{gnus-summary-refer-article}) will ask you for a @code{Message-ID}, which is one of those long, hard-to-read thingies @@ -9499,8 +9546,8 @@ by giving this command a prefix. @vindex gnus-refer-article-method If the group you are reading is located on a back end that does not support fetching by @code{Message-ID} very well (like @code{nnspool}), -you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It -would, perhaps, be best if the @sc{nntp} server you consult is the one +you can set @code{gnus-refer-article-method} to an @acronym{NNTP} method. It +would, perhaps, be best if the @acronym{NNTP} server you consult is the one updating the spool you are reading from, but that's not really necessary. @@ -10019,10 +10066,10 @@ the list in one particular group: @item gnus-newsgroup-variables A list of newsgroup (summary buffer) local variables, or cons of variables and their default values (when the default values are not -nil), that should be made global while the summary buffer is active. -These variables can be used to set variables in the group parameters -while still allowing them to affect operations done in other -buffers. For example: +@code{nil}), that should be made global while the summary buffer is +active. These variables can be used to set variables in the group +parameters while still allowing them to affect operations done in +other buffers. For example: @lisp (setq gnus-newsgroup-variables @@ -10043,13 +10090,13 @@ buffers. For example: @kindex H f (Summary) @findex gnus-summary-fetch-faq @vindex gnus-group-faq-directory -Try to fetch the FAQ (list of frequently asked questions) for the -current group (@code{gnus-summary-fetch-faq}). Gnus will try to get the -FAQ from @code{gnus-group-faq-directory}, which is usually a directory -on a remote machine. This variable can also be a list of directories. -In that case, giving a prefix to this command will allow you to choose -between the various sites. @code{ange-ftp} or @code{efs} will probably -be used for fetching the file. +Try to fetch the @acronym{FAQ} (list of frequently asked questions) +for the current group (@code{gnus-summary-fetch-faq}). Gnus will try +to get the @acronym{FAQ} from @code{gnus-group-faq-directory}, which +is usually a directory on a remote machine. This variable can also be +a list of directories. In that case, giving a prefix to this command +will allow you to choose between the various sites. @code{ange-ftp} +or @code{efs} will probably be used for fetching the file. @item H d @kindex H d (Summary) @@ -10337,11 +10384,11 @@ excessive crossposting (@pxref{Summary Mail Commands}). @cindex cross-posting @cindex Xref -@cindex @sc{nov} +@cindex @acronym{NOV} One thing that may cause Gnus to not do the cross-posting thing -correctly is if you use an @sc{nntp} server that supports @sc{xover} +correctly is if you use an @acronym{NNTP} server that supports @sc{xover} (which is very nice, because it speeds things up considerably) which -does not include the @code{Xref} header in its @sc{nov} lines. This is +does not include the @code{Xref} header in its @acronym{NOV} lines. This is Evil, but all too common, alas, alack. Gnus tries to Do The Right Thing even with @sc{xover} by registering the @code{Xref} lines of all articles you actually read, but if you kill the articles, or just mark @@ -10351,7 +10398,7 @@ the cross reference mechanism. @cindex LIST overview.fmt @cindex overview.fmt -To check whether your @sc{nntp} server includes the @code{Xref} header +To check whether your @acronym{NNTP} server includes the @code{Xref} header in its overview files, try @samp{telnet your.nntp.server nntp}, @samp{MODE READER} on @code{inn} servers, and then say @samp{LIST overview.fmt}. This may not work, but if it does, and the last line you @@ -10380,16 +10427,16 @@ reasons. @enumerate @item -The @sc{nntp} server may fail to generate the @code{Xref} header. This +The @acronym{NNTP} server may fail to generate the @code{Xref} header. This is evil and not very common. @item -The @sc{nntp} server may fail to include the @code{Xref} header in the +The @acronym{NNTP} server may fail to include the @code{Xref} header in the @file{.overview} data bases. This is evil and all too common, alas. @item You may be reading the same group (or several related groups) from -different @sc{nntp} servers. +different @acronym{NNTP} servers. @item You may be getting mail that duplicates articles posted to groups. @@ -10449,18 +10496,19 @@ to you to figure out, I think. @section Security Gnus is able to verify signed messages or decrypt encrypted messages. -The formats that are supported are PGP, @sc{pgp/mime} and @sc{s/mime}, -however you need some external programs to get things to work: +The formats that are supported are @acronym{PGP}, @acronym{PGP/MIME} +and @acronym{S/MIME}, however you need some external programs to get +things to work: @enumerate @item -To handle PGP and PGP/MIME messages, you have to install an OpenPGP -implementation such as GnuPG. The lisp interface to GnuPG included -with Gnus is called PGG (@pxref{Top, ,PGG, pgg, PGG Manual}), but -Mailcrypt and gpg.el are also supported. +To handle @acronym{PGP} and @acronym{PGP/MIME} messages, you have to +install an OpenPGP implementation such as GnuPG. The lisp interface +to GnuPG included with Gnus is called PGG (@pxref{Top, ,PGG, pgg, PGG +Manual}), but Mailcrypt and gpg.el are also supported. @item -To handle @sc{s/mime} message, you need to install OpenSSL. OpenSSL 0.9.6 +To handle @acronym{S/MIME} message, you need to install OpenSSL. OpenSSL 0.9.6 or newer is recommended. @end enumerate @@ -10483,18 +10531,40 @@ protocols. Otherwise, ask user. @item mml1991-use @vindex mml1991-use -Symbol indicating elisp interface to OpenPGP implementation for PGP -messages. The default is @code{pgg}, but @code{mailcrypt} and -@code{gpg} are also supported although deprecated. +Symbol indicating elisp interface to OpenPGP implementation for +@acronym{PGP} messages. The default is @code{pgg}, but +@code{mailcrypt} and @code{gpg} are also supported although +deprecated. @item mml2015-use @vindex mml2015-use Symbol indicating elisp interface to OpenPGP implementation for -PGP/MIME messages. The default is @code{pgg}, but @code{mailcrypt} -and @code{gpg} are also supported although deprecated. +@acronym{PGP/MIME} messages. The default is @code{pgg}, but +@code{mailcrypt} and @code{gpg} are also supported although +deprecated. @end table +@cindex snarfing keys +@cindex importing PGP keys +@cindex PGP key ring import +Snarfing OpenPGP keys (i.e., importing keys from articles into your +key ring) is not supported explicitly through a menu item or command, +rather Gnus do detect and label keys as @samp{application/pgp-keys}, +allowing you to specify whatever action you think is appropriate +through the usual @acronym{MIME} infrastructure. You can use a +@file{~/.mailcap} entry (@pxref{mailcap, , mailcap, emacs-mime, The +Emacs MIME Manual}) such as the following to import keys using GNU +Privacy Guard when you click on the @acronym{MIME} button +(@pxref{Using MIME}). + +@example +application/pgp-keys; gpg --import --interactive --verbose; needsterminal +@end example + +This happens to also be the default action defined in +@code{mailcap-mime-data}. + @node Mailing List @section Mailing List @@ -10553,7 +10623,7 @@ tell gnus otherwise. @menu * Hiding Headers:: Deciding what headers should be displayed. -* Using MIME:: Pushing articles through @sc{mime} before reading them. +* Using MIME:: Pushing articles through @acronym{MIME} before reading them. * Customizing Articles:: Tailoring the look of the articles. * Article Keymap:: Keystrokes available in the article buffer. * Misc Article:: Other stuff. @@ -10654,7 +10724,8 @@ Remove the @code{Followup-To} header if it is identical to the @code{Newsgroups} header. @item reply-to Remove the @code{Reply-To} header if it lists the same address as the -@code{From} header. +@code{From} header, or if the @code{broken-reply-to} group parameter is +set. @item newsgroups Remove the @code{Newsgroups} header if it only contains the current group name. @@ -10688,43 +10759,43 @@ This is also the default value for this variable. @node Using MIME @section Using MIME -@cindex @sc{mime} +@cindex @acronym{MIME} Mime is a standard for waving your hands through the air, aimlessly, while people stand around yawning. -@sc{mime}, however, is a standard for encoding your articles, aimlessly, +@acronym{MIME}, however, is a standard for encoding your articles, aimlessly, while all newsreaders die of fear. -@sc{mime} may specify what character set the article uses, the encoding +@acronym{MIME} may specify what character set the article uses, the encoding of the characters, and it also makes it possible to embed pictures and other naughty stuff in innocent-looking articles. @vindex gnus-show-mime @vindex gnus-article-display-method-for-mime @findex gnus-article-display-mime-message -Gnus handles @sc{mime} by pushing the articles through +gnus handles @acronym{MIME} by pushing the articles through @code{gnus-article-display-method-for-mime}, which is @code{gnus-article-display-mime-message} by default. This function -calls the @sc{semi} MIME-View program to actually do the work. For more -information on @sc{semi} MIME-View, see its manual page (however it is -not existed yet, sorry). +calls the @acronym{SEMI} MIME-View program to actually do the work. For +more information on @acronym{SEMI} MIME-View, see its manual page +(however it is not existed yet, sorry). Set @code{gnus-show-mime} to @code{t} if you want to use -@sc{mime} all the time. If you have @code{gnus-show-mime} set, then -you'll see some unfortunate display glitches in the article buffer. +@acronym{MIME} all the time. If you have @code{gnus-show-mime} set, +then you'll see some unfortunate display glitches in the article buffer. These can't be avoided. In GNUS or Gnus, it might be best to just use the toggling functions from the summary buffer to avoid getting nasty surprises. (For instance, you enter the group @samp{alt.sing-a-long} and, before you know it, -@sc{mime} has decoded the sound file in the article and some horrible -sing-a-long song comes screaming out your speakers, and you can't find -the volume button, because there isn't one, and people are starting to -look at you, and you try to stop the program, but you can't, and you -can't find the program to control the volume, and everybody else in the -room suddenly decides to look at you disdainfully, and you'll feel -rather stupid.) +@acronym{MIME} has decoded the sound file in the article and some +horrible sing-a-long song comes screaming out your speakers, and you +can't find the volume button, because there isn't one, and people are +starting to look at you, and you try to stop the program, but you can't, +and you can't find the program to control the volume, and everybody else +in the room suddenly decides to look at you disdainfully, and you'll +feel rather stupid.) Any similarity to real events and people is purely coincidental. Ahem. @@ -10794,7 +10865,7 @@ non-nil. @end enumerate You may have noticed that the word @dfn{part} is used here. This refers -to the fact that some messages are @sc{mime} multipart articles that may +to the fact that some messages are @acronym{MIME} multipart articles that may be divided into several parts. Articles that are not multiparts are considered to contain just a single part. @@ -10997,7 +11068,7 @@ article buffer. @vindex gnus-article-decode-hook @item gnus-article-decode-hook @cindex MIME -Hook used to decode @sc{mime} articles. The default value is +Hook used to decode @acronym{MIME} articles. The default value is @code{(article-decode-charset article-decode-encoded-words)} @vindex gnus-article-prepare-hook @@ -11060,7 +11131,7 @@ Displayed when Gnus has treated emphasised strings in the article buffer. @end table @item m -The number of @sc{mime} parts in the article. +The number of @acronym{MIME} parts in the article. @end table @@ -11082,10 +11153,10 @@ This is the delimiter mentioned above. By default, it is @samp{^L} @vindex gnus-use-idna @item gnus-use-idna This variable controls whether Gnus performs IDNA decoding of -internationalized domain names inside @sc{From:}, @sc{To:} and -@sc{Cc:} headers. This requires GNU Libidn -(@url{http://www.gnu.org/software/libidn/}, and this variable is only -enabled if you have installed it. +internationalized domain names inside @samp{From}, @samp{To} and +@samp{Cc} headers. This requires +@uref{http://www.gnu.org/software/libidn/, GNU Libidn}, and this +variable is only enabled if you have installed it. @end table @@ -11205,7 +11276,7 @@ When sending mail, Message invokes @code{message-send-mail-function}. The default function, @code{message-send-mail-with-sendmail}, pipes your article to the @code{sendmail} binary for further queuing and sending. When your local system is not configured for sending mail -using @code{sendmail}, and you have access to a remote @sc{smtp} +using @code{sendmail}, and you have access to a remote @acronym{SMTP} server, you can set @code{message-send-mail-function} to @code{smtpmail-send-it} and make sure to setup the @code{smtpmail} package correctly. An example: @@ -11218,9 +11289,10 @@ package correctly. An example: (setq smtp-default-smtp-server "YOUR SMTP HOST") @end lisp -To the thing similar to this, there is @code{message-smtpmail-send-it}. -It is useful if your ISP requires the POP-before-SMTP authentication. -See the documentation for the function @code{mail-source-touch-pop}. +To the thing similar to this, there is +@code{message-smtpmail-send-it}. It is useful if your ISP requires +the @acronym{POP}-before-@acronym{SMTP} authentication. See the +documentation for the function @code{mail-source-touch-pop}. Other possible choices for @code{message-send-mail-function} includes @code{message-send-mail-with-mh}, @code{message-send-mail-with-qmail}, @@ -11238,7 +11310,7 @@ posting: @cindex mailing lists If your news server offers groups that are really mailing lists -gatewayed to the @sc{nntp} server, you can read those groups without +gatewayed to the @acronym{NNTP} server, you can read those groups without problems, but you can't post/followup to them without some difficulty. One solution is to add a @code{to-address} to the group parameters (@pxref{Group Parameters}). An easier thing to do is set the @@ -11257,7 +11329,7 @@ Gnus version), @code{emacs-gnus} (show only Emacs and Gnus versions), @code{emacs-gnus-config} (same as @code{emacs-gnus} plus system configuration), @code{emacs-gnus-type} (same as @code{emacs-gnus} plus system type) or a custom string. If you set it to a string, be sure to -use a valid format, see RFC 2616." +use a valid format, see RFC 2616. @end table @@ -11542,16 +11614,16 @@ So here's a new example: (organization "People's Front Against MWM")) ("^rec.humor" (signature my-funny-signature-randomizer)) - ((equal (system-name) "gnarly") ;; A form + ((equal (system-name) "gnarly") ;; @r{A form} (signature my-quote-randomizer)) - (message-news-p ;; A function symbol + (message-news-p ;; @r{A function symbol} (signature my-news-signature)) - (window-system ;; A value symbol + (window-system ;; @r{A value symbol} ("X-Window-System" (format "%s" window-system))) - ;; If I'm replying to Larsi, set the Organization header. + ;; @r{If I'm replying to Larsi, set the Organization header.} ((header "from" "larsi.*org") (Organization "Somewhere, Inc.")) - ((posting-from-work-p) ;; A user defined function + ((posting-from-work-p) ;; @r{A user defined function} (signature-file "~/.work-signature") (address "user@@bar.foo") (body "You are fired.\n\nSincerely, your boss.") @@ -11702,10 +11774,10 @@ typically enter that group and send all the articles off. @cindex using s/mime @cindex using smime -Gnus can digitally sign and encrypt your messages, using vanilla PGP -format or @sc{pgp/mime} or @sc{s/mime}. For decoding such messages, -see the @code{mm-verify-option} and @code{mm-decrypt-option} options -(@pxref{Security}). +Gnus can digitally sign and encrypt your messages, using vanilla +@acronym{PGP} format or @acronym{PGP/MIME} or @acronym{S/MIME}. For +decoding such messages, see the @code{mm-verify-option} and +@code{mm-decrypt-option} options (@pxref{Security}). @vindex gnus-message-replysign @vindex gnus-message-replyencrypt @@ -11718,7 +11790,7 @@ are in reply to encrypted messages. Gnus offers @code{gnus-message-replysignencrypted} (on by default) will sign automatically encrypted messages. -Instructing MML to perform security operations on a @sc{mime} part is +Instructing MML to perform security operations on a @acronym{MIME} part is done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c C-m c} key map for encryption, as follows. @@ -11728,37 +11800,37 @@ C-m c} key map for encryption, as follows. @kindex C-c C-m s s @findex mml-secure-message-sign-smime -Digitally sign current message using @sc{s/mime}. +Digitally sign current message using @acronym{S/MIME}. @item C-c C-m s o @kindex C-c C-m s o @findex mml-secure-message-sign-pgp -Digitally sign current message using PGP. +Digitally sign current message using @acronym{PGP}. @item C-c C-m s p @kindex C-c C-m s p @findex mml-secure-message-sign-pgp -Digitally sign current message using @sc{pgp/mime}. +Digitally sign current message using @acronym{PGP/MIME}. @item C-c C-m c s @kindex C-c C-m c s @findex mml-secure-message-encrypt-smime -Digitally encrypt current message using @sc{s/mime}. +Digitally encrypt current message using @acronym{S/MIME}. @item C-c C-m c o @kindex C-c C-m c o @findex mml-secure-message-encrypt-pgp -Digitally encrypt current message using PGP. +Digitally encrypt current message using @acronym{PGP}. @item C-c C-m c p @kindex C-c C-m c p @findex mml-secure-message-encrypt-pgpmime -Digitally encrypt current message using @sc{pgp/mime}. +Digitally encrypt current message using @acronym{PGP/MIME}. @item C-c C-m C-n @kindex C-c C-m C-n @@ -11776,7 +11848,7 @@ Remove security related MML tags from message. A @dfn{foreign group} is a group not read by the usual (or default) means. It could be, for instance, a group from a different -@sc{nntp} server, it could be a virtual group, or it could be your own +@acronym{NNTP} server, it could be a virtual group, or it could be your own personal mail group. A foreign group (or any group, really) is specified by a @dfn{name} and @@ -11792,7 +11864,7 @@ we do just that (@pxref{Server Buffer}). The @dfn{name} of the group is the name the back end will recognize the group as. -For instance, the group @samp{soc.motss} on the @sc{nntp} server +For instance, the group @samp{soc.motss} on the @acronym{NNTP} server @samp{some.where.edu} will have the name @samp{soc.motss} and select method @code{(nntp "some.where.edu")}. Gnus will call this group @samp{nntp+some.where.edu:soc.motss}, even though the @code{nntp} @@ -11805,7 +11877,7 @@ The different methods all have their peculiarities, of course. * Getting News:: Reading USENET news with Gnus. * Getting Mail:: Reading your personal mail with Gnus. * Browsing the Web:: Getting messages from a plethora of Web sources. -* IMAP:: Using Gnus as a @sc{imap} client. +* IMAP:: Using Gnus as a @acronym{IMAP} client. * Other Sources:: Reading directories, files, SOUP packets. * Combined Groups:: Combining groups into one group. * Gnus Unplugged:: Reading news and mail offline. @@ -11823,14 +11895,14 @@ the actual media and Gnus, so we might just as well say that each back end represents a virtual server. For instance, the @code{nntp} back end may be used to connect to several -different actual @sc{nntp} servers, or, perhaps, to many different ports -on the same actual @sc{nntp} server. You tell Gnus which back end to +different actual @acronym{NNTP} servers, or, perhaps, to many different ports +on the same actual @acronym{NNTP} server. You tell Gnus which back end to use, and what parameters to set by specifying a @dfn{select method}. These select method specifications can sometimes become quite complicated---say, for instance, that you want to read from the -@sc{nntp} server @samp{news.funet.fi} on port number 13, which -hangs if queried for @sc{nov} headers and has a buggy select. Ahem. +@acronym{NNTP} server @samp{news.funet.fi} on port number 13, which +hangs if queried for @acronym{NOV} headers and has a buggy select. Ahem. Anyway, if you had to specify that for each group that used this server, that would be too much work, so Gnus offers a way of naming select methods, which is what you do in the server buffer. @@ -12011,9 +12083,9 @@ Here's the method for a public spool: @cindex proxy @cindex firewall -If you are behind a firewall and only have access to the @sc{nntp} +If you are behind a firewall and only have access to the @acronym{NNTP} server from the firewall machine, you can instruct Gnus to @code{rlogin} -on the firewall machine and telnet from there to the @sc{nntp} server. +on the firewall machine and telnet from there to the @acronym{NNTP} server. Doing this can be rather fiddly, but your virtual server definition should probably look something like this: @@ -12090,6 +12162,8 @@ buffer, and you should be able to enter any of the groups displayed. @node Server Variables @subsection Server Variables +@cindex server variables +@cindex server parameters One sticky point when defining variables (both on back ends and in Emacs in general) is that some variables are typically initialized from other @@ -12114,6 +12188,7 @@ manual, but here's an example @code{nnml} definition: (nnml-newsgroups-file "~/my-mail/newsgroups")) @end lisp +Server variables are often called @dfn{server parameters}. @node Servers and Methods @subsection Servers and Methods @@ -12201,11 +12276,11 @@ Set server status to offline (@code{gnus-server-offline-server}). @cindex news back ends A newsreader is normally used for reading news. Gnus currently provides -only two methods of getting news---it can read from an @sc{nntp} server, +only two methods of getting news---it can read from an @acronym{NNTP} server, or it can read from a local spool. @menu -* NNTP:: Reading news from an @sc{nntp} server. +* NNTP:: Reading news from an @acronym{NNTP} server. * News Spool:: Reading news from the local spool. @end menu @@ -12214,11 +12289,11 @@ or it can read from a local spool. @subsection NNTP @cindex nntp -Subscribing to a foreign group from an @sc{nntp} server is rather easy. -You just specify @code{nntp} as method and the address of the @sc{nntp} +Subscribing to a foreign group from an @acronym{NNTP} server is rather easy. +You just specify @code{nntp} as method and the address of the @acronym{NNTP} server as the, uhm, address. -If the @sc{nntp} server is located at a non-standard port, setting the +If the @acronym{NNTP} server is located at a non-standard port, setting the third element of the select method to this port number should allow you to connect to the right port. You'll have to edit the group info for that (@pxref{Foreign Groups}). @@ -12241,7 +12316,7 @@ server: @findex nntp-send-authinfo @findex nntp-send-mode-reader is run after a connection has been made. It can be used to send -commands to the @sc{nntp} server after it has been contacted. By +commands to the @acronym{NNTP} server after it has been contacted. By default it sends the command @code{MODE READER} to the server with the @code{nntp-send-mode-reader} function. This function should always be present in this hook. @@ -12250,7 +12325,7 @@ present in this hook. @vindex nntp-authinfo-function @findex nntp-send-authinfo @vindex nntp-authinfo-file -This function will be used to send @samp{AUTHINFO} to the @sc{nntp} +This function will be used to send @samp{AUTHINFO} to the @acronym{NNTP} server. The default function is @code{nntp-send-authinfo}, which looks through your @file{~/.authinfo} (or whatever you've set the @code{nntp-authinfo-file} variable to) for applicable entries. If none @@ -12332,7 +12407,7 @@ nntpd 1.5.11t, since that command chokes that server, I've been told. @item nntp-maximum-request @vindex nntp-maximum-request -If the @sc{nntp} server doesn't support @sc{nov} headers, this back end +If the @acronym{NNTP} server doesn't support @acronym{NOV} headers, this back end will collect headers by sending a series of @code{head} commands. To speed things up, the back end sends lots of these commands without waiting for reply, and then reads all the replies. This is controlled @@ -12342,7 +12417,7 @@ your network is buggy, you should set this to 1. @item nntp-connection-timeout @vindex nntp-connection-timeout If you have lots of foreign @code{nntp} groups that you connect to -regularly, you're sure to have problems with @sc{nntp} servers not +regularly, you're sure to have problems with @acronym{NNTP} servers not responding properly, or being too loaded to reply within reasonable time. This is can lead to awkward problems, which can be helped somewhat by setting @code{nntp-connection-timeout}. This is an integer @@ -12356,7 +12431,7 @@ no timeouts are done. @c @cindex dynamic IP addresses @c If you're running Gnus on a machine that has a dynamically assigned @c address, Gnus may become confused. If the address of your machine -@c changes after connecting to the @sc{nntp} server, Gnus will simply sit +@c changes after connecting to the @acronym{NNTP} server, Gnus will simply sit @c waiting forever for replies from the server. To help with this @c unfortunate problem, you can set this command to a number. Gnus will @c then, if it sits waiting for a reply from the server longer than that @@ -12372,7 +12447,7 @@ no timeouts are done. @item nntp-server-hook @vindex nntp-server-hook -This hook is run as the last step when connecting to an @sc{nntp} +This hook is run as the last step when connecting to an @acronym{NNTP} server. @item nntp-buggy-select @@ -12381,24 +12456,24 @@ Set this to non-@code{nil} if your select routine is buggy. @item nntp-nov-is-evil @vindex nntp-nov-is-evil -If the @sc{nntp} server does not support @sc{nov}, you could set this -variable to @code{t}, but @code{nntp} usually checks automatically whether @sc{nov} +If the @acronym{NNTP} server does not support @acronym{NOV}, you could set this +variable to @code{t}, but @code{nntp} usually checks automatically whether @acronym{NOV} can be used. @item nntp-xover-commands @vindex nntp-xover-commands @cindex nov @cindex XOVER -List of strings used as commands to fetch @sc{nov} lines from a +List of strings used as commands to fetch @acronym{NOV} lines from a server. The default value of this variable is @code{("XOVER" "XOVERVIEW")}. @item nntp-nov-gap @vindex nntp-nov-gap -@code{nntp} normally sends just one big request for @sc{nov} lines to +@code{nntp} normally sends just one big request for @acronym{NOV} lines to the server. The server responds with one huge list of lines. However, if you have read articles 2-5000 in the group, and only want to read -article 1 and 5001, that means that @code{nntp} will fetch 4999 @sc{nov} +article 1 and 5001, that means that @code{nntp} will fetch 4999 @acronym{NOV} lines that you will not need. This variable says how big a gap between two consecutive articles is allowed to be before the @code{XOVER} request is split into several request. Note that if your @@ -12408,7 +12483,7 @@ that fetching will probably be slower. If this variable is @code{nil}, @item nntp-prepare-server-hook @vindex nntp-prepare-server-hook -A hook run before attempting to connect to an @sc{nntp} server. +A hook run before attempting to connect to an @acronym{NNTP} server. @item nntp-warn-about-losing-connection @vindex nntp-warn-about-losing-connection @@ -12418,8 +12493,8 @@ server closes connection. @item nntp-record-commands @vindex nntp-record-commands If non-@code{nil}, @code{nntp} will log all commands it sends to the -@sc{nntp} server (along with a timestamp) in the @samp{*nntp-log*} -buffer. This is useful if you are debugging a Gnus/@sc{nntp} connection +@acronym{NNTP} server (along with a timestamp) in the @samp{*nntp-log*} +buffer. This is useful if you are debugging a Gnus/@acronym{NNTP} connection that doesn't seem to work. @item nntp-open-connection-function @@ -12510,7 +12585,7 @@ command. You may use it as a server variable as follows: @cindex direct connection functions These functions are called direct because they open a direct connection -between your machine and the @sc{nntp} server. The behavior of these +between your machine and the @acronym{NNTP} server. The behavior of these functions is also affected by commonly understood variables (@pxref{Common Variables}). @@ -12523,13 +12598,12 @@ remote system. @findex nntp-open-tls-stream @item nntp-open-tls-stream Opens a connection to a server over a @dfn{secure} channel. To use -this you must have GNUTLS installed (see -@uref{http://www.gnu.org/software/gnutls/}). You then define a server -as follows: +this you must have @uref{http://www.gnu.org/software/gnutls/, GNUTLS} +installed. You then define a server as follows: @lisp -;; "nntps" is port 563 and is predefined in our /etc/services -;; however, gnutls-cli -p doesn't like named ports. +;; @r{"nntps" is port 563 and is predefined in our @file{/etc/services}} +;; @r{however, @samp{gnutls-cli -p} doesn't like named ports.} ;; (nntp "snews.bar.com" (nntp-open-connection-function nntp-open-tls-stream) @@ -12539,14 +12613,14 @@ as follows: @findex nntp-open-ssl-stream @item nntp-open-ssl-stream -Opens a connection to a server over a @dfn{secure} channel. To use this -you must have OpenSSL (@uref{http://www.openssl.org}) or SSLeay -installed (@uref{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL}. You then -define a server as follows: +Opens a connection to a server over a @dfn{secure} channel. To use +this you must have @uref{http://www.openssl.org, OpenSSL} or +@uref{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL, SSLeay} installed. You +then define a server as follows: @lisp -;; "snews" is port 563 and is predefined in our /etc/services -;; however, openssl s_client -port doesn't like named ports. +;; @r{"snews" is port 563 and is predefined in our @file{/etc/services}} +;; @r{however, @samp{openssl s_client -port} doesn't like named ports.} ;; (nntp "snews.bar.com" (nntp-open-connection-function nntp-open-ssl-stream) @@ -12556,7 +12630,7 @@ define a server as follows: @findex nntp-open-telnet-stream @item nntp-open-telnet-stream -Opens a connection to an @sc{nntp} server by simply @samp{telnet}'ing +Opens a connection to an @acronym{NNTP} server by simply @samp{telnet}'ing it. You might wonder why this function exists, since we have the default @code{nntp-open-network-stream} which would do the job. (One of) the reason(s) is that if you are behind a firewall but have direct @@ -12580,7 +12654,7 @@ session, which is not a good idea. @cindex indirect connection functions These functions are called indirect because they connect to an -intermediate host before actually connecting to the @sc{nntp} server. +intermediate host before actually connecting to the @acronym{NNTP} server. All of these functions and related variables are also said to belong to the ``via'' family of connection: they're all prefixed with ``via'' to make things cleaner. The behavior of these functions is also affected by @@ -12590,7 +12664,7 @@ commonly understood variables (@pxref{Common Variables}). @item nntp-open-via-rlogin-and-telnet @findex nntp-open-via-rlogin-and-telnet Does an @samp{rlogin} on a remote system, and then does a @samp{telnet} -to the real @sc{nntp} server from there. This is useful for instance if +to the real @acronym{NNTP} server from there. This is useful for instance if you need to connect to a firewall machine first. @code{nntp-open-via-rlogin-and-telnet}-specific variables: @@ -12684,27 +12758,29 @@ where you would put a @samp{SOCKS} wrapper for instance. @item nntp-address @vindex nntp-address -The address of the @sc{nntp} server. +The address of the @acronym{NNTP} server. @item nntp-port-number @vindex nntp-port-number -Port number to connect to the @sc{nntp} server. The default is -@samp{nntp}. If you use @sc{nntp} over @sc{tls}/@sc{ssl}, you may -want to use integer ports rather than named ports (i.e, use @samp{563} -instead of @samp{snews} or @samp{nntps}), because external TLS/SSL -tools may not work with named ports. +Port number to connect to the @acronym{NNTP} server. The default is +@samp{nntp}. If you use @acronym{NNTP} over +@acronym{TLS}/@acronym{SSL}, you may want to use integer ports rather +than named ports (i.e, use @samp{563} instead of @samp{snews} or +@samp{nntps}), because external @acronym{TLS}/@acronym{SSL} tools may +not work with named ports. @item nntp-end-of-line @vindex nntp-end-of-line -String to use as end-of-line marker when talking to the @sc{nntp} +String to use as end-of-line marker when talking to the @acronym{NNTP} server. This is @samp{\r\n} by default, but should be @samp{\n} when using a non native connection function. @item nntp-telnet-command @vindex nntp-telnet-command -Command to use when connecting to the @sc{nntp} server through -@samp{telnet}. This is NOT for an intermediate host. This is just for -the real @sc{nntp} server. The default is @samp{telnet}. +Command to use when connecting to the @acronym{NNTP} server through +@samp{telnet}. This is @emph{not} for an intermediate host. This is +just for the real @acronym{NNTP} server. The default is +@samp{telnet}. @item nntp-telnet-switches @vindex nntp-telnet-switches @@ -12749,7 +12825,7 @@ Where @code{nnspool} looks for the articles. This is normally @item nnspool-nov-directory @vindex nnspool-nov-directory -Where @code{nnspool} will look for @sc{nov} files. This is normally +Where @code{nnspool} will look for @acronym{NOV} files. This is normally @file{/usr/spool/news/over.view/}. @item nnspool-lib-dir @@ -12774,15 +12850,16 @@ The name of the active date file. @item nnspool-nov-is-evil @vindex nnspool-nov-is-evil -If non-@code{nil}, @code{nnspool} won't try to use any @sc{nov} files +If non-@code{nil}, @code{nnspool} won't try to use any @acronym{NOV} files that it finds. @item nnspool-sift-nov-with-sed @vindex nnspool-sift-nov-with-sed @cindex sed If non-@code{nil}, which is the default, use @code{sed} to get the -relevant portion from the overview file. If nil, @code{nnspool} will -load the entire file into a buffer and process it there. +relevant portion from the overview file. If @code{nil}, +@code{nnspool} will load the entire file into a buffer and process it +there. @end table @@ -12843,13 +12920,13 @@ mail, is that the transport mechanism has very little to do with how they want to treat a message. Many people subscribe to several mailing lists. These are transported -via @sc{smtp}, and are therefore mail. But we might go for weeks without +via @acronym{SMTP}, and are therefore mail. But we might go for weeks without answering, or even reading these messages very carefully. We may not need to save them because if we should need to read one again, they are archived somewhere else. Some people have local news groups which have only a handful of readers. -These are transported via @sc{nntp}, and are therefore news. But we may need +These are transported via @acronym{NNTP}, and are therefore news. But we may need to read and answer a large fraction of the messages very carefully in order to do our work. And there may not be an archive, so we may need to save the interesting messages the same way we would personal mail. @@ -12997,21 +13074,21 @@ function. @vindex nnmail-mail-splitting-charset @vindex nnmail-mail-splitting-decodes -By default the splitting codes @sc{mime} decodes headers so you can match -on non-ASCII strings. The @code{nnmail-mail-splitting-charset} -variable specifies the default charset for decoding. The behaviour -can be turned off completely by binding -@code{nnmail-mail-splitting-decodes} to nil, which is useful if you -want to match articles based on the raw header data. +By default the splitting codes @acronym{MIME} decodes headers so you +can match on non-@acronym{ASCII} strings. The +@code{nnmail-mail-splitting-charset} variable specifies the default +charset for decoding. The behaviour can be turned off completely by +binding @code{nnmail-mail-splitting-decodes} to @code{nil}, which is +useful if you want to match articles based on the raw header data. @vindex nnmail-resplit-incoming -By default, splitting is performed on all incoming messages. If -you specify a @code{directory} entry for the variable -@code{mail-sources} @pxref{Mail Source Specifiers}, however, then -splitting does @emph{not} happen by default. You can set the variable -@code{nnmail-resplit-incoming} to a non-nil value to make splitting -happen even in this case. (This variable has no effect on other kinds -of entries.) +By default, splitting is performed on all incoming messages. If you +specify a @code{directory} entry for the variable @code{mail-sources} +@pxref{Mail Source Specifiers}, however, then splitting does +@emph{not} happen by default. You can set the variable +@code{nnmail-resplit-incoming} to a non-@code{nil} value to make +splitting happen even in this case. (This variable has no effect on +other kinds of entries.) Gnus gives you all the opportunity you could possibly want for shooting yourself in the foot. Let's say you create a group that will contain @@ -13027,9 +13104,9 @@ month's rent money. @node Mail Sources @subsection Mail Sources -Mail can be gotten from many different sources---the mail spool, from a -POP mail server, from a procmail directory, or from a maildir, for -instance. +Mail can be gotten from many different sources---the mail spool, from +a @acronym{POP} mail server, from a procmail directory, or from a +maildir, for instance. @menu * Mail Source Specifiers:: How to specify what a mail source is. @@ -13070,7 +13147,7 @@ Keywords: @table @code @item :path -The file name. Defaults to the value of the @code{MAIL} +The file name. Defaults to the value of the @env{MAIL} environment variable or the value of @code{rmail-spool-directory} (usually something like @file{/usr/mail/spool/user-name}). @@ -13091,10 +13168,10 @@ Or using the default file name: (file) @end lisp -If the mail spool file is not located on the local machine, it's best to -use POP or @sc{imap} or the like to fetch the mail. You can not use ange-ftp -file names here---it has no way to lock the mail spool while moving the -mail. +If the mail spool file is not located on the local machine, it's best +to use @acronym{POP} or @acronym{IMAP} or the like to fetch the mail. +You can not use ange-ftp file names here---it has no way to lock the +mail spool while moving the mail. If it's impossible to set up a proper server, you can use ssh instead. @@ -13120,20 +13197,20 @@ Alter this script to fit find the @samp{movemail} you want to use. @item directory @vindex nnmail-scan-directory-mail-source-once -Get mail from several files in a directory. This is typically used when -you have procmail split the incoming mail into several files. That is, -there is a one-to-one correspondence between files in that directory and -groups, so that mail from the file @file{foo.bar.spool} will be put in -the group @code{foo.bar}. (You can change the suffix to be used instead -of @code{.spool}.) Setting -@code{nnmail-scan-directory-mail-source-once} to non-nil forces Gnus to -scan the mail source only once. This is particularly useful if you want -to scan mail groups at a specified level. +Get mail from several files in a directory. This is typically used +when you have procmail split the incoming mail into several files. +That is, there is a one-to-one correspondence between files in that +directory and groups, so that mail from the file @file{foo.bar.spool} +will be put in the group @code{foo.bar}. (You can change the suffix +to be used instead of @code{.spool}.) Setting +@code{nnmail-scan-directory-mail-source-once} to non-@code{nil} forces +Gnus to scan the mail source only once. This is particularly useful +if you want to scan mail groups at a specified level. @vindex nnmail-resplit-incoming There is also the variable @code{nnmail-resplit-incoming}, if you set -that to a non-nil value, then the normal splitting process is applied -to all the files from the directory, @ref{Splitting Mail}. +that to a non-@code{nil} value, then the normal splitting process is +applied to all the files from the directory, @ref{Splitting Mail}. Keywords: @@ -13166,33 +13243,33 @@ An example directory mail source: @end lisp @item pop -Get mail from a POP server. +Get mail from a @acronym{POP} server. Keywords: @table @code @item :server -The name of the POP server. The default is taken from the -@code{MAILHOST} environment variable. +The name of the @acronym{POP} server. The default is taken from the +@env{MAILHOST} environment variable. @item :port -The port number of the POP server. This can be a number (eg, +The port number of the @acronym{POP} server. This can be a number (eg, @samp{:port 1234}) or a string (eg, @samp{:port "pop3"}). If it is a string, it should be a service name as listed in @file{/etc/services} on Unix systems. The default is @samp{"pop3"}. On some systems you might need to specify it as @samp{"pop-3"} instead. @item :user -The user name to give to the POP server. The default is the login +The user name to give to the @acronym{POP} server. The default is the login name. @item :password -The password to give to the POP server. If not specified, the user is -prompted. +The password to give to the @acronym{POP} server. If not specified, +the user is prompted. @item :program -The program to use to fetch mail from the POP server. This should be -a @code{format}-like string. Here's an example: +The program to use to fetch mail from the @acronym{POP} server. This +should be a @code{format}-like string. Here's an example: @example fetchmail %u@@%s -P %p %t @@ -13230,9 +13307,9 @@ A script to be run after fetching the mail. The syntax is the same as the @code{:program} keyword. This can also be a function to be run. @item :function -The function to use to fetch mail from the POP server. The function is -called with one parameter---the name of the file where the mail should -be moved to. +The function to use to fetch mail from the @acronym{POP} server. The +function is called with one parameter---the name of the file where the +mail should be moved to. @item :authentication This can be either the symbol @code{password} or the symbol @code{apop} @@ -13265,8 +13342,8 @@ message retrieval. The default is @code{nil}. If the @code{:program} and @code{:function} keywords aren't specified, @code{pop3-movemail} will be used. -Here are some examples. Fetch from the default POP server, using the -default user name, and default fetcher: +Here are some examples. Fetch from the default @acronym{POP} server, +using the default user name, and default fetcher: @lisp (pop) @@ -13295,7 +13372,7 @@ Keywords: @table @code @item :path The name of the directory where the mails are stored. The default is -taken from the @code{MAILDIR} environment variable or +taken from the @env{MAILDIR} environment variable or @file{~/Maildir/}. @item :subdirs The subdirectories of the Maildir. The default is @@ -13324,32 +13401,32 @@ Two example maildir mail sources: @end lisp @item imap -Get mail from a @sc{imap} server. If you don't want to use @sc{imap} -as intended, as a network mail reading protocol (ie with nnimap), for -some reason or other, Gnus let you treat it similar to a POP server -and fetches articles from a given @sc{imap} mailbox. @xref{IMAP}, for -more information. +Get mail from a @acronym{IMAP} server. If you don't want to use +@acronym{IMAP} as intended, as a network mail reading protocol (ie +with nnimap), for some reason or other, Gnus let you treat it similar +to a @acronym{POP} server and fetches articles from a given +@acronym{IMAP} mailbox. @xref{IMAP}, for more information. -Note that for the Kerberos, GSSAPI, TLS/SSL and STARTTLS support you +Note that for the Kerberos, GSSAPI, @acronym{TLS}/@acronym{SSL} and STARTTLS support you may need external programs and libraries, @xref{IMAP}. Keywords: @table @code @item :server -The name of the @sc{imap} server. The default is taken from the -@code{MAILHOST} environment variable. +The name of the @acronym{IMAP} server. The default is taken from the +@env{MAILHOST} environment variable. @item :port -The port number of the @sc{imap} server. The default is @samp{143}, or -@samp{993} for TLS/SSL connections. +The port number of the @acronym{IMAP} server. The default is @samp{143}, or +@samp{993} for @acronym{TLS}/@acronym{SSL} connections. @item :user -The user name to give to the @sc{imap} server. The default is the login +The user name to give to the @acronym{IMAP} server. The default is the login name. @item :password -The password to give to the @sc{imap} server. If not specified, the user is +The password to give to the @acronym{IMAP} server. If not specified, the user is prompted. @item :stream @@ -13396,7 +13473,7 @@ which normally is the mailbox which receive incoming mail. @item :predicate The predicate used to find articles to fetch. The default, @samp{UNSEEN UNDELETED}, is probably the best choice for most people, but if you -sometimes peek in your mailbox with a @sc{imap} client and mark some +sometimes peek in your mailbox with a @acronym{IMAP} client and mark some articles as read (or; SEEN) you might want to set this to @samp{1:*}. Then all articles in the mailbox is fetched, no matter what. For a complete list of predicates, see RFC 2060 section 6.4.4. @@ -13408,12 +13485,12 @@ would simply mark them as read. These are the two most likely choices, but more flags are defined in RFC 2060 section 2.3.2. @item :dontexpunge -If non-nil, don't remove all articles marked as deleted in the mailbox -after finishing the fetch. +If non-@code{nil}, don't remove all articles marked as deleted in the +mailbox after finishing the fetch. @end table -An example @sc{imap} mail source: +An example @acronym{IMAP} mail source: @lisp (imap :server "mail.mycorp.com" @@ -13424,7 +13501,7 @@ An example @sc{imap} mail source: @item webmail Get mail from a webmail server, such as @uref{www.hotmail.com}, @uref{webmail.netscape.com}, @uref{www.netaddress.com}, -@uref{mail.yahoo..com}. +@uref{mail.yahoo.com}. NOTE: Webmail largely depends cookies. A "one-line-cookie" patch is required for url "4.0pre.46". @@ -13447,8 +13524,8 @@ The password to give to the webmail server. If not specified, the user is prompted. @item :dontexpunge -If non-nil, only fetch unread articles and don't move them to trash -folder after finishing the fetch. +If non-@code{nil}, only fetch unread articles and don't move them to +trash folder after finishing the fetch. @end table @@ -13469,8 +13546,9 @@ Keywords: @table @code @item :plugged -If non-nil, fetch the mail even when Gnus is unplugged. If you use -directory source to get mail, you can specify it as in this example: +If non-@code{nil}, fetch the mail even when Gnus is unplugged. If you +use directory source to get mail, you can specify it as in this +example: @lisp (setq mail-sources @@ -13530,7 +13608,7 @@ files. If a positive number, delete files older than number of days @item mail-source-delete-old-incoming-confirm @vindex mail-source-delete-old-incoming-confirm -If @code{non-nil}, ask for for confirmation before deleting old incoming +If non-@code{nil}, ask for for confirmation before deleting old incoming files. This variable only applies when @code{mail-source-delete-incoming} is a positive number. @@ -13558,8 +13636,8 @@ All new mail files will get this file mode. The default is 384. @item mail-source-movemail-program @vindex mail-source-movemail-program -If non-nil, name of program for fetching new mail. If nil, -@code{movemail} in @var{exec-directory}. +If non-@code{nil}, name of program for fetching new mail. If +@code{nil}, @code{movemail} in @var{exec-directory}. @end table @@ -13577,8 +13655,8 @@ If this variable (and the obsolescent @code{nnmail-spool-file}) is @code{nil}, the mail back ends will never attempt to fetch mail by themselves. -If you want to fetch mail both from your local spool as well as a POP -mail server, you'd say something like: +If you want to fetch mail both from your local spool as well as a +@acronym{POP} mail server, you'd say something like: @lisp (setq mail-sources @@ -13699,28 +13777,28 @@ play with the @code{nnmail-split-fancy} variable. Let's look at an example value of this variable first: @lisp -;; Messages from the mailer daemon are not crossposted to any of -;; the ordinary groups. Warnings are put in a separate group -;; from real errors. +;; @r{Messages from the mailer daemon are not crossposted to any of} +;; @r{the ordinary groups. Warnings are put in a separate group} +;; @r{from real errors.} (| ("from" mail (| ("subject" "warn.*" "mail.warning") "mail.misc")) - ;; Non-error messages are crossposted to all relevant - ;; groups, but we don't crosspost between the group for the - ;; (ding) list and the group for other (ding) related mail. + ;; @r{Non-error messages are crossposted to all relevant} + ;; @r{groups, but we don't crosspost between the group for the} + ;; @r{(ding) list and the group for other (ding) related mail.} (& (| (any "ding@@ifi\\.uio\\.no" "ding.list") ("subject" "ding" "ding.misc")) - ;; Other mailing lists... + ;; @r{Other mailing lists@dots{}} (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") - ;; Both lists below have the same suffix, so prevent - ;; cross-posting to mkpkg.list of messages posted only to - ;; the bugs- list, but allow cross-posting when the - ;; message was really cross-posted. + ;; @r{Both lists below have the same suffix, so prevent} + ;; @r{cross-posting to mkpkg.list of messages posted only to} + ;; @r{the bugs- list, but allow cross-posting when the} + ;; @r{message was really cross-posted.} (any "bugs-mypackage@@somewhere" "mypkg.bugs") (any "mypackage@@somewhere\" - "bugs-mypackage" "mypkg.list") - ;; People... + ;; @r{People@dots{}} (any "larsi@@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen")) - ;; Unmatched mail goes to the catch all group. + ;; @r{Unmatched mail goes to the catch all group.} "misc.misc") @end lisp @@ -13835,33 +13913,34 @@ string into the subject line, you have to resort to manually moving the messages into the right group. With this function, you only have to do it once per thread. -To use this feature, you have to set @code{nnmail-treat-duplicates} and -@code{nnmail-cache-accepted-message-ids} to a non-nil value. And then -you can include @code{nnmail-split-fancy-with-parent} using the colon -feature, like so: +To use this feature, you have to set @code{nnmail-treat-duplicates} +and @code{nnmail-cache-accepted-message-ids} to a non-@code{nil} +value. And then you can include @code{nnmail-split-fancy-with-parent} +using the colon feature, like so: @lisp -(setq nnmail-treat-duplicates 'warn ; or 'delete +(setq nnmail-treat-duplicates 'warn ; @r{or @code{delete}} nnmail-cache-accepted-message-ids t nnmail-split-fancy '(| (: nnmail-split-fancy-with-parent) - ;; other splits go here + ;; @r{other splits go here} )) @end lisp This feature works as follows: when @code{nnmail-treat-duplicates} is -non-nil, Gnus records the message id of every message it sees in the -file specified by the variable @code{nnmail-message-id-cache-file}, -together with the group it is in (the group is omitted for non-mail -messages). When mail splitting is invoked, the function -@code{nnmail-split-fancy-with-parent} then looks at the References (and -In-Reply-To) header of each message to split and searches the file -specified by @code{nnmail-message-id-cache-file} for the message ids. -When it has found a parent, it returns the corresponding group name -unless the group name matches the regexp -@code{nnmail-split-fancy-with-parent-ignore-groups}. It is recommended -that you set @code{nnmail-message-id-cache-length} to a somewhat higher -number than the default so that the message ids are still in the cache. -(A value of 5000 appears to create a file some 300 kBytes in size.) +non-@code{nil}, Gnus records the message id of every message it sees +in the file specified by the variable +@code{nnmail-message-id-cache-file}, together with the group it is in +(the group is omitted for non-mail messages). When mail splitting is +invoked, the function @code{nnmail-split-fancy-with-parent} then looks +at the References (and In-Reply-To) header of each message to split +and searches the file specified by @code{nnmail-message-id-cache-file} +for the message ids. When it has found a parent, it returns the +corresponding group name unless the group name matches the regexp +@code{nnmail-split-fancy-with-parent-ignore-groups}. It is +recommended that you set @code{nnmail-message-id-cache-length} to a +somewhat higher number than the default so that the message ids are +still in the cache. (A value of 5000 appears to create a file some +300 kBytes in size.) @vindex nnmail-cache-accepted-message-ids When @code{nnmail-cache-accepted-message-ids} is non-@code{nil}, Gnus also records the message ids of moved articles, so that the followup @@ -13958,7 +14037,7 @@ may use it for only some of them, by using @code{nnmail-split-fancy} splits like this: @lisp -(: gnus-group-split-fancy GROUPS NO-CROSSPOST CATCH-ALL) +(: gnus-group-split-fancy @var{groups} @var{no-crosspost} @var{catch-all}) @end lisp @var{groups} may be a regular expression or a list of group names whose @@ -13989,7 +14068,7 @@ automatically, just tell @code{gnus-group-split-setup} to do it for you. For example, add to your @file{~/.gnus.el}: @lisp -(gnus-group-split-setup AUTO-UPDATE CATCH-ALL) +(gnus-group-split-setup @var{auto-update} @var{catch-all}) @end lisp If @var{auto-update} is non-@code{nil}, @code{gnus-group-split-update} @@ -14194,7 +14273,7 @@ parameter. default value is @code{delete}, but this can also be a string (which should be the name of the group the message should be moved to), or a function (which will be called in a buffer narrowed to the message in question, and with the name of the group being moved -from as its parameter) which should return a target -- either a group +from as its parameter) which should return a target---either a group name or @code{delete}. Here's an example for specifying a group name: @@ -14388,11 +14467,11 @@ methods: @lisp (setq nnmail-split-fancy - '(| ;; Messages duplicates go to a separate group. + '(| ;; @r{Messages duplicates go to a separate group.} ("gnus-warning" "duplicat\\(e\\|ion\\) of message" "duplicate") - ;; Message from daemons, postmaster, and the like to another. + ;; @r{Message from daemons, postmaster, and the like to another.} (any mail "mail.misc") - ;; Other rules. + ;; @r{Other rules.} [ ... ] )) @end lisp @@ -14400,7 +14479,7 @@ Or something like: @lisp (setq nnmail-split-methods '(("duplicates" "^Gnus-Warning:.*duplicate") - ;; Other rules. + ;; @r{Other rules.} [...])) @end lisp @@ -14428,7 +14507,7 @@ mail, which should help. @vindex nnmh-get-new-mail @vindex nnfolder-get-new-mail This might be too much, if, for instance, you are reading mail quite -happily with @code{nnml} and just want to peek at some old @sc{rmail} +happily with @code{nnml} and just want to peek at some old Rmail file you have stashed away with @code{nnbabyl}. All back ends have variables called back-end-@code{get-new-mail}. If you want to disable the @code{nnbabyl} mail reading, you edit the virtual server for the @@ -14453,7 +14532,7 @@ Spool}). @menu * Unix Mail Box:: Using the (quite) standard Un*x mbox. -* Rmail Babyl:: Emacs programs use the rmail babyl format. +* Rmail Babyl:: Emacs programs use the Rmail Babyl format. * Mail Spool:: Store your mail in a private spool? * MH Spool:: An mhspool-like back end. * Maildir:: Another one-file-per-message format. @@ -14496,11 +14575,11 @@ into groups. Default is @code{t}. @node Rmail Babyl @subsubsection Rmail Babyl @cindex nnbabyl -@cindex rmail mbox +@cindex Rmail mbox @vindex nnbabyl-active-file @vindex nnbabyl-mbox-file -The @dfn{nnbabyl} back end will use a babyl mail box (aka. @dfn{rmail +The @dfn{nnbabyl} back end will use a Babyl mail box (aka. @dfn{Rmail mbox}) to store mail. @code{nnbabyl} will add extra headers to each mail article to say which group it belongs in. @@ -14509,7 +14588,7 @@ Virtual server settings: @table @code @item nnbabyl-mbox-file @vindex nnbabyl-mbox-file -The name of the rmail mbox file. The default is @file{~/RMAIL} +The name of the Rmail mbox file. The default is @file{~/RMAIL} @item nnbabyl-active-file @vindex nnbabyl-active-file @@ -14526,7 +14605,7 @@ If non-@code{nil}, @code{nnbabyl} will read incoming mail. Default is @node Mail Spool @subsubsection Mail Spool @cindex nnml -@cindex mail @sc{nov} spool +@cindex mail @acronym{NOV} spool The @dfn{nnml} spool mail format isn't compatible with any other known format. It should be used with some caution. @@ -14551,7 +14630,7 @@ to trudge through a big mbox file just to read your new mail. @code{nnml} is probably the slowest back end when it comes to article splitting. It has to create lots of files, and it also generates -@sc{nov} databases for the incoming mails. This makes it possibly the +@acronym{NOV} databases for the incoming mails. This makes it possibly the fastest back end when it comes to reading mail. @cindex self contained nnml servers @@ -14596,12 +14675,12 @@ If non-@code{nil}, @code{nnml} will read incoming mail. The default is @item nnml-nov-is-evil @vindex nnml-nov-is-evil -If non-@code{nil}, this back end will ignore any @sc{nov} files. The +If non-@code{nil}, this back end will ignore any @acronym{NOV} files. The default is @code{nil}. @item nnml-nov-file-name @vindex nnml-nov-file-name -The name of the @sc{nov} files. The default is @file{.overview}. +The name of the @acronym{NOV} files. The default is @file{.overview}. @item nnml-prepare-save-mail-hook @vindex nnml-prepare-save-mail-hook @@ -14624,7 +14703,7 @@ files. @end table @findex nnml-generate-nov-databases -If your @code{nnml} groups and @sc{nov} files get totally out of whack, +If your @code{nnml} groups and @acronym{NOV} files get totally out of whack, you can do a complete update by typing @kbd{M-x nnml-generate-nov-databases}. This command will trawl through the entire @code{nnml} hierarchy, looking at each and every article, so it @@ -14639,7 +14718,7 @@ Commands}). @cindex mh-e mail spool @code{nnmh} is just like @code{nnml}, except that is doesn't generate -@sc{nov} databases and it doesn't keep an active file or marks file. +@acronym{NOV} databases and it doesn't keep an active file or marks file. This makes @code{nnmh} a @emph{much} slower back end than @code{nnml}, but it also makes it easier to write procmail scripts for. @@ -14692,7 +14771,7 @@ nnmaildir is designed to be perfectly reliable: @kbd{C-g} will never corrupt its data in memory, and @code{SIGKILL} will never corrupt its data in the filesystem. -nnmaildir stores article marks and NOV data in each maildir. So you +nnmaildir stores article marks and @acronym{NOV} data in each maildir. So you can copy a whole maildir from one Gnus setup to another, and you will keep your marks. @@ -14716,7 +14795,7 @@ which is processed by @code{eval} and @code{expand-file-name} to get the path of the directory for this server. The form is @code{eval}ed only when the server is opened; the resulting string is used until the server is closed. (If you don't know about forms and @code{eval}, -don't worry - a simple string will work.) This parameter is not +don't worry---a simple string will work.) This parameter is not optional; you must specify it. I don't recommend using @code{"~/Mail"} or a subdirectory of it; several other parts of Gnus use that directory by default for various things, and may get confused @@ -14833,7 +14912,7 @@ maildir as read-only. This means: articles are not renamed from @file{new/} into @file{cur/}; articles are only found in @file{new/}, not @file{cur/}; articles are never deleted; articles cannot be edited. @file{new/} is expected to be a symlink to the @file{new/} -directory of another maildir - e.g., a system-wide mailbox containing +directory of another maildir---e.g., a system-wide mailbox containing a mailing list of common interest. Everything in the maildir outside @file{new/} is @emph{not} treated as read-only, so for a shared mailbox, you do still need to set up your own maildir (or have write @@ -14870,12 +14949,12 @@ probably be removed eventually; it ought to be done in Gnus proper, or abandoned if it's not worthwhile. @item nov-cache-size -An integer specifying the size of the NOV memory cache. To speed -things up, nnmaildir keeps NOV data in memory for a limited number of +An integer specifying the size of the @acronym{NOV} memory cache. To speed +things up, nnmaildir keeps @acronym{NOV} data in memory for a limited number of articles in each group. (This is probably not worthwhile, and will probably be removed in the future.) This parameter's value is noticed -only the first time a group is seen after the server is opened - i.e., -when you first start Gnus, typically. The NOV cache is never resized +only the first time a group is seen after the server is opened---i.e., +when you first start Gnus, typically. The @acronym{NOV} cache is never resized until the server is closed and reopened. The default is an estimate of the number of articles that would be displayed in the summary buffer: a count of articles that are either marked with @code{tick} or @@ -14895,14 +14974,14 @@ available in the variable @code{nnmaildir-article-file-name} after you request the article in the summary buffer. @subsubsection NOV data -An article identified by @code{uniq} has its NOV data (used to +An article identified by @code{uniq} has its @acronym{NOV} data (used to generate lines in the summary buffer) stored in @code{.nnmaildir/nov/uniq}. There is no @code{nnmaildir-generate-nov-databases} function. (There isn't much -need for it - an article's NOV data is updated automatically when the +need for it---an article's @acronym{NOV} data is updated automatically when the article or @code{nnmail-extra-headers} has changed.) You can force -nnmaildir to regenerate the NOV data for a single article simply by -deleting the corresponding NOV file, but @emph{beware}: this will also +nnmaildir to regenerate the @acronym{NOV} data for a single article simply by +deleting the corresponding @acronym{NOV} file, but @emph{beware}: this will also cause nnmaildir to assign a new article number for this article, which may cause trouble with @code{seen} marks, the Agent, and the cache. @@ -14997,17 +15076,17 @@ extract some information from it before removing it. @item nnfolder-nov-is-evil @vindex nnfolder-nov-is-evil -If non-@code{nil}, this back end will ignore any @sc{nov} files. The +If non-@code{nil}, this back end will ignore any @acronym{NOV} files. The default is @code{nil}. @item nnfolder-nov-file-suffix @vindex nnfolder-nov-file-suffix -The extension for @sc{nov} files. The default is @file{.nov}. +The extension for @acronym{NOV} files. The default is @file{.nov}. @item nnfolder-nov-directory @vindex nnfolder-nov-directory -The directory where the @sc{nov} files should be stored. If nil, -@code{nnfolder-directory} is used. +The directory where the @acronym{NOV} files should be stored. If +@code{nil}, @code{nnfolder-directory} is used. @item nnfolder-marks-is-evil @vindex nnfolder-marks-is-evil @@ -15020,8 +15099,8 @@ The extension for @sc{marks} files. The default is @file{.mrk}. @item nnfolder-marks-directory @vindex nnfolder-marks-directory -The directory where the @sc{marks} files should be stored. If nil, -@code{nnfolder-directory} is used. +The directory where the @sc{marks} files should be stored. If +@code{nil}, @code{nnfolder-directory} is used. @end table @@ -15044,9 +15123,9 @@ and so selection of a suitable back end is required in order to get that mail within spitting distance of Gnus. The same concept exists for Usenet itself: Though access to articles is -typically done by @sc{nntp} these days, once upon a midnight dreary, everyone +typically done by @acronym{NNTP} these days, once upon a midnight dreary, everyone in the world got at Usenet by running a reader on the machine where the -articles lay (the machine which today we call an @sc{nntp} server), and +articles lay (the machine which today we call an @acronym{NNTP} server), and access was by the reader stepping into the articles' directory spool area directly. One can still select between either the @code{nntp} or @code{nnspool} back ends, to select between these methods, if one happens @@ -15085,12 +15164,12 @@ was used for mail landing on the system, but Babyl had its own internal format to which mail was converted, primarily involving creating a spool-file-like entity with a scheme for inserting Babyl-specific headers and status bits above the top of each message in the file. -RMAIL was Emacs' first mail reader, it was written by Richard Stallman, -and Stallman came out of that TOPS/Babyl environment, so he wrote RMAIL +Rmail was Emacs' first mail reader, it was written by Richard Stallman, +and Stallman came out of that TOPS/Babyl environment, so he wrote Rmail to understand the mail files folks already had in existence. Gnus (and VM, for that matter) continue to support this format because it's perceived as having some good qualities in those mailer-specific -headers/status bits stuff. RMAIL itself still exists as well, of +headers/status bits stuff. Rmail itself still exists as well, of course, and is still maintained by Stallman. Both of the above forms leave your mail in a single file on your @@ -15108,7 +15187,7 @@ Usenet-style active file (analogous to what one finds in an INN- or CNews-based news system in (for instance) @file{/var/lib/news/active}, or what is returned via the @samp{NNTP LIST} verb) and also creates @dfn{overview} files for efficient group entry, as has been defined for -@sc{nntp} servers for some years now. It is slower in mail-splitting, +@acronym{NNTP} servers for some years now. It is slower in mail-splitting, due to the creation of lots of files, updates to the @code{nnml} active file, and additions to overview files on a per-message basis, but it is extremely fast on access because of what amounts to the indexing support @@ -15129,7 +15208,7 @@ tiny files. The Rand MH mail-reading system has been around UNIX systems for a very long time; it operates by splitting one's spool file of messages into -individual files, but with little or no indexing support -- @code{nnmh} +individual files, but with little or no indexing support---@code{nnmh} is considered to be semantically equivalent to ``@code{nnml} without active file or overviews''. This is arguably the worst choice, because one gets the slowness of individual file creation married to the @@ -15164,8 +15243,8 @@ filename is unrelated to the article number in Gnus. @code{nnmaildir} also stores the equivalent of @code{nnml}'s overview files in one file per article, so it uses about twice as many inodes as @code{nnml}. (Use @code{df -i} to see how plentiful your inode supply is.) If this slows -you down or takes up very much space, consider switching to ReiserFS -(@uref{http://www.namesys.com/}) or another non-block-structured +you down or takes up very much space, consider switching to +@uref{http://www.namesys.com/, ReiserFS} or another non-block-structured file system. Since maildirs don't require locking for delivery, the maildirs you use @@ -15245,7 +15324,7 @@ interfaces to these sources. All the web sources require Emacs/w3 and the url library to work. The main caveat with all these web sources is that they probably won't -work for a very long time. Gleaning information from the @sc{html} data +work for a very long time. Gleaning information from the @acronym{HTML} data is guesswork at best, and when the layout is altered, the Gnus back end will fail. If you have reasonably new versions of these back ends, though, you should be ok. @@ -15383,7 +15462,7 @@ Format string URL to fetch an article by @code{Message-ID}. @cindex Slashdot @cindex nnslashdot -Slashdot (@uref{http://slashdot.org/}) is a popular news site, with +@uref{http://slashdot.org/, Slashdot} is a popular news site, with lively discussion following the news articles. @code{nnslashdot} will let you read this forum in a convenient manner. @@ -15406,12 +15485,12 @@ If you want to remove an old @code{nnslashdot} group, the @kbd{G DEL} command is the most handy tool (@pxref{Foreign Groups}). When following up to @code{nnslashdot} comments (or posting new -comments), some light @sc{html}izations will be performed. In +comments), some light @acronym{HTML}izations will be performed. In particular, text quoted with @samp{> } will be quoted with @code{blockquote} instead, and signatures will have @code{br} added to -the end of each line. Other than that, you can just write @sc{html} +the end of each line. Other than that, you can just write @acronym{HTML} directly into the message buffer. Note that Slashdot filters out some -@sc{html} forms. +@acronym{HTML} forms. The following variables can be altered to change its behavior: @@ -15473,7 +15552,7 @@ updated. The default is 0. @cindex nnultimate @cindex Ultimate Bulletin Board -The Ultimate Bulletin Board (@uref{http://www.ultimatebb.com/}) is +@uref{http://www.ultimatebb.com/, The Ultimate Bulletin Board} is probably the most popular Web bulletin board system used. It has a quite regular and nice interface, and it's possible to get the information Gnus needs to keep groups updated. @@ -15510,10 +15589,10 @@ groups updated. @findex gnus-group-make-warchive-group The easiest way to get started with @code{nnwarchive} is to say something like the following in the group buffer: @kbd{M-x -gnus-group-make-warchive-group RET an_egroup RET egroups RET -www.egroups.com RET your@@email.address RET}. (Substitute the -@sc{an_egroup} with the mailing list you subscribed, the -@sc{your@@email.address} with your email address.), or to browse the +gnus-group-make-warchive-group RET @var{an_egroup} RET egroups RET +www.egroups.com RET @var{your@@email.address RET}}. (Substitute the +@var{an_egroup} with the mailing list you subscribed, the +@var{your@@email.address} with your email address.), or to browse the back end by @kbd{B nnwarchive RET mail-archive RET}. The following @code{nnwarchive} variables can be altered: @@ -15621,58 +15700,59 @@ browser like Netscape). Here's one way: @end lisp Put that in your @file{.emacs} file, and hitting links in w3-rendered -@sc{html} in the Gnus article buffers will use @code{browse-url} to +@acronym{HTML} in the Gnus article buffers will use @code{browse-url} to follow the link. @node IMAP @section IMAP @cindex nnimap -@cindex @sc{imap} +@cindex @acronym{IMAP} -@sc{imap} is a network protocol for reading mail (or news, or @dots{}), -think of it as a modernized @sc{nntp}. Connecting to a @sc{imap} +@acronym{IMAP} is a network protocol for reading mail (or news, or @dots{}), +think of it as a modernized @acronym{NNTP}. Connecting to a @acronym{IMAP} server is much similar to connecting to a news server, you just specify the network address of the server. -@sc{imap} has two properties. First, @sc{imap} can do everything that -POP can, it can hence be viewed as a POP++. Secondly, @sc{imap} is a -mail storage protocol, similar to @sc{nntp} being a news storage -protocol -- however, @sc{imap} offers more features than @sc{nntp} -because news is more or less read-only whereas mail is read-write. +@acronym{IMAP} has two properties. First, @acronym{IMAP} can do +everything that @acronym{POP} can, it can hence be viewed as a +@acronym{POP++}. Secondly, @acronym{IMAP} is a mail storage protocol, +similar to @acronym{NNTP} being a news storage protocol---however, +@acronym{IMAP} offers more features than @acronym{NNTP} because news +is more or less read-only whereas mail is read-write. -If you want to use @sc{imap} as a POP++, use an imap entry in -@code{mail-sources}. With this, Gnus will fetch mails from the -@sc{imap} server and store them on the local disk. This is not the -usage described in this section--@xref{Mail Sources}. +If you want to use @acronym{IMAP} as a @acronym{POP++}, use an imap +entry in @code{mail-sources}. With this, Gnus will fetch mails from +the @acronym{IMAP} server and store them on the local disk. This is +not the usage described in this section---@xref{Mail Sources}. -If you want to use @sc{imap} as a mail storage protocol, use an nnimap +If you want to use @acronym{IMAP} as a mail storage protocol, use an nnimap entry in @code{gnus-secondary-select-methods}. With this, Gnus will -manipulate mails stored on the @sc{imap} server. This is the kind of +manipulate mails stored on the @acronym{IMAP} server. This is the kind of usage explained in this section. -A server configuration in @file{~/.gnus.el} with a few @sc{imap} servers -might look something like the following. (Note that for TLS/SSL, you +A server configuration in @file{~/.gnus.el} with a few @acronym{IMAP} servers +might look something like the following. (Note that for @acronym{TLS}/@acronym{SSL}, you need external programs and libraries, see below.) @lisp (setq gnus-secondary-select-methods - '((nnimap "simpleserver") ; no special configuration - ; perhaps a ssh port forwarded server: + '((nnimap "simpleserver") ; @r{no special configuration} + ; @r{perhaps a ssh port forwarded server:} (nnimap "dolk" (nnimap-address "localhost") (nnimap-server-port 1430)) - ; a UW server running on localhost + ; @r{a UW server running on localhost} (nnimap "barbar" (nnimap-server-port 143) (nnimap-address "localhost") (nnimap-list-pattern ("INBOX" "mail/*"))) - ; anonymous public cyrus server: + ; @r{anonymous public cyrus server:} (nnimap "cyrus.andrew.cmu.edu" (nnimap-authenticator anonymous) (nnimap-list-pattern "archive.*") (nnimap-stream network)) - ; a ssl server on a non-standard port: + ; @r{a ssl server on a non-standard port:} (nnimap "vic20" (nnimap-address "vic20.somewhere.com") (nnimap-server-port 9930) @@ -15692,12 +15772,12 @@ server: @item nnimap-address @vindex nnimap-address -The address of the remote @sc{imap} server. Defaults to the virtual +The address of the remote @acronym{IMAP} server. Defaults to the virtual server name if not specified. @item nnimap-server-port @vindex nnimap-server-port -Port on server to contact. Defaults to port 143, or 993 for TLS/SSL. +Port on server to contact. Defaults to port 143, or 993 for @acronym{TLS}/@acronym{SSL}. Note that this should be an integer, example server specification: @@ -15710,8 +15790,8 @@ Note that this should be an integer, example server specification: @vindex nnimap-list-pattern String or list of strings of mailboxes to limit available groups to. This is used when the server has very many mailboxes and you're only -interested in a few -- some servers export your home directory via -@sc{imap}, you'll probably want to limit the mailboxes to those in +interested in a few---some servers export your home directory via +@acronym{IMAP}, you'll probably want to limit the mailboxes to those in @file{~/Mail/*} then. The string can also be a cons of REFERENCE and the string as above, what @@ -15731,7 +15811,7 @@ Example server specification: @vindex nnimap-stream The type of stream used to connect to your server. By default, nnimap will detect and automatically use all of the below, with the exception -of TLS/SSL. (@sc{imap} over TLS/SSL is being replaced by STARTTLS, which +of @acronym{TLS}/@acronym{SSL}. (@acronym{IMAP} over @acronym{TLS}/@acronym{SSL} is being replaced by STARTTLS, which can be automatically detected, but it's not widely deployed yet.) Example server specification: @@ -15751,16 +15831,16 @@ Please note that the value of @code{nnimap-stream} is a symbol! @dfn{kerberos4:} Connect with Kerberos 4. Requires the @samp{imtest} program. @item @dfn{starttls:} Connect via the STARTTLS extension (similar to -TLS/SSL). Requires the external library @samp{starttls.el} and program +@acronym{TLS}/@acronym{SSL}). Requires the external library @samp{starttls.el} and program @samp{starttls}. @item -@dfn{tls:} Connect through TLS. Requires GNUTLS (the program +@dfn{tls:} Connect through @acronym{TLS}. Requires GNUTLS (the program @samp{gnutls-cli}). @item -@dfn{ssl:} Connect through SSL. Requires OpenSSL (the program +@dfn{ssl:} Connect through @acronym{SSL}. Requires OpenSSL (the program @samp{openssl}) or SSLeay (@samp{s_client}). @item -@dfn{shell:} Use a shell command to start @sc{imap} connection. +@dfn{shell:} Use a shell command to start @acronym{IMAP} connection. @item @dfn{network:} Plain, TCP/IP network connection. @end itemize @@ -15771,28 +15851,28 @@ using @samp{imtest} from Cyrus IMAPD < 2.0.14 (which includes version 1.5.x and 1.6.x) you need to frob @code{imap-process-connection-type} to make @code{imap.el} use a pty instead of a pipe when communicating with @samp{imtest}. You will then suffer from a line length -restrictions on @sc{imap} commands, which might make Gnus seem to hang +restrictions on @acronym{IMAP} commands, which might make Gnus seem to hang indefinitely if you have many articles in a mailbox. The variable @code{imap-kerberos4-program} contain parameters to pass to the imtest program. -For TLS connection, the @code{gnutls-cli} program from GNUTLS is +For @acronym{TLS} connection, the @code{gnutls-cli} program from GNUTLS is needed. It is available from @uref{http://www.gnu.org/software/gnutls/}. @vindex imap-gssapi-program This parameter specifies a list of command lines that invoke a GSSAPI -authenticated IMAP stream in a subshell. They are tried sequentially -until a connection is made, or the list has been exhausted. By -default, @samp{gsasl} from GNU SASL, available from +authenticated @acronym{IMAP} stream in a subshell. They are tried +sequentially until a connection is made, or the list has been +exhausted. By default, @samp{gsasl} from GNU SASL, available from @uref{http://www.gnu.org/software/gsasl/}, and the @samp{imtest} program from Cyrus IMAPD (see @code{imap-kerberos4-program}), are tried. @vindex imap-ssl-program -For SSL connections, the OpenSSL program is available from +For @acronym{SSL} connections, the OpenSSL program is available from @uref{http://www.openssl.org/}. OpenSSL was formerly known as SSLeay, -and nnimap support it too - although the most recent versions of +and nnimap support it too---although the most recent versions of SSLeay, 0.9.x, are known to have serious bugs making it useless. Earlier versions, especially 0.8.x, of SSLeay are known to work. The variable @code{imap-ssl-program} contain parameters to pass @@ -15800,7 +15880,7 @@ to OpenSSL/SSLeay. @vindex imap-shell-program @vindex imap-shell-host -For @sc{imap} connections using the @code{shell} stream, the variable +For @acronym{IMAP} connections using the @code{shell} stream, the variable @code{imap-shell-program} specify what program to call. @item nnimap-authenticator @@ -15839,8 +15919,8 @@ external library @code{digest-md5.el}. @item nnimap-expunge-on-close @cindex Expunging @vindex nnimap-expunge-on-close -Unlike Parmenides the @sc{imap} designers has decided that things that -doesn't exist actually does exist. More specifically, @sc{imap} has +Unlike Parmenides the @acronym{IMAP} designers has decided that things that +doesn't exist actually does exist. More specifically, @acronym{IMAP} has this concept of marking articles @code{Deleted} which doesn't actually delete them, and this (marking them @code{Deleted}, that is) is what nnimap does when you delete a article in Gnus (with @kbd{B DEL} or @@ -15863,7 +15943,7 @@ The default behavior, delete all articles marked as ``Deleted'' when closing a mailbox. @item never Never actually delete articles. Currently there is no way of showing -the articles marked for deletion in nnimap, but other @sc{imap} clients +the articles marked for deletion in nnimap, but other @acronym{IMAP} clients may allow you to do this. If you ever want to run the EXPUNGE command manually, @xref{Expunging mailboxes}. @item ask @@ -15875,11 +15955,11 @@ articles or not. @item nnimap-importantize-dormant @vindex nnimap-importantize-dormant -If non-nil (the default), marks dormant articles as ticked (as well), -for other @sc{imap} clients. Within Gnus, dormant articles will +If non-@code{nil} (the default), marks dormant articles as ticked (as +well), for other @acronym{IMAP} clients. Within Gnus, dormant articles will naturally still (only) be marked as dormant. This is to make dormant -articles stand out, just like ticked articles, in other @sc{imap} -clients. (In other words, Gnus has two ``Tick'' marks and @sc{imap} +articles stand out, just like ticked articles, in other @acronym{IMAP} +clients. (In other words, Gnus has two ``Tick'' marks and @acronym{IMAP} has only one.) Probably the only reason for frobing this would be if you're trying @@ -15899,7 +15979,7 @@ as ticked for other users. @cindex Expunging @vindex nnimap-expunge-search-string -This variable contain the @sc{imap} search command sent to server when +This variable contain the @acronym{IMAP} search command sent to server when searching for articles eligible for expiring. The default is @code{"UID %s NOT SINCE %s"}, where the first @code{%s} is replaced by UID set and the second @code{%s} is replaced by a date. @@ -15924,7 +16004,7 @@ variable @code{nntp-authinfo-file} for exact syntax; also see * Expiring in IMAP:: Expiring mail with nnimap. * Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox. * Expunging mailboxes:: Equivalent of a ``compress mailbox'' button. -* A note on namespaces:: How to (not) use IMAP namespace in Gnus. +* A note on namespaces:: How to (not) use @acronym{IMAP} namespace in Gnus. @end menu @@ -15935,8 +16015,8 @@ variable @code{nntp-authinfo-file} for exact syntax; also see Splitting is something Gnus users has loved and used for years, and now the rest of the world is catching up. Yeah, dream on, not many -@sc{imap} server has server side splitting and those that have splitting -seem to use some non-standard protocol. This means that @sc{imap} +@acronym{IMAP} server has server side splitting and those that have splitting +seem to use some non-standard protocol. This means that @acronym{IMAP} support for Gnus has to do it's own splitting. And it does. @@ -15950,8 +16030,9 @@ Here are the variables of interest: @cindex crosspost @vindex nnimap-split-crosspost -If non-nil, do crossposting if several split methods match the mail. If -nil, the first match in @code{nnimap-split-rule} found will be used. +If non-@code{nil}, do crossposting if several split methods match the +mail. If @code{nil}, the first match in @code{nnimap-split-rule} +found will be used. Nnmail equivalent: @code{nnmail-crosspost}. @@ -15960,9 +16041,9 @@ Nnmail equivalent: @code{nnmail-crosspost}. @cindex inbox @vindex nnimap-split-inbox -A string or a list of strings that gives the name(s) of @sc{imap} -mailboxes to split from. Defaults to nil, which means that splitting is -disabled! +A string or a list of strings that gives the name(s) of @acronym{IMAP} +mailboxes to split from. Defaults to @code{nil}, which means that +splitting is disabled! @lisp (setq nnimap-split-inbox @@ -15979,7 +16060,7 @@ New mail found in @code{nnimap-split-inbox} will be split according to this variable. This variable contains a list of lists, where the first element in the -sublist gives the name of the @sc{imap} mailbox to move articles +sublist gives the name of the @acronym{IMAP} mailbox to move articles matching the regexp in the second element in the sublist. Got that? Neither did I, we need examples. @@ -16008,8 +16089,8 @@ matching messages should simply be deleted. Use with care. The second element can also be a function. In that case, it will be called with the first element of the rule as the argument, in a buffer -containing the headers of the article. It should return a non-nil value -if it thinks that the mail belongs in that group. +containing the headers of the article. It should return a +non-@code{nil} value if it thinks that the mail belongs in that group. Nnmail users might recollect that the last regexp had to be empty to match all articles (like in the example above). This is not required in @@ -16057,7 +16138,7 @@ Nnmail equivalent: @code{nnmail-split-methods}. Mail matching this predicate in @code{nnimap-split-inbox} will be split, it is a string and the default is @samp{UNSEEN UNDELETED}. -This might be useful if you use another @sc{imap} client to read mail in +This might be useful if you use another @acronym{IMAP} client to read mail in your inbox but would like Gnus to split all articles in the inbox regardless of readedness. Then you might change this to @samp{UNDELETED}. @@ -16089,10 +16170,10 @@ Nnmail equivalent: @code{nnmail-split-fancy}. @findex nnimap-split-download-body @vindex nnimap-split-download-body -Set to non-nil to download entire articles during splitting. This is -generally not required, and will slow things down considerably. You -may need it if you want to use an advanced splitting function that -analyses the body to split the article. +Set to non-@code{nil} to download entire articles during splitting. +This is generally not required, and will slow things down +considerably. You may need it if you want to use an advanced +splitting function that analyses the body to split the article. @end table @@ -16102,13 +16183,13 @@ analyses the body to split the article. Even though @code{nnimap} is not a proper @code{nnmail} derived back end, it supports most features in regular expiring (@pxref{Expiring -Mail}). Unlike splitting in IMAP (@pxref{Splitting in IMAP}) it do -not clone the @code{nnmail} variables (i.e., creating +Mail}). Unlike splitting in @acronym{IMAP} (@pxref{Splitting in +IMAP}) it does not clone the @code{nnmail} variables (i.e., creating @var{nnimap-expiry-wait}) but reuse the @code{nnmail} variables. What follows below are the variables used by the @code{nnimap} expiry process. -A note on how the expire mark is stored on the @sc{imap} server is +A note on how the expire mark is stored on the @acronym{IMAP} server is appropriate here as well. The expire mark is translated into a @code{imap} client specific mark, @code{gnus-expire}, and stored on the message. This means that likely only Gnus will understand and treat @@ -16129,7 +16210,7 @@ number, the symbol @code{immediate} or @code{never}. This variable is supported, and internally implemented by calling the @code{nnmail} functions that handle this. It contains an optimization -that if the destination is a IMAP group on the same server, the +that if the destination is a @acronym{IMAP} group on the same server, the article is copied instead of appended (that is, uploaded again). @end table @@ -16138,13 +16219,13 @@ article is copied instead of appended (that is, uploaded again). @subsection Editing IMAP ACLs @cindex editing imap acls @cindex Access Control Lists -@cindex Editing @sc{imap} ACLs +@cindex Editing @acronym{IMAP} ACLs @kindex G l @findex gnus-group-nnimap-edit-acl -ACL stands for Access Control List. ACLs are used in @sc{imap} for +ACL stands for Access Control List. ACLs are used in @acronym{IMAP} for limiting (or enabling) other users access to your mail boxes. Not all -@sc{imap} servers support this, this function will give an error if it +@acronym{IMAP} servers support this, this function will give an error if it doesn't. To edit a ACL for a mailbox, type @kbd{G l} @@ -16161,7 +16242,7 @@ follow the list without subscribing to it. @item At least with the Cyrus server, you are required to give the user ``anyone'' posting ("p") capabilities to have ``plussing'' work (that is, -mail sent to user+mailbox@@domain ending up in the @sc{imap} mailbox +mail sent to user+mailbox@@domain ending up in the @acronym{IMAP} mailbox INBOX.mailbox). @end itemize @@ -16186,8 +16267,8 @@ delete them. @cindex IMAP namespace @cindex namespaces -The IMAP protocol has a concept called namespaces, described by the -following text in the RFC: +The @acronym{IMAP} protocol has a concept called namespaces, described +by the following text in the RFC: @example 5.1.2. Mailbox Namespace Naming Convention @@ -16205,20 +16286,21 @@ following text in the RFC: to a different object (e.g. a user's private mailbox). @end example -While there is nothing in this text that warrants concern for the IMAP -implementation in Gnus, some servers use namespace prefixes in a way -that does not work with how Gnus uses mailbox names. - -Specifically, University of Washington's IMAP server uses mailbox -names like @code{#driver.mbx/read-mail} which are valid only in the -@sc{create} and @sc{append} commands. After the mailbox is created -(or a messages is appended to a mailbox), it must be accessed without -the namespace prefix, i.e. @code{read-mail}. Since Gnus do not make it -possible for the user to guarantee that user entered mailbox names -will only be used with the CREATE and APPEND commands, you should -simply not use the namespace prefixed mailbox names in Gnus. - -See the UoW @sc{imapd} documentation for the @code{#driver.*/} prefix +While there is nothing in this text that warrants concern for the +@acronym{IMAP} implementation in Gnus, some servers use namespace +prefixes in a way that does not work with how Gnus uses mailbox names. + +Specifically, University of Washington's @acronym{IMAP} server uses +mailbox names like @code{#driver.mbx/read-mail} which are valid only +in the @sc{create} and @sc{append} commands. After the mailbox is +created (or a messages is appended to a mailbox), it must be accessed +without the namespace prefix, i.e. @code{read-mail}. Since Gnus do +not make it possible for the user to guarantee that user entered +mailbox names will only be used with the CREATE and APPEND commands, +you should simply not use the namespace prefixed mailbox names in +Gnus. + +See the UoW IMAPD documentation for the @code{#driver.*/} prefix for more information on how to use the prefixes. They are a power tool and should be used only if you are sure what the effects are. @@ -16258,7 +16340,7 @@ enter the @code{ange-ftp} file name @code{ange-ftp} or @code{efs} will actually allow you to read this directory over at @samp{sina} as a newsgroup. Distributed news ahoy! -@code{nndir} will use @sc{nov} files if they are present. +@code{nndir} will use @acronym{NOV} files if they are present. @code{nndir} is a ``read-only'' back end---you can't delete or expire articles with this method. You can use @code{nnmh} or @code{nnml} for @@ -16340,11 +16422,11 @@ Name of the map files. as a newsgroup. Several files types are supported: @table @code -@cindex babyl -@cindex rmail mbox +@cindex Babyl +@cindex Rmail mbox @item babyl -The babyl (rmail) mail box. +The Babyl (Rmail) mail box. @cindex mbox @cindex Unix mbox @@ -16370,13 +16452,13 @@ Forwarded articles. Netscape mail boxes. @item mime-parts -@sc{mime} multipart messages. +@acronym{MIME} multipart messages. @item standard-digest The standard (RFC 1153) digest format. @item mime-digest -A @sc{mime} digest of messages. +A @acronym{MIME} digest of messages. @item lanl-gov-announce Announcement messages from LANL Gov Announce. @@ -16569,14 +16651,14 @@ To hook your own document definition into @code{nndoc}, use the @code{nndoc-add-type} function. It takes two parameters---the first is the definition itself and the second (optional) parameter says where in the document type definition alist to put this definition. -The alist is traversed sequentially, and @code{nndoc-TYPE-type-p} is -called for a given type @code{TYPE}. So @code{nndoc-mmdf-type-p} is -called to see whether a document is of @code{mmdf} type, and so on. -These type predicates should return @code{nil} if the document is not -of the correct type; @code{t} if it is of the correct type; and a -number if the document might be of the correct type. A high number -means high probability; a low number means low probability with -@samp{0} being the lowest valid number. +The alist is traversed sequentially, and +@code{nndoc-@var{type}-type-p} is called for a given type @var{type}. +So @code{nndoc-mmdf-type-p} is called to see whether a document is of +@code{mmdf} type, and so on. These type predicates should return +@code{nil} if the document is not of the correct type; @code{t} if it +is of the correct type; and a number if the document might be of the +correct type. A high number means high probability; a low number +means low probability with @samp{0} being the lowest valid number. @node SOUP @@ -17045,9 +17127,9 @@ inherited. @cindex nnkiboze @cindex kibozing -@dfn{Kibozing} is defined by @sc{oed} as ``grepping through (parts of) +@dfn{Kibozing} is defined by @acronym{oed} as ``grepping through (parts of) the news feed''. @code{nnkiboze} is a back end that will do this for -you. Oh joy! Now you can grind any @sc{nntp} server down to a halt +you. Oh joy! Now you can grind any @acronym{NNTP} server down to a halt with useless requests! Oh happiness! @kindex G k (Group) @@ -17056,25 +17138,25 @@ buffer. The address field of the @code{nnkiboze} method is, as with @code{nnvirtual}, a regexp to match groups to be ``included'' in the -@code{nnkiboze} group. That's where most similarities between @code{nnkiboze} -and @code{nnvirtual} end. +@code{nnkiboze} group. That's where most similarities between +@code{nnkiboze} and @code{nnvirtual} end. -In addition to this regexp detailing component groups, an @code{nnkiboze} group -must have a score file to say what articles are to be included in -the group (@pxref{Scoring}). +In addition to this regexp detailing component groups, an +@code{nnkiboze} group must have a score file to say what articles are +to be included in the group (@pxref{Scoring}). @kindex M-x nnkiboze-generate-groups @findex nnkiboze-generate-groups You must run @kbd{M-x nnkiboze-generate-groups} after creating the -@code{nnkiboze} groups you want to have. This command will take time. Lots of -time. Oodles and oodles of time. Gnus has to fetch the headers from -all the articles in all the component groups and run them through the -scoring process to determine if there are any articles in the groups -that are to be part of the @code{nnkiboze} groups. +@code{nnkiboze} groups you want to have. This command will take time. +Lots of time. Oodles and oodles of time. Gnus has to fetch the +headers from all the articles in all the component groups and run them +through the scoring process to determine if there are any articles in +the groups that are to be part of the @code{nnkiboze} groups. Please limit the number of component groups by using restrictive regexps. Otherwise your sysadmin may become annoyed with you, and the -@sc{nntp} site may throw you off and never let you back in again. +@acronym{NNTP} site may throw you off and never let you back in again. Stranger things have happened. @code{nnkiboze} component groups do not have to be alive---they can be dead, @@ -17083,12 +17165,12 @@ and they can be foreign. No restrictions. @vindex nnkiboze-directory The generation of an @code{nnkiboze} group means writing two files in @code{nnkiboze-directory}, which is @file{~/News/} by default. One -contains the @sc{nov} header lines for all the articles in the group, +contains the @acronym{NOV} header lines for all the articles in the group, and the other is an additional @file{.newsrc} file to store information on what groups have been searched through to find component articles. Articles marked as read in the @code{nnkiboze} group will have -their @sc{nov} lines removed from the @sc{nov} file. +their @acronym{NOV} lines removed from the @acronym{NOV} file. @node Gnus Unplugged @@ -17128,7 +17210,7 @@ Of course, to use it as such, you have to learn a few new commands. * Agent as Cache:: The Agent is a big cache too. * Agent Expiry:: How to make old articles go away. * Agent Regeneration:: How to recover from lost connections and other accidents. -* Agent and IMAP:: How to use the Agent with IMAP. +* Agent and IMAP:: How to use the Agent with @acronym{IMAP}. * Outgoing Messages:: What happens when you post/mail something? * Agent Variables:: Customizing is fun. * Example Setup:: An example @file{~/.gnus.el} file for offline people. @@ -17931,7 +18013,7 @@ recommended that you first close all summary buffers. @findex gnus-agent-regenerate-group @kindex M-x gnus-agent-regenerate-group The command @code{gnus-agent-regenerate-group} uses the local copies -of individual articles to repair the local NOV(header) database. It +of individual articles to repair the local @acronym{NOV}(header) database. It then updates the internal data structures that document which articles are stored locally. An optional argument will mark articles in the agent as unread. @@ -17940,12 +18022,12 @@ agent as unread. @subsection Agent and IMAP The Agent works with any Gnus back end, including nnimap. However, -since there are some conceptual differences between @sc{nntp} and -@sc{imap}, this section (should) provide you with some information to -make Gnus Agent work smoother as a @sc{imap} Disconnected Mode client. +since there are some conceptual differences between @acronym{NNTP} and +@acronym{IMAP}, this section (should) provide you with some information to +make Gnus Agent work smoother as a @acronym{IMAP} Disconnected Mode client. The first thing to keep in mind is that all flags (read, ticked, etc) -are kept on the @sc{imap} server, rather than in @file{.newsrc} as is the +are kept on the @acronym{IMAP} server, rather than in @file{.newsrc} as is the case for nntp. Thus Gnus need to remember flag changes when disconnected, and synchronize these flags when you plug back in. @@ -17967,7 +18049,7 @@ re-connect, you can do it manually with the in the group buffer. Some things are currently not implemented in the Agent that you'd might -expect from a disconnected @sc{imap} client, including: +expect from a disconnected @acronym{IMAP} client, including: @itemize @bullet @@ -18033,9 +18115,9 @@ Hook run when finished fetching articles. @item gnus-agent-cache @vindex gnus-agent-cache -Variable to control whether use the locally stored @sc{nov} and +Variable to control whether use the locally stored @acronym{NOV} and articles when plugged, e.g. essentially using the Agent as a cache. -The default is non-nil, which means to use the Agent as a cache. +The default is non-@code{nil}, which means to use the Agent as a cache. @item gnus-agent-go-online @vindex gnus-agent-go-online @@ -18107,20 +18189,20 @@ setup, you may be able to use something like the following as your @file{~/.gnus.el} file to get started. @lisp -;;; Define how Gnus is to fetch news. We do this over @sc{nntp} -;;; from your ISP's server. +;;; @r{Define how Gnus is to fetch news. We do this over @acronym{NNTP}} +;;; @r{from your ISP's server.} (setq gnus-select-method '(nntp "news.your-isp.com")) -;;; Define how Gnus is to read your mail. We read mail from -;;; your ISP's POP server. +;;; @r{Define how Gnus is to read your mail. We read mail from} +;;; @r{your ISP's @acronym{POP} server.} (setq mail-sources '((pop :server "pop.your-isp.com"))) -;;; Say how Gnus is to store the mail. We use nnml groups. +;;; @r{Say how Gnus is to store the mail. We use nnml groups.} (setq gnus-secondary-select-methods '((nnml ""))) -;;; Make Gnus into an offline newsreader. -;;; (gnus-agentize) ; The obsolete setting. -;;; (setq gnus-agent t) ; Now the default. +;;; @r{Make Gnus into an offline newsreader.} +;;; (gnus-agentize) ; @r{The obsolete setting.} +;;; (setq gnus-agent t) ; @r{Now the default.} @end lisp That should be it, basically. Put that in your @file{~/.gnus.el} file, @@ -18130,7 +18212,7 @@ gnus}. If this is the first time you've run Gnus, you will be subscribed automatically to a few default newsgroups. You'll probably want to subscribe to more groups, and to do that, you have to query the -@sc{nntp} server for a complete list of groups with the @kbd{A A} +@acronym{NNTP} server for a complete list of groups with the @kbd{A A} command. This usually takes quite a while, but you only have to do it once. @@ -18378,7 +18460,7 @@ Score on the @code{Message-ID} header. @item e Score on an ``extra'' header, that is, one of those in gnus-extra-headers, -if your @sc{nntp} server tracks additional header data in overviews. +if your @acronym{NNTP} server tracks additional header data in overviews. @item f Score on followups---this matches the author name, and adds scores to @@ -18542,7 +18624,7 @@ variable to @code{t} to do that. (It is @code{t} by default.) @item gnus-kill-files-directory @vindex gnus-kill-files-directory All kill and score files will be stored in this directory, which is -initialized from the @code{SAVEDIR} environment variable by default. +initialized from the @env{SAVEDIR} environment variable by default. This is @file{~/News/} by default. @item gnus-score-file-suffix @@ -18675,10 +18757,10 @@ Function called with the name of the score file just written. @item gnus-score-thread-simplify @vindex gnus-score-thread-simplify -If this variable is non-@code{nil}, article subjects will be simplified -for subject scoring purposes in the same manner as with +If this variable is non-@code{nil}, article subjects will be +simplified for subject scoring purposes in the same manner as with threading---according to the current value of -gnus-simplify-subject-functions. If the scoring entry uses +@code{gnus-simplify-subject-functions}. If the scoring entry uses @code{substring} or @code{exact} matching, the match will also be simplified in this manner. @@ -18793,7 +18875,7 @@ gnus-extra-headers, you can score on these headers' values. In this case, there is a 5th element in the score entry, being the name of the header to be scored. The following entry is useful in your @file{all.SCORE} file in case of spam attacks from a single origin host, -if your @sc{nntp} server tracks NNTP-Posting-Host in overviews: +if your @acronym{NNTP} server tracks NNTP-Posting-Host in overviews: @lisp ("111.222.333.444" -1000 nil s "NNTP-Posting-Host") @@ -19204,8 +19286,8 @@ A list. The elements in this list can be: group name, the @var{file-name} will be used as the home score file. @item -A function. If the function returns non-nil, the result will be used as -the home score file. +A function. If the function returns non-@code{nil}, the result will +be used as the home score file. @item A string. Use the string as the home score file. @@ -19249,9 +19331,9 @@ their own home score files: @lisp (setq gnus-home-score-file - ;; All groups that match the regexp "\\.emacs" + ;; @r{All groups that match the regexp @code{"\\.emacs"}} '(("\\.emacs" "emacs.SCORE") - ;; All the comp groups in one score file + ;; @r{All the comp groups in one score file} ("^comp" "comp.SCORE"))) @end lisp @@ -19532,7 +19614,7 @@ Other programs use a totally different kill file syntax. If Gnus encounters what looks like a @code{rn} kill file, it will take a stab at interpreting it. -Two summary functions for editing a GNUS kill file: +Two summary functions for editing a @sc{gnus} kill file: @table @kbd @@ -19620,7 +19702,7 @@ before. @section GroupLens @cindex GroupLens -GroupLens (@uref{http://www.cs.umn.edu/Research/GroupLens/}) is a +@uref{http://www.cs.umn.edu/Research/GroupLens/, GroupLens} is a collaborative filtering system that helps you work together with other people to find the quality news articles out of the huge volume of news articles generated every day. @@ -19649,10 +19731,9 @@ so this section is mostly of historical interest. @node Using GroupLens @subsection Using GroupLens -To use GroupLens you must register a pseudonym with your local Better -Bit Bureau (BBB). -@uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only -better bit in town at the moment. +To use GroupLens you must register a pseudonym with your local +@uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html, Better Bit +Bureau (BBB)} is the only better bit in town at the moment. Once you have registered you'll need to set a couple of variables. @@ -20423,19 +20504,19 @@ paragraph.) Here's an alternative recipe for the group buffer: @lisp -;; Create three face types. +;; @r{Create three face types.} (setq gnus-face-1 'bold) (setq gnus-face-3 'italic) -;; We want the article count to be in -;; a bold and green face. So we create -;; a new face called `my-green-bold'. +;; @r{We want the article count to be in} +;; @r{a bold and green face. So we create} +;; @r{a new face called @code{my-green-bold}.} (copy-face 'bold 'my-green-bold) -;; Set the color. +;; @r{Set the color.} (set-face-foreground 'my-green-bold "ForestGreen") (setq gnus-face-2 'my-green-bold) -;; Set the new & fancy format. +;; @r{Set the new & fancy format.} (setq gnus-group-line-format "%M%S%3@{%5y%@}%2[:%] %(%1@{%g%@}%)\n") @end lisp @@ -20473,7 +20554,7 @@ strings. However, when combining various strings of different size, it can often be more convenient to just output the strings, and then worry about lining up the following text afterwards. -To do that, Gnus supplies tabulator specs--@samp{%=}. There are two +To do that, Gnus supplies tabulator specs---@samp{%=}. There are two different types---@dfn{hard tabulators} and @dfn{soft tabulators}. @samp{%50=} will insert space characters to pad the line up to column @@ -21046,8 +21127,8 @@ been idle for thirty minutes: (gnus-demon-close-connections nil 30) @end lisp -Here's a handler that scans for PGP headers every hour when Emacs is -idle: +Here's a handler that scans for @acronym{PGP} headers every hour when +Emacs is idle: @lisp (gnus-demon-scan-pgp 60 t) @@ -21744,7 +21825,7 @@ processing, for instance DCC implements such a system. In essence, @code{N} systems around the world agree that a machine @samp{X} in China, Ghana, or California is sending out spam e-mail, and these @code{N} systems enter @samp{X} or the spam e-mail from @samp{X} into -a database. The criteria for spam detection vary - it may be the +a database. The criteria for spam detection vary---it may be the number of messages sent, the content of the messages, and so on. When a user of the distributed processing system wants to find out if a message is spam, he consults one of those @code{N} systems. @@ -21807,7 +21888,7 @@ This says that all mail to this address is suspect, but if it has a header, it's probably ok. All the rest goes to the @samp{spam} group. (This idea probably comes from Tim Pierce.) -In addition, many mail spammers talk directly to your @sc{smtp} server +In addition, many mail spammers talk directly to your @acronym{SMTP} server and do not include your email address explicitly in the @code{To} header. Why they do this is unknown---perhaps it's to thwart this thwarting scheme? In any case, this is trivial to deal with---you just @@ -22145,10 +22226,10 @@ but you can customize it. The boolean variable @code{nnimap-split-download-body} needs to be set, if you want to split based on the whole message instead of just the headers. By default, the nnimap backend will only retrieve the -message headers. If you use spam-check-bogofilter, spam-check-ifile, -or spam-check-stat (the splitters that can benefit from the full -message body), you should set this variable. It is not set by default -because it will slow IMAP down. +message headers. If you use @code{spam-check-bogofilter}, +@code{spam-check-ifile}, or @code{spam-check-stat} (the splitters that +can benefit from the full message body), you should set this variable. +It is not set by default because it will slow @acronym{IMAP} down. @xref{Splitting in IMAP}. @@ -22307,10 +22388,10 @@ contains outdated servers. The blackhole check uses the @code{dig.el} package, but you can tell @code{spam.el} to use @code{dns.el} instead for better performance if -you set @code{spam-use-dig} to nil. It is not recommended at this -time to set @code{spam-use-dig} to nil despite the possible -performance improvements, because some users may be unable to use it, -but you can try it and see if it works for you. +you set @code{spam-use-dig} to @code{nil}. It is not recommended at +this time to set @code{spam-use-dig} to @code{nil} despite the +possible performance improvements, because some users may be unable to +use it, but you can try it and see if it works for you. @end defvar @@ -22323,7 +22404,7 @@ The list of servers to consult for blackhole checks. @defvar spam-blackhole-good-server-regex A regular expression for IPs that should not be checked against the -blackhole server list. When set to nil, it has no effect. +blackhole server list. When set to @code{nil}, it has no effect. @end defvar @@ -22592,19 +22673,19 @@ functionality @lisp (defun spam-blackbox-register-spam-routine () (spam-generic-register-routine - ;; the spam function + ;; @r{the spam function} (lambda (article) (let ((from (spam-fetch-field-from-fast article))) (when (stringp from) (blackbox-do-something-with-this-spammer from)))) - ;; the ham function + ;; @r{the ham function} nil)) (defun spam-blackbox-register-ham-routine () (spam-generic-register-routine - ;; the spam function + ;; @r{the spam function} nil - ;; the ham function + ;; @r{the ham function} (lambda (article) (let ((from (spam-fetch-field-from-fast article))) (when (stringp from) @@ -22691,14 +22772,14 @@ the the group @samp{nnml:mail.spam}), and you would call @file{~/Mail/mail/misc} (this usually corresponds the the group @samp{nnml:mail.misc}). -When you are using IMAP, you won't have the mails available locally, -so that will not work. One solution is to use the Gnus Agent to cache -the articles. Then you can use directories such as +When you are using @acronym{IMAP}, you won't have the mails available +locally, so that will not work. One solution is to use the Gnus Agent +to cache the articles. Then you can use directories such as @file{"~/News/agent/nnimap/mail.yourisp.com/personal_spam"} for @code{spam-stat-process-spam-directory}. @xref{Agent as Cache}. @defvar spam-stat -This variable holds the hash-table with all the statistics -- the +This variable holds the hash-table with all the statistics---the dictionary we have been talking about. For every word in either collection, this hash-table stores a vector describing how often the word appeared in spam and often it appeared in non-spam mails. @@ -22909,7 +22990,7 @@ variable, which defaults to @file{~/}. @item gnus-directory @vindex gnus-directory Most Gnus storage file and directory variables will be initialized from -this variable, which defaults to the @samp{SAVEDIR} environment +this variable, which defaults to the @env{SAVEDIR} environment variable, or @file{~/News/} if that variable isn't set. Note that gnus is mostly loaded when the @file{.gnus.el} file is read. @@ -22997,7 +23078,7 @@ names who could possibly mess up Gnus internally (like allowing @samp{:} in a group name, which is normally used to delimit method and group). -@sc{imap} users might want to allow @samp{/} in group names though. +@acronym{IMAP} users might want to allow @samp{/} in group names though. @end table @@ -23143,13 +23224,13 @@ released version of Gnus and snuggle up to that instead. In addition to the versions of Gnus which have had their releases coordinated by Lars, one major development has been Semi-gnus from -Japan. It's based on a library called @sc{semi}, which provides -@sc{mime} capabilities. +Japan. It's based on a library called @acronym{SEMI}, which provides +@acronym{MIME} capabilities. These Gnusae are based mainly on Gnus 5.6 and Pterodactyl Gnus. Collectively, they are called ``Semi-gnus'', and different strains are called T-gnus, ET-gnus, Nana-gnus and Chaos. These provide powerful -@sc{mime} and multilingualization things, especially important for +@acronym{MIME} and multilingualization things, especially important for Japanese users. @@ -23295,7 +23376,7 @@ look into implementing the changes when the draft is accepted as an RFC. @item MIME - RFC 2045-2049 etc @cindex MIME -All the various @sc{mime} RFCs are supported. +All the various @acronym{MIME} RFCs are supported. @item Disposition Notifications - RFC 2298 Message Mode is able to request notifications from the receiver. @@ -23303,27 +23384,29 @@ Message Mode is able to request notifications from the receiver. @item PGP - RFC 1991 and RFC 2440 @cindex RFC 1991 @cindex RFC 2440 -RFC 1991 is the original PGP message specification, published as a -Information RFC. RFC 2440 was the follow-up, now called Open PGP, and -put on the Standards Track. Both document a non-@sc{mime} aware PGP -format. Gnus supports both encoding (signing and encryption) and -decoding (verification and decryption). +RFC 1991 is the original @acronym{PGP} message specification, +published as a Information RFC. RFC 2440 was the follow-up, now +called Open PGP, and put on the Standards Track. Both document a +non-@acronym{MIME} aware @acronym{PGP} format. Gnus supports both +encoding (signing and encryption) and decoding (verification and +decryption). @item PGP/MIME - RFC 2015/3156 RFC 2015 (superseded by 3156 which references RFC 2440 instead of RFC -1991) describes the @sc{mime}-wrapping around the RF 1991/2440 format. +1991) describes the @acronym{MIME}-wrapping around the RF 1991/2440 format. Gnus supports both encoding and decoding. @item S/MIME - RFC 2633 -RFC 2633 describes the @sc{s/mime} format. +RFC 2633 describes the @acronym{S/MIME} format. @item IMAP - RFC 1730/2060, RFC 2195, RFC 2086, RFC 2359, RFC 2595, RFC 1731 -RFC 1730 is @sc{imap} version 4, updated somewhat by RFC 2060 (@sc{imap} 4 -revision 1). RFC 2195 describes CRAM-MD5 authentication for @sc{imap}. RFC -2086 describes access control lists (ACLs) for @sc{imap}. RFC 2359 -describes a @sc{imap} protocol enhancement. RFC 2595 describes the proper -TLS integration (STARTTLS) with @sc{imap}. RFC 1731 describes the -GSSAPI/Kerberos4 mechanisms for @sc{imap}. +RFC 1730 is @acronym{IMAP} version 4, updated somewhat by RFC 2060 +(@acronym{IMAP} 4 revision 1). RFC 2195 describes CRAM-MD5 +authentication for @acronym{IMAP}. RFC 2086 describes access control +lists (ACLs) for @acronym{IMAP}. RFC 2359 describes a @acronym{IMAP} +protocol enhancement. RFC 2595 describes the proper @acronym{TLS} +integration (STARTTLS) with @acronym{IMAP}. RFC 1731 describes the +GSSAPI/Kerberos4 mechanisms for @acronym{IMAP}. @end table @@ -23426,7 +23509,7 @@ Masanobu @sc{Umeda}---the writer of the original @sc{gnus}. @item Shenghuo Zhu---uudecode.el, mm-uu.el, rfc1843.el, webmail.el, -nnwarchive and many, many other things connected with @sc{mime} and +nnwarchive and many, many other things connected with @acronym{MIME} and other types of en/decoding, as well as general bug fixing, new functionality and stuff. @@ -23441,7 +23524,7 @@ Luis Fernandes---design and graphics. Joe Reiss---creator of the smiley faces. @item -Justin Sheehy--the FAQ maintainer. +Justin Sheehy--the @acronym{FAQ} maintainer. @item Erik Naggum---help, ideas, support, code and stuff. @@ -23760,7 +23843,7 @@ The look of all buffers can be changed by setting format-like variables (@pxref{Group Buffer Format} and @pxref{Summary Buffer Format}). @item -Local spool and several @sc{nntp} servers can be used at once +Local spool and several @acronym{NNTP} servers can be used at once (@pxref{Select Methods}). @item @@ -23840,7 +23923,7 @@ Fetching parents (and other articles) now actually works without glitches (@pxref{Finding the Parent}). @item -Gnus can fetch FAQs and group descriptions (@pxref{Group Information}). +Gnus can fetch @acronym{FAQ}s and group descriptions (@pxref{Group Information}). @item Digests (and other files) can be used as the basis for groups @@ -24214,7 +24297,7 @@ Process mark sets can be pushed and popped (@pxref{Setting Process Marks}). @item -A new mail-to-news back end makes it possible to post even when the @sc{nntp} +A new mail-to-news back end makes it possible to post even when the @acronym{NNTP} server doesn't allow posting (@pxref{Mail-To-News Gateways}). @item @@ -24344,7 +24427,7 @@ text---@kbd{W d}. @item @code{nntp} now uses @file{~/.authinfo}, a @file{.netrc}-like file, for -controlling where and how to send @sc{authinfo} to @sc{nntp} servers. +controlling where and how to send @sc{authinfo} to @acronym{NNTP} servers. @item A command for editing group parameters from the summary buffer @@ -24419,7 +24502,7 @@ More information is available in the info doc at Select Methods -> Getting Mail -> Mail Sources @item -Gnus is now a @sc{mime}-capable reader. This affects many parts of +Gnus is now a @acronym{MIME}-capable reader. This affects many parts of Gnus, and adds a slew of new commands. See the manual for details. @item @@ -24432,7 +24515,7 @@ called to position point. @item The user can now decide which extra headers should be included in -summary buffers and @sc{nov} files. +summary buffers and @acronym{NOV} files. @item @code{gnus-article-display-hook} has been removed. Instead, a number @@ -24448,7 +24531,7 @@ New web-based back ends have been added: @code{nnslashdot}, again, to keep up with ever-changing layouts. @item -Gnus can now read @sc{imap} mail via @code{nnimap}. +Gnus can now read @acronym{IMAP} mail via @code{nnimap}. @end itemize @@ -24546,7 +24629,7 @@ reference manual as source material. It would look quite differently. @item news @cindex news This is what you are supposed to use this thing for---reading news. -News is generally fetched from a nearby @sc{nntp} server, and is +News is generally fetched from a nearby @acronym{NNTP} server, and is generally publicly available to everybody. If you post news, the entire world is likely to read just what you have written, and they'll all snigger mischievously. Behind your back. @@ -24571,20 +24654,21 @@ are reading. @cindex back end Gnus considers mail and news to be mostly the same, really. The only difference is how to access the actual articles. News articles are -commonly fetched via the protocol NNTP, whereas mail messages could be -read from a file on the local disk. The internal architecture of Gnus -thus comprises a `front end' and a number of `back ends'. Internally, -when you enter a group (by hitting @key{RET}, say), you thereby invoke -a function in the front end in Gnus. The front end then `talks' to a -back end and says things like ``Give me the list of articles in the foo -group'' or ``Show me article number 4711''. - -So a back end mainly defines either a protocol (the @code{nntp} back end -accesses news via NNTP, the @code{nnimap} back end accesses mail via -IMAP) or a file format and directory layout (the @code{nnspool} back end -accesses news via the common `spool directory' format, the @code{nnml} -back end access mail via a file format and directory layout that's -quite similar). +commonly fetched via the protocol @acronym{NNTP}, whereas mail +messages could be read from a file on the local disk. The internal +architecture of Gnus thus comprises a `front end' and a number of +`back ends'. Internally, when you enter a group (by hitting +@key{RET}, say), you thereby invoke a function in the front end in +Gnus. The front end then `talks' to a back end and says things like +``Give me the list of articles in the foo group'' or ``Show me article +number 4711''. + +So a back end mainly defines either a protocol (the @code{nntp} back +end accesses news via @acronym{NNTP}, the @code{nnimap} back end +accesses mail via @acronym{IMAP}) or a file format and directory +layout (the @code{nnspool} back end accesses news via the common +`spool directory' format, the @code{nnml} back end access mail via a +file format and directory layout that's quite similar). Gnus does not handle the underlying media, so to speak---this is all done by the back ends. A back end is a collection of functions to @@ -24640,9 +24724,9 @@ A line from the head of an article. @item headers @cindex headers A collection of such lines, or a collection of heads. Or even a -collection of @sc{nov} lines. +collection of @acronym{NOV} lines. -@item @sc{nov} +@item @acronym{NOV} @cindex nov When Gnus enters a group, it asks the back end for the headers of all unread articles in the group. Most servers support the News OverView @@ -24708,6 +24792,7 @@ original. @item ephemeral groups @cindex ephemeral groups +@cindex temporary groups Most groups store data on what articles you have read. @dfn{Ephemeral} groups are groups that will have no data stored---when you exit the group, it'll disappear into the aether. @@ -24771,7 +24856,7 @@ for some quite common situations. If you run Emacs on a machine locally, and get your news from a machine over some very thin strings, you want to cut down on the amount of data -Gnus has to get from the @sc{nntp} server. +Gnus has to get from the @acronym{NNTP} server. @table @code @@ -24784,7 +24869,7 @@ doesn't suddenly decide to fetch the active file anyway. @item gnus-nov-is-evil This one has to be @code{nil}. If not, grabbing article headers from -the @sc{nntp} server will not be very fast. Not all @sc{nntp} servers +the @acronym{NNTP} server will not be very fast. Not all @acronym{NNTP} servers support @sc{xover}; Gnus will detect this by itself. @end table @@ -24907,8 +24992,8 @@ something like @samp{NNTP 3.x} or @samp{nntp flee}, you have some old @file{.el} files lying around. Delete these. @item -Read the help group (@kbd{G h} in the group buffer) for a FAQ and a -how-to. +Read the help group (@kbd{G h} in the group buffer) for a +@acronym{FAQ} and a how-to. @item @vindex max-lisp-eval-depth @@ -25152,7 +25237,7 @@ Prompts the user for a select method. @node Back End Interface @subsection Back End Interface -Gnus doesn't know anything about @sc{nntp}, spools, mail or virtual +Gnus doesn't know anything about @acronym{NNTP}, spools, mail or virtual groups. It only knows how to talk to @dfn{virtual servers}. A virtual server is a @dfn{back end} and some @dfn{back end variables}. As examples of the first, we have @code{nntp}, @code{nnspool} and @code{nnmbox}. As @@ -25197,7 +25282,7 @@ return value. Some back ends could be said to be @dfn{server-forming} back ends, and some might be said not to be. The latter are back ends that generally only operate on one group at a time, and have no concept of ``server'' --- they have a group, and they deliver info on that group and nothing +---they have a group, and they deliver info on that group and nothing more. Gnus identifies each message by way of group name and article number. A @@ -25250,10 +25335,10 @@ In the examples and definitions I will refer to the imaginary back end sequences (lists) of article numbers, and most back ends do not support retrieval of @code{Message-ID}s. But they should try for both. -The result data should either be HEADs or @sc{nov} lines, and the result +The result data should either be HEADs or @acronym{NOV} lines, and the result value should either be @code{headers} or @code{nov} to reflect this. This might later be expanded to @code{various}, which will be a mixture -of HEADs and @sc{nov} lines, but this is currently not supported by Gnus. +of HEADs and @acronym{NOV} lines, but this is currently not supported by Gnus. If @var{fetch-old} is non-@code{nil} it says to try fetching ``extra headers'', in some meaning of the word. This is generally done by @@ -25489,10 +25574,10 @@ group-buffer = *active-line / *group-status @item (nnchoke-request-update-info GROUP INFO &optional SERVER) A Gnus group info (@pxref{Group Info}) is handed to the back end for -alterations. This comes in handy if the back end really carries all the -information (as is the case with virtual and imap groups). This +alterations. This comes in handy if the back end really carries all +the information (as is the case with virtual and imap groups). This function should destructively alter the info to suit its needs, and -should return a non-nil value. +should return a non-@code{nil} value. There should be no result data from this function. @@ -25515,7 +25600,7 @@ There should be no result data from this function. Set/remove/add marks on articles. Normally Gnus handles the article marks (such as read, ticked, expired etc) internally, and store them in -@file{~/.newsrc.eld}. Some back ends (such as @sc{imap}) however carry +@file{~/.newsrc.eld}. Some back ends (such as @acronym{IMAP}) however carry all information about the articles on the server, so Gnus need to propagate the mark information to the server. @@ -25572,11 +25657,12 @@ There should be no result data from this function. This function may be called at any time (by Gnus or anything else) to request that the back end check for incoming articles, in one way or -another. A mail back end will typically read the spool file or query the -POP server when this function is invoked. The @var{group} doesn't have -to be heeded---if the back end decides that it is too much work just -scanning for a single group, it may do a total scan of all groups. It -would be nice, however, to keep things local if that's practical. +another. A mail back end will typically read the spool file or query +the @acronym{POP} server when this function is invoked. The +@var{group} doesn't have to be heeded---if the back end decides that +it is too much work just scanning for a single group, it may do a +total scan of all groups. It would be nice, however, to keep things +local if that's practical. There should be no result data from this function. @@ -25838,10 +25924,10 @@ defined now. Below is a slightly shortened version of the @code{nndir} back end. @lisp -;;; nndir.el --- single directory newsgroup access for Gnus -;; Copyright (C) 1995,96 Free Software Foundation, Inc. +;;; @r{nndir.el --- single directory newsgroup access for Gnus} +;; @r{Copyright (C) 1995,96 Free Software Foundation, Inc.} -;;; Code: +;;; @r{Code:} (require 'nnheader) (require 'nnmh) @@ -25869,7 +25955,7 @@ Below is a slightly shortened version of the @code{nndir} back end. (defvoo nndir-status-string "" nil nnmh-status-string) (defconst nndir-version "nndir 1.0") -;;; Interface functions. +;;; @r{Interface functions.} (nnoo-define-basics nndir) @@ -26082,8 +26168,8 @@ manual (@pxref{Score File Format}). @subsection Headers Internally Gnus uses a format for storing article headers that -corresponds to the @sc{nov} format in a mysterious fashion. One could -almost suspect that the author looked at the @sc{nov} specification and +corresponds to the @acronym{NOV} format in a mysterious fashion. One could +almost suspect that the author looked at the @acronym{NOV} specification and just shamelessly @emph{stole} the entire thing, and one would be right. @dfn{Header} is a severely overloaded term. ``Header'' is used in diff --git a/texi/message-ja.texi b/texi/message-ja.texi index ebd985d..20142f2 100644 --- a/texi/message-ja.texi +++ b/texi/message-ja.texi @@ -1,4 +1,4 @@ -\input texinfo +A\input texinfo @setfilename message-ja @settitle T-gnus 6.15 Message Manual @@ -336,11 +336,11 @@ constructed. The default value is @code{nil}. @item message-forward-as-mime @vindex message-forward-as-mime If this variable is @code{t} (the default), forwarded messages are -included as inline @sc{mime} RFC822 parts. If it's @code{nil}, forwarded +included as inline @acronym{MIME} RFC822 parts. If it's @code{nil}, forwarded messages will just be copied inline to the new message, like previous, -non @sc{mime}-savvy versions of gnus would do. -@end ignore +non @acronym{MIME}-savvy versions of gnus would do. +@end ignore @item message-forward-before-signature @vindex message-forward-before-signature $BHs(B-@code{nil} $B$@$C$?$i=pL>$NA0$K!"$=$l0J30$@$C$?$i8e$K!"E>Aw$9$k%a%C%;!<(B @@ -526,7 +526,8 @@ MFT $B$rB:=E$9$k$3$H$ONI$$%M%A%1%C%H(B (nettiquette) $B$G$"$k$H9M$($i$l$F$$$^ * Header Commands:: $B%X%C%@!<$K0\F0$^$?$O%X%C%@!<$rJQ99$9$k$?$a$NL?Na(B * Movement:: $B%a%C%;!<%8%P%C%U%!$rF0$-2s$k(B * Insertion:: $B%a%C%;!<%8%P%C%U%!$KJ*;v$rA^F~$9$k(B -@c * MIME:: @sc{mime} considerations. +@c * MIME:: @acronym{MIME} considerations. +* IDNA:: $BHs(B-@acronym{ASCII} $B%I%a%$%sL>$K4X$9$k9M;!(B @c * Security:: Signing and encrypting messages. * Various Commands:: $B$$$m$$$m$J;v(B * Sending:: $B(B +@cindex IDNA +@cindex internationalized domain names +@cindex non-ascii domain names + +Message $B$O(B @acronym{IDNA} $B$K=`5r$7$?Aw?.%(!<%8%'%s%H$G$9!#%f!<%6(B +$B$O(B @acronym{IDNA} $B$N$?$a$K0lHL$K$O2?$b$9$kI,MW$,$"$j$^$;$s!#(B +Message $B$O(B @code{From}$B!"(B@code{To} $B$*$h$S(B @code{Cc} $B%X%C%@!<$K$"$k(B +$BHs(B-@acronym{ASCII} $B%I%a%$%sL>$r<+F0E*$K%(%s%3!<%I$7$^$9!#(B + +$B$b$C$H(B @acronym{IDNA} $B$,M-L>$K$J$k$^$G$O!"(B +$B$r(B @acronym{IDNA} $B%(%s%3!<%I$9$Y$->l9g$G$b(B Message $B$O3NG'$r5a$a$^$9!#8=(B +$B:_$G$O%I%a%$%sL>$KHs(B-@acronym{ASCII} $BJ8;z$r4^$`$3$H$,$G$-$k$3$H$K%f!<%6(B +$B$N4v?M$+$O5$$E$$$F$$$J$$$+$b$7$l$J$$$N$G!"H`$i$,6vA3$K(B +$BHs(B-@acronym{ASCII} $B%I%a%$%sL>$r%?%$%W$7$F$7$^$C$?$H$-$N$?$a$K0BA4%M%C%H(B +$B$rD%$C$F$$$k$o$1$G$9!#(B + +@vindex message-use-idna +$BJQ?t(B @code{message-use-idna} $B$O(B @acronym{IDNA} $B$r;H$&$+$I$&$+$r@)8f$7$^(B +$B$9!#$3$NJQ?t$,(B @code{nil} $B$@$C$?$i(B @acronym{IDNA} $B%(%s%3!<%I$O9T$J$o$l$^(B +$B$;$s!#%7%s%\%k(B @code{ask} $B$K@_Dj$5$l$F$$$k(B ($B%G%#%U%)%k%H(B) $B$H%f!<%6$O3NG'(B +$B$r5a$a$i$l$^$9!#$=$7$F(B @code{t} $B$K@_Dj$5$l$F$$$k$H!"<+F0E*(B +$B$K(B @acronym{IDNA} $B%(%s%3!<%I$,9T$J$o$l$^$9!#(B + +@findex message-idna-to-ascii-rhs +$B$rF@$k$?$a$K(B) $B%a%C%;!<%8$NJT=8Cf(B +$B$K(B @kbd{M-x message-idna-to-ascii-rhs RET} $B$r%?%$%W$7$F2<$5$$!#(B + +$B$3$N5!G=$r;H$&$K$O(B @uref{http://www.gnu.org/software/libidn/, GNU +Libidn} $B$r%$%s%9%H!<%k$7$F$*$/I,MW$,$"$j$^$9!#(B + +@ignore @node Security @section Security @cindex Security @@ -860,8 +896,8 @@ Manual}). Using the MML language, Message is able to create digitally signed and digitally encrypted messages. Message (or rather MML) currently -support PGP (RFC 1991), @sc{pgp/mime} (RFC 2015/3156) and @sc{s/mime}. -Instructing MML to perform security operations on a @sc{mime} part is +support @acronym{PGP} (RFC 1991), @acronym{PGP/MIME} (RFC 2015/3156) and @acronym{S/MIME}. +Instructing MML to perform security operations on a @acronym{MIME} part is done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c C-m c} key map for encryption, as follows. @@ -871,37 +907,37 @@ C-m c} key map for encryption, as follows. @kindex C-c C-m s s @findex mml-secure-message-sign-smime -Digitally sign current message using @sc{s/mime}. +Digitally sign current message using @acronym{S/MIME}. @item C-c C-m s o @kindex C-c C-m s o @findex mml-secure-message-sign-pgp -Digitally sign current message using PGP. +Digitally sign current message using @acronym{PGP}. @item C-c C-m s p @kindex C-c C-m s p @findex mml-secure-message-sign-pgpmime -Digitally sign current message using @sc{pgp/mime}. +Digitally sign current message using @acronym{PGP/MIME}. @item C-c C-m c s @kindex C-c C-m c s @findex mml-secure-message-encrypt-smime -Digitally encrypt current message using @sc{s/mime}. +Digitally encrypt current message using @acronym{S/MIME}. @item C-c C-m c o @kindex C-c C-m c o @findex mml-secure-message-encrypt-pgp -Digitally encrypt current message using PGP. +Digitally encrypt current message using @acronym{PGP}. @item C-c C-m c p @kindex C-c C-m c p @findex mml-secure-message-encrypt-pgpmime -Digitally encrypt current message using @sc{pgp/mime}. +Digitally encrypt current message using @acronym{PGP/MIME}. @item C-c C-m C-n @kindex C-c C-m C-n @@ -914,9 +950,9 @@ These commands do not immediately sign or encrypt the message, they merely insert the proper MML secure tag to instruct the MML engine to perform that operation when the message is actually sent. They may perform other operations too, such as locating and retrieving a -@sc{s/mime} certificate of the person you wish to send encrypted mail +@acronym{S/MIME} certificate of the person you wish to send encrypted mail to. When the mml parsing engine converts your MML into a properly -encoded @sc{mime} message, the secure tag will be replaced with either +encoded @acronym{MIME} message, the secure tag will be replaced with either a part or a multipart tag. If your message contains other mml parts, a multipart tag will be used; if no other parts are present in your message a single part tag will be used. This way, message mode will @@ -925,13 +961,14 @@ do the Right Thing (TM) with signed/encrypted multipart messages. @vindex mml-signencrypt-style-alist By default, when encrypting a message, Gnus will use the ``signencrypt'' mode. If you would like to disable this for a particular message, -give the @code{mml-secure-message-encrypt-* command a prefix argument}. (for +give the @code{mml-secure-message-encrypt-*} command a prefix argument. (for example, @kbd{C-u C-c C-m c p}). Additionally, by default Gnus will separately sign, then encrypt a message which has the mode signencrypt. If you would like to change this behavior you can customize the @code{mml-signencrypt-style-alist} variable. For example: + @lisp (setq mml-signencrypt-style-alist '(("smime" combined) ("pgp" combined) @@ -941,7 +978,7 @@ example: Will cause Gnus to sign and encrypt in one pass, thus generating a single signed and encrypted part. Note that combined sign and encrypt does not work with all supported OpenPGP implementations (in -particular, PGP version 2 do not support this). +particular, @acronym{PGP} version 2 do not support this). Since signing and especially encryption often is used when sensitive information is sent, you may want to have some way to ensure that your @@ -952,8 +989,8 @@ verify that your long rant about what your ex-significant other or whomever actually did with that funny looking person at that strange party the other night, actually will be sent encrypted. -@emph{Note!} Neither @sc{pgp/mime} nor @sc{s/mime} encrypt/signs -RFC822 headers. They only operate on the @sc{mime} object. Keep this +@emph{Note!} Neither @acronym{PGP/MIME} nor @acronym{S/MIME} encrypt/signs +RFC822 headers. They only operate on the @acronym{MIME} object. Keep this in mind before sending mail with a sensitive Subject line. Actually using the security commands above is not very difficult. At @@ -964,33 +1001,33 @@ programs are required to make things work, and some small general hints. @subsection Using S/MIME @emph{Note!} This section assume you have a basic familiarity with -modern cryptography, @sc{s/mime}, various PKCS standards, OpenSSL and +modern cryptography, @acronym{S/MIME}, various PKCS standards, OpenSSL and so on. -The @sc{s/mime} support in Message (and MML) require OpenSSL. OpenSSL -perform the actual @sc{s/mime} sign/encrypt operations. OpenSSL can +The @acronym{S/MIME} support in Message (and MML) require OpenSSL. OpenSSL +perform the actual @acronym{S/MIME} sign/encrypt operations. OpenSSL can be found at @uref{http://www.openssl.org/}. OpenSSL 0.9.6 and later should work. Version 0.9.5a cannot extract mail addresses from -certificates, and it insert a spurious CR character into @sc{mime} +certificates, and it insert a spurious CR character into @acronym{MIME} separators so you may wish to avoid it if you would like to avoid being regarded as someone who send strange mail. (Although by sending -@sc{s/mime} messages you've probably already lost that contest.) +@acronym{S/MIME} messages you've probably already lost that contest.) To be able to send encrypted mail, a personal certificate is not required. Message (MML) need a certificate for the person to whom you wish to communicate with though. You're asked for this when you type @kbd{C-c C-m c s}. Currently there are two ways to retrieve this certificate, from a local file or from DNS. If you chose a local -file, it need to contain a X.509 certificate in PEM format. If you -chose DNS, you're asked for the domain name where the certificate is -stored, the default is a good guess. To my belief, Message (MML) is -the first mail agent in the world to support retrieving @sc{s/mime} -certificates from DNS, so you're not likely to find very many -certificates out there. At least there should be one, stored at the -domain @code{simon.josefsson.org}. LDAP is a more popular method of -distributing certificates, support for it is planned. (Meanwhile, you -can use @code{ldapsearch} from the command line to retrieve a -certificate into a file and use it.) +file, it need to contain a X.509 certificate in @acronym{PEM} format. +If you chose DNS, you're asked for the domain name where the +certificate is stored, the default is a good guess. To my belief, +Message (MML) is the first mail agent in the world to support +retrieving @acronym{S/MIME} certificates from DNS, so you're not +likely to find very many certificates out there. At least there +should be one, stored at the domain @code{simon.josefsson.org}. LDAP +is a more popular method of distributing certificates, support for it +is planned. (Meanwhile, you can use @code{ldapsearch} from the +command line to retrieve a certificate into a file and use it.) As for signing messages, OpenSSL can't perform signing operations without some kind of configuration. Especially, you need to tell it @@ -1002,7 +1039,7 @@ contain a @code{custom} group used for this configuration. So, try Currently there is no support for talking to a CA (or RA) to create your own certificate. None is planned either. You need to do this manually with OpenSSL or using some other program. I used Netscape -and got a free @sc{s/mime} certificate from one of the big CA's on the +and got a free @acronym{S/MIME} certificate from one of the big CA's on the net. Netscape is able to export your private key and certificate in PKCS #12 format. Use OpenSSL to convert this into a plain X.509 certificate in PEM format as follows. @@ -1019,18 +1056,20 @@ care in handling it. @subsection Using PGP/MIME -@sc{pgp/mime} requires an external OpenPGP implementation, such as GNU -Privacy Guard (@uref{http://www.gnupg.org/}). One Emacs interface to -OpenPGP implementations, PGG (@pxref{Top, ,PGG, pgg, PGG Manual}), is -included, but Mailcrypt and Florian Weimer's @code{gpg.el} are also -supported. +@acronym{PGP/MIME} requires an external OpenPGP implementation, such +as @uref{http://www.gnupg.org/, GNU Privacy Guard}. One Emacs +interface to OpenPGP implementations, PGG (@pxref{Top, ,PGG, pgg, PGG +Manual}), is included, but Mailcrypt and Florian Weimer's +@code{gpg.el} are also supported. @vindex gpg-temp-directory Note, if you are using the @code{gpg.el} you must make sure that the -directory specified by @code{gpg-temp-directory} have permissions 0700. +directory specified by @code{gpg-temp-directory} have permissions +0700. Creating your own OpenPGP key is described in detail in the documentation of your OpenPGP implementation, so we refer to it. + @end ignore @node Various Commands @section $B$$$m$$$m$JL?Na(B @@ -1152,9 +1191,9 @@ documentation of your OpenPGP implementation, so we refer to it. @vindex message-mail-alias-type $BJQ?t(B @code{message-mail-alias-type} $B$O$I$N$h$&$J7?$N%a!<%kJLL>(B (mail -alias) $B?-D%$r;H$&$+$r@)8f$7$^$9!#8=:_$G$O!"0l$D$NMM<0$@$1$,;HMQ2DG=$G$9(B--- -Message $B$O%a!<%kJLL>$r07$&$?$a$K(B @code{mailabbrev} $B$r;H$$$^$9!#$b$7$3$N(B -$BJQ?t$,(B @code{nil} $B$G$"$k$J$i!"%a!<%kJLL>?-D%$O$r07$&$?$a$K(B @code{mailabbrev} $B$r;H$$$^$9!#$b$7(B +$B$3$NJQ?t$,(B @code{nil} $B$G$"$k$J$i!"%a!<%kJLL>?-D%$O$l(B @item message-sendmail-envelope-from @vindex message-sendmail-envelope-from -@code{message-sendmail-f-is-evil} $B$,(B @code{nil} $B$N$H$-!"$3$l$G(B SMTP $B%(%s(B -$B%Y%m!<%W$G;H$&%"%I%l%9$r;XDj$7$^$9!#(B@code{nil} $B$@$C$?(B -$B$i(B @code{user-mail-address} $B$r;H$$$^$9!#%7%s%\%k(B @code{header} $B$@$C$?$i!"(B -$B%a%C%;!<%8$N(B @samp{From} $B%X%C%@!<$r;H$$$^$9!#(B +@code{message-sendmail-f-is-evil} $B$,(B @code{nil} $B$N$H$-!"$3$l(B +$B$G(B @acronym{SMTP} $B%(%s%Y%m!<%W$G;H$&%"%I%l%9$r;XDj$7$^$9!#(B@code{nil} $B$@$C(B +$B$?$i(B @code{user-mail-address} $B$r;H$$$^$9!#%7%s%\%k(B @code{header} $B$@$C$?(B +$B$i!"%a%C%;!<%8$N(B @samp{From} $B%X%C%@!<$r;H$$$^$9!#(B @item message-mailer-swallows-blank-line @vindex message-mailer-swallows-blank-line @@ -1792,25 +1831,26 @@ RFC1036bis $B$O!"=pL>$O$=$NA0$K(B @samp{-- } $B$N(B3$BJ8;z$@$1$N9T$,$"$k$Y$ $BM}$r$9$k;v$r4JC1$K$9$k$?$a$G$9!#$G$9$+$i!"$"$J$?$NH~$7$$%G%6%$%s$r$=$l$,!"(B $B$"$N!"40A4$KGK2u$7$F$$$k$H46$8$F$b$=$l$i$NJ8;z$r$O(B4$B9T$h$jB?$/$J$k$Y$-$G$OL5$$$H8@$&;v$bCm0U$7$F2<$5$$!#(BASCII $B$N3($r(B -$BF~$l$k;v$O!"3'$K$"$J$?$,GO$O(B4$B9T$h$jB?$/$J$k$Y$-$G$OL5$$$H8@$&;v$bCm0U$7$F2<$5$$!#(B +@acronym{ASCII} $B$N3($rF~$l$k;v$O!"3'$K$"$J$?$,GO$HK\BN$rJ,N%$9$k5-9f$K9gCW$9$k@55,I=8=$G$9!#=i4|CM(B diff --git a/texi/message.texi b/texi/message.texi index 9e91da5..49ddb31 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -310,9 +310,9 @@ constructed. The default value is @code{nil}. @item message-forward-as-mime @vindex message-forward-as-mime If this variable is @code{t} (the default), forwarded messages are -included as inline @sc{mime} RFC822 parts. If it's @code{nil}, forwarded +included as inline @acronym{MIME} RFC822 parts. If it's @code{nil}, forwarded messages will just be copied inline to the new message, like previous, -non @sc{mime}-savvy versions of gnus would do. +non @acronym{MIME}-savvy versions of gnus would do. @item message-forward-before-signature @vindex message-forward-before-signature @@ -503,8 +503,8 @@ better than you do. * Header Commands:: Commands for moving headers or changing headers. * Movement:: Moving around in message buffers. * Insertion:: Inserting things into message buffers. -* MIME:: @sc{mime} considerations. -* IDNA:: Non-ASCII domain name considerations. +* MIME:: @acronym{MIME} considerations. +* IDNA:: Non-@acronym{ASCII} domain name considerations. * Security:: Signing and encrypting messages. * Various Commands:: Various things. * Sending:: Actually sending the message. @@ -821,15 +821,15 @@ See @code{message-mark-insert-begin} and @code{message-mark-insert-end}. @cindex multipart @cindex attachment -Message is a @sc{mime}-compliant posting agent. The user generally -doesn't have to do anything to make the @sc{mime} happen---Message will +Message is a @acronym{MIME}-compliant posting agent. The user generally +doesn't have to do anything to make the @acronym{MIME} happen---Message will automatically add the @code{Content-Type} and @code{Content-Transfer-Encoding} headers. The most typical thing users want to use the multipart things in -@sc{mime} for is to add ``attachments'' to mail they send out. This can +@acronym{MIME} for is to add ``attachments'' to mail they send out. This can be done with the @kbd{C-c C-a} command, which will prompt for a file -name and a @sc{mime} type. +name and a @acronym{MIME} type. You can also create arbitrarily complex multiparts using the MML language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME @@ -841,30 +841,31 @@ Manual}). @cindex internationalized domain names @cindex non-ascii domain names -Message is a @sc{idna}-compliant posting agent. The user generally -doesn't have to do anything to make the @sc{idna} happen---Message -will encode non-ASCII domain names in @code{From}, @code{To}, and -@code{Cc} headers automatically. +Message is a @acronym{IDNA}-compliant posting agent. The user +generally doesn't have to do anything to make the @acronym{IDNA} +happen---Message will encode non-@acronym{ASCII} domain names in @code{From}, +@code{To}, and @code{Cc} headers automatically. -Until IDNA becomes more well known, Message queries you whether IDNA -encoding of the domain name really should occur. Some users might not -be aware that domain names can contain non-ASCII now, so this gives -them a safety net if they accidently typed a non-ASCII domain name. +Until @acronym{IDNA} becomes more well known, Message queries you +whether @acronym{IDNA} encoding of the domain name really should +occur. Some users might not be aware that domain names can contain +non-@acronym{ASCII} now, so this gives them a safety net if they accidently +typed a non-@acronym{ASCII} domain name. @vindex message-use-idna -The @code{message-use-idna} variable control whether @sc{idna} is -used. If the variable is @sc{nil} no IDNA encoding will ever happen, -if it is set to the symbol @sc{ask} the user will be queried (the -default), and if set to @sc{t} IDNA encoding happens automatically. +The @code{message-use-idna} variable control whether @acronym{IDNA} is +used. If the variable is @code{nil} no @acronym{IDNA} encoding will +ever happen, if it is set to the symbol @code{ask} the user will be +queried (the default), and if set to @code{t} @acronym{IDNA} encoding +happens automatically. @findex message-idna-to-ascii-rhs -If you want to experiment with the IDNA encoding, you can invoke -@kbd{M-x message-idna-to-ascii-rhs RET} in the message buffer to have -the non-ASCII domain names encoded while you edit the message. +If you want to experiment with the @acronym{IDNA} encoding, you can +invoke @kbd{M-x message-idna-to-ascii-rhs RET} in the message buffer +to have the non-@acronym{ASCII} domain names encoded while you edit the message. -Note that you must have GNU Libidn -(@url{http://www.gnu.org/software/libidn/} installed in order to use -this functionality. +Note that you must have @uref{http://www.gnu.org/software/libidn/, GNU +Libidn} installed in order to use this functionality. @node Security @section Security @@ -878,8 +879,8 @@ this functionality. Using the MML language, Message is able to create digitally signed and digitally encrypted messages. Message (or rather MML) currently -support PGP (RFC 1991), @sc{pgp/mime} (RFC 2015/3156) and @sc{s/mime}. -Instructing MML to perform security operations on a @sc{mime} part is +support @acronym{PGP} (RFC 1991), @acronym{PGP/MIME} (RFC 2015/3156) and @acronym{S/MIME}. +Instructing MML to perform security operations on a @acronym{MIME} part is done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c C-m c} key map for encryption, as follows. @@ -889,37 +890,37 @@ C-m c} key map for encryption, as follows. @kindex C-c C-m s s @findex mml-secure-message-sign-smime -Digitally sign current message using @sc{s/mime}. +Digitally sign current message using @acronym{S/MIME}. @item C-c C-m s o @kindex C-c C-m s o @findex mml-secure-message-sign-pgp -Digitally sign current message using PGP. +Digitally sign current message using @acronym{PGP}. @item C-c C-m s p @kindex C-c C-m s p @findex mml-secure-message-sign-pgpmime -Digitally sign current message using @sc{pgp/mime}. +Digitally sign current message using @acronym{PGP/MIME}. @item C-c C-m c s @kindex C-c C-m c s @findex mml-secure-message-encrypt-smime -Digitally encrypt current message using @sc{s/mime}. +Digitally encrypt current message using @acronym{S/MIME}. @item C-c C-m c o @kindex C-c C-m c o @findex mml-secure-message-encrypt-pgp -Digitally encrypt current message using PGP. +Digitally encrypt current message using @acronym{PGP}. @item C-c C-m c p @kindex C-c C-m c p @findex mml-secure-message-encrypt-pgpmime -Digitally encrypt current message using @sc{pgp/mime}. +Digitally encrypt current message using @acronym{PGP/MIME}. @item C-c C-m C-n @kindex C-c C-m C-n @@ -932,9 +933,9 @@ These commands do not immediately sign or encrypt the message, they merely insert the proper MML secure tag to instruct the MML engine to perform that operation when the message is actually sent. They may perform other operations too, such as locating and retrieving a -@sc{s/mime} certificate of the person you wish to send encrypted mail +@acronym{S/MIME} certificate of the person you wish to send encrypted mail to. When the mml parsing engine converts your MML into a properly -encoded @sc{mime} message, the secure tag will be replaced with either +encoded @acronym{MIME} message, the secure tag will be replaced with either a part or a multipart tag. If your message contains other mml parts, a multipart tag will be used; if no other parts are present in your message a single part tag will be used. This way, message mode will @@ -960,7 +961,7 @@ example: Will cause Gnus to sign and encrypt in one pass, thus generating a single signed and encrypted part. Note that combined sign and encrypt does not work with all supported OpenPGP implementations (in -particular, PGP version 2 do not support this). +particular, @acronym{PGP} version 2 do not support this). Since signing and especially encryption often is used when sensitive information is sent, you may want to have some way to ensure that your @@ -971,8 +972,8 @@ verify that your long rant about what your ex-significant other or whomever actually did with that funny looking person at that strange party the other night, actually will be sent encrypted. -@emph{Note!} Neither @sc{pgp/mime} nor @sc{s/mime} encrypt/signs -RFC822 headers. They only operate on the @sc{mime} object. Keep this +@emph{Note!} Neither @acronym{PGP/MIME} nor @acronym{S/MIME} encrypt/signs +RFC822 headers. They only operate on the @acronym{MIME} object. Keep this in mind before sending mail with a sensitive Subject line. Actually using the security commands above is not very difficult. At @@ -983,33 +984,33 @@ programs are required to make things work, and some small general hints. @subsection Using S/MIME @emph{Note!} This section assume you have a basic familiarity with -modern cryptography, @sc{s/mime}, various PKCS standards, OpenSSL and +modern cryptography, @acronym{S/MIME}, various PKCS standards, OpenSSL and so on. -The @sc{s/mime} support in Message (and MML) require OpenSSL. OpenSSL -perform the actual @sc{s/mime} sign/encrypt operations. OpenSSL can +The @acronym{S/MIME} support in Message (and MML) require OpenSSL. OpenSSL +perform the actual @acronym{S/MIME} sign/encrypt operations. OpenSSL can be found at @uref{http://www.openssl.org/}. OpenSSL 0.9.6 and later should work. Version 0.9.5a cannot extract mail addresses from -certificates, and it insert a spurious CR character into @sc{mime} +certificates, and it insert a spurious CR character into @acronym{MIME} separators so you may wish to avoid it if you would like to avoid being regarded as someone who send strange mail. (Although by sending -@sc{s/mime} messages you've probably already lost that contest.) +@acronym{S/MIME} messages you've probably already lost that contest.) To be able to send encrypted mail, a personal certificate is not required. Message (MML) need a certificate for the person to whom you wish to communicate with though. You're asked for this when you type @kbd{C-c C-m c s}. Currently there are two ways to retrieve this certificate, from a local file or from DNS. If you chose a local -file, it need to contain a X.509 certificate in PEM format. If you -chose DNS, you're asked for the domain name where the certificate is -stored, the default is a good guess. To my belief, Message (MML) is -the first mail agent in the world to support retrieving @sc{s/mime} -certificates from DNS, so you're not likely to find very many -certificates out there. At least there should be one, stored at the -domain @code{simon.josefsson.org}. LDAP is a more popular method of -distributing certificates, support for it is planned. (Meanwhile, you -can use @code{ldapsearch} from the command line to retrieve a -certificate into a file and use it.) +file, it need to contain a X.509 certificate in @acronym{PEM} format. +If you chose DNS, you're asked for the domain name where the +certificate is stored, the default is a good guess. To my belief, +Message (MML) is the first mail agent in the world to support +retrieving @acronym{S/MIME} certificates from DNS, so you're not +likely to find very many certificates out there. At least there +should be one, stored at the domain @code{simon.josefsson.org}. LDAP +is a more popular method of distributing certificates, support for it +is planned. (Meanwhile, you can use @code{ldapsearch} from the +command line to retrieve a certificate into a file and use it.) As for signing messages, OpenSSL can't perform signing operations without some kind of configuration. Especially, you need to tell it @@ -1021,7 +1022,7 @@ contain a @code{custom} group used for this configuration. So, try Currently there is no support for talking to a CA (or RA) to create your own certificate. None is planned either. You need to do this manually with OpenSSL or using some other program. I used Netscape -and got a free @sc{s/mime} certificate from one of the big CA's on the +and got a free @acronym{S/MIME} certificate from one of the big CA's on the net. Netscape is able to export your private key and certificate in PKCS #12 format. Use OpenSSL to convert this into a plain X.509 certificate in PEM format as follows. @@ -1038,15 +1039,16 @@ care in handling it. @subsection Using PGP/MIME -@sc{pgp/mime} requires an external OpenPGP implementation, such as GNU -Privacy Guard (@uref{http://www.gnupg.org/}). One Emacs interface to -OpenPGP implementations, PGG (@pxref{Top, ,PGG, pgg, PGG Manual}), is -included, but Mailcrypt and Florian Weimer's @code{gpg.el} are also -supported. +@acronym{PGP/MIME} requires an external OpenPGP implementation, such +as @uref{http://www.gnupg.org/, GNU Privacy Guard}. One Emacs +interface to OpenPGP implementations, PGG (@pxref{Top, ,PGG, pgg, PGG +Manual}), is included, but Mailcrypt and Florian Weimer's +@code{gpg.el} are also supported. @vindex gpg-temp-directory Note, if you are using the @code{gpg.el} you must make sure that the -directory specified by @code{gpg-temp-directory} have permissions 0700. +directory specified by @code{gpg-temp-directory} have permissions +0700. Creating your own OpenPGP key is described in detail in the documentation of your OpenPGP implementation, so we refer to it. @@ -1467,9 +1469,9 @@ command line. Doing so would be even more evil than leaving it out. @item message-sendmail-envelope-from @vindex message-sendmail-envelope-from When @code{message-sendmail-f-is-evil} is @code{nil}, this specifies -the address to use in the SMTP envelope. If it is @code{nil}, use -@code{user-mail-address}. If it is the symbol @code{header}, use the -@samp{From} header of the message. +the address to use in the @acronym{SMTP} envelope. If it is +@code{nil}, use @code{user-mail-address}. If it is the symbol +@code{header}, use the @samp{From} header of the message. @item message-mailer-swallows-blank-line @vindex message-mailer-swallows-blank-line @@ -1844,8 +1846,9 @@ signature. So don't remove those characters, even though you might feel that they ruin your beautiful design, like, totally. Also note that no signature should be more than four lines long. -Including ASCII graphics is an efficient way to get everybody to believe -that you are silly and have nothing important to say. +Including @acronym{ASCII} graphics is an efficient way to get +everybody to believe that you are silly and have nothing important to +say. @node Various Message Variables @@ -1855,13 +1858,12 @@ that you are silly and have nothing important to say. @item message-default-charset @vindex message-default-charset @cindex charset -Symbol naming a @sc{mime} charset. Non-ASCII characters in messages are -assumed to be encoded using this charset. The default is @code{nil}, -which means ask the user. (This variable is used only on non-@sc{mule} -Emacsen. -@xref{Charset Translation, , Charset Translation, emacs-mime, - Emacs MIME Manual}, for details on the @sc{mule}-to-@sc{mime} -translation process. +Symbol naming a @acronym{MIME} charset. Non-@acronym{ASCII} +characters in messages are assumed to be encoded using this charset. +The default is @code{nil}, which means ask the user. (This variable +is used only on non-@sc{mule} Emacsen. @xref{Charset Translation, , +Charset Translation, emacs-mime, Emacs MIME Manual}, for details on +the @sc{mule}-to-@acronym{MIME} translation process. @item message-signature-separator @vindex message-signature-separator diff --git a/texi/texi2latex.el b/texi/texi2latex.el index b9da0d4..cb7b5b8 100644 --- a/texi/texi2latex.el +++ b/texi/texi2latex.el @@ -71,6 +71,7 @@ (latexi-translate-string "@code{\\264}" "@code{\\gnusbackslash{}264}") (latexi-translate-string "@samp{\\Deleted}" "@samp{\\gnusbackslash{}Deleted}") (latexi-translate-string "@samp{\\Seen}" "@samp{\\gnusbackslash{}Seen}") + (latexi-translate-string "@file{c:\\myhome}" "@file{c:\\gnusbackslash{}myhome}") ; (while (re-search-forward "{\"[^\"]*\\(\\\\\\)[^\"]*\"}\\\\" nil t) ; (replace-match "\\verb+\\\\+ " t t)) (while (not (zerop (decf times))) @@ -108,6 +109,14 @@ (if as-a-chapter (latexi-switch-line (format "sub%s" command) arg) (latexi-switch-line command arg))) + ((member command '("heading")) + (if as-a-chapter + (latexi-switch-line "subsection*" arg) + (latexi-switch-line "section*" arg))) + ((member command '("subheading")) + (if as-a-chapter + (latexi-switch-line "subsubsection*" arg) + (latexi-switch-line "subsection*" arg))) ((member command '("chapter")) (if (string-match "Index" arg) (latexi-strip-line) @@ -262,11 +271,13 @@ (latexi-exchange-command (concat "gnus" command) arg)) ((member command '("sc" "file" "dfn" "emph" "kbd" "key" "uref" "code" "samp" "var" "strong" "i" - "result" "acronym" "email")) + "result" "email" "env" "r")) (goto-char (match-beginning 0)) (delete-char 1) (insert "\\gnus")) - ((member command '("copyright" "footnote")) + ((member command '("acronym")) + (latexi-exchange-command (concat "gnus" command) (downcase arg))) + ((member command '("copyright" "footnote" "TeX")) (goto-char (match-beginning 0)) (delete-char 1) (insert "\\"))