|
EPIC4-2.2
*** News -- 11/09/2004 -- Changes to way spaces are handled *** IMPORTANT ***
Up until this point, the technical definition of what is a "space"
(the term used for an Internal Field Separator (IFS), that is, the
thing that separates one word from another word)
EPIC has always had three sets of IFSs
1) Character 32 only ("space")
2) Characters 9, 10, 11, 12, 13, and 32 ("my_isspace()")
3) Whatever your locale says is a space ("isspace")
In the C locale (the default for unix users), sets #2 and #3 are
exactly the same. I don't know about other locales.
Now we are going to only use set #3. Changing Set #2 to Set #3 is
easy, and nobody should notice any difference there. The one that
is going to cause pain is Set #1. Consider this situation:
One<tab>Two
Is this one word, or two words? In some places in epic, it is one
word, and in other places it is two words. As a result of this
change, it will now always be two words every place.
Here is a list of the places that were using Set #1 that will change
to use Set #3, and you should be on the lookout for changes!
*) /AWAY separated the end of its flags with spaces.
This means
/AWAY -ALL<tab>Hi there!
will now work properly.
*) $pop(....) removes the last word from the argument list.
Whereas $pop(one two<tab>three) used to return "two<tab>three"
is will now only return "three"
*) Commands are separated from the argument list by a "space".
Whereas
/one<tab>two blah blah blah
parsed "one<tab>two" as the command, now "one" is the command
and "two" is part of the argument list.
*) In expressions, a variable name may be separated from an
operator with a space. Whereas things like
@var<tab> =foo
might have failed because <tab> is not a valid character in
a variable name, it will now treat <tab> the same as a space.
*) Places that expect a number did not accept a string that contained
a <tab> so that things like
<tab><tab>9
was not accepted as a number. Now it will be.
*) The /IGNORE command used to consider a string containing a <tab>
to not be empty. This means that
/IGNORE <tab>
would not list the ignorance list, but rather would try to show
the ban value for an ignore matching <tab> which isn't reasonable.
*) The % wildcard pattern stopped matching only when it saw char 32.
Now it will stop whenever it seems a Set 3 type space.
So whereas before "%" matched "one<tab>two" now it won't,
because "one<tab>two" is two words, not one word.
*) In /xdebug extractw mode, tabs before or after double quotes were
not considered to start or end a double quoted word. So previously
this string:
one <tab>"two three" four
contained four words, because the <tab> before "two nullified
the double quoting. Now that <tab> is treated like any other
space, the above word has three words, not four.
Places that use Set 1 and will NOT be changing to Set 3, because
they are parsing IRC protocol data, which stipulates that the IFS
MUST be a space solely:
*) CTCP requests and replies are formatted only with spaces
*) Words in protocol messages are separated only with spaces
*** News -- 11/09/2004 -- You may now mangle ALT_CHAR characters
And ALT_CHAR mangling is included in ALL. This was an oversight
that was fixed in epic5.
*** News -- 11/02/2004 -- Mangling "ALL,-BOLD" no longer mangles "ALL_OFF"
In general, if you use ANSI (ALL includes ANSI), the mangled string
has its six attributes (COLOR, REVERSE, UNDERLINE, BOLD, BLINK,
ALT_CHAR) rewritten into canonical form. This will add some ALL_OFFs
to your string that weren't there originally. So if you strip all of
the attributes (as ALL does), then epic will strip ALL_OFF off as well.
This retains backwards compatability with ALL.
But if you use ANSI and don't want to strip all 6 of the attributes,
then it's important that ALL_OFFs are not removed, otherwise your
string will not appear as it should (the ANSInator uses ALL_OFFs to
turn off attributes). So EPIC automatically will not strip ALL_OFFs
if you use ANSI and do not mangle one of the 6 attributes.
Examples:
$stripcrap(ALL this is ^B^_bold underline^_ not bold)
will strip everything as it has always done.
$stripcrap(ALL,-BOLD this is ^B^_bold underline^_^B not bold)
will strip everything but not bold and all_offs, because if all_offs
are stripped, then "not bold" will be in bold!
The entire point of this is to allow /set mangle_logfile ALL to
work the way it has always worked, and $stripcrap(ALL,-BOLD ...)
to work the way it *should* work.
*** News -- 10/06/2004 -- Support for +e and +I numerics from efnet
EFNet has +e and +I channel modes, which act like +b does.
These numerics are now handled by epic like +b is.
*** News -- 10/06/2004 -- New status bar expandos, %{2}W and %{3}W
These two new expandos expand to the same value as %W.
%W Expands on each input window on each screen that has
two or more visible windows.
%{2}W Expands on all visible windows on all screens.
%{3}W Expands on each input window on each screen, even on
screens that have only one visible window.
*** News -- 10/06/2004 -- Support for ircnet's "numeric nick" feature
On ircnet, each user is given a unique numeric identifier, which
is their one true nickname. In addition to this numeric id, they
can have a rfc1459 nickname, but they are not required to have one.
Further, the special numeric id 0 is reserved and refers to the
user's own numeric id. EPIC now fully supports all of this,
particularly in the following ways:
/NICK <unique id>
/NICK 0
To turn off your rfc1459 nickname.
$serverctl(GET <refnum> UNIQUE_ID)
$serverctl(SET <refnum> UNIQUE_ID)
To retrieve and change your unique nickname.
Changing your unique id is probably a bad idea.
/USERHOST <unique id>
You may USERHOST unique id's now.
'epic 0'
You may now use the nickname 0 on the epic command
line if you don't want to use an rfc1459 nickname
on an ircnet server.
Using unique numeric id's on non-ircnet servers is probably
fraught with peril. Try to avoid that.
*** News -- 10/06/2004 -- /SET INDENT maxes out at 1/3 screen width
Previously, if you did /set indent on, and the width of the
first word on the first line was > 1/3 of the screen's width,
then the second (and subsequent) lines were not indented at all.
This was the historical ircII behavior. It seems more sensible
to cap the indent level at 1/3 of the screen's width and indent
it to there.
EPIC4-2.0
*** News -- 02/03/2004 -- ERASE_LINE behavior slightly modified
The ERASE_LINE input function has been modified to not overwrite the
input buffer when it is called on an empty input line.
EPIC4-1.2.9
*** News -- 01/25/2004 -- Slight changes to /ON SSL_SERVER_CERT
|Rain| pointed out that /ON SSL_SERVER_CERT was not terribly useful
because $1 (cert subject) and $2 (cert issuer) could contain spaces,
and so you couldn't really use $1 and $2 to fetch them. He proposed
that we hook a url-encoded version of the subject and issuer (so they
won't contain any spaces) and you can use $urldecode($1) to get the
subject and $urldecode($2) to get the issuer.
EPIC4-1.2.7
*** News -- 01/18/2004 -- New functions $cofilter() and $corfilter().
These are compliments of $copattern().
*** News -- 12/27/2003 -- New $dccctl() modes.
Added $dccctl(get [ref] writable) and $dccctl(writables). This is
useful for sending lots of data out on a raw or chat dcc. Epic will
(iirc) normally drop the data in such cases rather than blocking or
buffering. This isn't a complete solution. Writable means that a
certain amount of data can be written, so data can still be lost.
*** News -- 12/27/2003 -- Added /SET DCC_DEQUOTE_FILENAMES
This turns the double quoted space decoding feature added recently for
received DCC SEND requests on and off.
*** News -- 12/27/2003 -- $rest() also removes chars from the right.
Using a negative first arg causes $rest() to strip chars from the right
hand side of the string. This makes it a compliment to $right() as
well as $left(), but if a script relies on it returning the original
string the way it did before, it may now cause compatibility problems.
If it does, talk to CrazyEddy on #epic efnet.
*** News -- 12/27/2003 -- Added $splicec() in functions script.
This works much the same way as $splice(), but on characters, not
words. It won't work seemlessly on local vars though.
EPIC4-1.2.5
*** News -- 12/13/2003 -- Default of AUTO_REJOIN is now OFF
Per the poll taken on the epic mailing list, the preponderance of
opinion being in favor of changing the default value of AUTO_REJOIN
to OFF, as of commit 672, the default value is changed. You will
want to put /SET AUTO_REJOIN ON in your ~/.epicrc to get the old
value.
*** News -- 12/11/2003 -- Command parser ignores spaces after semicolons
Since the dawn of the modern ircII syntax, the following syntax
has caused consternation with scripters:
/eval {two; three}
because it runs the /two alias, and then outputs the text "three"
to the current target (channel-or-query). This is because the
command parser does not ignore spaces after semicolons; a leading
space results in ircII assuming you are wanting to run the empty
command (yes, there is actually an empty command), which just
happens to be the /say command. Well, enough is enough. I'm
putting a stop to this. If you depend on this horrifically broken
behavior, then the time has come to switch to using /SAY. The
rest of us will enjoy not having to freak out about spaces after
semicolons.
*** News -- 12/11/2003 -- New /WINDOW verb, /WINDOW SCROLLADJ [ON|OFF]
When the default value of ON is used, when you "GROW" a window,
or otherwise cause the size of a window to be increased, the top
of the scrollable view is moved back so you can see more of the
lines that have recently scrolled off the screen. If you change
this to OFF, the behavior is more like ircII, where when something
scrolls off the window, nothing will bring it back unless you go
into scrollback mode.
*** News -- 12/11/2003 -- New /ON, /ON WINDOW_BEFOREKILL
The value of $* is the window refnum (number) of the window that
is about to be killed. You cannot stop the kill from happening,
but you do get this opportunity to save any information about the
window that you might want. *DANGER*DANGER*DANGER* EPIC does not
try to stop you from doing something really dumb in this /ON, and
if you try to change the window being killed, or you affect the
visibility or invisibility of any window, you run the definite chance
of confusing EPIC and causing a panic. This is not a bug, this is
just your peril if you ignore this warning. Use /DEFER to run
commands safely from within /ONs.
EPIC4-1.2.3
*** News -- 12/05/2003 -- New built in function $numlines() (fudd)
The first argument to $numlines() is the width of a line (which you
can get from $geom() if you want to use that), and the rest of the
text is some text. The return value is the number of screen lines
that will be taken up if you were to /echo the text to a window of
the given number of columns.
*** News -- 12/03/2003 -- New command line arguments, -o and -O
POSIX termios allowed systems to define "extended characters" (IEXTEN)
which are interpreted by the kernel and are not passed onto the
application. In 4.4BSD in particular, these "extended characters"
are ^V and ^O. This means that by default, you cannot use these
two characters in a binding. By using the -o option, you ask
EPIC to specifically turn these extended characters on, and by
using the -O option, you ask epic to specifically turn these
extended characters OFF. If you do not specify either option,
epic does not change the current default value.
EPIC4-1.2.2
*** News -- 12/03/2003 -- New /WINDOW verb, /WINDOW SWAPPABLE [ON|OFF]
You may now control whether your windows are "swappable". The
default (backwards-compatable) value is ON. If you set this to
OFF on a visible window, then that visible window cannot be made
hidden, via /WINDOW HIDE or /WINDOW SWAP. If you set this to OFF
on a hidden window, then that hidden window cannot be made visible,
via /WINDOW SHOW, /WINDOW SWAP, /WINDOW BACK or /WINDOW NEXT. You
must reset this value back to ON before you try to swap the window
back in or out.
*** News -- 12/03/2003 -- New /SET, /SET STATUS_NOSWAP
Whenever a window has /WINDOW SWAPPABLE OFF, the %{1}W status expando
will expand to the value of this /SET
*** News -- 12/03/2003 -- SWAPPABLE accessable via $windowctl()
You can now $windowctl(GET <refnum> SWAPPABLE) to get the window
<refnum>'s current swappable status.
|