Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Feature Requests
 Why not make life easier?
 New Topic  Topic Locked
 Printer Friendly
Author Previous Topic Topic Next Topic  

username2481
Starting Member

1 Posts

Posted - Aug 15 2005 :  1:39:50 PM  Show Profile
In C# specifically, just make it throw in a ; automatically at the end of a function call, since you have to do it eventually anyway. Even if it's not the end of your statement you will need it at some point.

kevinsikes
Tomato Guru

USA
271 Posts

Posted - Aug 15 2005 :  7:32:03 PM  Show Profile
What do you mean when you say "at the end of a function call"? Do you mean to add the semicolon each time a funtion name is AutoCompleted or selected from a list box? I can't see this as being useful. You would be erasing the added semicolon on many occasions. Consider when foo() is AutoCompleted in these expressions:
bar(foo())
(foo() + 6) / x
if (foo() < 10)
It would be irritating indeed to have to go back and remove the automatic semicolons from these expressions.

Kevin Sikes
Infotainment Platform Design Engineer
Ford Motor Company
Go to Top of Page

briancollins
Senior Member

United Kingdom
39 Posts

Posted - Aug 16 2005 :  03:33:08 AM  Show Profile
But I can see the point of the original post. It would make more sense if the autocomplete added a semicolon after the close paenthesis if (and only if) the caret is at the end of a line.

Brian
Go to Top of Page

straightwaytek
Ketchup Master

Canada
66 Posts

Posted - Aug 16 2005 :  05:10:32 AM  Show Profile
Not to insult anyone, but after a while you just get used to using semicolons at the end in both the C++ and C# world (although I've never used nor liked C#). Before programming in C++ I used VB which as everyone knows doesn't use semicolons, so it took a few months to get used to it, but once you commit yourself you should not worry. Also on the part of the software, it would have to be pretty smart, many times function calls are made within conditions ie :
if (GetYear() > 2005), or int iShortYear = GetYear() * 10;
Maybe it could be done whenever you hit the enter key but I wonder if there would be any performance drops once you hit the enter key because it has to eveulate the line to make sure it needs a semicolon, maybe if they have an option checkbox that might be good. Some programmers have to regularly switch from VB to C++ or C# and they often they make those common mistakes. So yeah, I would have to agree parse the line after someone hits return and if it looks "valid" add a semicolon, but maybe only make it a option that is not on by default.

Sincerley,

James Simpson
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18724 Posts

Posted - Aug 16 2005 :  4:38:22 PM  Show Profile
quote:
Originally posted by briancollins

But I can see the point of the original post. It would make more sense if the autocomplete added a semicolon after the close paenthesis if (and only if) the caret is at the end of a line.

Brian



i have to ask, how is this supposed to work?

when i type the line:

int x = foo()|

is VAX supposed to say "ah, i am at the end of the line and you have added a function, lets insert a semi-colon"? the problem is i am actually typing:

int x = foo() * 2;|


straightwaytek what you say makes more sense, but i suspect this would only cause problems. as soon as you start to rely on VAX changing your code in subtle ways you risk introducing subtle and hard to track down bugs. if the programmer does this themselves then that is OK, but it is quite a different matter if VAX does this.

on a more practical front, i often move up and down my code when typing lines, so VAX has no hope of knowing when i have finished a line.

zen is the art of being at one with the two'ness
Go to Top of Page

Rain Dog
Ketchup Master

88 Posts

Posted - Sep 29 2005 :  4:39:29 PM  Show Profile
ReSharper handles all of these cases just fine. Perhaps that might motivate someone here?
Go to Top of Page

gmit
Whole Tomato Software

Croatia
90 Posts

Posted - Sep 30 2005 :  03:07:19 AM  Show Profile
About semicolon... Why don't automatically insert it after { key is pressed (which is then converted into {}), at the point of enum/class/struct definition?

P.S. I have a feeling that this feature might already exist, but it works very rarely, at least at my place.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18724 Posts

Posted - Oct 01 2005 :  2:46:50 PM  Show Profile
Rain Dog how does ReSharper handle my example? i am curious. or does it automatically insert the semi colon, and then it just gets moved along as you type? as a C++ programmer i have never used ReSharper.

gmit this is not a feature i am aware of. if i understand you correctly this would quickly lead to code like:


if(a > b)
{
    for(int i = 0; i < 10; i++)
    {
        if(i % 2)
        {
            printf("currently i is %d\\n", i);
        };
    };
};


personally this would drive me up the wall in my C++ code

there is an outstanding feature request that if you type semi colon in the middle of a function call the semi colon is instead placed at the end of the current line. to what degree would this address this need?

case=296

zen is the art of being at one with the two'ness

Edited by - feline on Oct 01 2005 2:49:38 PM
Go to Top of Page

briancollins
Senior Member

United Kingdom
39 Posts

Posted - Oct 04 2005 :  09:26:38 AM  Show Profile
quote:
Originally posted by feline

quote:
Originally posted by briancollins

But I can see the point of the original post. It would make more sense if the autocomplete added a semicolon after the close paenthesis if (and only if) the caret is at the end of a line.

Brian



i have to ask, how is this supposed to work?

when i type the line:

int x = foo()|

is VAX supposed to say "ah, i am at the end of the line and you have added a function, lets insert a semi-colon"? the problem is i am actually typing:

int x = foo() * 2;|


straightwaytek what you say makes more sense, but i suspect this would only cause problems. as soon as you start to rely on VAX changing your code in subtle ways you risk introducing subtle and hard to track down bugs. if the programmer does this themselves then that is OK, but it is quite a different matter if VAX does this.

on a more practical front, i often move up and down my code when typing lines, so VAX has no hope of knowing when i have finished a line.


Sorry for the stupidly late response to this.

My idea was that now when I type:

int x = foo(|

I get

int x = foo(|)

Instead I would propose:

int x = foo(|);

In this case the additional semicolon would be (safely) added because the open bracket that triggered insersion of the closing bracket is at the end of the line.

I can't see the downside personally.

Brian


Go to Top of Page

support
Whole Tomato Software

5566 Posts

Posted - Oct 04 2005 :  10:53:49 AM  Show Profile
So when auto-matching paren's , insert ");" if the caret is at the end of line and a special case where it would only insert ")" for lines starting with "if/for/while/catch"? Other special cases?
Go to Top of Page

briancollins
Senior Member

United Kingdom
39 Posts

Posted - Oct 04 2005 :  11:01:43 AM  Show Profile
quote:
Originally posted by support

So when auto-matching paren's , insert ");" if the caret is at the end of line and a special case where it would only insert ")" for lines starting with "if/for/while/catch"? Other special cases?


That was what I had in mind. And no - I can't think of other special cases - though for C# the list of "block introducing" keywords is different (e.g. "foreach").

Brian
Go to Top of Page

Racey
Senior Member

USA
25 Posts

Posted - Oct 04 2005 :  11:07:26 AM  Show Profile
Adding a semi colon following struct/enum...It's already done for you if you use the autotext template. That's good enough for me. If I ignore the template, that's my doing. I dislike when applications second-guess what I'm trying to do.

Adding a semi colon to the end of a line just because I'm typing the closing parenthesis of a function just is too risky. Consider what would happen to someone who types function parameters vertically...

callFunc1(getThis(),
getThat();,
getTheOther();
);

As much as I dislike this programming style, I wouldn't try to drive someone away from it in this manner.

The benefit of auto-adding a semi colon as far as I can tell is saving me 1 keystroke. The downside is unwanted semi colons that will cause me multiple keystrokes to remove, as well as higher risk of programming error that may not be apparent until run-time.

No Thanks
Go to Top of Page

briancollins
Senior Member

United Kingdom
39 Posts

Posted - Oct 04 2005 :  11:23:27 AM  Show Profile
Actually it would be difficult for even this scenario to fail as the ); would be added following the open parent for the outer call, and you would need to do some fairly strange editing for the inner calls to be edited with the caret at the end of line.

My concern is not to save the typing of an extra character. It is that the call is entered with the caret not at the end of line, as WT has already added the close paren. I then need to move my cursor to type in the needed semicolon. and it is this that often gets forgotten.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18724 Posts

Posted - Oct 04 2005 :  2:56:51 PM  Show Profile
i can see

callFunc1(getThis(),
getThat();,
getTheOther();
);

happening fairly easily if you typed it like this:

VA inserts the brackets and gives you

callFunc1(|);

press enter and left arrow to get:

callFunc1(|
);

and now look up / copy and paste, or even just type in your parameters, and after each one you get a semi colon. i would not call this all that likely, but it is going to happen sooner or later.

does anyone know how ReSharper handles this? i still don't see a clear way to avoid "problem" cases. or does ReSharper just ignore them?

zen is the art of being at one with the two'ness
Go to Top of Page

gmit
Whole Tomato Software

Croatia
90 Posts

Posted - Oct 06 2005 :  02:45:53 AM  Show Profile
Feline, please look my week old post in this thread.

I was talking about inserting semicolons on {} only on some keywords: enum, struct and class.

So, if you would type: enum abc {
you would end up with: enum abc {};
Go to Top of Page

Racey
Senior Member

USA
25 Posts

Posted - Oct 06 2005 :  11:33:36 AM  Show Profile
enum, struct and class can be managed through autotext, can't they? In my C++ list, struct and class both came with a semi colon at the end. I didn't have enum in the list, so I added that without any problem.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18724 Posts

Posted - Oct 06 2005 :  5:22:08 PM  Show Profile
gmit your idea makes sense. at the same time i am inclined to agree with Racey, that autotext is a good solution here.

zen is the art of being at one with the two'ness
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Topic Locked
 Printer Friendly
Jump To:
© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000