I dont know, how many people use this tool, but I use it. So far, I like it the most from the different extentions I used (a VERY big + being the "test" button, which lets me test code just as fast as coding within the editor, almost any other editor or language extention or whatever requires me to inject the code myself or c&p it to my map, which is simply not acceptable for me and my constant use of the test button).
Also I like, that I can give feedback and bug reports and you instantly react to it.
Your language extention might be inferior to some of the other options, but I do not care THAT much right now. All of them are far from perfect at the moment anyway, and I expect all of the options including yours to evolve massively over time (for at least a couple of years, until some sort of standard is established, and if you keep up the support)
Autocompletion does not work correctly in initializers. It does not show functions to call, if not setting a variable or something.
For very long functions, Autocompletion cannot display all parameters, and there seems to be no way to scroll or see the rest of the parameters somehow.
Writing a ":" (for example within a string) causes a line to lose its intendation.
When selecting autocompletion stuff with arrowkeys, the list does not scroll automatically, so you either need to use the mouse or select blind.
Writing
/**//
caused a "System.OutOfMemoryException" and crashed + deleted? the file it was in (luckily it was empty)
Autocompletion stops working sometimes, could not reproduce it yet.
Still missing undo badly
Search and Replace do sometimes miss occurences of the entered word.
The function
libCamp_gf_SetDialogItemSizeInGrid(int dialogitem,playergroup p,int weight,int hight);
is accepted by your editor, but causes a syntax error in the galaxy editor.
Autocompletion does not work in a line with a return.
400 lines in one file is really slow already. Not sure, if there should be any convention to not create that huge files, but 400 lines is not that much imo... (just 1 dialog with some options)
un-intending multiple lines by pressing CTRL + Tab results in an unhandled exception
Maybe add some kind of "compiling completed, no errors found" - message.
A BankList.xml file is created, even when not using BankPreload
400 lines in one file is really slow already. Not sure, if there should be any convention to not create that huge files, but 400 lines is not that much imo... (just 1 dialog with some options)
I'll try to look into it.. It's a little difficult, since I don't really notice it on my system, but there is probably more optimizations I can do. Does the slowdown happen at specific input, or is it on each keystroke? Is it perhaps only when the suggestion box is shown?
A BankList.xml file is created, even when not using BankPreload
That is because the file needs to be overwritten even if you didn't make any preloads, since there might be some in the map already.. Which means that the BankPreload file IS part of the output that is going to be put into the map, so...
I'll try to look into it.. It's a little difficult, since I don't really notice it on my system, but there is probably more optimizations I can do. Does the slowdown happen at specific input, or is it on each keystroke? Is it perhaps only when the suggestion box is shown?
For each key, yes. Worse with the suggestion box, but noticeable without, as well.
\ in strings should skip the next sign, this should be a valid string:
Yeah, I know that the coloring function is a bit messed up.. I got a redesign for it planned. It shouldn't be a problem for the actual compiler though.
I would like, if code folding is saved, so the folding for the project is restored, when you load it. Also buttons for fold all and unfold all would be nice.
Maybe you could also add some sort of "smart fold" which folds everything below the layer of your cursor or something.
The compiler now properly shows the suggestion box after a return.
The compiler now gives an error if a local variable is used before it is declared.
The compiler now gives an error if two locals of the same name is created within the same scope.
I hope that solves your slowdown problems.
I got a bad feeling about bugs in this one - I have done some changes which might have ramifications in seemingly unrelated parts of the code, so as always - save often and make backups ;).
The editor now crashes when trying to compile my script.
€ any of my scripts, apparently o_0
€€ not any, but multiple ones.
I attached the map with the least amount of script for you (its my texture swap textmap, so its public anyway ;) )
Quote:
I got a bad feeling about bugs in this one - I have done some changes which might have ramifications in seemingly unrelated parts of the code, so as always - save often and make backups ;).
Did you do this for a speed up? Don't sacrifice stability for speed. I am fine with it being a little slower but stable.
Well, actually that crash was unrelated to the speed optimization.. I just suck at making test cases it seems.. I fixed it an uploaded a new version.
Something like that really shouldn't happen. I'll do my best to make sure it won't happen again.
Added a status bar
Fixed a crash that occurred when referencing a local inside an if (sry :( - I should have caught this before release.)
I have been thinking about implementing dynamic types..
Im thinking something like c++ with pointers, but since you guy(s) will probably use it more than me.. what do you think?
//Struct typesFoo*foo;if(foo==null)foo=newFoo();foo.bar=2;//c++ uses -> rather than . for pointers. It's not really needed here though.deletefoo;//Pointers to pointers?Foo**bar;//I can't think of any useful applications for this. It's possible in c++, but is it needed here?*bar.bar=2;//If we start down this road, -> is probably better.. or **bar.bar//Arraysstring[]strings=newstring[8];deletestrings;//c++ use delete[] for arrays. it's not really needed here though.//Arrays of pointersFoo*[]fooAr=newFoo*[2];fooAr[1]=foo;//I can think of applications for this.int[]intAr=newint[10];int[8]normalIntAr=intAr;//What to do here? copy the 1st 8? give an error?//Convert pointer to regularFoo*foo1=newFoo();Foofoo2=foo1;//Implicit conversion (changes to foo2 will not change foo1). Another posibility is foo2 = *foo1, to make this more clear.//Convert regular to pointerfoo1=foo2;//Implicit conversion not good - a new element must be created (the user must be aware of it so he can delete it)foo1=newFoo(foo2);//Restricts the possibilities for constructorsfoo1=newFoo<foo2>;//Possible.. might look a bit wierd?foo1=&foo2;//Another possibility.. but it's not very clear that a new element is created.//Note, it doesn't make sense to get the address of a non-dynamic element. this is why a new dynamic element must be created when doing this.int*i=newint(2);//This is really also a conversion from regular to pointer. Should keep it the same syntax as above.string*s;if(s==null)//Disambiguation.. strings are nullable.. what if we want to check if the actual string is null?if(*s==null)//Perhap
Im quite conflicted about the -> vs . notation. On one side it's probably not really needed, but on the other side, it sets dynamic types apart from regular ones(an extra reminder that there are something special here that must be deleted to avoid memory leaks).
Are this kind of functionality even needed or desired?
Are this kind of functionality even needed or desired?
I am not THAT deep into programming and stuff, I will probably not need all of those features; also I am not the guy you want to talk about the notation, I guess ;) (you did see my code, right? xD)
After all, its your decision to make, how your language extention should evolve. Take the direction, which feels the best for you; you will see, if people like it
Alright, then I think it should be something like this
//Struct typesFoo*foo;if(foo==null)foo=newFoo();foo->bar=2;//Or do this. either way works(*foo).bar=2;deletefoo;Foo**bar;(*bar)->bar=2;//Arraysstring[]strings=newstring[8];deletestrings;//I'm tempted to make this delete[] just to go closer to c++ for those familiar with that (if any)//Arrays of pointersFoo*[]fooAr=newFoo*[2];fooAr[1]=foo;int[]intAr=newint[10];int[8]normalIntAr=intAr;//Syntax error - must copy each element individually regardless of array sizes//Convert pointer to regularFoo*foo1=newFoo();Foofoo2=*foo1;//Convert regular to pointerfoo1=newFoo();*foo1=foo2;//So, make a new element and copy it into thatint*i=newint(2);//At least for primitives, I would like this syntaxint*i2;i2=i;//Set i2 to i. Changing i2 will change i, and vice versa*i2=*i;//Copy i to i2. Changing i2 will not change i1 or vice versa.string*s;if(s==null)//Check for if the pointer is nullif(*s==null)//Check for if the string is nullstrings2="foobar"+*s;//For consistency, one will need to do the star before the variable if they want the value
One problematic thing I have noticed is that I will have to check for array index out of bounds errors.. The way I see it, I will have to check it pretty much before every attempt to index it - might not be very efficient.
I dont know, how many people use this tool, but I use it. So far, I like it the most from the different extentions I used (a VERY big + being the "test" button, which lets me test code just as fast as coding within the editor, almost any other editor or language extention or whatever requires me to inject the code myself or c&p it to my map, which is simply not acceptable for me and my constant use of the test button).
Also I like, that I can give feedback and bug reports and you instantly react to it.
Your language extention might be inferior to some of the other options, but I do not care THAT much right now. All of them are far from perfect at the moment anyway, and I expect all of the options including yours to evolve massively over time (for at least a couple of years, until some sort of standard is established, and if you keep up the support)
Sometimes you cannot rename files in v1.7.0, throws an unhandled exception.
€ apparently, the file names in the edit boxes get set
€ seems to only throw an exception if the file is not opened
unhandled exception when missing a "}" and double-clicking the error message
if using CTRL + F once and the compilation fails due to an error, the next compile using F9 only causes Starcraft to launch
I would like to have support for bulk variable declaration, like this:
Autocompletion does not work correctly in initializers. It does not show functions to call, if not setting a variable or something.
For very long functions, Autocompletion cannot display all parameters, and there seems to be no way to scroll or see the rest of the parameters somehow.
Writing a ":" (for example within a string) causes a line to lose its intendation.
When selecting autocompletion stuff with arrowkeys, the list does not scroll automatically, so you either need to use the mouse or select blind.
Writing
caused a "System.OutOfMemoryException" and crashed + deleted? the file it was in (luckily it was empty)
Autocompletion stops working sometimes, could not reproduce it yet.
Still missing undo badly
Search and Replace do sometimes miss occurences of the entered word.
The function
libCamp_gf_SetDialogItemSizeInGrid(int dialogitem,playergroup p,int weight,int hight);
is accepted by your editor, but causes a syntax error in the galaxy editor.
Update to 1.7.1.. fixed some of the bugs you listed, and added a couple of features.
crashes the editor
trying to start the map a couple of times results in an unhandled exception: could not find the map or sth
@Kueken531: Go
this is LOL :D
http://www.youtube.com/user/RussianMapster
Autocompletion does not work in a line with a return.
400 lines in one file is really slow already. Not sure, if there should be any convention to not create that huge files, but 400 lines is not that much imo... (just 1 dialog with some options)
un-intending multiple lines by pressing CTRL + Tab results in an unhandled exception
Maybe add some kind of "compiling completed, no errors found" - message.
A BankList.xml file is created, even when not using BankPreload
I'll try to look into it.. It's a little difficult, since I don't really notice it on my system, but there is probably more optimizations I can do. Does the slowdown happen at specific input, or is it on each keystroke? Is it perhaps only when the suggestion box is shown?
That is because the file needs to be overwritten even if you didn't make any preloads, since there might be some in the map already.. Which means that the BankPreload file IS part of the output that is going to be put into the map, so...
For each key, yes. Worse with the suggestion box, but noticeable without, as well.
\ in strings should skip the next sign, this should be a valid string:
Yeah, I know that the coloring function is a bit messed up.. I got a redesign for it planned. It shouldn't be a problem for the actual compiler though.
I would like, if code folding is saved, so the folding for the project is restored, when you load it. Also buttons for fold all and unfold all would be nice.
Maybe you could also add some sort of "smart fold" which folds everything below the layer of your cursor or something.
I uploaded a new version with these changes
I hope that solves your slowdown problems.
I got a bad feeling about bugs in this one - I have done some changes which might have ramifications in seemingly unrelated parts of the code, so as always - save often and make backups ;).
The editor now crashes when trying to compile my script.
€ any of my scripts, apparently o_0
€€ not any, but multiple ones.
I attached the map with the least amount of script for you (its my texture swap textmap, so its public anyway ;) )
Did you do this for a speed up? Don't sacrifice stability for speed. I am fine with it being a little slower but stable.
Well, actually that crash was unrelated to the speed optimization.. I just suck at making test cases it seems.. I fixed it an uploaded a new version.
Something like that really shouldn't happen. I'll do my best to make sure it won't happen again.
Don't worry, thats what you got me for ;)
I have been thinking about implementing dynamic types..
Im thinking something like c
++
with pointers, but since you guy(s) will probably use it more than me.. what do you think?Im quite conflicted about the -> vs . notation. On one side it's probably not really needed, but on the other side, it sets dynamic types apart from regular ones(an extra reminder that there are something special here that must be deleted to avoid memory leaks).
Are this kind of functionality even needed or desired?
I am not THAT deep into programming and stuff, I will probably not need all of those features; also I am not the guy you want to talk about the notation, I guess ;) (you did see my code, right? xD)
After all, its your decision to make, how your language extention should evolve. Take the direction, which feels the best for you; you will see, if people like it
Alright, then I think it should be something like this
One problematic thing I have noticed is that I will have to check for array index out of bounds errors.. The way I see it, I will have to check it pretty much before every attempt to index it - might not be very efficient.
1.7.6 still crashes for a map of mine. Sent you a PM.
IMO those stuff would be great to have, especially array pointers.
I get seemingly random crashes when scrolling the autocompletion list
The undo function does not work properly in some cases. Try copy & pasting a bunch of lines and undo it.
Sometimes a bold leftover underliner from the autocompletion window is being shown constantly, even outside of the editor as long as its still open
A right click menu would be nice, including usual stuff like c&p etc etc.
Add an option to replace all in currently marked code (currently replace removes all marked code regardless of what you want to replace)
When pressing tab behind a ";", prevent it from intending the whole line. For comments, I'd like to intend only text behind the ;
You can still change code while the compiler works. After this, every try to compile throws an unhandled exception.
some visual bugs when undoing or copying a bunch of lines or folding many brackets
you can compile & save without opening a project, which causes an unhandled exception