rsalz@uunet.uu.net (Rich Salz) (06/27/89)
Submitted-by: storm@texas.dk (Kim F. Storm) Posting-number: Volume 19, Issue 70 Archive-name: nn/part09 #!/bin/sh # this is part 9 of a multipart archive # do not concatenate these parts, unpack them in order with /bin/sh # file nn.1 continued # CurArch=9 if test ! -r s2_seq_.tmp then echo "Please unpack part 1 first!" exit 1; fi ( read Scheck if test "$Scheck" != $CurArch then echo "Please unpack part $Scheck next!" exit 1; else exit 0; fi ) < s2_seq_.tmp || exit 1 echo "x - Continuing file nn.1" sed 's/^X//' << 'NO_NEWS_IS_GOOD_NEWS' >> nn.1 X.SH FILE AND GROUP NAME COMPLETION XWhen entering a file name or a news group name, a simple X.B completion Xfeature is available using the \fBspace\fP, \fBtab\fP, and \fB?\fP keys. X.LP XHitting \fBspace\fP anywhere during input will complete the X.I current X.I component Xof the file name or group name with the X.I first Xavailable possibility. X.LP XIf this possibility is not the one you want, keep on hitting X.B space Xuntil it appears. X.LP XWhen the right completion has appeared, you can just continue typing Xthe file or group name, or you can hit X.B tab Xto fix the current component, and get the X.I first Xpossibility for the next component, and then use X.B space Xto go through the other possible completions. X.LP XThe X.B ? Xkey will produce a list of the possible X.I completions Xof the current component. If the list is too long for the available Xspace on screen, the key can be repeated to get the next part of the Xlist. X.LP XThe current completion can be deleted with the X.B erase Xkey. X.LP XThe default value for a file name is the last file name you have Xentered, so if you enter a X.B space Xas the first character after the prompt, the last file name will be Xrepeated (and you can edit it if you like). In some cases, a string Xwill already be written for you in the prompt line, and to get the Xdefault value in these cases, use the \fBkill\fP key. This also means Xthat if you neither want the initial value, nor the default value, you Xwill have to hit the \fBkill\fP twice to get a clean prompt line. X.LP XOther keys can be used for completion instead of the \fBspace\fP, X\fBtab\fP, and \fB?\fP keys by setting the variables \fBcomp1-key\fP, X\fBcomp2-key\fP, and \fBhelp-key\fP, respectively. X.SH POSTING AND RESPONDING TO ARTICLES XIn both selection mode and reading mode you can post new articles, Xpost follow-ups to articles, send replies to the author of an article, Xand you can send mail to another user with the option of including an Xarticle in the letter. In reading mode, a response is made to the Xcurrent article, while in selection mode you will be prompted for an Xarticle to respond to. X.LP XThe following commands are available (the lower-case equivalents are Xalso available in reading mode): X.TP X\&\fBR\fP {\fBreply\fP} XReply through mail to the author of the article. This is the prefered Xway to respond to an article unless you think your reply is of general Xinterest. X.TP X\&\fBF\fP {\fBfollow\fP} XFollow-up with an article in the same newsgroup (unless an alternative Xgroup is specified in the article header). X.TP X\&\fBM\fP {\fBmail\fP} XMail a letter or X.I forward Xan article to a single recipient. XIn selection mode, you will be prompted for an article to include Xin your letter, and in reading mode you will be asked if the current Xarticle should be included in the letter. XYou will then be prompted for the recipient of the letter (default Xrecipient is yourself) Xand the subject of the letter (if an article is included, you may hit X.B space Xto get the default subject which is the subject of the included article). X.TP X\&\fB:post\fP {\fBpost\fP} XPost a new article to any newsgroup. This command will prompt you for Xa X.I comma-separated Xlist of newsgroups to post to (you cannot enter a space because X.B space Xis used for group name completion as described below). X.LP XGenerally, \fInn\fP will construct a file with a suitable header, optionally Xinclude a copy of the article in the file with each non-empty line Xprefixed by a `>' character (except in mail mode), and invoke an Xeditor of your choice (using the EDITOR environment variable) on this Xfile, positioning you on the first line of the body of the article (if Xit knows the editor). X.PP XWhen you have completed editing the message, it will compare it to the Xunedited file, and if they are identical (i.e. you did not make any Xchanges to the file), or it is empty, the operation is cancelled. XOtherwise you will be prompted for an action to take on the Xconstructed article (enter first letter followed by X.BR return ): X.br X.sp 0.5v X Action: (a)bort (e)dit (o)k (s)end: X.sp 0.5v X.br XYou now have the opportunity to X.BR a : Xthrow the article away, X.BR e : Xedit the file again, or X.B o Xand X.BR s : Xsend the article or letter. X.SH JUMPING TO OTHER GROUPS XBy default \fInn\fP will present the news groups in a predefined Xsequence (see the section on Presentation Sequence later on). XTo override this sequence and have a look at any other group the X.B G X{\fBgoto-group\fP} command available in both selection and reading Xmode enables you to move freely between all the newsgroups. X.LP XFurthermore, the X.B G Xcommand enables you to open folders and other files, to read old Xarticles you have read before, and to grep for a specific subject in a Xgroup. X.PP XIt is important to notice that normally the goto command is recursive, Xi.e. a new \fImenu level\fP is created when the specified group or Xfolder is presented, and when it has been read, \fInn\fP will continue Xthe activity in the group that was presented before the goto command Xwas executed. However, you can avoid entering a new menu level by Xusing the X.B j Xreply described below. The current menu level (i.e. number of nested Xgoto commands) will be shown in the prompt line as "<N>" (in reverse Xvideo). X.PP XThe goto command is very powerful, but unfortunately also a little bit Xtricky at first sight, because the facilities it provides depend a Xlittle bit on the context in which the command is used. X.PP XWhen executed, the goto command will prompt you for the name of the Xnewsgroup, folder, or file to open. It will use the first letter Xyou enter to distinguish these three possibilities: X.TP X.I letter\ or\ digit XThe answer is taken to be the name of a newsgroup. X.TP X.I + X.br XThe answer is taken to be the name of a folder. X.TP X.I \&./\ \ or\ \ ~/\ \ or\ \ / XThe answer is taken to be the name of a file, either relative to the Xcurrent directory, relative to your home directory, or an absolute Xpath name for the file. X.TP X.B return XAn empty answer is equivalent to the current newsgroup. X.LP XSpecifying a folder or a file will cause \fInn\fP to treat the file Xlike a digest and split it into separate articles (not physically!) Xwhich are then presented on a menu in the usual way, allowing you to Xread or save individual subarticles from the folder. X.LP XWhen you enter a groupname, \fInn\fP will ask you how many articles in Xthe group you want to see on the menu. You can give the following Xanswers: X.TP X.I a number N XIn this case you will get the newest N articles in the group, or if Xyou specified the current group (by hitting X.B return Xto the group name prompt), you will get that many X.I extra Xarticles included on the same menu (without creating a new menu level). X.TP X.B j XThis answer can only be given if there are unread articles in the Xgroup. It will instruct nn to jump directly to the specified group in Xthe presentation sequence \fIwithout\fP creating a new menu level. X.TP X.B u XThis instructs \fInn\fP to present the X.I unread Xarticles in the group (if there are any). If you have already read Xthe group (in the current invocation of \fInn\fP), the X.B u Xanswer will instruct \fInn\fP to present the articles that were unread Xwhen you entered \fInn\fP. X.TP X.B a XThis instruct \fInn\fP to present X.I all Xarticles in the group. X.TP X\fB=\fP\fIword\fP XThis instructs \fInn\fP to search X.I all Xarticles in the groups, but only present the articles containing the word X.I word Xin the subject. X.TP X\fB=/\fP\fIregexp\fP XThis instructs \fInn\fP to search the group for the articles whose Xsubject matches the regular expression X.IR regexp . X.TP X.B return XThe meaning of an empty answer depends on the context: if there are Xunread articles in the specified group the unread articles will be Xpresented, otherwise X.I all Xarticles in the group will be included in the menu. X.LP XIf you specified the current group, and the menu already contains all Xthe available articles, \fInn\fP will directly prompt for a word to Xsearch for in the subject of all articles (the prompt will be an equal Xsign.) X.LP XWhen the goto command creates a new menu level, \fInn\fP will not Xperform auto kill or selection in the group. You can use the X.B + Xcommand in menu mode to perform the auto-selections. X.LP XThere are three commands in the goto family: X.TP X\&\fBG\fP {\fBgoto-group\fP} XThis is the general goto command described above. X.TP X\&\fBB\fP {\fBback-group\fP} XBackup one or more groups. You can hit this key one or more times to Xgo back in the groups already presented (including those without new Xarticles); when you have found the group you are looking for, hit X.B space Xto enter it. X.TP X\&\fBA\fP {\fBadvance-group\fP} XAdvance one or more groups. This command is similar to the X.B B Xcommand, but operates in the opposite direction. You can freely mix Xthe X.B A Xand X.B B Xcommands, and you can also use the X.B G Xcommand directly when you are prompted with a group. X.LP XTo show the use of the goto command some typical examples on Xits use are given below: X.sp X.nf X.B "Present the unread articles in the dk.general group" X.sp 0.5v X \fBG\fP dk.general \fBreturn\fP \fBu\fP X.sp X.B "Jump directly to the gnu.emacs group and continue from there" X.sp 0.5v X \fBG\fP gnu.emacs \fBreturn\fP \fBj\fP X.sp X.B "Include the last 10 READ articles in the current group menu" X.sp 0.5v X \fBG\fP \fBreturn\fP 10 \fBreturn\fP X.sp 0.5v X.fi XAnswering \fBreturn\fP to the group name prompt will make the goto Xcommand apply to the current group and prompt for the number of X\fIextra\fP articles (which have already been read) to include in the Xpresent menu. This will \fInot\fP create a new menu level. X.nf X.sp X.B "Find all articles in rec.music.misc on the subject Floyd" X.sp 0.5v X \fBG\fP rec.music.misc \fBreturn\fP X \fB=\fP floyd \fBreturn\fP X.sp 0.5v X.fi XNotice that case is ignored when searching for the word in the subject Xlines. X.nf X.sp X.B "Open the folder +nn" X.sp 0.5v X \fBG\fP +nn \fBreturn\fP X X.fi X.SH AUTOMATIC KILL AND SELECTION XYou can easily instruct \fInn\fP to X.I kill Xor X.I select Xarticles with specific subjects or from specific authors using the Xfollowing command: X.TP X\&\fBK\fP {\fBkill-select\fP} XPut a permanent or temporary entry into your personal X.I kill Xfile. The contents of the entry is specified during a short dialog Xthat is described in details below. XThis command is available in both selection and reading mode. X.LP XEntries in the kill file may apply to a single newsgroup or to all Xnewsgroups. Furthermore, entries may be permanent or they may be Xexpired a given number of days after their entry. X.LP XTo increase performance, \fInn\fP uses a compiled version of the kill Xfile which is read in when \fInn\fP is invoked. The compiled kill Xfile will automatically be updated if the normal kill file has been Xmodified. X.LP XThe following dialog is used to build the kill file entry: X.TP X\fIAUTO (K)ill or (S)elect (CR => Kill subject 1 month)\fP XIf you simply want \fInn\fP to kill all articles with the subject of the Xcurrent article (in reading mode) or a specific article (which X\fInn\fP will prompt for in selection mode), just hit X.BR return . XThis will cause \fInn\fP to create an entry in the kill file to Xkill the current (or specified) subject in the current group for a Xperiod of 30 days (which should be enough for the discussion to die out). X.sp 0.5v XIf this "default behaviour" is not what you want, just answer either X.I k Xor X.I s Xto kill or select articles, respectively, which will bring you on to Xthe rest of the questions. X.TP X\fIAUTO SELECT on (S)ubject or (N)ame ?\fP X(The X.I SELECT Xwill be substituted with X.I KILL Xdepending on the previous answer). XHere you specify whether you want the kill or select to depend on the Xsubject of the article (\fBs\fP or \fBspace\fP), Xor on the Xname of the author (\fBn\fP). X.TP X\fISELECT NAME:\fP X(Again X.I SELECT Xmay be substituted with X.I KILL Xand X.I SUBJECT Xmay replace X.IR NAME ). XYou must now enter a name (or subject) to select (or kill). In reading Xmode, you may just hit X.B return X(or X.BR % ) Xto use the name (or subject) of the current article. In selection Xmode, you can use the name (or subject) from an article on the menu by Xanswering with X.B % Xfollowed by the corresponding article identifier. X.sp 0.5v XWhen the name or subject is taken from an article (the current or one Xfrom the menu), \fInn\fP will only select or kill articles where the Xname or subject matches the original name or subject exactly including Xcase. X.sp 0.5v XOtherwise, \fInn\fP will select or kill articles which X.I contain Xthe specified name or subject (or part thereof) anywhere in the name Xor subject ignoring case. X.TP X\fISELECT in (G)roup `dk.general' or in (A)ll groups\fP XYou must now specify whether the selection or kill should apply to Xthe current group only (\fBg\fP or \fBspace\fP) Xor to all groups (\fBa\fP). X.TP X\fILifetime of entry in days (P)ermanent\fP XYou can now specify the lifetime of the entry, Xeither by entering a number specifying the number of days Xthe entry should be active, or X.B p Xto specify the entry as a permanent entry. An empty reply is Xequivalent to 30 days. X.TP X\fICONFIRM SELECT ....\fP XFinally, you will be asked to confirm the entry, and you should Xespecially note the presence or absence of the word X.I exact Xwhich specify whether an exact match applies for the entry. X.SH THE FORMAT OF THE KILL FILE XThe normal kill file consists of one line for each entry. Empty Xlines and lines starting with a # character are ignored. \fInn\fP Xautomatically places a # character in the first position of expired Xentries when it compiles the kill file. X.LP XEach line has the following format X.br X [ \fIexpire-time\fP : ] [ \fIgroup name\fP ] : \fIflags\fP : \fIstring\fP X.br X.LP XPermanent entries have no X.I expire-time X(in which case the colon is omitted as well!). Otherwise, the X.I expire-time Xdefines the time (as a time_t value) when the entry should be expired. X.LP XIf a X.I group name Xis present, the entry applies to that group only; Xotherwise, the entry applies to all groups. X.LP XThe X.I flags Xfield consist of two or three characters: X.br X\- The first character is either a X.B + Xor a X.B ! Xcharacter specifying a Xselect or a kill entry, respectively. X.br X\- The second character is either an X.B n Xor an X.B s Xspecifying whether the entry applies to the Xname or to the subject of an article. X.br X\- The optional third character is an X.B = Xsign which Xspecify that the match against the name or subject must be an Xexact match (including case). X.LP XThe X.I string Xfield in the entry is the name or subject that will be Xmatched against the name or subject of each article in the group (or Xall groups). Notice, that unless an exact match is specified, the Xspecified name or subject may occur X.I anywhere Xin a name or a subject, and that case is ignored. X.LP XIt is completely safe to update the kill file (obeying the format of Xcourse), for example to remove expired entries, or to "undo" a X.B K Xcommand. X.SH SHELL ESCAPES XThe X.B ! Xcommands available in selection and reading mode are identical in Xoperation (with one exception). When you enter the shell escape Xcommand, you will be prompted for a shell command. This command will Xbe fed to /bin/sh (or the shell specified in the SHELL environment Xvariable) after the following substitutions have been performed on the Xcommand: X.LP XThe ealier described file name expansions will be performed on all Xarguments. X.TP X.B $G Xwill be substituted with the name of the current news group. X.TP X.B $L Xwill be substituted with the \fIlast component\fP of the name of the Xcurrent news group. X.TP X.B $F Xwill be substituted with the name of the current news group with the Xperiods replaced by slashes. X.TP X.B $N Xwill be substituted with the (local) article number (only defined in Xreading mode). X.TP X.B $A Xis replaced by the full path name of the file containing the current article X(only defined in reading mode). X.TP X.B % XSame as $A. X.LP XWhen the shell command is completed, you will be asked to hit any key Xto continue. If you hit the X.B ! Xkey again, you will be prompted for a new shell command. Any other Xkey will redraw the screen and return you to the mode you came from. X.SH MISCELLANEOUS COMMANDS XBelow are more useful commands which are available in both Xselection and reading modes. X.TP X\&\fBU\fP {\fBunsub\fP} XUnsubscribe to the current group. You will not see this group Xanymore. If you are not subscribing to the group, you will be given Xthe possibility to X.I resubscribe Xto the group! This may be used in connection with the X.B G Xcommand to resubscribe a group. X.TP X\&\fBC\fP {\fBcancel\fP} XCancel (delete) an article in the current group or folder. Cancelling Xarticles in a folder will cause the folder to be rewritten when it is Xclosed. In selection mode, you will be prompted for the identifier of Xthe article to cancel. Normal users can only cancel their own Xarticles. X.TP X\&\fBY\fP {\fBoverview\fP} XProvide an overview of the groups with unread articles. X.TP X\&\fBL\fP {\fBlayout\fP} XChange menu layout in selection mode. The menu will be redrawn using Xthe next layout (cycling through ..., 2, 3, 0, 1, ...) X.LP XMost of the commands in \fInn\fP are bound to a key and can be activated Xby a single keystroke. However, there are a few commands that Xcannot be bound to a key at all. X.LP XAs shown in the keystroke command descriptions, all commands have a Xname, and it is possible to activate a command by name with the X.I extended X.I command Xkey (\fB:\fP). Hitting this key will prompt you for the name of a Xcommand (and parameters). For example, an alternative to hitting the X.B R Xkey to reply to an article is to enter the extended command X.B :reply Xfollowed by X.BR return . XThe X.B :post Xand X.B :unshar Xcommands described earlier can also be bound to a key. The complete Xlist of commands which can be bound to keys is provided in the section Xon Key Mappings below. X.LP XThe following extended commands X.I cannot Xbe bound to a key, mainly because they require additional parameters Xon the prompt line, or because it should not be possible to activate Xthem too easily. X.TP X\fB:admin\fP XEnter administrative mode. This is identical in operation to the X.IR nnadmin (1M) Xprogram except that the (V)erify operation cannot be performed. X.TP X\fB:cd\fP [ \fIdirectory\fP ] XChange current working directory. If the directory argument is not provided, X\fInn\fP will prompt for it. X.TP X\fB:compile\fP XRecompile the X.I kill Xfile. This is not necessary under normal operation since \fInn\fP Xautomatically compiles the file on start-up if it has changed. X.TP X\fB:coredump\fP XAbort with a core dump. For debugging purposes only. X.TP X\fB:define\fP \fImacro\fP XDefine macro number \fImacro\fP as described in the Macro Definition Xsection below. If \fImacro\fP is omitted, the next free macro number Xwill be chosen. X.TP X\fB:dump\fP \fItable\fP XSame as the X.B :show Xcommand described below. X.TP X\fB:help\fP [ \fIsubject\fP ] XProvide online help on the specified subject. If you omit the Xsubject, a list of the available topics will be given. X.TP X\fB:man\fP XCall up the online manual. The manual is presented as a normal folder Xwith the program name in the `From' field and the section title in the X\&`subject' field. All the normal commands related to a folder works Xfor the online manual as well. X.TP X\fB:map\fP \fIarguments\fP XThis is the command used for binding commands to the keys. It is Xfully described in the Key Mapping section below. X.TP X\fB:mkdir\fP [ \fIdirectory\fP ] XCreate the directory (and the directories in its path). It will Xprompt for at directory name if the argument is omitted. X.TP X\fB:pwd\fP XPrint path name of current working directory on message line. X.TP X\fB:q\fP XHas no effect besides redrawing the screen if necessary. If an Xextended command (one which is prefixed by a :) produces any output Xrequirering the screen to be redrawn, the screen will not be redrawn Ximmediately. Instead another : prompt is shown to allow you to enter Xa new extended command immediately. It is sufficient to hit X.B return Xto redraw the screen, but it has been my experience that entering X.B q return Xin this situation happens quite often, so it was made a no-op. X.TP X\fB:q!\fP XQuit \fInn\fP without updating the X.I rc Xfile. This will only work if the X.B backup Xvariable is set (see the explanation below). X.TP X\fB:Q\fP XQuit \fInn\fP. This is equivalent to the normal X.B Q Xcommand. X.TP X\fB:rmail\fP XOpen your mailbox (see the \fBmail\fP variable) as a folder to Xread the incoming messages. This is \fInot\fP a full mail interface X(you cannot delete messages, no cc: on replies, etc), but it can give Xyou a quick glance at new mail without leaving \fInn\fP. X.TP X\fB:set\fP \fIvariable\fP [ \fIvalue\fP ] XSet a boolean variable to true or assign the value to a string or Xinteger variable. The X.B :set Xcommand is described in details in the section on VARIABLES. X.TP X\fB:sh\fP XSuspend \fInn\fP, or if that is not possible, spawn an interactive shell. X.TP X\fB:show kill\fP XShow the kill entries that applies to the current group and to all groups. X.TP X\fB:show groups\fP \fImode\fP XShow the total number or the number of unread articles in the current Xgroup, depending on X.IR mode : X.B all Xresults in a listing of the number of unread articles in all groups Xincluding groups which you have unsubscribed to; groups Xwithout unread articles are not included, or X.B total Xresults in a listing of the total number of articles in all existing Xgroups. Any other X.I mode Xresults in a listing of the number of unread articles in all Xsubscribed groups (same as the X.B Y Xcommand). X.TP X\fB:sort\fP [ \fImode\fP ] XReorder the articles on the menu according to X.IR mode : Xif omitted sort the articles according to the subject (and further Xsort articles with the same subject according to their age), if it is X.B age Xsort articles only according to their age (posting date and time), or if Xit is X.B arrival Xor X.B no Xin the order in which they arrived on the local system (which is a Xcompletely arbitrary order). X.TP X\fB:unread\fP [ \fIarticles\fP ] XMark the current group as unread. If the argument is omitted, the Xnumber of unread articles in the group will be set to the number of Xunread articles when \fInn\fP was invoked. Otherwise, the argument Xspecifies the number of unread articles. X.TP X\fB:unset\fP \fIvariable\fP XSet a boolean variable to false or clear an integer variable. X.TP X\fB:x\fP XQuit \fInn\fP and X.I mark Xthe current group as read! X.SH VARIABLES AND OPTIONS XIt is possible to control the behaviour of \fInn\fP through the Xsetting (and unsetting) of the variables described below. There are Xthree ways of setting variables: X.br X\- Through command line options when \fInn\fP is invoked. X.br X\- Through \fBset\fP commands in the init file. X.br X\- Through the \fB:set\fP extended command when you run \fInn\fP. X.LP XThere are three types of variables: X.br X\- Boolean variables X.br X\- Integer variables X.br X\- String variables X.br X.LP XBoolean variables control a specific function in \fInn\fP, e.g. Xwhether the current time is shown in the prompt line. A boolean Xvariable is set to X.B true Xwith the command X.br X \fBset\fP \fIvariable\fP X.br Xand it is set to X.B false Xwith either of the following (equivalent) commands: X.br X \fBunset\fP \fIvariable\fP X.br X \fBset no\fP\fIvariable\fP X.LP XYou can also toggle the value of a boolean variable using the command: X.br X \fBtoggle\fP \fIvariable\fP X.LP XFor example: X.br X \fBset\fP time X.br X \fBunset\fP time X.br X \fBset\fP notime X.br X \fBtoggle\fP time X.LP XInteger variables control an amount e.g. the size of the preview Xwindow, or the maximum number of articles to read in each group. They Xare set with the following command: X.br X \fBset\fP \fIvariable value\fP X.br XIn some cases, not setting an integer value has a special meaning, Xfor example, not having a minimal preview window or reading all Xarticles in the groups no matter how many there are. The special Xmeaning can be re-established by the following command: X.br X \fBunset\fP \fIvariable\fP X.br XFor example: X.br X \fBset\fP window 7 X.br X \fBunset\fP limit X.br X.LP XString variables may specify directory names, default values for Xprompts, etc. They are set using the command X.br X \fBset\fP \fIvariable string\fP X.br XExcept for file and directory names, the X.I string Xvalue starts at the first non-blank character after the variable name Xand continues to the end of the line \fIincluding all trailing Xblanks on the line\fP! X.LP XThe current variable settings can be shown with the X.B :set Xcommand without arguments. X.LP XThe following variables are available: X.TP X\fBbackup\fP (boolean, default true) XBackup the rc file on start-up. Setting X.B backup Xcauses \fInn\fP to keep a backup of the X.I rc Xfile (used by \fInn\fP to register Xwhich articles have been read). You can then exit X\fInn\fP without updating the rc file with the \fB:q!\fP command. X.TP X\fBcomp1-key\fP \fIkey\fP (key, default \fBspace\fP) XThe key which gives the first/next completion, and the default value Xwhen \fInn\fP is prompting for a string, e.g. a file name. X.TP X\fBcomp2-key\fP \fIkey\fP (key, default \fBtab\fP) XThe key which ends the current completion and gives the first Xcompletion for the next component Xwhen \fInn\fP is prompting for a string, e.g. a file name. X.TP X\fBconfirm\fP (boolean, default false) XIn some cases, \fInn\fP will sleep one second (or more) when it has shown a Xmessage to the user, e.g. in connection with macro debugging. Setting X.B confirm Xwill cause \fInn\fP to X\fIwait\fP for you to confirm all messages by hitting any Xkey. (It will show the symbol <> to indicate that it is awaiting Xconfirmation.) X.TP X\fBconfirm-append\fP (boolean, default false) XNormally when Xyou save in a file, \fInn\fP will only ask for confirmation when it Xhas to create the file. When X.B confirm-append Xis set, you will also be asked for confirmation before appending an Xarticle to an existing file. X.TP X\fBdate\fP (boolean, default true) XIf set \fInn\fP will show the article posting date when articles are Xread. X.TP X\fBdebug\fP \fImask\fP (integer, default 0) XLook in the source if you are going to use this. X.TP X\fBdefault-save-file\fP \fIfile\fP (string, default +$F) XThe default save file used in quick save mode. It can also be Xspecified using the abbreviation "+" as the file name in normal save Xmode. X.TP X\fBdelay-redraw\fP (boolean, default false) XNormally, \fInn\fP will redraw the screen immediately after an Xextended command (:command) which cleared the screen. If X\fBdelay-redraw\fP is set \fInn\fP will prompt for a new command Xwithout redrawing the screen; it is redrawn when you give an empty Xreply. X.TP X\fBerase-key\fP \fIkey\fP (key, default tty erase key) XThe key which erases the last input character Xwhen \fInn\fP is prompting for a string, e.g. a file name. X.TP X\fBexpert\fP (boolean, default false) XIf set \fInn\fP will use slightly shorter prompts (e.g. not tell you Xthat ? will give you help), and be a bit less verbose in a few other cases. X.TP X\fBfolder\fP \fIdirectory\fP (string, default ~/News) XThe full pathname of the X.I folder directory Xwhich will replace the + in folder names. It will be initialized from Xthe FOLDER environment variable if it is not set in the X.I init Xfile. X.TP X\fBfsort\fP (boolean, default true) XWhen set, folders are sorted alphabetically according to the subject X(and age). XOtherwise, the articles in Xa folder will be presented in the sequence in which they were saved. X.TP X\fBheader-lines\fP \fIlist\fP (string, no default) XWhen set, it determines the list of header fields that are shown when Xan article is read instead of the normal one line header showing the Xauthor and subject. See the full description in the section on XCustomized Article Headers below. X.TP X\fBhelp-key\fP \fIkey\fP (key, default \fB?\fP) XThe key which ends the current completion and gives a list of possible Xcompletions for the next component Xwhen \fInn\fP is prompting for a string, e.g. a file name. X.TP X\fBincluded-mark\fP \fIstring\fP (string, default ">") XThis string is prefixed to all lines in the original article that are Xincluded in a reply or a follow-up. (Now you have the possibility to Xchange it, but please don't. Lines with a mixture of prefixes like X.br X : orig-> <> } ] #- etc. X.br Xare very difficult to comprehend. Let's all use the standard folks! X(And hack inews if it is the 50% rule that bothers you.) X.TP X\fBkill\fP (boolean, default true) XIf set, \fInn\fP performs automatic kill and selection based on the X.I kill Xfile. X.TP X\fBkill-key\fP \fIkey\fP (key, default tty kill key) XThe key which deletes the current line Xwhen \fInn\fP is prompting for a string, e.g. a file name. X.TP X\fBlayout\fP \fInumber\fP (integer, default 1) XSet the menu layout. The argument must be a number between 0 and 3. X.TP X\fBlimit\fP \fImax-articles\fP (integer, default infinite) X.I Limit Xthe maximum number of articles presented in each group to X.I max-articles. XThe default is to present X.I all Xunread articles no matter how many there are. Setting this variable, Xonly the most recent X.I max-articles Xarticles will be presented, but all the articles will still be marked Xas read. This is useful to get up-to-date quickly if you have not Xread news for a longer period. X.TP X\fBlong-menu\fP (boolean, default false) XIf set \fInn\fP will not put an empty line after the header line and Xan empty line before the prompt line; this gives you two extra menu Xlines. X.TP X\fBmacro-debug\fP (boolean, default false) XIf set \fInn\fP will trace the execution of all macros. Prior to the Xexecution of each command or operation in a macro, it will show the Xname of the command or the input string or key stroke at the bottom of Xthe screen. X.TP X\fBmail\fP \fIfile\fP (string, default not set) X\fIfile\fP must be a full path name of a file. If defined, \fInn\fP will Xcheck for arrival of new mail every minute or so by looking at the Xspecified file. X.TP X\fBmail-format\fP (boolean, default false) XWhen set, \fInn\fP will save articles in a format that is compatible Xwith normal mail folders. X.TP X\fBmail-record\fP \fIfile\fP (string, default not set) X\fIfile\fP must be a full path name of a file. If defined, all replies and Xmail will be saved in this file in standard X.I mailbox Xformat, i.e. you can use you favourite mailer (and \fInn\fP) to look at Xthe file. X.TP X\fBmark-overlap\fP (boolean, default false) XWhen set, \fInn\fP will draw a line (using the underline capabilities Xof the terminal if possible) to indicate the end of the overlap (see the X\fBoverlap\fP variable). X.TP X\fBmonitor\fP (boolean, default false) XWhen set, \fInn\fP will show X.I all Xcharacters in the received messages using a "cat -v" like format. XOtherwise, only the printable characters are shown (default). X.TP X\fBnews-record\fP \fIfile\fP (string, default not set) XSave file for follow-ups and postings. Same rules and format as the X\fBmail-record\fP variable. X.TP X\fBnewsrc\fP (boolean, default false) XWhen set, \fInn\fP will synchronize its own X.I rc Xfile with the X.I .newsrc Xfile used by other news readers. Notice that \fInn\fP does not allow Xindividual articles to be marked unread, and some articles marked Xunread in X.I .newsrc Xmay silently be marked as read by \fInn\fP when the group is read. X.TP X\fBold\fP [\fImax-articles\fP] (integer, default not set) XWhen X.B old Xis set, \fInn\fP will present (or scan) all (or the last X\fImax-articles\fP) unread as well as Xread articles. While X.B old Xis set, \fInn\fP will X.I never Xmark any unread articles as read. X.TP X\fBoverlap\fP \fIlines\fP (integer, default 2) XSpecifies the number of overlapping lines from one page to the next Xwhen paging through an article in reading mode. XThe last line from the previous page Xwill be underlined if the terminal has that capability. X.TP X\fBpager\fP \fIshell-command\fP (string, default is system dep.) XThis is the command which output from \fBunshar\fP and \fBpatch\fP Xis piped through as well as most of the output from X.IR nnadmin (1M). X.TP X\fBpatch-cmd\fP \fIshell-command\fP (string, default "patch") XThis is the command which is invoked by the \fBpatch\fP command. X.TP X\fBprinter\fP \fIshell-command\fP (string, default is system dep.) XThis is the default value for the X.B print Xcommand. It should include an option which prevents the spooler from Xechoing a job-id or similar to the terminal to avoid problems with Xscreen handling (e.g. lp -s on System V). X.TP X\fBquick-save\fP (boolean, default false) XWhen set, \fInn\fP will not prompt for a file name when an article is Xsaved (unless it belongs to a folder). XInstead it uses the save file specified for the current group in the Xinit file or the default save file. X.TP X\fBrecord\fP \fIfile\fP (string, no default) XSetting this X.I pseudo Xvariable will set both the \fBmail-record\fP and the X\fBnews-record\fP variables to the specified pathname. X.TP X\fBrepeat\fP (boolean, default false) XWhen set, \fInn\fP will not eliminate duplicated subject lines on Xmenus (I cannot imagine why anyone should want that, but....) X.TP X\fBretry-on-error\fP \fItimes\fP (integer, default not set) XWhen set, \fInn\fP will try the specified number of \fItimes\fP to Xopen an article before reporting that the article does not exist Xanymore. This may be necessary in some network environments. X.TP X\fBsave-counter\fP \fIformat\fP (string, default "%d") XThis is the printf-format which \fInn\fP uses to create substitution Xstring for the trailing * in save file names. You can set this to Xmore complex formats if you like, but be sure that it will produce Xdifferent strings for different numbers. An alternative format which Xseems to be popular is ".%02d" . X.TP X\fBsave-report\fP (boolean, default true) XWhen set, a message reporting the number of lines written is shown Xafter saving an article. Since messages are shown for a few seconds, Xthis may slow down the saving of many articles (e.g. using the X.B S* Xcommand). X.TP X\fBsilent\fP (boolean, default false) XWhen set, \fInn\fP wont print the logo or "No News" if there are no Xunread articles. Only useful to set in the init file or with the X.B \-Q Xoption. X.TP X\fBsort\fP (boolean, default true) XWhen set, \fInn\fP will sort articles according to subject (and age Xfor identical subjects). Otherwise, articles will be presented in Xorder of arrival. X.TP X\fBsplit\fP (boolean, default true) XWhen set, digests will automatically and silently be split into Xsub-articles which are then handled transparently as normal articles. XOtherwise, digests are presented as one article (which you can split Xon demand with the X.B G Xcommand). X.TP X\fBstop\fP \fIlines\fP (integer, default not set) XWhen X.B stop Xis set, \fInn\fP will only show the first \fIlines\fP lines of the Xof each article Xbefore prompting you to continue. This is useful on slow terminals and Xmodem lines to be able to see the first few lines of longer articles X(and skipping the rest with the X.B n Xcommand). X.TP X\fBtime\fP (boolean, default true) XWhen set, \fInn\fP will show the current time in the prompt line. XThis is useful on systems without a X.I sysline (1) Xutility. X.TP X\fBwindow\fP \fIsize\fP (integer, default not set) XWhen set, \fInn\fP will reserve the last \fIsize\fP lines of the menu Xscreen for a preview window. If not set, \fInn\fP will clear the Xscreen to preview an article if there are too few empty lines at the Xbottom of the screen. As a side effect, it can also be used to reduce Xthe size of the menus, which may be useful on slow terminals. X.TP X\fBword-key\fP \fIkey\fP (key, default ^W) XThe key which erases the last input component or word Xwhen \fInn\fP is prompting for a string, e.g. the last name in a path Xname. X.SH CUSTOMIZED ARTICLE HEADER PRESENTATION XNormally, \fInn\fP will just print a (high-lighted) single line header Xcontaining the author, subject, and date (optional) of the article Xwhen it is read. X.LP XBy setting the X.B header-lines Xvariable as described below, it is possible to get a more informative Xmulti line header with optional high-lighting and underlining. X.LP XThe X.B header-lines Xvariable is set to a list of header line identifiers, and the Xcustomized headers will then contain exactly these header lines X\fIin the specified order\fP. X.LP XThe following header line identifiers are recognized in the X.B header-lines Xvariable: X.LP X.in +8n X.ta 5m X.br X\fBA\fP Approved: X.br X\fBB\fP Distribution: X.br X\fBD\fP Date: X.br X\fBF\fP From: X.br X\fBI\fP Message-Id: X.br X\fBK\fP Keywords: X.br X\fBL\fP Lines: X.br X\fBN\fP Newsgroups: X.br X\fBO\fP Organization: X.br X\fBP\fP Path: X.br X\fBR\fP Reply-To: X.br X\fBS\fP Subject: X.br X\fBW\fP Followup-To: X.br X\fBX\fP References: X.in -8n X.DT X.LP XPreceding the identifier with an equal sign "=" or an underscore "_" Xwill cause the header field contents to be high-lighted or underlined. X.LP XIncluding an asterisk "*" in the list will produce the standard one Xline header at that point. X.LP XExample: The following setting of the X.B header-lines Xvariable will show the author (underlined), organization, posting Xdate, and subject (high-lighted) when articles are read: X.sp 0.5v X set header-lines _FOD=S X.SH COMMAND LINE OPTION XSome of the command line options have already been described, but Xbelow we provide a complete list of the effect of each option by Xshowing the equivalent X.BR set , X.BR unset , Xor X.B toggle Xcommand. X.LP XNotice that the init files are read \fIbefore\fP the options are Xparsed (unless you use the \-\fBI\fP option). Therefore, the options Xwhich are related to boolean variables set in the init file will Xtoggle the value set there, rather than the default value. XConsequently, the meaning of the options are also user-defined. X.LP XThe explanations below describe the effect related to the default Xsetting of the variables, with the `reverse' effect in square Xbrackets. X.TP X\-\fBa\fP\fIN\fP {\fBset limit\fP \fIN\fP} X.I Limit Xthe maximum number of articles presented in each group to X.I N. XThis is useful to get up-to-date quickly if you have not Xread news for a longer period. X.TP X\-\fBa0\fP XMark X.I all Xunread articles as read. See the full explanation at the beginning of Xthis manual. X.TP X\-\fBB\fP {\fBtoggle backup\fP} XDo not [do] backup the rc file. X.TP X\-\fBd\fP {\fBtoggle split\fP} XDo not [do] split digests into separate articles. X.TP X\-\fBf\fP {\fBtoggle fsort\fP} XDo not [do] sort folders according to the subject (present the Xarticles in a folder in the sequence in which they were saved). X.TP X\-\fBg\fP XPrompt for the name of a news group or folder to be entered X.TP X\-\fBI\fP XDo not read the init file (must be the first option!!) X.TP X\-\fBk\fP {\fBtoggle kill\fP} XDo not [do] perform automatic kill and selection of articles. X.TP X\-\fBl\fP\fIN\fP {\fBset stop\fP \fIN\fP} XStop after printing the first \fIN\fP lines of each article. XThis is useful on slow terminals. X.TP X\-\fBL\fP[\fIf\fP] {\fBset layout\fP \fIf\fP} XSelect alternative menu layout X.IR f X(0 to 3). XIf X.I f Xis omitted, menu layout 3 is selected. X.TP X\-\fBm\fP {\fIno corresponding variable\fP} XMerge all articles into one `meta group' instead of showing Xthem one group at a time. When -m is used, no articles will be marked Xas read. X.TP X\-\fBN\fP {\fIno corresponding variable\fP} XDisable updating of the rc file. This includes not recording that Xgroups have been read or unsubscribed to (although \fInn\fP will tell Xyou so until you quit). Intended for debugging purposes, but may be Xused if you want to experiment with \fInn\fP without the risk of Xlosing any articles. X.TP X\-\fBq\fP {\fBtoggle sort\fP} XDo not [do] sort the articles (q means quick, but it isn't Xany quicker in practice!) X.TP X\-\fBQ\fP {\fBtoggle silent\fP} XQuiet mode - don't [do] print the logo or "No News" messages. X.TP X\-\fBs\fP\fIWORD\fP XCollect only articles which contain the string X.I WORD Xin their subject (case is ignored). If X.I WORD Xstarts with a slash `/', the rest of the argument is used as a X\fIregular expression\fP instead of a fixed string. X.TP X\-\fBS\fP {\fBtoggle repeat\fP} XDo not [do] eliminate duplicated subject lines on menus. X.TP X\-\fBT\fP {\fBtoggle time\fP} XDo not [do] show the current time in the prompt line. X.TP X\-\fBw\fP[\fIN\fP] {\fBset window\fP \fIN\fP} XReserve \fIN\fP lines of the menu screen for a preview window. If X\fIN\fP is omitted, the preview window is set to 5 lines. X.TP X\-\fBW\fP {\fBtoggle confirm\fP} X[Don't] Wait for confirmation on all messages. X.TP X\-\fBx\fP[\fIN\fP] {\fBset old N\fP} XPresent (or scan) all (or the last \fIN\fP) unread as well as Xread articles. This will X.I never Xmark unread articles as read. X.SH KEY MAPPINGS XThe descriptions of the keys and commands provided in this manual Xreflects the default key mappings in \fInn\fP. However, you can Xeasily change these mappings to match your personal demands, and it is Xalso possible to remap keys depending on the terminal in use. XPermanent remapping of keys must be done through the X.I init Xfile, while temporary changes (for the duration of the current Xinvocation of \fInn\fP) can be made with the X.B :map Xcommand. X.LP XThe binding and mapping of keys are controlled by four tables: X.TP X.B The multikey definition table XThis table is used for mapping multicharacter key sequences into Xsingle characters. By default the table contains the mappings for the Xfour cursor keys, and there is room for 10 user-defined multikeys. XThe fourteen multikeys are named: X.BR up , X.BR down , X.BR right , X.BR left X(the four arrow keys), and X.BR #0 Xthrough X.BR #9 Xfor the user-defined keys. X.sp 0.5v XMultikey #\fIi\fP is defined using the following command: X.sp 0.5v X \fBmap #\fP\fIi\fP \fIsequence\fP X.sp 0.5v Xwhere the X.I sequence Xis a list of 7-bit character names (see below) separated by spaces. XFor example, if the HOME key sends the sequence ESC [ H, you can Xdefine multikey #0 to be the home key using the command: X.sp 0.5v X map #0 ^[ [ H X.TP X.B The input key mapping table XAll characters that are read from the keyboard will be mapped through Xthe input mapping table. Consequently, you can globally remap one key Xto produce any other key value. By default all keys are mapped into Xthemselves. X.sp 0.5v XAn entry in the input key mapping table to map \fIinput-key\fP into X\fInew-key\fP is made with the command X.sp 0.5v X \fBmap key\fP \fIinput-key\fP \fInew-key\fP X.sp 0.5v XFor example, to make your ESC key function as X.B interrupt Xyou can use the command X.sp 0.5v X map key ^[ ^G X.TP X.B The selection mode key binding table XThis table defines for each key which command should be invoked when Xthat key is pressed in selection mode, i.e. when the article menu is Xshown. The command to bind a X.I key Xto a X.I command Xin selection mode is: X.sp 0.5v X \fBmap menu\fP \fIkey command\fP X.sp 0.5v XFor example, to have the HOME key defined as multikey #0 above bound Xto the X.B select Xcommand, the following command is used: X.sp 0.5v X map menu #0 select X.TP X.B The reading mode key binding table XThis table defines for each key which command should be invoked when Xthat key is pressed in reading mode, i.e. when the article text is Xshown. The command to bind a X.I key Xto a X.I command Xin reading mode is: X.sp 0.5v X \fBmap show\fP \fIkey command\fP X.LP XKeys and character names are specified using the following notation: X.TP X.I C XA single printable character represents the key or character itself. X.TP X\fB^\fP\fIC\fP XThis notation represents a control key or character. XDEL is written as \fB^?\fP X.TP X\fI125\fP, \fI0175\fP, \fI0x7D\fP XCharacters and keys can be specified by their ordinal value in Xdecimal, octal, and hexadecimal notation. X.TP X\fBup\fP, \fBdown\fP, \fBright\fP, \fBleft\fP XThese names represent the cursor keys. X.TP X\fB#0\fP through \fB#9\fP XThese symbols represent the ten user-defined multikeys. X.LP XTo show the current contents of the four tables, the following Xversions of the X.B :show Xcommand are available: X.TP X.B :show map # XShow the multikey definition table. X.TP X.B :show map key XShow the input key mapping table. X.TP X.B :show map menu XShow the selection mode key bindings. X.TP X.B :show map show XShow the reading mode key bindings. X.LP XBelow is a list of all the commands that can be bound to keys, either Xin selection mode, in reading mode, or both. For each command the Xdefault command key bindings in both modes are shown. XIf the key is not bound in one of the modes, but it can be bound, the Xcorresponding part will just be empty. If the command cannot be bound Xin one of the modes, that mode will contain the word \fBnix\fP. X.LP X.in +8n X.ta \w'select-subject'u+5m +\w'Selection mode'u+3m X.br X\fIFunction Selection mode Reading mode X.br X\fBadvance-group\fP A A X.br X\fBback-group\fP B B X.br X\fBcancel\fP C C X.br X\fBcommand\fP : : X.br X\fBcompress\fP \fBnix\fP c X.br X\fBcontinue\fP \fBspace\fP \fBspace\fP X.br X\fBfind\fP \fBnix\fP / X.br X\fBfind-next\fP \fBnix\fP . X.br X\fBfollow\fP F fF X.br X\fBfull-digest\fP \fBnix\fP H X.br X\fBgoto-group\fP G G X.br X\fBgoto-menu\fP \fBnix\fP = Z X.br X\fBhelp\fP ? ? X.br X\fBkill-select\fP K K X.br X\fBlayout\fP L \fBnix\fP X.br X\fBleave-article\fP \fBnix\fP l X.br X\fBline+1\fP , \fBdown\fP \fBreturn\fP X.br X\fBline-1\fP / \fBnix\fP X.br X\fBline=@\fP \fBnix\fP g X.br X\fBmacro\fP \fIM\fP X.br X\fBmail\fP M m M X.br X\fBmessage\fP ^P ^P X.br X\fBnext-article\fP \fBnix\fP n X.br X\fBnext-group\fP N N X.br X\fBnext-subject\fP \fBnix\fP k X.br X\fBnil\fP X.br X\fBoverview\fP Y Y X.br X\fBpage+1\fP > \fBnix\fP X.br X\fBpage+1/2\fP \fBnix\fP d X.br X\fBpage-1\fP < \fBdelete backspace\fP X.br X\fBpage-1/2\fP \fBnix\fP u X.br X\fBpage=0\fP \fBnix\fP h X.br X\fBpage=1\fP ^ ^ X.br X\fBpage=$\fP $ $ X.br X\fBpost\fP X.br X\fBpreview\fP % % X.br X\fBprevious\fP P p X.br X\fBprint\fP P X.br X\fBquit\fP Q Q X.br X\fBread-return\fP Z \fBnix\fP X.br X\fBread-skip\fP X X X.br X\fBredraw\fP ^L ^R ^L ^R X.br X\fBreply\fP R r R X.br X\fBrot13\fP \fBnix\fP D X.br X\fBsave-body\fP W w W X.br X\fBsave-full\fP S s S X.br X\fBsave-short\fP O o O X.br X\fBselect\fP . \fBnix\fP X.br X\fBselect-auto\fP + \fBnix\fP X.br X\fBselect-invert\fP @ \fBnix\fP X.br X\fBselect-range\fP - \fBnix\fP X.br X\fBselect-subject\fP * * X.br X\fBshell\fP ! ! X.br X\fBunselect-all\fP ~ \fBnix\fP X.br X\fBunshar\fP X.br X\fBunsub\fP U U X.br X\fBversion\fP V V X.in -8n X.DT X.LP XSee the descriptions of the default bindings for a description of the Xcommands. The pseudo command X.B nil Xis used to X.I unbind Xa key. X.SH MACRO DEFINITIONS XPractically any combination of commands and key strokes can be defined Xas a macro which can be bound to a single key in menu and/or reading mode. X.LP XThe macro definition must specify a sequence of commands and key Xstrokes as if they were typed directly from the keyboard. For Xexample, a string specifying a file name must follow a save command. XThis manual does not give a complete specification of all the input Xrequired by the various commands; it is recommended to execute the Xdesired command sequence from the keyboard prior to defining the macro Xto get the exact requirements of each command. X.LP XAlthough it is possible to define temporary macros interactively using the X.B :define Xcommand, macro definitions are normally placed in the X.I init Xfile. Macros are numbered from 0 to 31, i.e. it is possible to define NO_NEWS_IS_GOOD_NEWS echo "End of part 9" echo "File nn.1 is continued in part 10" echo "10" > s2_seq_.tmp exit 0 --- Kim F. Storm storm@texas.dk Tel +45 429 174 00 Texas Instruments, Marielundvej 46E, DK-2730 Herlev, Denmark No news is good news, but nn is better! -- Please send comp.sources.unix-related mail to rsalz@uunet.uu.net. Use a domain-based address or give alternate paths, or you may lose out.