i have multiple feature suggestions, so i'm just consolidating them into one post. i've been mirc scripting for multiple years, so i feel these are well thought out. so if you feel something may already be available, look again and make sure you haven't misunderstood the specific nature of my feature request. thanks

1) /set or /var -long. in c you can have "long" variables, which basically means they allocate more memory to that specific one. i know most of you probably know this, but that was for the newbs. why binary variables are not acceptable is their difficulty to use in many situations. they also still cause line too long errors. i realize it would be in a word challenging to write everything in mirc to support it, so my suggestion is to allow "var -long" and allow "right", "left", "len", and "gettok" to work on long variables. this would allow us to have enough text manipulation freedom that we could use normal variables for the remainder of the script. -- of course, remember, these types of variables would have a length limit as well, but just not as small as the current ones. i don't know how variables in mirc are stored, so i don't know the exact length possible.

(continuation) /sockread -long for being able to read a socket into a long variable. again, remember that long variables would [likely] not be compatible with everything, so people would need to use /sockread -long with care.

2) i already suggested this before, just adding it for the sake of being all-inclusive. it would be nice to be able to use $1(text goes here) as a shorter form of gettok. it would assume the token type is either 32, or the token type which was specified via the /tokenize command.

3) alias -r. recursion has been intentionally removed from mirc for a while now, and for the right reasons. it's not normally a good idea to have an alias call itself, especially if used in the wrong hands. on the other hand though, recursion is a very powerful tool. it can sometimes be the only way to efficiently perform tasks. adding the flag -r would just simply allow recursion. for the newbs: recursion is when a program executes itself. for example /alias test { echo -a Testing Recursion | test }. the sample script would execute "echo -a Testing recursion" and then just execute itself, which would echo testing recursion and then call itself again, etc... indefinitely. of course, in the example it's quite useless, but in more advanced functions the ability to use recursion can be an excellent tool.

4) /sleep. if any code in mirc calls /sleep, it should allow other parts of mirc to continue like normal, but "sleep" the current execution stack X amount of time (usually represented in milliseconds). this would allow certain aliases and functions to be called without using 100% cpu. some may argue that we have whilefix.dll that works perfectly, and that's quite true, however, whilefix does not call the true sleep command, so even though you can function like normal with a large while loop going on, it is always going to take 100% cpu. some tasks do not require 100% cpu, and are just nice to have on the occasion. timers, also, do not have the same power over script execution that a sleep command would (though one may argue that they can be used in order to overcome this problem, i will agree, but usually not easily).

5) stack tracing for debugging. i am 99% sure that's improper terminology, but basically this is what i'm looking for:

on *:text:!test*:#channel: {
test1 $2-
}
alias test1 {
test2 $1-
}
alias test2 {
test3 $1-
}
alias test3 {
echo -a $stack
}

that would return something to the effect of:

on *:text:!test*:#channel: <--- test1 <--- test2 <--- test3

i've never written an interpreted language, but i would imagine this data would have to be known to process it properly anyway, so it may be an easy implementation. the stack would be very much so an excellent feature when aliases call aliases that call aliases. it can become very tedious manually back tracing it.

6) /strictcharacters (on/off). perhaps make this an option in mirc.ini, settable in an advanced section of the mirc options. basically, what i want to do is able to turn strict characters on or off in mirc. right now, mirc's behavior would be like strictcharacters being off. as some of us know, in programming languages such as C/C++, no 2 characters are treated differently. the same can be said for many programming languages, even interpreted ones. strings in mirc, however, are not all treated alike. many times mirc will remove leading and trailing spaces, or will sometimes [namely, in the echo command] remove repeated whitespace. a non-breaking space is not always the right answer (especially since in some fonts it actually does not even show up as a space). being able to toggle strict spacing on or off, or get its current status. this will allow for coders who want to implement the new feature to be able to do it without ruining pre-existing scripts. also, while enabled, it might not be too bad of an idea to make the token identifiers such as gettok, numtok, etc. work on a much more specific level. therefore, something that looks like test [3 spaces] test would have the first 32 delimited token as test, the second as null, the third as null, the 4th as null, and the 5th as test. this type of behavior is usually not desired, so it might even be a better idea to make new identifier names, or props to the existing identifiers to act in this way [regardless of the status of the 'strictcharacters' setting].

thanks for reading my suggestions. like i said, each of them are things i've thought about for a long time, so please don't discount this as some guy got a spur of the moment idea and rushed to the feature suggestion board to get it down before he forgot what it was. i know i'm gonna get flamed, but hey, every mirc scripter should have a high tolerance for flames :P

edited: some dumb typo's and such