It's been two months since I looked at this thread. FWIW your
suggestion of "!ignore Subject {^GMT}" never did work as today's
weather report "GMT Monday 6th September 2021" popped up as ever.
Only the day changes :(
You have to be careful where you define filters. There is the global
section that will apply a filter across all newsgroups. There can be
newsgroup sections that apply a filter on only 1, or a few, newsgroups.
That is, you can decide if a filter is global, or newsgroup(s) specific.
In your list of filters, how many lines are of the format (starting in
column 1):
[<newsgroup>[ <newsgroup[ ...]]]
newsgroup can be a specific newsgroup name, or can contain masking
characters. Multiple newsgroups (as a specific name or masked) to
delineate a section of filters are separated by a space.
[*]
filter1
[news.software.reader]
filter2
[alt.comp.computer alt.comp.hardware]
filter3
[*]
filter4
Filter1 will get applied to messages in all newsgroups. Filter2 gets
applied against messages only in the news.software.reader newsgroup.
Filter3 applies only within the alt.comp.computer and alt.com.hardware
newsgroups. Filter4 applies against all messages. Seems you could put
filter4 at the top in the global newsgroup mask, but sometimes for
organization of messages you want some rules separated. I do that at
the end to detect messages in *.test newsgroups only from me (I
ignore-flag all other messages), so I don't have to look at all the
other test messages from other posters. I also place rules trying to
detect someone forging as myself at the end, but want the rule applied
to all newsgroups. The [newsgroup] delineates under which newsgroup(s)
a filter is applied. When viewing your filters, how many lines are
there that identify the newsgroup range?
To test if a regex will work, Dialog has its own regex tester. You can
access it when viewing filters, or use Help -> Regular expression
tester. I just opened the tester dialog and entered:
Regular expression: ^GMT\b
Match on: GMT Monday 6th September 2021
and it worked. The \b tests on a word boundary, like whitespace or a
newline following the "GMT" string. "GMTARK" won't match, but "GMT "
will. The ^ anchors the string to the start of the line (column 1).
"GMT " will match, but " GMT" will not. However, ^\s*GMT\b would
match on " GMT ", because \s* tests on zero, or more, leading
whitespace characters. Use the regex tester to check if your regex is
valid, and will match on the string you expect.
Also, my rule sets the Ignore flag on the matching article. It does not
Delete the message. If you ignore-flag messages, they will still
appear, but with the Ignore flag alongside. Watch and Ignore flags are
just flags. They alone don't make messages disappear. You should be
using a view that hides ignore-flagged messages; else, all you're doing
is flagging the messages, but you'll still seeing them. If you're not
going to use a view to hide ignore-flagged messages, then maybe you
should delete them instead.
Use the Group -> Message Views menu. You'll see a list of pre-defined
views. The one that I have (but this is long after I've customized this
view list) are:
1 - All messages Ctrl+F1
2 - Watched messages Ctrl+F2
3 - Unread non-ignored messages Ctrl+F3
4 - Unread messages with bodies Ctrl+F4
5 - Messages with bodies Ctrl+F5
6 - Hide ignored messages (*) Ctrl+F6
7 -
8 -
9 -
10 -
^___ view name ^___ key combo
^___ view index
(*) My default choice since I ignore instead of delete.
At the bottom of that menu is Manage Views that lets you name the views,
select the attributes of a view, and in which index (slot) the view is
defined. I don't know if Hide Ignored Messages is a view that is
pre-defined, or one that I added, which is:
Name = Hide Ignored Messages
Attributes:
- Not ignored
This view will show not ignored messages (those without the Ignore
flag). This will hide the ignore-flagged messages.
You can either use the menu navigation to change views, or use the
Ctrl+Fn key combo to switch views. I prefer not having to memorize key
combos (that are unique to a program versus those that are common across
most apps), or wade into menus, so I customize the header list pane's
toolbar by adding the following buttons:
Hide Ignored Messages
Show Watched Messages
Show Unread Messages
Show All Messages
Right-click on the toolbar to configure it. For me, I click Group for
the category of the button (remember the views are under the Group
menu), select the view by its index (since that is fixed, not the name
of the view which you can change) which, for me, is view 6 to hide
ignored messages, and drag the View 6 entry up to the toolbar. If you
change the order of views under Manage Views, their index changes. I
think I added Hide Ignored Messages as view 6, because that was
undefined at the time, and I didn't want to change the view indexes of
the pre-defined views. I created the 4 toolbar buttons in the header
list pane. That lets me simply click on toolbar buttons to change the
view.
The problem with deleting messages is that replies to will show up as
new threads. You deleting the original message, but not the replies to
them. If you don't want to see a message, likely you also do not want
to see any replies to them. Delete won't do that. Ignore will let you
do that, but only if you set Dialog to apply the ignore flag to a
message, AND all replies to the message. In the menu:
Settings -> General settings -> Misc
Watch/Ignore works on subthreads
Notice only the watch or ignore flags get propagated to child posts
(subthreads), not the delete (no such flag, just an action). If you
ignore a message, and enable this option, your filter ignore-flagged the
mesage, and the option will apply the ignore flag to all subthreads of
that message. However, unless you use a view to hide ignored messages,
you will still see them, but showing the Ignore flag (if you still have
the Watch/Ignore column displayed).
Also, filters work only on ASCII characters. It is possible to use
UTF-8, or other non-English languages, to encode the Subject (and From)
headers. This allows users to include characters outside the ASCII
charset. Could be Chinese, Italian, or other non-English languages used
for the strings, and those need to get encoded, so the reader's client
will show the decoded string rather than garbage characters.
The client will show you the decoded string in the header when viewing a
message, but if you look at the raw source of the message you might see:
Subject: =?<charset>?<encoding>?<encodedstring>?=
<charset> is the character set used to encode the <encodedstring> using
the <encoding> method. <charset> could be UTF-8, GB2312, or something
else. <encoding> is either B or Q: B for Base64 encoding of the
<encodedstring>, or Q for Quoted-Printable encoding. Not sure what Q
does since B (Base64) is what I've always seen used. You might be
testing on a string in Subject, but you won't find that string in the
header when you look at the raw source of the message.
Alas, I've found trying to get filters to test on the header value by
specifying the encode string doesn't work. The client converts the
string to something presentable to you when you're reading the message,
but that's not the actual value of the header. I've tried testing on
the encoding syntax used in a header, even accounting for escaping any
special characters that would otherwise be interpreted by the regex
parser as regex operators, and it's iffy if Dialog can test on an
encoded header.
When viewing the message, change to the "Raw message" view to see what
is the header's actual value. What you see in the viewing pane may not
be the actual value in the message.