Here's some helpful hints for getting the most out of trn:

The 'X' command in the thread selector (kinda like catchup/yes) can be made
the default action on the last page of selections by using the command-line
option:  -XX.  This lets you browse all the pages, making selections as you
go, and then mark everything that was not selected as read when you press
space at the last page.
----------
If you like to select a little, read a little, and then select a little more,
try using the command-line option:  -XDD.  This makes the 'D' command the
default on all pages of the thread selector.  Thus you can select the things
you want to read on the current page, press space, and you will read the
selected articles immediately (if there were any).  All other articles on the
current page will be marked as read.  (Don't use -XXD, because new articles
might have arrived while reading, and they could be marked as read without
ever seeing them.)
----------
I like to use the -xls command-line option to only have the long and short
modes in the thread selector (leaving out the mid-sized one).  Press 'L' to
switch modes.
----------
Keep in mind that you can create a file called .trninit and point trn at
it by definining the environment variable TRNINIT.  Depending on your shell,
you might use "setenv TRNINIT ~/.trninit" or some other type of assignment
(put the definition in your shell's rc file).  Then put all your command-line
options in this file.
----------
I like to redefine the 'u' keys in the following way:  'u' visits the "Set
unread?" prompt (except at the thread selector), 'U' goes directly to the
already-read article selector, and Ctrl-U unsubscribes from the group (even
while in the thread selector).  Put the following 3 macros in your .trninit
file to accomplish this:

u	%(%m=[anp]?U:u)
U	%(%m=[anp]?U+:U)
^U	%(%m=t?+u:u)
----------
If you like the way that 'q' worked in the thread selector in trn 1.x, put
the following macro in your .trninit file:

q	%(%m=t?+:q)
----------
If you want to be able to save your shar headers in a file as they are
extracted and you have access to "unshar" (a program that can extract
shar files while saving the headers in UNSHAR.HDR), twiddle the external
extract command to send the entire article:

        (regular)                          (nntp)
-EEXSAVER="%e <%A"               -EEXSAVER "%e <%P/rrn%a.%$"

and then point the UNSHAR variable at unshar instead of /bin/sh:

-EUNSHAR="unshar -s"

Note that this assumes that any other commands you execute with "e dir|command"
can also handle the entire article as input (uuencoded and shipped files are
not affected).
----------
