RXML parse error: No current scope. | <set quote="none" value="//www.lysator.liu.se/nordic/scripts/links/extern_link_73.pike" variable="extern_redirect"> | <set quote="none" value="//www.lysator.liu.se/nordic/scripts/links/extern_link_73.pike" variable="extern_redirect"> | <trimlines> | <insert file="/nordic/include"> | <insert file="include">
RXML parse error: No current scope. | <if variable="rxml is 1"> | <if variable="rxml is 1"> | <trimlines> | <insert file="/nordic/include"> | <insert file="include">
RXML parse error: No current scope. | <if variable="rxml is 1"> | <if variable="rxml is 1"> | <if variable="rxml is 1"> | <trimlines> | <insert file="/nordic/include"> | <insert file="include">
RXML parse error: No current scope. | <set eval="<date part=second>" variable="start_s"> | <if false="1"> | <if false="1"> | <if variable="rxml is 1"> | <trimlines> | <insert file="/nordic/include"> | <insert file="include">
RXML parse error: No current scope. | <set eval="<date part=minute>" variable="start_m"> | <if false="1"> | <if false="1"> | <if variable="rxml is 1"> | <trimlines> | <insert file="/nordic/include"> | <insert file="include">
RXML parse error: No current scope. | <set eval="<date part=hour>" variable="start_t"> | <if false="1"> | <if false="1"> | <if variable="rxml is 1"> | <trimlines> | <insert file="/nordic/include"> | <insert file="include">
RXML parse error: No current scope. | <set eval="<countdown seconds since iso=1997-12-01>" variable="surfer_time"> | <if false="1"> | <if false="1"> | <if variable="rxml is 1"> | <trimlines> | <insert file="/nordic/include"> | <insert file="include">
RXML parse error: No current scope. | <if variable="file"> | <if not="not" variable="file"> | <if false="1"> | <if false="1"> | <if variable="rxml is 1"> | <trimlines> | <insert file="/nordic/include"> | <insert file="include">
Archive-name: killfile-faq Last modified: 20 Sep 1994
Copyright 1995, Leanne Phillips. Permission is granted to distribute this document for personal use, as long as this copyright notice maintains. Publication of this material in printed form is forbidden without express permission of the author.
Summary of changes:
This is being posted from felan@netcom.com instead of
phillips@syrinx.umd.edu.
A correction was made to the information presented about the *
in regualar expressions. Enough people have had problems with the
information I was given that I've gone back to the original statement
of what the * means and corrected the entries for each kill line that
used the *.
Send comments, suggestions, corrections to <felan@netcom.com>.
Subject: 1
To kill articles, you specify criteria to use to kill them: a subject line, a part of a subject line, articles from one poster or one site, cross-posted articles, or follow-ups to other articles. You can also kill articles with a particular string in the article.
2.
The global KILL file is typically in your News directory, under the name 'KILL'. Local KILL files are typically in the News directory, with more involved names. The killfile for group foo.bar would be, in the News directory, in the subdirectory foo/bar. It would still be named KILL.
(Note: The capitals are important; remember that Unix is case-sensitive.)
It is possible to change the locations of your KILL files, by setting the environment variables KILLGLOBAL and KILLLOCAL. The most popular method is to put all the files in one directory using the group name as the file name:
KILLLOCAL="%p/Kill/%C" KILLGLOBAL="%p/Kill/Global"
Where %p is the news dir (~/News) and %C is the name of the group. The global kill file is in the same directory with the name "Global".
See your rn(1) or trn(1) man pages, or local support staff, for help with this if you want to use something else.
A word of warning about global kill files: they slow down killfile processing, so you have to wait longer to start reading - for each newsgroup. If you don't need to put something in a global file, you shouldn't.
3.
Assuming you know how to use an editor and have made that editor your default (again, see local support staff if you don't know how to do that), you can edit the KILL file directly, using the appropriate name as described above.
From within rn and trn, you can add something to a killfile when typing in the kill command interactively (see below, the question about killing without using a killfile). Use the K modifier in any command (see below for explanations of modifiers).
You can also start editing your KILL files from within rn and trn. When being asked to pick a newsgroup, type control-k; this will start your default editor, using your global killfile. When you're reading a particular newsgroup, typing control-k will start the editor with the local killfile for that group. If it doesn't exist, it will create it; if necessary, it will also create the directories in the path to it.
4.
Subject: 5
5.
/pattern/modifiers:command
The <pattern> is the pattern to use to pick articles. This is a regular expression, like those used in grep. You can use any case in the pattern; it won't matter, unless you use a modifier to make rn case-sensitive.
The <modifiers> tell rn where to look for the pattern - the subject (default), one of the other header lines, or the entire article, as examples of the usual modifiers used.
The command tells what to do with the article once it's been selected. This is usually either to kill it or to mark it unread.
If no modifier appears before the colon, only the subject line of the article is searched. More than one command can be performed by using the style:
/pattern/modifier:command:command
Thus, for instance, you can use j and = together to see the exact subject lines being killed. (See below for the explanation of j and =.)
Using the 'a' modifier slows down kill file processing a lot; use it sparingly.
7.
To kill a general subject, ie any 'test' messages, put in the pattern:
/test/:j
This will kill anything with the word 'test' in the subject line.
8.
/^From:.*noone@anywhere\.all/h:j
This searches the entire header for any line starting with 'From:', anything at all, and then 'noone@anywhere.all' in it. This is faster than if the beginning-of-line character (^) had been left out:
/From:.*noone@anywhere\.all/h:j
If this were used, something like 'Subject: Re: Articles from: noone@anywhere.all' would also get killed.
9.
/^From:.*@anywhere\.all/h:j
10.
/Re:/:j
This kills anything with 'Re:' in it. (This includes articles of the form 'Subject: X (Was Re: Y)'.)
If you just want to kill the direct followups, without the changes in subject, you have to make it clear where the Re: is in the line:
/^Subject: Re:/:j
11.
/^Newsgroups:.*[ ,]foo\.bar/h:j
This searches the header (the 'h' modifier) for any line containing the string 'Newsgroups:' (which all articles do), as well as the string 'foo.bar'. The other elements of this line are part of the regular expression meta-language; see the ed(1) man page for more details. (Note that all of them are necessary, particularly the '\' before the '.' in foo\.bar.)
This will also match a newsgroup of foo.bar.misc; to fix it, you'd need to use some of the other techniques, described below, for unmarking things you wanted to see that were killed by other commands.
12.
/^Newsgroups:.*,/h:jto kill all crossposts.
13.
/^From:.*name of person you want to read/h:m
So, if you suddenly decided you wanted to read noone@anywhere.all's postings, after having deleted them above, you would add this line:
/^From:.*noone@anywhere\.all/h:m
The 'm' becomes useful suddenly. You can substitute m for j any time you need to, in any of the commands already discussed. In fact, you can kill everything in a newsgroup and only read what you want to read by using the 'm' feature, and putting this line at the top of your KILL file:
/^/:j
This method has a problem, though. Specifically, it marks even those you've already read (really read, not just marked as read) as unread. So, there's another way to do it:
/pattern/:=:M
(check the rn(1) man page for the M command). This lists all the subjects of the new articles, and then gives those articles to the M command. (You then have to type 'Y' after the M command has finished.) (For more complete information, see the example in the 'Comments and credits' section.)
14.
/<pattern>/a:j
Subject: 15
15.
One of the additions to trn is the f modifier, meaning the From: line. This line gets used so much it seemed appropriate to add a modifier in specifically for it.
So, now, killing or marking articles can be done on the basis of the From: line quite easily, now:
/noone@anywhere\.all/f:j /noone@anywhere\.all/f:mIt looks just like the Subject: line, except with the addition of the 'f' in the modifier position.
16.
Yup. You do it in essentially the same way, but you replace the :=:M with :+, like this:
/noone@anywhere\.all/f:+
17.
<879387.message.id@some.site.name> T+
You can also use 'T+' on a search command, if for instance you wish to select a thread that starts with a particular subject and keep on seleting it even if the subject changes:
/test/:T+
18.
You can also use 'Tj' on a search command, if you wish to kill a particular subject and all associated subjects in the thread:
/test/:Tj
19.
20.
/string to junk/Hheader:j
That is, the modifier becomes 'Hreferences' or 'Hpath' or whatever header it is you want to search.
An example is crossposts from a particular newsgroup:
/foo\.bar/Hnewsgroups:jor from all newsgroups:
/,/Hnewsgroups:jUsing this syntax will be faster than the method used in rn to find a particular header, as well as simplifying the necessary pattern.
Subject: 21
21.
/noone@anywhere\.all/f:jAny of the other commands will also work.
22.
Killfiles and trn are both described in the trn(1) man page. Some sites may not have this installed; if not, please see your local support staff to see if it is possible to get it installed.
A post has been written about trn; occasionally the author posts pointers to the ftp location in news.software.readers. This is recommended for people new to using trn.
For any of the trn extensions, it is highly recommended that you check the man page on your system. They weren't added until version 3.0, most of them; some weren't added until later. If you have an earlier version, you should see if an upgrade is possible.
23.
Minor administrative note to the suggestors: Several people have suggested that, in junking all of the articles and then marking only the desirable ones to read, you need to use the 'r' modifier (search read articles as well as unread). According to the man page, you don't need that; if 'm' is the first command, the 'r' is assumed.
Example of killing all articles, and then unkilling those for a specific topic or person (this example was provided by David W. Tamkin, dattier@gagme.chi.il.us):
Let's say that your kill file has processed through article 1000 and there are nine new articles now. You have a kill file that looks like this:
THRU 1000 /bear/:=:M /^/j
Note the use of :=:M instead of m.
Now, articles 1002, 1003, and 1006 have "bear" in their subjects. The = operator in /bear/:=:M will allow rn to use that line only on unread articles. Thus, 1002, 1003, and 1006 get marked for return. Next, /^/j junks all articles from 1001-1009.
Then you type Y (yank articles Marked for return). Alternatively, if you do leave the newsgroup and come back to it, your kill file now looks like this:
THRU 1009 /bear/:=:M /^/j
Because the kill file has already operated on articles 1-1009, it will not run = (and thus it won't get to the M) nor j on 1002, 1003, and 1006. You can hit <space> or y and start reading them.
Without the :=: trick, M or m will operate on all articles, read or unread.
Additions to the example, for trn 3.x:
The rn example uses:
THRU 1009 /bear/:=:M /^/j
While this works in later versions of trn 3.x, the best way to do this in trn 3.x is to put the following into your kill file:
/bear/:+ *X
The '*X' command kills all non-selected articles in the group.
In rn, M and m both work on both read and unread articles. This is not true in trn 3.x, for M: it only works on unread articles. What this _means_ is that, when using the :=:M trick, you can actually remove the :=:, and just use the M.
Leanne Phillips