[EPIC] Request for discussion: doubly quoted words

2006-09-06 Thread Stanislaw Halik
Hello,

I want to discuss doubly quoted words. As you know, words quoted inside
of  aren't a special case in the parser, they're just literal s
embedded inside strings.

However, that introduces several deficencies present only by virtue of
having dwords.

No /fe and /for, nor any word-related function except numwords() are
safe for unvalidated data. One might say that these aren't safe for
unvalidated data, but is there any other use for them? Iterating strings
hardcoded in the script?

If you, for instance, store channel ban lists in a word list and a ban
starts with a `' (i.e. [EMAIL PROTECTED]) and another one ends with a `', 
too,
when iterating words in the list with /fe or word(), you'll get an
element that contains more than one word.

Same goes for Tab completion. $numwords() doesn't honor doubly quoted
words while word() et al honor them.

There are possibly many other situations where dwords aren't expected
and will cause surprises to unsuspecting scripters.

My proposals (mutually exclusive):

a) Remove dwords from builtin functions and commands completely. This
   will set the end of dword pestilence (aka quoting hell), but will
   make some people unhappy. I counter by saying that there are other
   methods for storing multiword data (e.g. structures, karll's arrays),
   but in the current state, dwords, being an edge case, cause word
   functions to be unusable.

b) Introduce a way for a function or a command to not honor them at all,
   nested functions inheriting this property. For example:

   /`fe (foo fine dword bar) i { echo $i; };

   yielding:

   fine
   dword
   bar

   As opposed to:

   /fe (foo fine dword bar) i { echo $i; };

   yielding:

   fine dword
   bar

   I recommend the ` character, as it isn't used as an operator in the
   Expression Mode.

Objections? Consent?

- nullie
___
List mailing list
List@epicsol.org
http://epicsol.org/mailman/listinfo/list


Re: [EPIC] (important discussion) privmsg in response to a privmsg

2005-08-24 Thread Stanislaw Halik
Jeremy Nelson [EMAIL PROTECTED] wrote:

 Since time immemorial, when you are inside of an /on caused by a privmsg
 (/on msg, /on public*, /on ctcp, etc) and you try to send a PRIVMSG (/msg,
 /ctcp, /redirect, etc), ircII has always (silently) changed it into a NOTICE.

 EPIC maintains backwards compatability with ircII in this regard, and changes
 your PRIVMSGs to NOTICEs because avoiding accidental message loops is one of
 the responsibilities a client has.

While browsing EPIC's home site I found a notice stating that the client's
goal is to be more feature-rich while still getting less bloated and overly
complicated. Same with that you're just giving tools, as you stated, not the
whole product. I may not see any reason for replying to PRIVMSG with another
PRIVMSG, but this may cause confusion among ones, who create well-thought
innovations by scripting. It's not your responsibility for one's bad
creation, you're just giving the tool, ie. the knife. You got the picture.

If I were you, I would just remove the code (along with the one preventing
replying to NOTICEs) and wash my hands. But it's up to you.

regards,

-- 
Stanisław Halik :: http://weirdo.ltd.pl
 
___
List mailing list
List@epicsol.org
http://epicsol.org/mailman/listinfo/list


Re: [EPIC] About changing /exec -out to use /send instead of /say

2005-08-06 Thread Stanislaw Halik
On Thu, 2005-08-04 at 10:26 -0400, Ben Winslow [EMAIL PROTECTED] wrote:
 Personally, I think you're not really gaining anything by doing this, but
 you are losing something in breaking backwards compatibility.  Consider
 that, if you currently want to send /exec to the person you're talking to
 in a query, you need to do /exec -m querydestination; with the change,
 if you were talking in a query and wanted output to go to the channel,
 you'd have to do /exec -m channel instead of /exec -o.  Basically, I
 don't see any net in making the change.

it's working more untuitively in all other `major' clients.

i know many users who think of epic as a really backward client, coders
should try and eliminate all not-so-well-thought features and core
functionalities, so more people would consider using epic as a good
alternative to irssi or xchat. introducing nonblocking connect() calls was a
good idea, but there are many more which may discourage new users and
scripters. IMHO it's a good approach to change old and unuseful behaviour in
development branch. if it's going to include a change which will break each
and every script, making the language in overall more feature-rich and
intuitive, it's not really bad.

-- 
Stanisław Halik :: http://weirdo.ltd.pl
 
___
List mailing list
List@epicsol.org
http://epicsol.org/mailman/listinfo/list


[EPIC] proposal regarding notify_name

2005-08-04 Thread Stanislaw Halik
hello,

it's my first post, i wanted to share opinions on how to make notify_name
more generally useful and how to make it provide the same (or better)
functionality as other irc clients, like irssi.

irssi, mirc and other clients use different activity levels for CRAP events
(kick, join and such), public message, private message and/or hilight.

storing them in user-made structure would be extremely painful, as
notify_name is a property of a window, user would have to track all window
number changes, /window kills and more.

it's good for the user to distinguish between crap activity level and
hilight, in which the latter is more important.

i think that activity levels should be kept inside the window struct itself,
sticking to it after /window number, and automagically dissapearing after window
kill. i think of it this way:

multiple activity levels with ability to set a different format to each one
of it, for example, four activity level, with 0 being the 'null' format,
making it dissapear from %{1}F.

/set act_level_1 winchan($*) != [] ? [$*:$winchan($*)] : winquery($*) != [] ? 
[$*:winquery($*)] : [$*]

additional levels would have different colors, or bold text, or even
different formatting, as the scripter wishes

with the interface to it being:

@ actctl($winnum($chan) SET num)

and 

@ actctl($winnum($chan) GET), which would return the value, so user wouldn't
risk overwriting higher level of activity, if he doesn't wish so.

i think it would come in handy to many scripters, as sometimes it's hard to
distinguish between windows with `hilight' messages and ones in which just a
CRAP event occured

and one more thing, act_level_num should behave just like input_prompt,
allowing tertiary operators, as in my example

refnum and refnum alone is the only thing that's really needed for getting
properties of a window, using tertiary operators it shouldn't get too
complicated and (imho) it would be enough for useful things

what do you think about the whole idea? maybe notify_name is good as it is,
maybe creating custom structures of levels isn't a bad idea after all, or
having different activity levels isn't worth coding required to apply it? or
even if it's indeed a good approach, should anything be changed to be more
flexible, intuitive?

regards

-- 
Stanisław Halik :: http://weirdo.ltd.pl
 
___
List mailing list
List@epicsol.org
http://epicsol.org/mailman/listinfo/list