Subject: CVS commit: pkgsrc/chat/epic4
From: Thomas Klausner
Date: 2005-04-04 10:56:54
Message id: 20050404085654.F29FF2DA27@cvs.netbsd.org

Log Message:
Update to 2.2. Changes:
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.

Files:
RevisionActionfile
1.25modifypkgsrc/chat/epic4/Makefile
1.7modifypkgsrc/chat/epic4/PLIST
1.9modifypkgsrc/chat/epic4/distinfo