* Agent Categories:: \e$B2?$r%@%&%s%m!<%I$9$k$+$r\e(B gnus \e$B%(!<%8%'%s\e(B
\e$B%H$K65$($kJ}K!\e(B
* Agent Commands:: \e$B3F%P%C%U%!!<$G$N?7$7$$L?Na\e(B
+* Agent as Cache:: \e$B%(!<%8%'%s%H$OBg$-$J%-%c%C%7%e$G$b$"$k\e(B
* Agent Expiry:: \e$B8E$$5-;v$r>C$9J}K!\e(B
* Agent and IMAP:: \e$B%(!<%8%'%s%H$r\e(B IMAP \e$B$G;H$&J}K!\e(B
* Outgoing Messages:: \e$BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+\e(B?
@findex nntp-open-telnet-stream
@item nntp-open-telnet-stream
-\e$BC1$K\e(B @samp{telnet} \e$B$7$F\e(B @sc{nntp} \e$B%5!<%P!<$K@\B3$7$^$9!#$"$J$?$O!"%G%U%)\e(B
+\e$BC1$K\e(B @samp{telnet} \e$B$7$F\e(B @sc{nntp} \e$B%5!<%P!<$K@\B3$7$^$9!#$"$J$?$O!"%G%#%U%)\e(B
\e$B%k%H$N\e(B @code{nntp-open-network-stream} \e$B$,$=$l$r$9$k$N$K$b$+$+$o$i$:!"$J\e(B
\e$B$<$3$N4X?t$,$"$k$N$+IT;W5D$K;W$&$+$b$7$l$^$;$s!#$=$NM}M3\e(B (\e$B$N0l$D\e(B) \e$B$O!"$b\e(B
\e$B$7$"$J$?$,KIJI$NCf$K$$$?$H$7$F$b\e(B @code{runsocks} \e$B$N$h$&$J%3%^%s%I%i%C%Q!<\e(B
\e$B$^$j!"Dj4|E*$K\e(B @code{mknmz} \e$B$r8F$S=P$7$F!"?7$?$J%a!<%k$N:w0z$rDI2C$7$J\e(B
\e$B$$$H!"?7$7$$%a!<%k$O$$$D$^$G$?$C$F$b8!:wBP>]$K$J$i$J$$$3$H$K$J$j$^$9!#\e(B
@file{gnus-namazu.el} \e$B$O!"\e(B@code{gnus-namazu-index-update-interval} \e$B$K\e(B
-\e$B;XDj$5$l$?4|4VKh$K<+F0E*$K:w0z$r99?7$9$k5!G=$rDs6!$7$F$$$^$9!#%G%U%)%k\e(B
+\e$B;XDj$5$l$?4|4VKh$K<+F0E*$K:w0z$r99?7$9$k5!G=$rDs6!$7$F$$$^$9!#%G%#%U%)%k\e(B
\e$B%H$N@_Dj$G$O!"\e(B3\e$BF|$*$-$K:w0z$r99?7$9$k$h$&$K$J$C$F$$$^$9$,!"$b$C$HIQHK\e(B
-\e$B$K\e(B(\e$BNc$($P\e(B1\e$BF|$*$-\e(B)\e$B$K99?7$9$k$h$&$K$7$?$$$J$i$P!"0J2<$N@_Dj$r\e(B
-@file{~/.gnus} \e$B$KDI2C$7$F$/$@$5$$!#\e(B
+\e$B$K\e(B (\e$BNc$($P\e(B1\e$BF|$*$-\e(B) \e$B$K99?7$9$k$h$&$K$7$?$$$J$i$P!"0J2<$N@_Dj\e(B
+\e$B$r\e(B @file{~/.gnus} \e$B$KDI2C$7$F$/$@$5$$!#\e(B
+
@example
(setq gnus-namazu-index-update-interval 86400)
\e$B%9$rFI$`?M$,$"$J$?$7$+$$$J$1$l$P!"%K%e!<%9%5!<%P!<$N5!G=$r%K%e!<%9%j!<%@!<\e(B
\e$B$KG$$;$k$h$&$K$9$k$3$H$OM}$K$+$J$C$F$$$^$9!#\e(B
-Gnus \e$B$r\e(B ``\e$B%*%U%i%$%s\e(B'' \e$B$N%K%e!<%9%j!<%@!<$H$7$F;H$&$N$O6K$a$F4JC1$G$9!#\e(B
-
-@itemize @bullet
-@item
-\e$B$^$:!"%M%C%H%o!<%/$K40A4$K7R$,$C$F$$$k%^%7%s>e$GF0:n$5$;$k$N$HF1$8$h$&$K!"\e(B
-gnus \e$B$r@_Dj$7$^$9!#$^$:$d$C$F$*$$$G!#KM$O$3$3$GBT$C$F$k$+$i!#\e(B
-
-@item
-\e$B$=$7$?$i!"0J2<$NKbK!$N<vJ8$r$"$J$?$N\e(B @file{.gnus.el} \e$B%U%!%$%k$K=q$$$F$/\e(B
-\e$B$@$5$$!#\e(B
-
-@lisp
-(setq gnus-agent t)
-@end lisp
-@end itemize
-
-\e$B$3$s$@$1$G$9!#$3$l$G\e(B gnus \e$B$O\e(B ``\e$B%*%U%i%$%s\e(B'' \e$B%K%e!<%9%j!<%@!<$K$J$C$F$7$^\e(B
-\e$B$$$^$7$?!#\e(B
+Gnus \e$B$r\e(B ``\e$B%*%U%i%$%s\e(B'' \e$B$N%K%e!<%9%j!<%@!<$H$7$F;EN)$F$k$N$O6K$a$F4JC1$G\e(B
+\e$B$9!#<B:]!"$"$J$?$O2?$b@_Dj$9$kI,MW$,L5$$$N$G$9!#\e(B
\e$B$b$A$m$s!"$3$l$r%*%U%i%$%s%K%e!<%9%j!<%@!<$H$7$F;H$&$K$O!"$$$/$D$+?7$7$$\e(B
\e$BL?Na$r3P$($J$/$F$O$J$j$^$;$s!#\e(B
* Agent Categories:: \e$B2?$r%@%&%s%m!<%I$9$k$+$r\e(B gnus \e$B%(!<%8%'%s\e(B
\e$B%H$K65$($kJ}K!\e(B
* Agent Commands:: \e$B3F%P%C%U%!!<$G$N?7$7$$L?Na\e(B
+* Agent as Cache:: \e$B%(!<%8%'%s%H$OBg$-$J%-%c%C%7%e$G$b$"$k\e(B
* Agent Expiry:: \e$B8E$$5-;v$r>C$9J}K!\e(B
* Agent and IMAP:: \e$B%(!<%8%'%s%H$r\e(B IMAP \e$B$G;H$&J}K!\e(B
* Outgoing Messages:: \e$BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+\e(B?
\e$B$I$N%5!<%P!<$r%(!<%8%'%s%H$GLLE]$r8+$k$+$r7h$a$^$9!#$b$7%a!<%k%P%C%/%(%s\e(B
\e$B%I$,$"$l$P!"$=$l$r%(!<%8%'%s%H$KLLE]$r8+$5$;$k$N$O$*$=$i$/L50UL#$G$7$g$&!#\e(B
\e$B%5!<%P!<%P%C%U%!!<$K0\F0$7\e(B (\e$B%0%k!<%W%P%C%U%!!<$G\e(B @kbd{^})\e$B!"%(!<%8%'%s%H\e(B
-\e$B$K07$C$FM_$7$$%5!<%P!<\e(B(\e$BJ#?t2D\e(B)\e$B$G\e(B @kbd{J a} \e$B$r2!$7$^\e(B
-\e$B$9\e(B (@pxref{Server Agent Commands})\e$B!#$3$l$OBgDq$N>l9g!"%P%C%U%!!<$N2<$K0l\e(B
-\e$BMwI=<($5$l$F$$$k4pK\A*BrJ}K!$@$1$G$7$g$&!#\e(B
+\e$B$K07$C$FM_$7$$%5!<%P!<\e(B(\e$BJ#?t2D\e(B)\e$B$G\e(B @kbd{J a} \e$B$r2!$9$+!"$^$?$O%(!<%8%'%s%H\e(B
+\e$B$K07$C$FM_$7$/$J$$$N$K<+F0E*$KDI2C$5$l$?%5!<%P!<$G\e(B @kbd{J r} \e$B$r2!$7$^$9!#\e(B
+\e$B%G%#%U%)%k%H$G\e(B
+\e$B$O\e(B @code{gnus-select-method} \e$B$H\e(B @code{gnus-secondary-select-methods} \e$B$K\e(B
+\e$B$"$k$9$Y$F$N\e(B @code{nntp} \e$B$H\e(B @code{nnimap} \e$B%0%k!<%W$,%(!<%8%'%s%H2=$5$l$^\e(B
+\e$B$9!#\e(B
@item
\e$B%@%&%s%m!<%IJ}?K$r7hDj$7$^$9!#\e(B@xref{Agent Categories}.
\e$B$k\e(B (@code{gnus-agent-remove-server})\e$B!#\e(B
@end table
+@node Agent as Cache
+@subsection \e$B%-%c%C%7%e$H$7$F$N%(!<%8%'%s%H\e(B
+
+gnus \e$B$,\e(B @dfn{plugged} \e$B$G$"$k$H$-$K!"$9$G$K%(!<%8%'%s%H$K3JG<$5$l$F$$$k%X%C\e(B
+\e$B%@!<$d5-;v$r%@%&%s%m!<%I$9$k$N$O8zN(E*$G$O$"$j$^$;$s!#$=$3$G\e(B gnus \e$B$ODL>o\e(B
+\e$B%X%C%@!<$r0l2s$@$1%@%&%s%m!<%I$7$F%(!<%8%'%s%H$K3JG<$7$^$9!#\e(B
+@dfn{plugged} \e$B$+\e(B @dfn{unplugged} \e$B$K$+$+$o$i$:!"$=$l$i$N%X%C%@!<$O8e$K35\e(B
+\e$BN,%P%C%U%!$r@8@.$9$k$H$-$K;H$o$l$^$9!#%G%#%U%)%k%H$G$O5-;v$O\e(B (\e$B$=$l$O@x:_\e(B
+\e$BE*$K%G%#%9%/6u4V$rO2Hq$9$k$G$"$m$&$+$i\e(B) \e$B%(!<%8%'%s%H$K%-%c%C%7%e$5$l$^$;\e(B
+\e$B$s$,!"$9$G$K%(!<%8%'%s%H$K%@%&%s%m!<%I$7$?5-;v$,$"$k$J$i$P!"\e(Bgnus \e$B$O%5!<\e(B
+\e$B%P!<$+$i:F$S5-;v$r%@%&%s%m!<%I$;$:$K!"<j85$K3JG<$5$l$?%3%T!<$r;H$$$^$9!#\e(B
+
+\e$B$3$NF0:n$O\e(B @code{gnus-agent-cache} \e$B$G@)8f$5$l$^\e(B
+\e$B$9\e(B (@pxref{Agent Variables})\e$B!#\e(B
+
@node Agent Expiry
@subsection \e$B%(!<%8%'%s%H4|8B@Z$l>C5n\e(B
\e$B$$$&$3$H$G$9!#$7$?$,$C$F!"\e(Bgnus \e$B$O\e(B @dfn{unplugged} \e$B$N$H$-$N%U%i%0$NJQ2=$r\e(B
\e$B3P$($F$*$$$F!":F$S@\B3$7$?$H$-$K$=$l$i$N%U%i%0$rF14|$5$;$kI,MW$,$"$j$^$9!#\e(B
-gnus \e$B$O%(!<%8%'%s%H$N85$G\e(B nnimap \e$B%0%k!<%W$rFI$`$H$-!"%G%#%U%)%k%H$G%U%i\e(B
-\e$B%0$NJQ2=$K@d$($:Cm0U$7$F$$$^$9!#$"$J$?$,:F$S@\B3$7$?$H$-!"%G%#%U%)%k%H\e(B
-\e$B$G\e(B gnus \e$B$O$"$J$?$,2?$i$+$N%U%i%0$rJQ99$7$?$+$I$&$+$rD4$Y$F!"$"$J$?$,$=$l\e(B
-\e$B$i$r%5!<%P!<$HF14|$5$;$?$$$+$I$&$+$r?R$M$^$9!#$3$N5sF0\e(B
-\e$B$O\e(B @code{gnus-agent-synchronize-flags} \e$B$G%+%9%?%^%$%:$9$k$3$H$,$G$-$^$9!#\e(B
+gnus \e$B$O%(!<%8%'%s%H$N85$G\e(B nnimap \e$B%0%k!<%W$rFI$`$H$-!"%U%i%0$NJQ2=$K@d$(\e(B
+\e$B$:Cm0U$7$F$$$^$9!#$"$J$?$,:F$S@\B3$7$?$H$-!"\e(Bgnus \e$B$O$"$J$?$,2?$i$+$N%U%i\e(B
+\e$B%0$rJQ99$7$?$+$I$&$+$rD4$Y$F!"$"$J$?$,$=$l$i$r%5!<%P!<$HF14|$5$;$?$$$+$I\e(B
+\e$B$&$+$r?R$M$^$9!#$3$N5sF0$O\e(B @code{gnus-agent-synchronize-flags} \e$B$G%+%9%?\e(B
+\e$B%^%$%:$9$k$3$H$,$G$-$^$9!#\e(B
@vindex gnus-agent-synchronize-flags
\e$B$b$7\e(B @code{gnus-agent-synchronize-flags} \e$B$,\e(B @code{nil} \e$B$@$C$?$i!"%(!<%8%'\e(B
\e$B$i$l$^$9!#\e(B
\e$B$b$7$"$J$?$,!":F@\B3$7$?$H$-$K<+F0$G%U%i%0$rF14|$5$;$?$/$J$$$J$i!"<jF0$G\e(B
-\e$B9T$J$&$3$H$b$G$-$^$9!#$3$l$K$O%G%#%U%)%k%H$G%0%k!<%W%P%C%U%!$N\e(B @kbd{J Y}
-\e$B%-!<$K3d$jEv$F$i$l$?\e(B @code{gnus-agent-synchronize-flags} \e$B%3%^%s%I$r;H$$\e(B
-\e$B$^$9!#\e(B
+\e$B$=$l$r9T$J$&$3$H$b$G$-$^$9!#$3$l$K$O%0%k!<%W%P%C%U%!$N\e(B @kbd{J Y} \e$B%-!<$K\e(B
+\e$B3d$jEv$F$i$l$?\e(B @code{gnus-agent-synchronize-flags} \e$B%3%^%s%I$r;H$$$^$9!#\e(B
\e$B$"$J$?$,!"\e(B@dfn{unplugged} \e$B$N$H$-$N\e(B @sc{imap} \e$B%/%i%$%"%s%H$K4|BT$9$k$G$"\e(B
\e$B$m$&$$$/$D$+$N5!G=$O!"8=:_$N%(!<%8%'%s%H$K$O@9$j9~$^$l$F$$$^$;$s!#$=$l$i\e(B
@subsection \e$B:9=PMQ%a%C%;!<%8\e(B
Gnus \e$B$,@Z$jN%$5$l$F$$$k$H$-!"A4$F$N:9=PMQ%a%C%;!<%8\e(B (\e$B%a!<%k$H%K%e!<%9$N\e(B
-\e$BN>J}\e(B) \e$B$O2<=q$-%0%k!<%W\e(B (@pxref{Drafts}) \e$B$K3JG<$5$l$^$9!#Ej9F$7$?8e$G$b!"\e(B
-\e$B$3$3$G$=$N%a%C%;!<%8$r8+$?$j!"JT=8$7$?$j$9$k$N$O0U$N$^$^$G$9!#\e(B
+\e$BN>J}\e(B) \e$B$O2<=q$-%0%k!<%W\e(B ``queue'' (@pxref{Drafts}) \e$B$K3JG<$5$l$^$9!#Ej9F$7\e(B
+\e$B$?8e$G$b!"$3$3$G$=$N%a%C%;!<%8$r8+$?$jJT=8$9$k$N$O0U$N$^$^$G$9!#\e(B
Gnus \e$B$,:F$S:9$79~$^$l$?$H$-!"%a%C%;!<%8$rAw?.$9$k$?$a$K!"FCJL$JL?Na$r;H$C\e(B
\e$B$F2<=q$-%0%k!<%W$+$iAw$k$3$H$b!"%0%k!<%W%P%C%U%!Fb$G\e(B @kbd{J S} \e$B$r;H$C$F!"\e(B
@item gnus-agent-cache
@vindex gnus-agent-cache
plugged \e$B$N$H$-$K!"%m!<%+%k$K;}$C$F$$$k\e(B @sc{nov} \e$B$H5-;v$r;H$&$+$I$&$+$r@)\e(B
-\e$B8f$9$kJQ?t!#\e(B
+\e$B8f$9$kJQ?t$G!"Nc$($P%(!<%8%'%s%H$r%-%c%C%7%e$H$7$F;H$&$K$OI,?\$G$9!#%G%#\e(B
+\e$B%U%)%k%H$G$OHs\e(B-@code{nil} \e$B$G!"%(!<%8%'%s%H$r%-%c%C%7%e$H$7$F;H$$$^$9!#\e(B
@item gnus-agent-go-online
@vindex gnus-agent-go-online
;;; Gnus \e$B$r%*%U%i%$%s%K%e!<%9%j!<%@!<$K$9$k!#\e(B
;;; (gnus-agentize) ; \e$B5l<0$N@_Dj!#\e(B
-(setq gnus-agent t)
+;;; (setq gnus-agent t) ; \e$B8=:_$N%G%#%U%)%k%H!#\e(B
@end lisp
\e$B4pK\E*$K$O$3$l$@$1$GNI$$$O$:$G$9!#$3$l$r$"$J$?$N\e(B @file{~/.gnus.el} \e$B%U%!\e(B
* Agent Basics:: How it all is supposed to work.
* Agent Categories:: How to tell the Gnus Agent what to download.
* Agent Commands:: New commands for all the buffers.
+* Agent as Cache:: The Agent is a big cache too.
* Agent Expiry:: How to make old articles go away.
* Agent and IMAP:: How to use the Agent with IMAP.
* Outgoing Messages:: What happens when you post/mail something?
functionality up to the newsreader makes sense if you're the only person
reading news on a machine.
-Using Gnus as an ``offline'' newsreader is quite simple.
-
-@itemize @bullet
-@item
-First, set up Gnus as you would do if you were running it on a machine
-that has full connection to the net. Go ahead. I'll still be waiting
-here.
-
-@item
-Then, put the following magical incantation in your @file{.gnus.el}
-file:
-
-@lisp
-(setq gnus-agent t)
-@end lisp
-@end itemize
-
-That's it. Gnus is now an ``offline'' newsreader.
+Setting up Gnus as an ``offline'' newsreader is quite simple. In
+fact, you don't even have to configure anything.
Of course, to use it as such, you have to learn a few new commands.
* Agent Basics:: How it all is supposed to work.
* Agent Categories:: How to tell the Gnus Agent what to download.
* Agent Commands:: New commands for all the buffers.
+* Agent as Cache:: The Agent is a big cache too.
* Agent Expiry:: How to make old articles go away.
* Agent and IMAP:: How to use the Agent with IMAP.
* Outgoing Messages:: What happens when you post/mail something?
Decide which servers should be covered by the Agent. If you have a mail
back end, it would probably be nonsensical to have it covered by the
Agent. Go to the server buffer (@kbd{^} in the group buffer) and press
-@kbd{J a} the server (or servers) that you wish to have covered by the
-Agent (@pxref{Server Agent Commands}). This will typically be only the
-primary select method, which is listed on the bottom in the buffer.
+@kbd{J a} on the server (or servers) that you wish to have covered by the
+Agent (@pxref{Server Agent Commands}), or @kbd{J r} on automatically
+added servers you do not wish to have covered by the Agent. By default,
+all @code{nntp} and @code{nnimap} groups in @code{gnus-select-method} and
+@code{gnus-secondary-select-methods} are agentized.
@item
Decide on download policy. @xref{Agent Categories}.
@end table
+@node Agent as Cache
+@subsection Agent as Cache
+
+When Gnus is plugged, it is not efficient to download headers or
+articles from the server again, if they are already stored in the
+Agent. So, Gnus normally only downloads headers once, and stores them
+in the Agent. These headers are later used when generating the summary
+buffer, regardless of whether you are plugged or unplugged. Articles
+are not cached in the Agent by default though (that would potentially
+consume lots of disk space), but if you have already downloaded an
+article into the Agent, Gnus will not download the article from the
+server again but use the locally stored copy instead.
+
+This behaviour can be controlled by @code{gnus-agent-cache}
+(@pxref{Agent Variables}).
+
@node Agent Expiry
@subsection Agent Expiry
case for nntp. Thus Gnus need to remember flag changes when
disconnected, and synchronize these flags when you plug back in.
-Gnus keep track of flag changes when reading nnimap groups under the
-Agent by default. When you plug back in, by default Gnus will check if
-you have any changed any flags and ask if you wish to synchronize these
-with the server. This behavior is customizable with
-@code{gnus-agent-synchronize-flags}.
+Gnus keeps track of flag changes when reading nnimap groups under the
+Agent. When you plug back in, Gnus will check if you have any changed
+any flags and ask if you wish to synchronize these with the server.
+The behavior is customizable by @code{gnus-agent-synchronize-flags}.
@vindex gnus-agent-synchronize-flags
If @code{gnus-agent-synchronize-flags} is @code{nil}, the Agent will
-never automatically synchronize flags. If it is @code{ask}, the
-default, the Agent will check if you made any changes and if so ask if
-you wish to synchronize these when you re-connect. If it has any other
-value, all flags will be synchronized automatically.
+never automatically synchronize flags. If it is @code{ask}, which is
+the default, the Agent will check if you made any changes and if so
+ask if you wish to synchronize these when you re-connect. If it has
+any other value, all flags will be synchronized automatically.
-If you do not wish to automatically synchronize flags when you
-re-connect, this can be done manually with the
+If you do not wish to synchronize flags automatically when you
+re-connect, you can do it manually with the
@code{gnus-agent-synchronize-flags} command that is bound to @kbd{J Y}
-in the group buffer by default.
+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:
@subsection Outgoing Messages
When Gnus is unplugged, all outgoing messages (both mail and news) are
-stored in the draft groups (@pxref{Drafts}). You can view them there
-after posting, and edit them at will.
+stored in the draft group ``queue'' (@pxref{Drafts}). You can view
+them there after posting, and edit them at will.
When Gnus is plugged again, you can send the messages either from the
draft group with the special commands available there, or you can use
@item gnus-agent-cache
@vindex gnus-agent-cache
-Variable to control whether use the locally stored @sc{nov} and articles when
-plugged.
+Variable to control whether use the locally stored @sc{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.
@item gnus-agent-go-online
@vindex gnus-agent-go-online
;;; Make Gnus into an offline newsreader.
;;; (gnus-agentize) ; The obsolete setting.
-(setq gnus-agent t)
+;;; (setq gnus-agent t) ; Now the default.
@end lisp
That should be it, basically. Put that in your @file{~/.gnus.el} file,