Commit | Line | Data |
---|---|---|
1cd0e254 C |
1 | ''' $Header: rn.1,v 4.3.1.5 85/09/10 11:05:55 lwall Exp $ |
2 | ''' | |
3 | ''' $Log: rn.1,v $ | |
4 | ''' Revision 4.3.1.5 85/09/10 11:05:55 lwall | |
5 | ''' Improved %m in in_char(). | |
6 | ''' | |
7 | ''' Revision 4.3.1.4 85/07/23 18:26:40 lwall | |
8 | ''' Added MAILCALL. | |
9 | ''' | |
10 | ''' Revision 4.3.1.3 85/05/23 17:14:14 lwall | |
11 | ''' Now allows 'r' and 'f' on null articles. | |
12 | ''' | |
13 | ''' Revision 4.3.1.2 85/05/13 09:27:53 lwall | |
14 | ''' Added CUSTOMLINES option. | |
15 | ''' | |
16 | ''' Revision 4.3.1.1 85/05/10 11:38:22 lwall | |
17 | ''' Branch for patches. | |
18 | ''' | |
19 | ''' Revision 4.3 85/05/01 11:48:26 lwall | |
20 | ''' Baseline for release with 4.3bsd. | |
21 | ''' | |
22 | ''' | |
23 | .de Sh | |
24 | .br | |
25 | .ne 5 | |
26 | .PP | |
27 | \fB\\$1\fR | |
28 | .PP | |
29 | .. | |
30 | .de Sp | |
31 | .if t .sp .5v | |
32 | .if n .sp | |
33 | .. | |
34 | .de Ip | |
35 | .br | |
36 | .ie \\n.$>=3 .ne \\$3 | |
37 | .el .ne 3 | |
38 | .IP "\\$1" \\$2 | |
39 | .. | |
40 | ''' | |
41 | ''' Set up \*(-- to give an unbreakable dash; | |
42 | ''' string Tr holds user defined translation string. | |
43 | ''' Bell System Logo is used as a dummy character. | |
44 | ''' | |
45 | .tr \(bs-|\(bv\*(Tr | |
46 | .ie n \{\ | |
47 | .ds -- \(bs- | |
48 | .if (\n(.H=4u)&(1m=24u) .ds -- \(bs\h'-12u'\(bs\h'-12u'-\" diablo 10 pitch | |
49 | .if (\n(.H=4u)&(1m=20u) .ds -- \(bs\h'-12u'\(bs\h'-8u'-\" diablo 12 pitch | |
50 | .ds L" "" | |
51 | .ds R" "" | |
52 | .ds L' ' | |
53 | .ds R' ' | |
54 | 'br\} | |
55 | .el\{\ | |
56 | .ds -- \(em\| | |
57 | .tr \*(Tr | |
58 | .ds L" `` | |
59 | .ds R" '' | |
60 | .ds L' ` | |
61 | .ds R' ' | |
62 | 'br\} | |
63 | .TH RN 1 LOCAL | |
64 | .SH NAME | |
65 | rn - new read news program | |
66 | .SH SYNOPSIS | |
67 | .B rn [options] [newsgroups] | |
68 | .SH DESCRIPTION | |
69 | .I Rn | |
70 | is a replacement for the readnews(1) program that was written to be as | |
71 | efficient as possible, particularly in human interaction. | |
72 | .I Rn | |
73 | attempts to minimize the amount of \*(L"dead\*(R" time spent reading | |
74 | news\*(--it tries to get things done while the user is reading or deciding | |
75 | whether to read, and attempts to get useful information onto the screen as | |
76 | soon as possible, highlighting spots that the eye makes frequent reference | |
77 | to, like subjects and previously read lines. | |
78 | Whether or not it's faster, it SEEMS faster. | |
79 | .PP | |
80 | If no newsgroups are specified, all the newsgroups which have unread news | |
81 | are displayed, and then the user is asked for each one whether he wants to | |
82 | read it, in the order in which the newsgroups occur in the | |
83 | .I .newsrc | |
84 | file. | |
85 | With a list of newsgroups, | |
86 | .I rn | |
87 | will start up in \*(L"add\*(R" mode, using the list as a set of patterns to | |
88 | add new newsgroups and restrict which newsgroups are displayed. | |
89 | See the discussion of the \*(L'a\*(R' command on the newsgroup selection | |
90 | level. | |
91 | .PP | |
92 | .I Rn | |
93 | operates on three levels: the newsgroup selection level, the article | |
94 | selection level, and the paging level. | |
95 | Each level has its own set of commands, and its own help menu. | |
96 | At the paging level (the bottom level), | |
97 | .I rn | |
98 | behaves much like the | |
99 | .IR more (1) | |
100 | program. | |
101 | At the article selection level, you may specify which article you want | |
102 | next, or read them in the default order, which is either in order of | |
103 | arrival on your system, or by subject threads. | |
104 | At the newsgroup selection level (the top level), you may specify which | |
105 | newsgroup you want next, or read them in the default order, which is the | |
106 | order that the newsgroups occur in your | |
107 | .I .newsrc | |
108 | file. | |
109 | (You will therefore want to rearrange your | |
110 | .I .newsrc | |
111 | file to put the most interesting newsgroups first. | |
112 | This can be done with the \*(L'm\*(R' command on the Newsgroup Selection level. | |
113 | WARNING: invoking readnews/vnews (the old user interface) in any way (including | |
114 | as a news checker in your login sequence!) will cause your | |
115 | .I .newsrc | |
116 | to be disarranged again.) | |
117 | .PP | |
118 | On any level, at ANY prompt, an \*(L'h\*(R' may be typed for a list of | |
119 | available commands. | |
120 | This is probably the most important command to remember, so don't you | |
121 | forget it. | |
122 | Typing space to any question means to do the normal thing. | |
123 | You will know what that is because | |
124 | every prompt has a list of several plausible commands enclosed in | |
125 | square brackets. | |
126 | The first command in the list is the one which will be done if you type | |
127 | a space. | |
128 | (All input is done in cbreak mode, so carriage returns should not be typed | |
129 | to terminate anything except certain multi-character commands. | |
130 | Those commands will be obvious in the discussion below because they take an | |
131 | argument.) | |
132 | .PP | |
133 | Upon startup, | |
134 | .I rn | |
135 | will do several things: | |
136 | .Ip 1. 4 | |
137 | It will look for your | |
138 | .I .newsrc | |
139 | file, which is your list of subscribed-to | |
140 | newsgroups. | |
141 | If | |
142 | .I rn | |
143 | doesn't find a | |
144 | .IR .newsrc , | |
145 | it will create one. | |
146 | If it does find one, it will back it up under the name \*(L".oldnewsrc\*(R". | |
147 | .Ip 2. 4 | |
148 | It will input your | |
149 | .I .newsrc | |
150 | file, listing out the first several newsgroups | |
151 | with unread news. | |
152 | .Ip 3. 4 | |
153 | It will perform certain consistency checks on your | |
154 | .IR .newsrc . | |
155 | If your | |
156 | .I .newsrc | |
157 | is out of date in any of several ways, | |
158 | .I rn | |
159 | will warn you and patch it up for you, but you may have to wait a little | |
160 | longer for it to start up. | |
161 | .Ip 4. 4 | |
162 | .I Rn | |
163 | will next check to see if any new newsgroups have been created, and give | |
164 | you the opportunity to add them to your | |
165 | .IR .newsrc . | |
166 | .Ip 5. 4 | |
167 | .I Rn | |
168 | goes into the top prompt level\*(--the newsgroup selection level. | |
169 | .Sh "Newsgroup Selection Level" | |
170 | In this section the words \*(L"next\*(R" and \*(L"previous\*(R" refer to | |
171 | the ordering of the newsgroups in your | |
172 | .I .newsrc | |
173 | file. | |
174 | On the newsgroup selection level, the prompt looks like this: | |
175 | .Sp | |
176 | ******** 17 unread articles in net.blurfl\*(--read now? [ynq] | |
177 | .Sp | |
178 | and the following commands may be given at this level: | |
179 | .Ip y,SP 8 | |
180 | Do this newsgroup now. | |
181 | .Ip .command 8 | |
182 | Do this newsgroup now, but execute | |
183 | .I command | |
184 | before displaying anything. | |
185 | The command will be interpreted as if given on the article selection level. | |
186 | .Ip = 8 | |
187 | Do this newsgroup now, but list subjects before displaying articles. | |
188 | .Ip n 8 | |
189 | Go to the next newsgroup with unread news. | |
190 | .Ip N 8 | |
191 | Go to the next newsgroup. | |
192 | .Ip p 8 | |
193 | Go to the previous newsgroup with unread news. | |
194 | If there is none, stay at the current newsgroup. | |
195 | .Ip P 8 | |
196 | Go to the previous newsgroup. | |
197 | .Ip \- 8 | |
198 | Go to the previously displayed newsgroup (regardless of whether it is | |
199 | before or after the current one in the list). | |
200 | .Ip 1 8 | |
201 | Go to the first newsgroup. | |
202 | .Ip ^ 8 | |
203 | Go to the first newsgroup with unread news. | |
204 | .Ip $ 8 | |
205 | Go to the end of the newsgroups list. | |
206 | .Ip "g newsgroup" 8 | |
207 | Go to | |
208 | .IR newsgroup . | |
209 | If it isn't currently subscribed to, you will be asked if you want to | |
210 | subscribe. | |
211 | .Ip "/pattern" 8 | |
212 | Scan forward for a newsgroup matching | |
213 | .IR pattern . | |
214 | Patterns do globbing like filenames, i.e., use ? to match a single | |
215 | character, * to match any sequence of characters, and [] to specify a list | |
216 | of characters to match. | |
217 | (\*(L"all\*(R" may be used as a synonym for \*(L"*\*(R".) | |
218 | Unlike normal filename globbing, newsgroup searching is not anchored to | |
219 | the front and back of the filename, i.e. \*(L"/jok\*(R" will find | |
220 | net.jokes. | |
221 | You may use ^ or $ to anchor the front or back of the search: | |
222 | \*(L"/^test$\*(R" will find newsgroup test and nothing else | |
223 | If you want to include newsgroups with 0 unread articles, append /r. | |
224 | If the newsgroup is not found between the current newsgroup and the last | |
225 | newsgroup, the search will wrap around to the beginning. | |
226 | .Ip "?pattern" 8 | |
227 | Same as /, but search backwards. | |
228 | .Ip u 8 | |
229 | Unsubscribe from current newsgroup. | |
230 | .Ip "l string" 8 | |
231 | List newsgroups not subscribed to which contain the string specified. | |
232 | .Ip L 8 13v | |
233 | Lists the current state of the | |
234 | .IR .newsrc , | |
235 | along with status information. | |
236 | .Sp | |
237 | .nf | |
238 | \h'|0.5i'Status \h'|2i'Meaning | |
239 | \h'|0.5i'<number> \h'|2i'Count of unread articles in newsgroup. | |
240 | \h'|0.5i'READ \h'|2i'No unread articles in newsgroup. | |
241 | \h'|0.5i'UNSUB \h'|2i'Unsubscribed newsgroup. | |
242 | \h'|0.5i'BOGUS \h'|2i'Bogus newsgroup. | |
243 | \h'|0.5i'JUNK \h'|2i'Ignored line in .newsrc | |
244 | \h'|2i'(e.g. readnews \*(L"options\*(R" line). | |
245 | .fi | |
246 | .Sp | |
247 | (A bogus newsgroup is one that is not in the list of active newsgroups | |
248 | in the active file, which on most systems is /usr/lib/news/active.) | |
249 | .Ip "m name" 8 | |
250 | Move the named newsgroup somewhere else in the | |
251 | .IR .newsrc . | |
252 | If no name is given, the current newsgroup is moved. | |
253 | There are a number of ways to specify where you want the newsgroup\*(--type | |
254 | h for help when it asks where you want to put it. | |
255 | .Ip c 8 | |
256 | Catch up\*(--mark all unread articles in this newsgroup as read. | |
257 | .Ip "o pattern" 8 | |
258 | Only display those newsgroups whose name matches | |
259 | .IR pattern . | |
260 | Patterns are the same as for the \*(L'/\*(R' command. | |
261 | Multiple patterns may be separated by spaces, just as on the | |
262 | command line. | |
263 | The restriction will remain in effect either until there are no articles | |
264 | left in the restricted set of newsgroups, or another restriction command | |
265 | is given. | |
266 | Since | |
267 | .I pattern | |
268 | is optional, \*(L'o\*(R' by itself will remove the | |
269 | restriction. | |
270 | .Ip "a pattern" 8 | |
271 | Add new newsgroups matching | |
272 | .IR pattern . | |
273 | Newsgroups which are already in your | |
274 | .I .newsrc | |
275 | file, whether subscribed to or | |
276 | not, will not be listed. | |
277 | If any new newsgroups are found, you will be asked for each one whether | |
278 | you would like to add it. | |
279 | After any new newsgroups have been added, the \*(L'a\*(R' command also | |
280 | restricts the current set of newsgroups just like the \*(L'o\*(R' command | |
281 | does. | |
282 | .Ip & 8 | |
283 | Print out the current status of command line switches and any newsgroup | |
284 | restrictions. | |
285 | .Ip "&switch {switch}" 8 | |
286 | Set additional command line switches. | |
287 | .Ip && 8 | |
288 | Print out the current macro definitions. | |
289 | .Ip "&&keys commands" 8 | |
290 | Define additional macros. | |
291 | .Ip !command 8 | |
292 | Escape to a subshell. | |
293 | One exclamation mark (!) leaves you in your own news directory. | |
294 | A double exclamation mark (!!) leaves you in the spool | |
295 | directory for news, which on most systems is /usr/spool/news. | |
296 | The environment variable SHELL will be used if defined. | |
297 | If | |
298 | .I command | |
299 | is null, an interactive shell is started. | |
300 | .Ip q 8 | |
301 | Quit. | |
302 | .Ip x 8 | |
303 | Quit, restoring .newsrc to its state at startup of | |
304 | .IR rn . | |
305 | The .newsrc you would have had if you had exited with \*(L'q\*(R' will be | |
306 | called .newnewsrc, in case you didn't really want to type \*(L'x\*(R'. | |
307 | .Ip ^K 8 | |
308 | Edit the global KILL file. | |
309 | This is a file which contains /pattern/j commands (one per line) to be | |
310 | applied to every newsgroup as it is started up, that is, when it is | |
311 | selected on the newsgroup selection level. | |
312 | The purpose of a KILL file is to mark articles as read on the basis of some | |
313 | set of patterns. | |
314 | This saves considerable wear and tear on your \*(L'n\*(R' key. | |
315 | There is also a local KILL file for each newsgroup. | |
316 | Because of the overhead involved in searching for articles to kill, it is | |
317 | better if possible to use a local KILL file. | |
318 | Local KILL files are edited with a \*(L'^K\*(R' on the article selection level. | |
319 | There are also automatic ways of adding search commands to the local KILL | |
320 | file\*(--see the \*(L'K\*(R' command and the K search modifier on the | |
321 | article selection level. | |
322 | .Sp | |
323 | If either of the environment variables VISUAL or EDITOR is set, the | |
324 | specified editor will be invoked; otherwise a default editor (normally vi(1)) | |
325 | is invoked on the KILL file. | |
326 | .Sh "Article Selection Level" | |
327 | On the article selection level, | |
328 | .I rn | |
329 | selects (by default) unread articles in numerical order (the order in which | |
330 | articles have arrived at your site). | |
331 | If you do a subject search (^N), the default order is modified to be | |
332 | numerical order within each subject thread. | |
333 | You may switch back and forth between numerical order and subject thread | |
334 | order at will. | |
335 | The | |
336 | .B \-S | |
337 | switch can be used to make subject search mode the default. | |
338 | .Sp | |
339 | On the article selection level you are | |
340 | .I not | |
341 | asked whether you want to read an article before the article is displayed; | |
342 | rather, | |
343 | .I rn | |
344 | simply displays the first page (or portion of a page, at low baud rates) of the | |
345 | article and asks if you want to continue. | |
346 | The normal article selection prompt comes at the END of the article | |
347 | (though article selection commands can be given from within the middle | |
348 | of the article (the pager level) also). | |
349 | The prompt at the end of an article looks like this: | |
350 | .Sp | |
351 | End of article 248 (of 257)\*(--what next? [npq] | |
352 | .Sp | |
353 | The following are the options at this point: | |
354 | .Ip n,SP 8 | |
355 | Scan forward for next unread article. | |
356 | (Note: the \*(L'n\*(R' (next) command when typed at the end of an article | |
357 | does not mark the article as read, since an article is automaticaly marked | |
358 | as read after the last line of it is printed. | |
359 | It is therefore possible to type a sequence such as \*(L'mn\*(R' and leave | |
360 | the article marked as unread. | |
361 | The fact that an article is marked as read by typing \*(L'n\*(R', | |
362 | \&\*(L'N\*(R', \*(L'^N\*(R', \*(L's\*(R', or \*(L'S\*(R' within the MIDDLE of | |
363 | the article is in fact a special case.) | |
364 | .Ip N 8 | |
365 | Go to the next article. | |
366 | .Ip ^N 8 | |
367 | Scan forward for the next article with the same subject, and make ^N default | |
368 | (subject search mode). | |
369 | .Ip p 8 | |
370 | Scan backward for previous unread article. | |
371 | If there is none, stay at the current article. | |
372 | .Ip P 8 | |
373 | Go to the previous article. | |
374 | .Ip \- 8 | |
375 | Go to the previously displayed article (regardless of whether that article | |
376 | is before or after this article in the normal sequence). | |
377 | .Ip ^P 8 | |
378 | Scan backward for the previous article with the same subject, and make | |
379 | ^N default (subject search mode). | |
380 | .Ip ^R 8 | |
381 | Restart the current article. | |
382 | .Ip v 8 | |
383 | Restart the current article verbosely, displaying the entire header. | |
384 | .Ip ^L 8 | |
385 | Refresh the screen. | |
386 | .Ip ^X 8 | |
387 | Restart the current article, and decrypt as a rot13 message. | |
388 | .Ip X 8 | |
389 | Refresh the screen, and decrypt as a rot13 message. | |
390 | .Ip b 8 | |
391 | Back up one page. | |
392 | .Ip q 8 | |
393 | Quit this newsgroup and go back to the newsgroup selection level. | |
394 | .Ip ^ 8 | |
395 | Go to the first unread article. | |
396 | .Ip $ 8 | |
397 | Go to the last article (actually, one past the last article). | |
398 | .Ip "number" 8 | |
399 | Go to the numbered article. | |
400 | .Ip "range{,range} command{:command}" 8 | |
401 | Apply a set of commands to a set of articles. | |
402 | A range consists of either <article number> or | |
403 | <article\ number>\-<article\ number>. | |
404 | A dot \*(L'.\*(R' represents the current article, and a dollar | |
405 | sign \*(L'$\*(R' represents the last article. | |
406 | .Sp | |
407 | Applicable commands include \*(L'm\*(R' (mark as unread), \*(L'M\*(R' | |
408 | (delayed mark as unread), \*(L'j\*(R' (mark as read), \*(L"s dest\*(R" | |
409 | (save to a destination), \*(L"!command\*(R" (shell escape), \*(L"=\*(R" | |
410 | (print the subject) and \*(L"C\*(R" (cancel). | |
411 | .Ip j 8 | |
412 | Junk the current article\*(--mark it as read. | |
413 | If this command is used from within an article, you are left at the end of | |
414 | the article, unlike \*(L'n\*(R', which looks for the next article. | |
415 | .Ip m 8 | |
416 | Mark the current article as still unread. | |
417 | (If you are in subject search mode you probably want to use M instead of m. | |
418 | Otherwise the current article may be selected as the beginning of the next | |
419 | subject thread.) | |
420 | .Ip M 8 | |
421 | Mark the current article as still unread, but not until the newsgroup | |
422 | is exited. | |
423 | Until then, the current article will be marked as read. | |
424 | This is useful for returning to an article in another session, or in another | |
425 | newsgroup. | |
426 | .Ip /pattern 8 | |
427 | Scan forward for article containing | |
428 | .I pattern | |
429 | in the subject. | |
430 | See the section on Regular Expressions. | |
431 | Together with the escape substitution facility described later, it becomes | |
432 | easy to search for various attributes of the current article, such as | |
433 | subject, article ID, author name, etc. | |
434 | The previous pattern can be recalled with \*(L"<esc>/\*(R". | |
435 | If | |
436 | .I pattern | |
437 | is omitted, the previous pattern is assumed. | |
438 | .Ip /pattern/h 8 | |
439 | Scan forward for article containing | |
440 | .I pattern | |
441 | in the header. | |
442 | .Ip /pattern/a 8 | |
443 | Scan forward for article containing | |
444 | .I pattern | |
445 | anywhere in article. | |
446 | .Ip /pattern/r 8 | |
447 | Scan read articles also. | |
448 | .Ip /pattern/c 8 | |
449 | Make search case sensitive. | |
450 | Ordinarily upper and lower case are considered the same. | |
451 | .Ip "/pattern/modifiers:command{:command}" 8 | |
452 | Apply the commands listed to articles matching the search command (possibly | |
453 | with h, a, or r modifiers). | |
454 | Applicable commands include \*(L'm\*(R' (mark as unread), \*(L'M\*(R' | |
455 | (delayed mark as unread), \*(L'j\*(R' (mark as read), \*(L"s dest\*(R" | |
456 | (save to a destination), \*(L"!command\*(R" (shell escape), \*(L"=\*(R" | |
457 | (print the subject) and \*(L"C\*(R" (cancel). | |
458 | If the first command is \*(L'm\*(R' or \*(L'M\*(R', modifier r is assumed. | |
459 | A K may be included in the modifiers (not the commands) to cause the | |
460 | entire command (sans K) to be saved to the local KILL file, where it will | |
461 | be applied to every article that shows up in the newsgroup. | |
462 | .Sp | |
463 | For example, to save all articles in a given newsgroup to the line printer | |
464 | and mark them read, use \*(L"/^/\||\|lpr:j\*(R". | |
465 | If you say \*(L"/^/K\||\|lpr:j\*(R", this will happen every time you enter the | |
466 | newsgroup. | |
467 | .Ip ?pattern 8 | |
468 | Scan backward for article containing | |
469 | .I pattern | |
470 | in the subject. | |
471 | May be modified as the forward search is: ?pattern?modifiers[:commands]. | |
472 | It is likely that you will want an r modifier when scanning backward. | |
473 | .Ip k 8 | |
474 | Mark as read all articles with the same subject as the current article. | |
475 | (Note: there is no single character command to temporarily mark as read (M | |
476 | command) articles matching the current subject. | |
477 | That can be done with \*(L"/<esc>s/M\*(R", however.) | |
478 | .Ip K 8 | |
479 | Do the same as the k command, but also add a line to the local KILL file for | |
480 | this newsgroup to kill this subject every time the newsgroup is started up. | |
481 | For a discussion of KILL files, see the \*(L'^K\*(R' command below. | |
482 | See also the K modifier on searches above. | |
483 | .Ip ^K 8 | |
484 | Edit the local KILL file for this newsgroup. | |
485 | Each line of the KILL file should be a command of the form /pattern/j. | |
486 | (With the exception that | |
487 | .I rn | |
488 | will insert a line at the beginning of the form \*(L"THRU <number>\*(R", | |
489 | which tells | |
490 | .I rn | |
491 | the maximum article number that the KILL file has been applied to. You | |
492 | may delete the THRU line to force a rescan of current articles.) | |
493 | You may also have reason to use the m, h, or a modifiers. | |
494 | Be careful with the M modifier in a kill file\*(--there are more efficient | |
495 | ways to never read an article. | |
496 | You might have reason to use it if a particular series of articles is posted | |
497 | to multiple newsgroups. | |
498 | In this case, M would force you to view the article in a different newsgroup. | |
499 | .Sp | |
500 | To see only newgroup articles in the control newsgroup, for instance, you | |
501 | might put | |
502 | .Sp | |
503 | /^/j | |
504 | .br | |
505 | /newgroup/m | |
506 | .Sp | |
507 | which kills all subjects not containing \*(L"newgroup\*(R". | |
508 | You can add lines automatically via the K command and K search modifiers, | |
509 | but editing is the only way to remove lines. | |
510 | If either of the environment variables VISUAL or EDITOR is set, the | |
511 | specified editor will be invoked; otherwise a default editor (normally vi) | |
512 | is invoked on the KILL file. | |
513 | .Sp | |
514 | The KILL file may also contain switch setting lines beginning with \*(L'&\*(R'. | |
515 | Additionally, any line beginning with \*(L'X\*(R' is executed on exit | |
516 | from the newsgroup rather than on entrance. | |
517 | This can be used to set switches back to a default value. | |
518 | .Ip r 8 | |
519 | Reply through net mail. | |
520 | The environment variables MAILPOSTER and MAILHEADER may be used to modify | |
521 | the mailing behavior of | |
522 | .I rn | |
523 | (see environment section). | |
524 | If on a nonexistent article such as the "End of newsgroup" pseudo-article | |
525 | (which you can get to with a \*(L'$\*(R' command), invokes the mailer to | |
526 | nobody in particular. | |
527 | .Ip R 8 | |
528 | Reply, including the current article in the header file generated. | |
529 | (See \*(L'F\*(R' command below). | |
530 | The YOUSAID environment variable controls the format of the attribution line. | |
531 | .Ip f 8 | |
532 | Submit a followup article. | |
533 | If on a nonexistent article such as the "End of newsgroup" pseudo-article | |
534 | (which you can get to with a \*(L'$\*(R' command), posts an original | |
535 | article (basenote). | |
536 | .Ip F 8 | |
537 | Submit a followup article, and include the old article, with lines prefixed | |
538 | either by \*(L">\*(R" or by the argument to a | |
539 | .B \-F | |
540 | switch. | |
541 | .I Rn | |
542 | will attempt to provide an attribution line in front of the quoted article, | |
543 | generated from the From: line of the article. | |
544 | Unfortunately, the From: line doesn't always contain the right name; you | |
545 | should double check it against the signature and change it if necessary, | |
546 | or you may have to apologize for quoting the wrong person. | |
547 | The environment variables NEWSPOSTER, NEWSHEADER and ATTRIBUTION may be | |
548 | used to modify the posting behavior of | |
549 | .I rn | |
550 | (see environment section). | |
551 | .Ip C 8 | |
552 | Cancel the current article, but only if you are the contributor or superuser. | |
553 | .Ip c 8 | |
554 | Catch up in this newsgroup; i.e., mark all articles as read. | |
555 | .Ip u 8 | |
556 | Unsubscribe to this newsgroup. | |
557 | .Ip "s destination" 8 | |
558 | Save to a filename or pipe using sh. | |
559 | If the first character of the destination is a vertical bar, the rest of | |
560 | the command is considered a shell command to which the article is passed | |
561 | through standard input. | |
562 | The command is subject to filename expansion. | |
563 | (See also the environment variable PIPESAVER.) | |
564 | If the destination does not begin with a vertical bar, the rest of the | |
565 | command is assumed to be a filename of some sort. | |
566 | An initial tilde \*(L'~\*(R' will be translated to the name of the home | |
567 | directory, and an initial environment variable substitution is also allowed. | |
568 | If only a directory name is specified, the environment variable SAVENAME | |
569 | is used to generate the actual name. | |
570 | If only a filename is specified (i.e. no directory), the environment variable | |
571 | SAVEDIR will be used to generate the actual directory. | |
572 | If nothing is specified, then obviously both variables will be used. | |
573 | Since the current directory for rn while doing a save command is your | |
574 | private news directory, saying \*(L"s ./filename\*(R" will force the file | |
575 | to your news directory. | |
576 | Save commands are also run through % interpretation, so that you can | |
577 | say \*(L"s %O/filename\*(R" to save to the directory you were in when you ran | |
578 | .IR rn , | |
579 | and \*(L"s %t\*(R" to save to a filename consisting of the Internet address | |
580 | of the sender. | |
581 | .Sp | |
582 | After generating the full pathname of the file to save to, | |
583 | .I rn | |
584 | determines if the file exists already, and if so, appends to it. | |
585 | .I Rn | |
586 | will attempt to determine if an existing file is a mailbox or a normal file, | |
587 | and save the article in the same format. | |
588 | If the output file does not yet exist, | |
589 | .I rn | |
590 | will by default ask you which format you want, or you can make it skip the | |
591 | question with either the | |
592 | .B \-M | |
593 | or | |
594 | .B \-N | |
595 | switch. | |
596 | If the article is to be saved in mailbox format, the command to do so is | |
597 | generated from the environment variable MBOXSAVER. | |
598 | Otherwise, NORMSAVER is used. | |
599 | .Ip "S destination" 8 | |
600 | Save to a filename or pipe using a preferred shell, such as csh. | |
601 | Which shell is used depends first on what you have the environment variable | |
602 | SHELL set to, and in the absence of that, on what your news administrator | |
603 | set for the preferred shell when he or she installed | |
604 | .IR rn . | |
605 | .Ip "| command" 8 | |
606 | Shorthand for \*(L"s | command\*(R". | |
607 | .Ip "w destination" 8 | |
608 | The same as \*(L"s destination\*(R", but saves without the header. | |
609 | .Ip "W destination" 8 | |
610 | The same as \*(L"S destination\*(R", but saves without the header. | |
611 | .Ip & 8 | |
612 | Print out the current status of command line switches. | |
613 | .Ip "&switch {switch}" 8 | |
614 | Set additional command line switches. | |
615 | .Ip && 8 | |
616 | Print out current macro definitions. | |
617 | .Ip "&&keys commands" 8 | |
618 | Define an additional macro. | |
619 | .Ip !command 8 | |
620 | Escape to a subshell. | |
621 | One exclamation mark (!) leaves you in your own news directory. | |
622 | A double exclamation mark (!!) leaves you in the spool | |
623 | directory of the current newsgroup. | |
624 | The environment variable SHELL will be used if defined. | |
625 | If | |
626 | .I command | |
627 | is null, an interactive shell is started. | |
628 | .Sp | |
629 | You can use escape key substitutions described later to get to many | |
630 | run-time values. | |
631 | The command is also run through % interpretation, in case it is being called | |
632 | from a range or search command. | |
633 | .Ip = 8 | |
634 | List subjects of unread articles. | |
635 | .Ip # 8 | |
636 | Print last article number. | |
637 | .Sh "Pager Level" | |
638 | At the pager level (within an article), the prompt looks like this: | |
639 | .Sp | |
640 | \*(--MORE\*(--(17%) | |
641 | .Sp | |
642 | and a number of commands may be given: | |
643 | .Ip SP 8 | |
644 | Display next page. | |
645 | .Ip x 8 | |
646 | Display next page and decrypt as a rot13 message. | |
647 | .Ip d,^D 8 | |
648 | Display half a page more. | |
649 | .Ip CR 8 | |
650 | Display one more line. | |
651 | .Ip q 8 | |
652 | Go to the end of the current article (don't mark it either read or unread). | |
653 | Leaves you at the \*(L"What next?\*(R" prompt. | |
654 | .Ip j 8 | |
655 | Junk the current article. | |
656 | Mark it read and go to the end of the article. | |
657 | .Ip ^L 8 | |
658 | Refresh the screen. | |
659 | .Ip X 8 | |
660 | Refresh the screen and decrypt as a rot13 message. | |
661 | .Ip b,^B 8 | |
662 | Back up one page. | |
663 | .Ip gpattern 8 | |
664 | Goto (search forward for) | |
665 | .I pattern | |
666 | within current article. | |
667 | Note that there is no space between the command and the pattern. | |
668 | If the pattern is found, the page containing the pattern will be displayed. | |
669 | Where on the page the line matching the pattern goes depends on the value | |
670 | of the | |
671 | .B \-g | |
672 | switch. | |
673 | By default the matched line goes at the top of the screen. | |
674 | .Ip G 8 | |
675 | Search for g pattern again. | |
676 | .Ip ^G 8 | |
677 | This is a special version of the \*(L'g\*(R' command that is for skipping | |
678 | articles in a digest. | |
679 | It is equivalent to setting \*(L"\-g4\*(R" and then executing the command | |
680 | \*(L"g^Subject:\*(R". | |
681 | .Ip TAB 8 | |
682 | This is another special version of the \*(L'g\*(R' command that is for | |
683 | skipping inclusions of older articles. | |
684 | It is equivalent to setting \*(L"\-g4\*(R" and then executing the command | |
685 | \*(L"g^[^c]\*(R", where \fIc\fR is the first character of the last line | |
686 | on the screen. | |
687 | It searches for the first line that doesn't begin with the same character | |
688 | as the last line on the screen. | |
689 | .Ip !command 8 | |
690 | Escape to a subshell. | |
691 | .PP | |
692 | The following commands skip the rest of the current article, then behave just | |
693 | as if typed to the \*(L"What next?\*(R" prompt at the end of the article. | |
694 | See the documentation at the article selection level for these commands. | |
695 | .Sp | |
696 | # $ & / = ? c C f F k K ^K m M r R ^R u v Y ^ | |
697 | .br | |
698 | number | |
699 | .br | |
700 | range{,range} command{:command} | |
701 | .Sp | |
702 | The following commands also skip to the end of the article, but have the | |
703 | additional effect of marking the current article as read: | |
704 | .Sp | |
705 | n N ^N s S | w W | |
706 | .Sp | |
707 | .Sh "Miscellaneous facts about commands" | |
708 | An \*(L'n\*(R' typed at either the \*(L"Last newsgroup\*(R" prompt or a | |
709 | \*(L"Last article\*(R" prompt will cycle back to the top of the newsgroup | |
710 | or article list, whereas a \*(L'q\*(R' will quit the level. | |
711 | (Note that \*(L'n\*(R' does not mean \*(L"no\*(R", but rather | |
712 | \*(L"next\*(R".) | |
713 | A space will of course do whatever is shown as the | |
714 | default, which will vary depending on whether rn thinks you have more | |
715 | articles or newsgroups to read. | |
716 | .PP | |
717 | The \*(L'b\*(R' (backup page) command may be repeated until the beginning of | |
718 | the article is reached. | |
719 | If | |
720 | .I rn | |
721 | is suspended (via a ^Z), then when the job is resumed, a refresh (^L) will | |
722 | automatically be done (Berkeley-type systems only). | |
723 | If you type a command such as \*(L'!\*(R' or \*(L's\*(R' which takes you | |
724 | from the middle of the article to the end, you can always get back into the | |
725 | middle by typing \*(L'^L\*(R'. | |
726 | .PP | |
727 | In multi-character commands such as \*(L'!\*(R', \*(L's\*(R', \*(L'/\*(R', | |
728 | etc, you can interpolate various run-time values by typing escape and a | |
729 | character. | |
730 | To find out what you can interpolate, type escape and \*(L'h\*(R', or check | |
731 | out the single character % substitutions for environment variables in the | |
732 | Interpretation and Interpolation section, which are the same. | |
733 | Additionally, typing a double escape will cause any % substitutions in the | |
734 | string already typed in to be expanded. | |
735 | .Sh "Options" | |
736 | .I Rn | |
737 | has a nice set of options to allow you to tailor the interaction | |
738 | to your liking. | |
739 | (You might like to know that the author swears by \*(L"\-e \-m \-S \-/\*(R".) | |
740 | These options may be set on the command line, via the RNINIT | |
741 | environment variable, via a file pointed to by the RNINIT variable, or | |
742 | from within rn via the & command. | |
743 | Options may generally be unset by saying \*(L"+switch\*(R". | |
744 | Options include: | |
745 | .TP 5 | |
746 | .B \-c | |
747 | checks for news without reading news. | |
748 | If a list of newsgroups is given on the command line, only those newsgroups | |
749 | will be checked; otherwise all subscribed-to newsgroups are checked. | |
750 | Whenever the | |
751 | .B \-c | |
752 | switch is specified, a non-zero exit status from | |
753 | .I rn | |
754 | means that there is unread news in one of the checked newsgroups. | |
755 | The | |
756 | .B \-c | |
757 | switch does not disable the printing of newsgroups with unread news; | |
758 | this is controlled by the | |
759 | .B \-s | |
760 | switch. | |
761 | (The | |
762 | .B \-c | |
763 | switch is not meaningful when given via the & command.) | |
764 | .TP 5 | |
765 | .B \-C<number> | |
766 | tells | |
767 | .I rn | |
768 | how often to checkpoint the | |
769 | .IR .newsrc , | |
770 | in articles read. | |
771 | Actually, this number says when to start thinking about doing a checkpoint | |
772 | if the situation is right. | |
773 | If a reasonable checkpointing situation doesn't arise within 10 more | |
774 | articles, the | |
775 | .I .newsrc | |
776 | is checkpointed willy-nilly. | |
777 | .TP 5 | |
778 | .B \-d<directory name> | |
779 | sets the default save directory to something other than ~/News. | |
780 | The directory name will be globbed (via csh) if necessary (and if possible). | |
781 | Articles saved by | |
782 | .I rn | |
783 | may be placed in the save directory or in a subdirectory thereof depending | |
784 | on the command that you give and the state of the environment variables | |
785 | SAVEDIR and SAVENAME. | |
786 | Any KILL files (see the K command in the Article Selection section) | |
787 | also reside in this directory and its subdirectories, by default. | |
788 | In addition, shell escapes leave you in this directory. | |
789 | .TP 5 | |
790 | .B \-D<flags> | |
791 | enables debugging output. | |
792 | See common.h for flag values. | |
793 | Warning: normally | |
794 | .I rn | |
795 | attempts to restore your | |
796 | .I .newsrc | |
797 | when an unexpected signal or internal error occurs. | |
798 | This is disabled when any debugging flags are set. | |
799 | .TP 5 | |
800 | .B \-e | |
801 | causes each page within an article to be started at the top of the screen, | |
802 | not just the first page. | |
803 | (It is similar to the | |
804 | .B \-c | |
805 | switch of | |
806 | .IR more (1).) | |
807 | You never have to read scrolling text with this switch. | |
808 | This is helpful especially at certain baud rates because you can start reading | |
809 | the top of the next page without waiting for the whole page to be printed. | |
810 | It works nicely in conjuction with the | |
811 | .B \-m | |
812 | switch, especially if you use half-intensity for your highlight mode. | |
813 | See also the | |
814 | .B \-L | |
815 | switch. | |
816 | .TP 5 | |
817 | .B \-E<name>=<val> | |
818 | sets the environment variable <name> to the value specified. | |
819 | Within | |
820 | .IR rn , | |
821 | \*(L"&\-ESAVENAME=%t\*(R" is similar to \*(L"setenv SAVENAME '%t'\*(R" in | |
822 | .IR csh , | |
823 | or \*(L"SAVENAME='%t'; export SAVENAME\*(R" in | |
824 | .IR sh . | |
825 | Any environment variables set with | |
826 | .B \-E | |
827 | will be inherited by subprocesses of | |
828 | .IR rn . | |
829 | .TP 5 | |
830 | .B \-F<string> | |
831 | sets the prefix string for the \*(L'F\*(R' followup command to use in | |
832 | prefixing each line of the quoted article. | |
833 | For example, \*(L"\-F<tab>\*(R" inserts a tab on the front of each line | |
834 | (which will cause long lines to wrap around, unfortunately), | |
835 | \*(L"\-F>>>>\*(R" inserts \*(L">>>>\*(R" on every line, and | |
836 | \*(L"\-F\*(R" by itself causes nothing to be inserted, in case you want to | |
837 | reformat the text, for instance. | |
838 | The initial default prefix is \*(L">\*(R". | |
839 | .TP 5 | |
840 | .B \-g<line> | |
841 | tells | |
842 | .I rn | |
843 | which line of the screen you want searched-for strings to show up on when | |
844 | you search with the \*(L'g\*(R' command within an article. | |
845 | The lines are numbered starting with 1. | |
846 | The initial default is \*(L"\-g1\*(R", meaning the first line of the screen. | |
847 | Setting the line to less than 1 or more than the number of lines on the screen | |
848 | will set it to the last line of the screen. | |
849 | .TP 5 | |
850 | .B \-h<string> | |
851 | hides (disables the printing of) all header lines beginning with | |
852 | .I string. | |
853 | For instance, \-hexp will disable the printing of the \*(L"Expires:\*(R" line. | |
854 | Case is insignificant. | |
855 | If <string> is null, all header lines except Subject are hidden, and you | |
856 | may then use | |
857 | .B +h | |
858 | to select those lines you want to see. | |
859 | You may wish to use the baud-rate switch modifier below to hide more lines | |
860 | at lower baud rates. | |
861 | .TP 5 | |
862 | .B \-H<string> | |
863 | works just like | |
864 | .B \-h | |
865 | except that instead of setting the hiding flag for a header line, it sets | |
866 | the magic flag for that header line. | |
867 | Certain header lines have magic behavior that can be controlled this way. | |
868 | At present, the following actions are caused by the flag for the particular | |
869 | line: | |
870 | the Newsgroups line will only print when there are multiple newsgroups, | |
871 | the Subject line will be underlined, and the Expires line will always be | |
872 | suppressed if there is nothing on it. | |
873 | In fact, all of these actions are the default, and you must use | |
874 | .B +H | |
875 | to undo them. | |
876 | .TP 5 | |
877 | .B \-i=<number> | |
878 | specifies how long (in lines) to consider the initial page of an | |
879 | article\*(--normally this is determined automatically depending on baud rate. | |
880 | (Note that an entire article header will always be printed regardless of the | |
881 | specified initial page length. | |
882 | If you are working at low baud rate and wish to reduce the size of the | |
883 | headers, you may hide certain header lines with the | |
884 | .B \(bsh | |
885 | switch.) | |
886 | .TP 5 | |
887 | .B \-l | |
888 | disables the clearing of the screen at the beginning of each | |
889 | article, in case you have a bizarre terminal. | |
890 | .TP 5 | |
891 | .B \-L | |
892 | tells | |
893 | .I rn | |
894 | to leave information on the screen as long as possible by not blanking | |
895 | the screen between pages, and by using clear to end-of-line. | |
896 | (The | |
897 | .IR more (1) | |
898 | program does this.) | |
899 | This feature works only if you have the requisite termcap | |
900 | capabilities. | |
901 | The switch has no effect unless the | |
902 | .B \-e | |
903 | switch is set. | |
904 | .TP 5 | |
905 | .B \-m=<mode> | |
906 | enables the marking of the last line of the previous page | |
907 | printed, to help the user see where to continue reading. | |
908 | This is most helpful when less than a full page is going to be displayed. | |
909 | It may also be used in conjunction with the | |
910 | .B \-e | |
911 | switch, in which case the page is erased, and the first line (which is | |
912 | the last line of the previous page) is highlighted. | |
913 | If | |
914 | .B \-m=s | |
915 | is specified, the standout mode will be used, but if | |
916 | .B \-m=u | |
917 | is specified, underlining will be used. | |
918 | If neither | |
919 | .B =s | |
920 | or | |
921 | .B =u | |
922 | is specified, standout is the default. | |
923 | Use | |
924 | .B +m | |
925 | to disable highlighting. | |
926 | .TP 5 | |
927 | .B \-M | |
928 | forces mailbox format in creating new save files. | |
929 | Ordinarily you are asked which format you want. | |
930 | .TP 5 | |
931 | .B \-N | |
932 | forces normal (non-mailbox) format in creating new save files. | |
933 | Ordinarily you are asked which format you want. | |
934 | .TP 5 | |
935 | .B \-r | |
936 | causes | |
937 | .I rn | |
938 | to restart in the last newsgroup read during a previous session with | |
939 | .I rn. | |
940 | It is equivalent to starting up normally and then getting to the newsgroup | |
941 | with a g command. | |
942 | .TP 5 | |
943 | .B \-s | |
944 | with no argument suppresses the initial listing of newsgroups with unread | |
945 | news, whether | |
946 | .B \-c | |
947 | is specified or not. | |
948 | Thus | |
949 | .B \-c | |
950 | and | |
951 | .B \-s | |
952 | can be used together to test \*(L"silently\*(R" the status of news from | |
953 | within your | |
954 | .I .login | |
955 | file. | |
956 | If | |
957 | .B \-s | |
958 | is followed by a number, the initial listing is suppressed after that many | |
959 | lines have been listed. | |
960 | Presuming that you have your | |
961 | .I .newsrc | |
962 | sorted into order of interest, | |
963 | .B \-s5 | |
964 | will tell you the 5 most interesting newsgroups that have unread news. | |
965 | This is also a nice feature to use in your | |
966 | .I .login | |
967 | file, since it not only tells you whether there is unread news, but also how | |
968 | important the unread news is, without having to wade through the entire | |
969 | list of unread newsgroups. | |
970 | If no | |
971 | .B \-s | |
972 | switch is given | |
973 | .B \-s5 | |
974 | is assumed, so just putting \*(L"rn \-c\*(R" | |
975 | into your | |
976 | \&.login file is fine. | |
977 | .TP 5 | |
978 | .B \-S<number> | |
979 | causes | |
980 | .I rn | |
981 | to enter subject search mode (^N) automatically whenever a newsgroup is | |
982 | started up with <number> unread articles or more. | |
983 | Additionally, it causes any \*(L'n\*(R' typed while in subject search mode | |
984 | to be interpreted as \*(L'^N\*(R' instead. | |
985 | (To get back out of subject search mode, the best command is probably | |
986 | \&\*(L'^\*(R'.) | |
987 | If <number> is omitted, 3 is assumed. | |
988 | .TP 5 | |
989 | .B \-t | |
990 | puts | |
991 | .I rn | |
992 | into terse mode. | |
993 | This is more cryptic but useful for low baud rates. | |
994 | (Note that your system administrator may have compiled | |
995 | .I rn | |
996 | with either verbose or terse messages only to save memory.) | |
997 | You may wish to use the baud-rate switch modifier below to enable terse mode | |
998 | only at lower baud rates. | |
999 | .TP 5 | |
1000 | .B \-T | |
1001 | allows you to type ahead of rn. | |
1002 | Ordinarily rn will eat typeahead to prevent your autorepeating space bar from | |
1003 | doing a very frustrating thing when you accidentally hold it down. | |
1004 | If you don't have a repeating space bar, or you are working at low baud | |
1005 | rate, you can set this switch to prevent this behavior. | |
1006 | You may wish to use the baud-rate switch modifier below to disable typeahead | |
1007 | only at lower baud rates. | |
1008 | .TP 5 | |
1009 | .B \-v | |
1010 | sets verification mode for commands. | |
1011 | When set, the command being executed is displayed to give some feedback that | |
1012 | the key has actually been typed. | |
1013 | Useful when the system is heavily loaded and you give a command that takes | |
1014 | a while to start up. | |
1015 | .TP 5 | |
1016 | .B \-/ | |
1017 | sets SAVEDIR to \*(L"%p/%c\*(R" and SAVENAME to \*(L"%a\*(R", which means | |
1018 | that by default articles are saved in a subdirectory of your private news | |
1019 | directory corresponding to the name of the the current newsgroup, with the | |
1020 | filename being the article number. | |
1021 | .B +/ | |
1022 | sets SAVEDIR to \*(L"%p\*(R" and SAVENAME to \*(L"%^C\*(R", which by | |
1023 | default saves articles directly to your private news directory, with the | |
1024 | filename being the name of the current newsgroup, first letter capitalized. | |
1025 | (Either | |
1026 | .B +/ | |
1027 | or | |
1028 | .B \-/ | |
1029 | may be default on your system, depending on the feelings of your news | |
1030 | administrator when he, she or it installed | |
1031 | .IR rn .) | |
1032 | You may, of course, explicitly set SAVEDIR and SAVENAME to other values\*(--see | |
1033 | discussion in the environment section. | |
1034 | .PP | |
1035 | Any switch may be selectively applied according to the current baud-rate. | |
1036 | Simply prefix the switch with +speed to apply the switch at that speed or | |
1037 | greater, and \%\-speed to apply the switch at that speed or less. | |
1038 | Examples: \%\-1200\-hposted suppresses the Posted line at 1200 baud or less; | |
1039 | \%+9600\-m enables marking at 9600 baud or more. | |
1040 | You can apply the modifier recursively to itself also: \%+300\-1200\-t sets | |
1041 | terse mode from 300 to 1200 baud. | |
1042 | .PP | |
1043 | Similarly, switches may be selected based on terminal type: | |
1044 | .Sp | |
1045 | \-=vt100+T set +T on vt100 | |
1046 | .br | |
1047 | \-=tvi920\-ETERM=mytvi get a special termcap entry | |
1048 | .br | |
1049 | \-=tvi920\-ERNMACRO=%./.rnmac.tvi | |
1050 | .br | |
1051 | set up special keymappings | |
1052 | .br | |
1053 | +=paper\-v set verify mode if not hardcopy | |
1054 | .PP | |
1055 | Some switch arguments, such as environment variable values, may require | |
1056 | spaces in them. | |
1057 | Such spaces should be quoted via ", ', or \e in the conventional fashion, | |
1058 | even when passed via RNINIT or the & command. | |
1059 | .Sh "Regular Expressions" | |
1060 | The patterns used in article searching are regular expressions such as | |
1061 | those used by | |
1062 | .IR ed (1). | |
1063 | In addition, \ew matches an alphanumeric character and \eW a nonalphanumeric. | |
1064 | Word boundaries may be matched by \eb, and non-boundaries by \eB. | |
1065 | The bracketing construct \e(\ ...\ \e) may also be used, and \edigit matches | |
1066 | the digit'th substring, where digit can range from 1 to 9. | |
1067 | \e0 matches whatever the last bracket match matched. | |
1068 | Up to 10 alternatives may given in a pattern, separated by \e|, with the | |
1069 | caveat that \e(\ ...\ \e|\ ...\ \e) is illegal. | |
1070 | .Sh "Interpretation and Interpolation" | |
1071 | Many of the strings that | |
1072 | .I rn | |
1073 | handles are subject to interpretations of several types. | |
1074 | Under filename expansion, an initial \*(L"~/\*(R" is translated to the name | |
1075 | of your home directory, and \*(L"~name\*(R" is translated to the login | |
1076 | directory for the user specified. | |
1077 | Filename expansion will also expand an initial environment variable, and | |
1078 | also does the backslash, uparrow and percent expansion mentioned below. | |
1079 | .PP | |
1080 | All interpreted strings go through backslash, uparrow and percent | |
1081 | interpretation. | |
1082 | The backslash escapes are the normal ones (such as \en, \et, \ennn, etc.). | |
1083 | The uparrow escapes indicate control codes in the normal fashion. | |
1084 | Backslashes or uparrows to be passed through should be escaped with backslash. | |
1085 | The special percent escapes are similar to printf percent escapes. | |
1086 | These cause the substitution of various run-time values into the string. | |
1087 | The following are currently recognized: | |
1088 | .Ip %a 8 | |
1089 | Current article number. | |
1090 | .Ip %A 8 | |
1091 | Full name of current article (%P/%c/%a). | |
1092 | (On a Eunice system with the LINKART option, %P/%c/%a returns the name of | |
1093 | the article in the current newsgroup, while %A returns the real name of | |
1094 | the article, which may be different if the current article was posted to | |
1095 | multiple newsgroups.) | |
1096 | .Ip %b 8 | |
1097 | Destination of last save command, often a mailbox. | |
1098 | .Ip %B 8 | |
1099 | The byte offset to the beginning of the part of the article to be saved, | |
1100 | set by the save command. | |
1101 | The \*(L's\*(R' and \*(L'S\*(R' commands set it to 0, and the \*(L'w\*(R' | |
1102 | and \*(L'W\*(R' commands set it to the byte offset of the body of the article. | |
1103 | .Ip %c 8 | |
1104 | Current newsgroup, directory form. | |
1105 | .Ip %C 8 | |
1106 | Current newsgroup, dot form. | |
1107 | .Ip %d 8 | |
1108 | Full name of newsgroup directory (%P/%c). | |
1109 | .Ip %D 8 | |
1110 | \*(L"Distribution:\*(R" line from the current article. | |
1111 | .Ip %f 8 | |
1112 | \*(L"From:\*(R" line from the current article, or the \*(L"Reply-To:\*(R" | |
1113 | line if there is one. | |
1114 | This differs from %t in that comments (such as the full name) are not | |
1115 | stripped out with %f. | |
1116 | .Ip %F 8 | |
1117 | \*(L"Newsgroups:\*(R" line for a new article, constructed from | |
1118 | \*(L"Newsgroups:\*(R" and \*(L"Followup-To:\*(R" lines of current article. | |
1119 | .Ip %h 8 | |
1120 | Name of the header file to pass to the mail or news poster, | |
1121 | containing all the information that the poster program needs in the | |
1122 | form of a message header. | |
1123 | It may also contain a copy of the current article. | |
1124 | The format of the header file is controlled by the MAILHEADER and NEWSHEADER | |
1125 | environment variables. | |
1126 | .Ip %H 8 | |
1127 | Host name (your machine's name). | |
1128 | .Ip %i 8 | |
1129 | \*(L"Message-I.D.:\*(R" line from the current article, with <> guaranteed. | |
1130 | .Ip %I 8 | |
1131 | The reference indication mark (see the | |
1132 | .B \-F | |
1133 | switch.) | |
1134 | .Ip %l 8 | |
1135 | The news administrator's login name, if any. | |
1136 | .Ip %L 8 | |
1137 | Login name (yours). | |
1138 | .Ip %m 8 | |
1139 | The current mode of rn, for use in conditional macros. | |
1140 | .Sp | |
1141 | .nf | |
1142 | i Initializing. | |
1143 | n Newsgroup selection level. | |
1144 | a Article selection level (What next?). | |
1145 | p Pager level (MORE prompt). | |
1146 | A Add this newsgroup? | |
1147 | C Catchup confirmation. | |
1148 | D Delete bogus newsgroups? | |
1149 | M Use mailbox format? | |
1150 | R Resubscribe to this newsgroup? | |
1151 | .fi | |
1152 | .Sp | |
1153 | Note that yes/no questions are all upper-case modes. | |
1154 | If, for example, you wanted to disallow defaults on all yes/no questions, | |
1155 | you could define the following macro: | |
1156 | .Sp | |
1157 | .nf | |
1158 | \e040 %(%m=[A-Z]?h: ) | |
1159 | .fi | |
1160 | .Ip %M 8 | |
1161 | The number of articles marked to return via the \*(L'M\*(R' command. | |
1162 | If the same article is Marked multiple times, \*(L"%M\*(R" counts it | |
1163 | multiple times in the current implementation. | |
1164 | .Ip %n 8 | |
1165 | \*(L"Newsgroups:\*(R" line from the current article. | |
1166 | .Ip %N 8 | |
1167 | Full name (yours). | |
1168 | .Ip %o 8 | |
1169 | Organization (yours). | |
1170 | .Ip %O 8 | |
1171 | Original working directory (where you ran rn from). | |
1172 | .Ip %p 8 | |
1173 | Your private news directory, normally ~/News. | |
1174 | .Ip %P 8 | |
1175 | Public news spool directory, normally /usr/spool/news. | |
1176 | .Ip %r 8 | |
1177 | Last reference on references line of current article (parent article id). | |
1178 | .Ip %R 8 | |
1179 | References list for a new article, constructed from the references and article | |
1180 | ID of the current article. | |
1181 | .Ip %s 8 | |
1182 | Subject, with all Re's and (nf)'s stripped off. | |
1183 | .Ip %S 8 | |
1184 | Subject, with one \*(L"Re:\*(R" stripped off. | |
1185 | .Ip %t 8 | |
1186 | \*(L"To:\*(R" line derived from the \*(L"From:\*(R" and \*(L"Reply-To:\*(R" | |
1187 | lines of the current article. | |
1188 | This always returns an Internet format address. | |
1189 | .Ip %T 8 | |
1190 | \*(L"To:\*(R" line derived from the \*(L"Path:\*(R" line of the | |
1191 | current article to produce a uucp path. | |
1192 | .Ip %u 8 | |
1193 | The number of unread articles in the current newsgroup. | |
1194 | .Ip %U 8 | |
1195 | The number of unread articles in the current newsgroup, not counting the | |
1196 | current article. | |
1197 | .Ip %x 8 | |
1198 | The news library directory. | |
1199 | .Ip %X 8 | |
1200 | The rn library directory. | |
1201 | .Ip %z 8 | |
1202 | The length of the current article in bytes. | |
1203 | .Ip %~ 8 | |
1204 | Your home directory. | |
1205 | .Ip %. 8 | |
1206 | The directory containing your dot files, which is your home directory unless | |
1207 | the environment variable DOTDIR is defined when rn is invoked. | |
1208 | .Ip %$ 8 | |
1209 | Current process number. | |
1210 | .Ip %/ 8 | |
1211 | Last search string. | |
1212 | .Ip %% 8 | |
1213 | A percent sign. | |
1214 | .Ip "%{name} or %{name\-default}" 8 | |
1215 | The environment variable \*(L"name\*(R". | |
1216 | .Ip %[name] 8 | |
1217 | The value of header line \*(L"Name:\*(R" from the current article. | |
1218 | The \*(L"Name:\ \*(R" is not included. | |
1219 | For example \*(L"%D\*(R" and \*(L"%[distribution]\*(R" are equivalent. | |
1220 | The name must be spelled out in full. | |
1221 | .Ip %`command` 8 | |
1222 | Inserts the output of the command, with any embedded newlines translated | |
1223 | to space. | |
1224 | .Ip %""prompt"" 8 | |
1225 | Prints prompt on the terminal, then inputs one string, and inserts it. | |
1226 | .Ip "%(test_text=pattern?then_text:else_text)" 8 | |
1227 | If | |
1228 | .I test_text | |
1229 | matches | |
1230 | .IR pattern , | |
1231 | has the value | |
1232 | .IR then_text , | |
1233 | otherwise | |
1234 | .IR else_text . | |
1235 | The \*(L":else_text\*(R" is optional, and if absent, interpolates the null string. | |
1236 | The = may be replaced with != to negate the test. | |
1237 | To quote any of the metacharacters | |
1238 | (\*(L'=\*(R', \*(L'?\*(R', \*(L':\*(R', or \*(L')\*(R'), | |
1239 | precede with a backslash. | |
1240 | .Ip %digit 8 | |
1241 | The digits 1 through 9 interpolate the string matched by the nth bracket | |
1242 | in the last pattern match that had brackets. | |
1243 | If the last pattern had alternatives, you may not know the number of the | |
1244 | bracket you want\*(--%0 will give you the last bracket matched. | |
1245 | .PP | |
1246 | Modifiers: to capitalize the first letter, insert \*(L'^\*(R': | |
1247 | \*(L"%^C\*(R" produces something like \*(L"Net.jokes\*(R". | |
1248 | Inserting \*(L'_\*(R' causes the first letter following the last | |
1249 | \&\*(L'/\*(R' to be capitalized: \*(L"%_c\*(R" produces \*(L"net/Jokes\*(R". | |
1250 | .SH ENVIRONMENT | |
1251 | The following environment variables are paid attention to by | |
1252 | .IR rn . | |
1253 | In general the default values assumed for these variables by | |
1254 | .I rn | |
1255 | are reasonable, so if you are using | |
1256 | .I rn | |
1257 | for the first time, you can safely ignore this section. | |
1258 | Note that the defaults below may not correspond precisely to the defaults | |
1259 | on your system. | |
1260 | To find the actual defaults you would need to look in config.h and common.h | |
1261 | in the rn source directory, and the file INIT in the rn library. | |
1262 | .PP | |
1263 | Those variables marked (%) are subject to % interpolation, and those marked | |
1264 | (~) are subject to both % interpolation and ~ interpretation. | |
1265 | .Ip "ATTRIBUTION (%)" 8 | |
1266 | Gives the format of the attribution line in front of the quoted article | |
1267 | included by an F command. | |
1268 | .Sp | |
1269 | Default: In article %i %f writes: | |
1270 | .Ip "CANCEL (~)" 8 | |
1271 | The shell command used to cancel an article. | |
1272 | .Sp | |
1273 | Default: inews \-h < %h | |
1274 | .Ip "CANCELHEADER (%)" 8 13v | |
1275 | The format of the file to pass to the CANCEL command in order to cancel | |
1276 | an article. | |
1277 | .Sp | |
1278 | Default: | |
1279 | .br | |
1280 | Newsgroups: %n | |
1281 | .br | |
1282 | Subject: cmsg cancel %i | |
1283 | .br | |
1284 | References: %R | |
1285 | .br | |
1286 | Reply-To: %L@%H.UUCP (%N) | |
1287 | .br | |
1288 | Distribution: %D | |
1289 | .br | |
1290 | Organization: %o | |
1291 | .sp 1 | |
1292 | %i cancelled from rn. | |
1293 | .Ip DOTDIR 8 | |
1294 | Where to find your dot files, if they aren't in your home directory. | |
1295 | Can be interpolated using \*(L"%.\*(R". | |
1296 | .Sp | |
1297 | Default: $HOME | |
1298 | .Ip "EDITOR (~)" 8 | |
1299 | The name of your editor, if VISUAL is undefined. | |
1300 | .Sp | |
1301 | Default: whatever your news administrator compiled in, usually vi. | |
1302 | .Ip "FIRSTLINE (%)" 8 | |
1303 | Controls the format of the line displayed at the top of an article. | |
1304 | Warning: this may go away. | |
1305 | .Sp | |
1306 | Default: Article %a %(%U%M!=^00$?(%U more%(%M!=^0$? + %M Marked to return)\e) )in %C:, more or less. | |
1307 | .Ip HIDELINE 8 | |
1308 | If defined, contains a regular expression which matches article lines to | |
1309 | be hidden, in order, for instance, to suppress quoted material. | |
1310 | A recommended string for this purpose is \*(L"^>...\*(R", which \fIdoesn't\fR | |
1311 | hide lines with only \*(L'>\*(R', to give some indication that quoted | |
1312 | material is being skipped. | |
1313 | If you want to hide more than one pattern, you can use \*(L"\||\|\*(R" to | |
1314 | separate the alternatives. | |
1315 | You can view the hidden lines by restarting the article with the \*(L'v\*(R' | |
1316 | command. | |
1317 | .Sp | |
1318 | There is some overhead involved in matching each line of the article against | |
1319 | a regular expression. | |
1320 | You might wish to use a baud-rate modifier to enable this feature only at | |
1321 | low baud rates. | |
1322 | .Sp | |
1323 | Default: undefined | |
1324 | .Ip HOME 8 | |
1325 | Your home directory. | |
1326 | Affects ~ interpretation, and the location of your | |
1327 | dot files if DOTDIR is not defined. | |
1328 | .Sp | |
1329 | Default: $LOGDIR | |
1330 | .Ip "KILLGLOBAL (~)" 8 | |
1331 | Where to find the KILL file to apply to every newsgroup. | |
1332 | See the \*(L'^K\*(R' command at the newsgroup selection level. | |
1333 | .Sp | |
1334 | Default: %p/KILL | |
1335 | .Ip "KILLLOCAL (~)" 8 | |
1336 | Where to find the KILL file for the current newsgroup. | |
1337 | See the commands \*(L'K\*(R' and \*(L'^K\*(R' at the article selection level, | |
1338 | and the search modifier \*(L'K\*(R'. | |
1339 | .Sp | |
1340 | Default: %p/%c/KILL | |
1341 | .Ip LOGDIR 8 | |
1342 | Your home directory if HOME is undefined. | |
1343 | Affects ~ interpretation, and the location of your | |
1344 | dot files if DOTDIR is not defined. | |
1345 | .Sp | |
1346 | Default: none. | |
1347 | .Sp | |
1348 | Explanation: you must have either $HOME or $LOGDIR. | |
1349 | .Ip LOGNAME 8 | |
1350 | Your login name, if USER is undefined. | |
1351 | May be interpolated using \*(L"%L\*(R". | |
1352 | .Sp | |
1353 | Default: value of getlogin(). | |
1354 | .Ip "MAILCALL (~)" 8 | |
1355 | What to say when there is new mail. | |
1356 | .Sp | |
1357 | Default: (Mail) | |
1358 | .Ip "MAILFILE (~)" 8 | |
1359 | Where to check for mail. | |
1360 | .Sp | |
1361 | Default: /usr/spool/mail/%L | |
1362 | .Ip "MAILHEADER (%)" 8 | |
1363 | The format of the header file for replies. | |
1364 | See also MAILPOSTER. | |
1365 | .Sp | |
1366 | Default: | |
1367 | .Sp | |
1368 | To: %T | |
1369 | .br | |
1370 | Subject: %(%i=^$?:Re: %S | |
1371 | .br | |
1372 | Newsgroups: %n | |
1373 | .br | |
1374 | In-Reply-To: %i) | |
1375 | .br | |
1376 | %(%[references]!=^$?References\\: %[references] | |
1377 | .br | |
1378 | )Organization: %o | |
1379 | .br | |
1380 | Cc: | |
1381 | .br | |
1382 | Bcc: \en\en | |
1383 | .Ip "MAILPOSTER (~)" 8 | |
1384 | The shell command to be used by the reply commands (r and R) | |
1385 | in order to allow you to enter and deliver the response. | |
1386 | .I Rn | |
1387 | will not itself call upon an editor for replies\*(--this | |
1388 | is a function of the program called by | |
1389 | .IR rn . | |
1390 | See also MAILHEADER. | |
1391 | .Sp | |
1392 | Default: Rnmail \-h %h | |
1393 | .Ip "MBOXSAVER (~)" 8 | |
1394 | The shell command to save an article in mailbox format. | |
1395 | .Sp | |
1396 | Default: %X/mbox.saver %A %P %c %a %B %C "%b" \e | |
1397 | .br | |
1398 | "From: %T %`date`" | |
1399 | .Sp | |
1400 | Explanation: the first seven arguments are the same as for NORMSAVER. | |
1401 | The eighth argument to the shell script is the new From: line | |
1402 | for the article, including the posting date, | |
1403 | derived either directly from the Posted: line, or not-so-directly from | |
1404 | the Date: line. | |
1405 | Header munging at its finest. | |
1406 | .Ip NAME 8 | |
1407 | Your full name. | |
1408 | May be interpolated using \*(L"%N\*(R". | |
1409 | .Sp | |
1410 | Default: name from /etc/passwd, or ~/.fullname. | |
1411 | .Ip "NEWSHEADER (%)" 8 16v | |
1412 | The format of the header file for followups. | |
1413 | See also NEWSPOSTER. | |
1414 | .Sp | |
1415 | Default: | |
1416 | .Sp | |
1417 | Newsgroups: %(%F=^$?%C:%F) | |
1418 | .br | |
1419 | Subject: %(%S=^$?%"\n\nSubject: ":Re: %S) | |
1420 | .br | |
1421 | Summary: | |
1422 | .br | |
1423 | Expires: | |
1424 | .br | |
1425 | %(%R=^$?:References: %R | |
1426 | .br | |
1427 | )Sender: | |
1428 | .br | |
1429 | Reply-To: %L@%H.UUCP (%N) | |
1430 | .br | |
1431 | Followup-To: | |
1432 | .br | |
1433 | Distribution: %(%i=^$?%"\nDistribution: ":%D) | |
1434 | .br | |
1435 | Organization: %o | |
1436 | .br | |
1437 | Keywords: \en\en | |
1438 | .Ip "NEWSPOSTER (~)" 8 | |
1439 | The shell command to be used by the followup commands (f and F) | |
1440 | in order to allow you to enter and post a followup news article. | |
1441 | .I Rn | |
1442 | will not itself call upon an editor for followups\*(--this | |
1443 | is a function of the program called by | |
1444 | .IR rn . | |
1445 | See also NEWSHEADER. | |
1446 | .Sp | |
1447 | Default: Pnews \-h %h | |
1448 | .Ip "NORMSAVER (~)" 8 | |
1449 | The shell command to save an article in the normal (non-mailbox) format. | |
1450 | .Sp | |
1451 | Default: %X/norm.saver %A %P %c %a %B %C "%b" | |
1452 | .Ip ORGANIZATION 8 | |
1453 | Either the name of your organization, or the name of a file containing the | |
1454 | name of your organization. | |
1455 | May be interpolated using \*(L"%o\*(R". | |
1456 | .Sp | |
1457 | Default: whatever your news administrator compiled in. | |
1458 | .Ip PAGESTOP 8 | |
1459 | If defined, contains a regular expression which matches article lines to | |
1460 | be treated as form-feeds. | |
1461 | There are at least two things you might want to do with this. | |
1462 | To cause page breaks between articles in a digest, you might define it | |
1463 | as \*(L"^--------\*(R". | |
1464 | To force a page break before a signature, you could define it | |
1465 | as \*(L"^-- $\*(R". | |
1466 | (Then, when you see \*(L"--\*(R" at the bottom of the page, you can skip | |
1467 | the signature if you so desire by typing \*(L'n\*(R' instead of space.) | |
1468 | To do both, you could use \*(L"^--\*(R". | |
1469 | If you want to break on more than one pattern, you can use \*(L"\||\|\*(R" to | |
1470 | separate the alternatives. | |
1471 | .Sp | |
1472 | There is some overhead involved in matching each line of the article against | |
1473 | a regular expression. | |
1474 | You might wish to use a baud-rate modifier to enable this feature only at | |
1475 | low baud rates. | |
1476 | .Sp | |
1477 | Default: undefined | |
1478 | .Ip "PIPESAVER (%)" 8 | |
1479 | The shell command to execute in order to accomplish a save to a pipe | |
1480 | (\*(L"s\ |\ command\*(R" or \*(L"w\ |\ command\*(R"). | |
1481 | The command typed by the user is substituted in as %b. | |
1482 | .Sp | |
1483 | Default: %(%B=^0$?<%A:tail +%Bc %A |) %b | |
1484 | .Sp | |
1485 | Explanation: if %B is 0, the command is \*(L"<%A %b\*(R", otherwise | |
1486 | the command is \*(L"tail +%Bc %A | %b\*(R". | |
1487 | .Ip RNINIT 8 | |
1488 | Default values for switches may be passed to | |
1489 | .I rn | |
1490 | by placing them in RNINIT. | |
1491 | Any switch that is set in RNINIT may be overruled | |
1492 | on the command line, or via the \*(L'&\*(R' command from within | |
1493 | .IR rn . | |
1494 | Binary-valued switches that are set with \*(L"\-switch\*(R" may be unset | |
1495 | using \*(L"+switch\*(R". | |
1496 | .Sp | |
1497 | If RNINIT begins with a \*(L'/\*(R' it is assumed to be the name of a file | |
1498 | containing switches. | |
1499 | If you want to set many environment variables but don't want to keep | |
1500 | them all in your environment, or if the use of any of these variables | |
1501 | conflicts with other programs, you can use this feature along with the | |
1502 | .B \-E | |
1503 | switch to set the environment variables upon startup. | |
1504 | .Sp | |
1505 | Default: \*(L" \*(R". | |
1506 | .Ip "RNMACRO (~)" 8 | |
1507 | The name of the file containing macros and key mappings. | |
1508 | See the MACROS section. | |
1509 | .Sp | |
1510 | Default: %./.rnmac | |
1511 | .Ip "SAVEDIR (~)" 8 | |
1512 | The name of the directory to save to, if the save command does not specify | |
1513 | a directory name. | |
1514 | .Sp | |
1515 | Default: | |
1516 | .br | |
1517 | If | |
1518 | .B \-/ | |
1519 | is set: %p/%c | |
1520 | .br | |
1521 | If | |
1522 | .B +/ | |
1523 | is set: %p | |
1524 | .Ip "SAVENAME (%)" 8 | |
1525 | The name of the file to save to, if the save command contains only a | |
1526 | directory name. | |
1527 | .Sp | |
1528 | Default: | |
1529 | .br | |
1530 | If | |
1531 | .B \-/ | |
1532 | is set: %a | |
1533 | .br | |
1534 | If | |
1535 | .B +/ | |
1536 | is set: %^C | |
1537 | .Ip SHELL 8 | |
1538 | The name of your preferred shell. | |
1539 | It will be used by the \*(L'!\*(R', \*(L'S\*(R' and \*(L'W\*(R' commands. | |
1540 | .Sp | |
1541 | Default: whatever your news administrator compiled in. | |
1542 | .Ip "SUBJLINE (%)" 8 | |
1543 | Controls the format of the lines displayed by the \*(L'=\*(R' command at | |
1544 | the article selection level. | |
1545 | .Sp | |
1546 | Default: %s | |
1547 | .Ip TERM 8 | |
1548 | Determines which termcap entry to use, unless TERMCAP contains the entry. | |
1549 | .Ip TERMCAP 8 | |
1550 | Holds either the name of your termcap file, or a termcap entry. | |
1551 | .Sp | |
1552 | Default: /etc/termcap, normally. | |
1553 | .Ip USER 8 | |
1554 | Your login name. | |
1555 | May be interpolated using \*(L"%L\*(R". | |
1556 | .Sp | |
1557 | Default: $LOGNAME | |
1558 | .Ip "VISUAL (~)" 8 | |
1559 | The name of your editor. | |
1560 | .Sp | |
1561 | Default: $EDITOR | |
1562 | .Ip "YOUSAID (%)" 8 | |
1563 | Gives the format of the attribution line in front of the quoted article | |
1564 | included by an R command. | |
1565 | .Sp | |
1566 | Default: In article %i you write: | |
1567 | .SH MACROS | |
1568 | When | |
1569 | .I rn | |
1570 | starts up, it looks for a file containing macro definitions (see environment | |
1571 | variable RNMACRO). | |
1572 | Any sequence of commands may be bound to any sequence of keys, so you | |
1573 | could remap your entire keyboard if you desire. | |
1574 | Blank lines or lines beginning with # in the macro file are considered | |
1575 | comments; otherwise | |
1576 | .I rn | |
1577 | looks for two fields separated by white space. | |
1578 | The first field gives the sequence of keystrokes that trigger the macro, | |
1579 | and the second field gives the sequence of commands to execute. | |
1580 | Both fields are subject to % interpolation, which will also translate | |
1581 | backslash and uparrow sequences. | |
1582 | (The keystroke field is interpreted at startup time, but the command field | |
1583 | is interpreted at macro execution time so that you may refer to % values | |
1584 | in a macro.) | |
1585 | For example, if you want to reverse the roles of carriage return and | |
1586 | space in rn | |
1587 | .Sp | |
1588 | ^J \e040 | |
1589 | .br | |
1590 | ^M \e040 | |
1591 | .br | |
1592 | \e040 ^J | |
1593 | .Sp | |
1594 | will do just that. | |
1595 | By default, all characters in the command field are interpreted as the | |
1596 | canonical | |
1597 | .I rn | |
1598 | characters, i.e. no macro expansion is done. | |
1599 | Otherwise the above pair of macros would cause an infinite loop. | |
1600 | To force macro expansion in the command field, enclose the | |
1601 | macro call with ^( ... ^) thusly: | |
1602 | .Sp | |
1603 | @s |mysavescript | |
1604 | .br | |
1605 | @w w^(@s^) | |
1606 | .Sp | |
1607 | You can use the %() conditional construct to construct macros that work | |
1608 | differently under different circumstances. | |
1609 | In particular, the current mode (%m) of | |
1610 | .I rn | |
1611 | could be used to make a command that only works at a particular level. | |
1612 | For example, | |
1613 | .Sp | |
1614 | ^[[O %(%m=p?\e040) | |
1615 | .Sp | |
1616 | will only allow the macro to work at the pager level. | |
1617 | .Sp | |
1618 | %(%{TERM}=vt100?^[[O) /^J | |
1619 | .Sp | |
1620 | will do the binding only if the terminal type is vt100, | |
1621 | though if you have many of these it would be better to have separate | |
1622 | files for each terminal. | |
1623 | .Sp | |
1624 | If you want to bind a macro to a function key that puts a common garbage character | |
1625 | after the sequence (such as the carriage return on the end of Televideo 920 | |
1626 | function sequences), DO NOT put the carriage return | |
1627 | into all the sequences or you will waste a CONSIDERABLE amount of internal | |
1628 | storage. | |
1629 | Instead of \*(L"^AF^M\*(R", put \*(L"^AF+1\*(R", which indicates to | |
1630 | .I rn | |
1631 | that it should gobble up one character after the F. | |
1632 | .SH AUTHOR | |
1633 | Larry Wall <lwall@sdcrdcf.UUCP> | |
1634 | .br | |
1635 | Regular expression routines are borrowed from emacs, by James Gosling. | |
1636 | .SH FILES | |
1637 | .Ip "%./.newsrc" 1.25i | |
1638 | status of your news reading | |
1639 | .Ip "%./.oldnewsrc" 1.25i | |
1640 | backup copy of your | |
1641 | .I .newsrc | |
1642 | from start of session | |
1643 | .Ip "%./.rnlock" 1.25i | |
1644 | lock file so you don't screw up your | |
1645 | .I .newsrc | |
1646 | .Ip "%./.rnlast" 1.25i | |
1647 | info from last run of rn | |
1648 | .Ip "%./.rnsoft" 1.25i | |
1649 | soft pointers into /usr/lib/active to speed startup, synchronous with | |
1650 | .I .newsrc | |
1651 | .Ip "%./.rnhead" 1.25i | |
1652 | temporary header file to pass to a mailer or news poster | |
1653 | .Ip "%./.rnmac" 1.25i | |
1654 | macro and keymap definitions | |
1655 | .Ip "%p" 1.25i | |
1656 | your news save directory, usually ~/News | |
1657 | .Ip "%x/active" 1.25i | |
1658 | the list of active newsgroups, usually /usr/lib/news/active | |
1659 | .Ip "%P" 1.25i | |
1660 | the public news spool directory, usually /usr/spool/news | |
1661 | .Ip "%X/INIT" 1.25i | |
1662 | system-wide default switches | |
1663 | .SH SEE ALSO | |
1664 | newsrc(5), more(1), readnews(1), Pnews(1), Rnmail(1) | |
1665 | .SH DIAGNOSTICS | |
1666 | Generally self-documenting, as they say. | |
1667 | .SH BUGS | |
1668 | The | |
1669 | .B \-h | |
1670 | switch can only hide header lines that | |
1671 | .I rn | |
1672 | knows about. | |
1673 | .PP | |
1674 | The \*(L'\-\*(R' command doesn't cross newsgroup boundaries, and only undoes | |
1675 | the last article selection. | |
1676 | .PP | |
1677 | If you edit your | |
1678 | .I .newsrc | |
1679 | while | |
1680 | .I rn | |
1681 | is running, | |
1682 | .I rn | |
1683 | will happily wipe out your changes when it decides to | |
1684 | write out the | |
1685 | .I .newsrc | |
1686 | file. | |
1687 | .PP | |
1688 | .I Rn | |
1689 | doesn't do certain things (like ordering articles on posting date) that | |
1690 | the author feels should be handled by inews. | |
1691 | .PP | |
1692 | Marking of duplicate articles as read in cross-referenced newsgroups will | |
1693 | not work unless the Xref patch is installed in inews. | |
1694 | .PP | |
1695 | If you get carried away with % or escape substitutions, you can overflow | |
1696 | buffers. | |
1697 | .PP | |
1698 | There should be no fixed limit on the number of newsgroups. | |
1699 | .PP | |
1700 | Some of the more esoteric features may be missing on machines with limited | |
1701 | address space. |