Author |
Topic |
|
draza
Senior Member
France
48 Posts |
Posted - Jul 28 2004 : 05:52:48 AM
|
Hello,
I have noticed some inconsistencies between C# and C++ intellisense. Now, I understand that C++ is where it all started (so support for it is better), and I am still a happy C++ programmer (and VA.X user) at work. However, I recently purchased VA.X for my C# projects I do at home, and I don't understand why the following happens: 1. Unlike C++, when I type "SomeClass." and press TAB, I do not get member list. 2. If I press Ctrl-Space after "SomeClass." I get default intellisense (and it sucks). I can see that VA.X has parsed the file correctly because if I continue typing I suddenly get VA.X intellisense (and it is BETTER than default one, but still not perfect, see 3) 3. C# parser seems to be less aggressive (or less smart, I don't know which of these two) - it provides fewer suggestions than C++. Considering likeness of C# to C++ (you probably didn't need to make new parser), and even possibility for introspection through reflection (if the project is already compiled, and it mostly is), this is counter-intuitive; I would expect C# intellisense to be much better. 4. Is it possible to add one more color(ing) for class member variables (regardless of visibility [public/private/protected etc])? In my view that would improve readability, and this setting is applicable to all languages. 5. Is is possible to add a check box (on/off) that would when turned on ALWAYS show suggestion list immediately after I press "." or "->"? 6. Tooltip coloring stopped working on my home configuration (C#). At work it is fine. This is strange because my home machine is freshly installed Windows/VStudio/Vassist and my work computer is "full of junk" (tested various add-ins etc).
Thanks in advance,
Drazen |
This problem when solved will be simple |
|
Nels_P_Olsen
Senior Member
USA
47 Posts |
Posted - Jul 28 2004 : 11:55:16 AM
|
When I type ".", it always brings up a member listbox. Isn't this a setting in Visual Studio, not VA X? I don't know what you'd do with a VA X suggestion listbox there (did you mean member listbox?) Anyway, it seems to remember the last or most appropriate member, and scrolls to that one ... |
- Nels |
|
|
support
Whole Tomato Software
5566 Posts |
Posted - Jul 28 2004 : 12:46:53 PM
|
1. For C++ and C#, typing SomeClass. normally opens a members listbox automatically. You need not press Tab or Ctrl+Space. This does assume you have "Auto list members" enabled for the specific languages. This said and assuming "Display suggestions" is disabled in our options dialog, we notice typing "comp" and Tab in C# does not open a listbox. Perhaps this is the problem.
Do you have "Auto list members" enabled for C++ and C#?
Do you have "Display suggestions" enabled on the Completion node of our options dialog?
Do you have "Open completion listbox when Tab is pressed" enabled?
2. VA X uses default Intellisense to populate listboxes in C#. In fact, the listboxes are from MS as well. The only this VA X does is prod the IDE into making them appear more often.
VA X does parse C# for coloring -- it uses a very lightweight parser not smart enough to provide listbox contents.
Are you clear of the distinction between suggestion and completion listboxes? The former contain partial lists; the latter complete lists. Suggestion listboxes have "tomato+?" icons.
http://www.wholetomato.com/products/features/suggestion.html?more=yes
3. C# is infinitely more easy to parse, and the reason default Intellisense for C# is better than that for C++. As well, the IDE provides access to all C# data collected by a parser that runs while you edit (not the case for C++.) This is one reason you see more improvements for C#, not for C++, in new IDEs from MS and from other 3rd parties.
Since you say Intellisense for C# is not great, can you provide an example? We like to see opportunities for improvement, not that we can fix everything.
4. No, there is no way to distinguish public from private in coloring. Long story.
5. Yes. See our reply to #1.
6. Try "Use Defaults" in Tools|Options|Environment|Fonts and Colors. Reapply your custom changes. |
|
|
Uniwares
Tomato Guru
Portugal
2322 Posts |
Posted - Jul 28 2004 : 12:57:51 PM
|
quote: Originally posted by support
4. No, there is no way to distinguish public from private in coloring. Long story.
As I understand the request, its not to distinguish the visibility (private, protected, public, although this could be nice), but rather to distinguish between members, globals and locals. |
|
|
support
Whole Tomato Software
5566 Posts |
|
draza
Senior Member
France
48 Posts |
Posted - Jul 28 2004 : 3:27:39 PM
|
quote: Originally posted by support 1. For C++ and C#, typing SomeClass. normally opens a members listbox automatically. You need not press Tab or Ctrl+Space. This does assume you have "Auto list members" enabled for the specific languages. This said and assuming "Display suggestions" is disabled in our options dialog, we notice typing "comp" and Tab in C# does not open a listbox. Perhaps this is the problem.
Aha! I did not have "Auto list members" turned on, out of historical reasons - VA used different (plugin) model for providing intellisense before and I got the habit of explicitly turning this off.
quote: Do you have "Auto list members" enabled for C++ and C#?
Now I do :) However, it sucks. As I've mentioned, VA suggestion list is far more useful - can I get that immediately after pressing "."? How can I force display of suggestion box?
quote: Do you have "Display suggestions" enabled on the Completion node of our options dialog?
Yes.
quote: Do you have "Open completion listbox when Tab is pressed" enabled?
Yes.
quote: 2. VA X uses default Intellisense to populate listboxes in C#. In fact, the listboxes are from MS as well. The only this VA X does is prod the IDE into making them appear more often.
VA X does parse C# for coloring -- it uses a very lightweight parser not smart enough to provide listbox contents.
It is strange that you claim that VA is using not very smart parser :) I find it more than adequate, here's why: for a given class, if I go to "List methods" combo, I get (correctly colored, so I assume correctly parsed) list of all members. Why shouldn't I be able to get THIS list when I press TAB or whatever key press you suggest? Looks like all the data is there and ready.
quote: Are you clear of the distinction between suggestion and completion listboxes? The former contain partial lists; the latter complete lists. Suggestion listboxes have "tomato+?" icons.
Now I am completely clear. I apologize for using these two terms interchangeably throughout my post.
quote: Since you say Intellisense for C# is not great, can you provide an example? We like to see opportunities for improvement, not that we can fix everything.
I will provide more detailed explanation in a separate post. Just turning "Auto show members" on changes situation significantly, but it still can be (easily?) better.
quote: 4. No, there is no way to distinguish public from private in coloring. Long story.
No, I said regardless of public/private etc :) Again, looking by the "List members" combo box, VA knows which variables are members of a class. I do not want to show local symbols in bold, I want separate color for member variables of a class regardless of visibility. "Local symbols in bold" bolds all local symbols, including parameters of functions and function local variables. I do not care about these as they are already separately colored (default:grey), but I do care about distinguishing between member variables and locals/parameters. I would also like to color properties with the same color I color member variables.
quote: 6. Try "Use Defaults" in Tools|Options|Environment|Fonts and Colors. Reapply your custom changes.
Nope. I tried that, plus I tried turning tooltip coloring off and then on. It colors the tooltip for some elements, and doesn't for some other (?) in a seemingly random fashion.
Thanks for quick reply, it is very much appreciated. |
This problem when solved will be simple |
|
|
draza
Senior Member
France
48 Posts |
Posted - Jul 28 2004 : 3:30:35 PM
|
quote: Originally posted by Uniwares
quote: Originally posted by support
4. No, there is no way to distinguish public from private in coloring. Long story.
As I understand the request, its not to distinguish the visibility (private, protected, public, although this could be nice), but rather to distinguish between members, globals and locals.
Exactly. Actually, I don't care about globals (especially in C#, there are no globals) but members vs locals/parameters. |
This problem when solved will be simple |
|
|
draza
Senior Member
France
48 Posts |
Posted - Jul 28 2004 : 3:33:09 PM
|
quote: Originally posted by support
4. Try enabling bold and italics at the bottom of the "Environment|Fonts and Colors" node of our options dialog. Pick a font that displays italics well. More info in this thread:
http://forum.wholetomato.com/forum/topic.asp?TOPIC_ID=2633
I know what these two options are supposed to do, and I don't like the result. They both seem to work as advertised, though, but that's not what I need. My post above should clear up the issue. |
This problem when solved will be simple |
|
|
support
Whole Tomato Software
5566 Posts |
Posted - Jul 28 2004 : 6:41:39 PM
|
We have a lightweight parser that runs while you scroll -- its job is to determine color. Unfortunately, it does not know enough to distinguish context, ie members versus locals. We would like this to be different, but CPU power during scolling, and since the rest of the IDE is running, is simply not available for the task.
http://forum.wholetomato.com/forum/topic.asp?TOPIC_ID=1099
Open a file and mistype a word in a comment near the top. Move the caret off the word and wait for VA X to underline it, assuming you have the right option set. Notice it takes a second before the underline appears -- VA X waits for a pause in your typing. Next, grab the thumbnail and scroll a comment into view which you know has misspellings. While still holding the thumbnail, notice the underlines are not present. This is because the spelling parser, and our full context parser, do not run while you scroll. Only our coloring parser has run.
Let go of the thumbnail. Wait a second and underlines appear. Our spelling parser, and full context parser, have run.
NB: The underlines appear in subsequent scrolling because VA X remembers them, ie they are cached. It is not that our spelling parser has rerun. |
|
|
draza
Senior Member
France
48 Posts |
Posted - Jul 28 2004 : 6:59:45 PM
|
quote: Originally posted by support
We have a lightweight parser that runs while you scroll -- its job is to determine color. Unfortunately, it does not know enough to distinguish context, ie members versus locals. We would like this to be different, but CPU power during scolling, and since the rest of the IDE is running, is simply not available for the task.
http://forum.wholetomato.com/forum/topic.asp?TOPIC_ID=1099
Open a file and mistype a word in a comment near the top. Move the caret off the word and wait for VA X to underline it, assuming you have the right option set. Notice it takes a second before the underline appears -- VA X waits for a pause in your typing. Next, grab the thumbnail and scroll a comment into view which you know has misspellings. While still holding the thumbnail, notice the underlines are not present. This is because the spelling parser, and our full context parser, do not run while you scroll. Only our coloring parser has run.
Let go of the thumbnail. Wait a second and underlines appear. Our spelling parser, and full context parser, have run.
NB: The underlines appear in subsequent scrolling because VA X remembers them, ie they are cached. It is not that our spelling parser has rerun.
I see. As far as I am concerned, members can be temporarily colored the same as locals and after full parser is done parsing they can be colored properly, just like spelling errors. Is that acceptable? You could actually cache this info and most of the time have accurate coloring even before full parser runs (note that this is just speculation on my part).
Btw, I am not allowed to see the post you link to... |
This problem when solved will be simple |
|
|
rblondeau
Tomato Guru
Canada
102 Posts |
Posted - Jul 28 2004 : 7:00:56 PM
|
I currently have turned off the "Local Symbols in Bold " setting because it does not help me much. It bolds so many vars that it is distracting. It would be more useful if it was called "Bold Non-local Symbols". That way it would point out variables that were defined outside the scope of the function/method, which as far as the function/method is concerned, would indicate that the variable was either a global or member variable. |
|
|
support
Whole Tomato Software
5566 Posts |
Posted - Jul 28 2004 : 7:32:58 PM
|
quote: ...(note that this is just speculation on my part).
As we mentioned, we would prefer coloring that is aware of context. We have considered the options you mention, plus dozens of others. We continue the effort. |
|
|
draza
Senior Member
France
48 Posts |
Posted - Jul 29 2004 : 02:19:00 AM
|
quote: Originally posted by support http://forum.wholetomato.com/forum/topic.asp?TOPIC_ID=1099
I still can not access this post - is it still relevant that I see it? If yes, could you please allow me to see it?
Thanks,
Drazen |
This problem when solved will be simple |
|
|
draza
Senior Member
France
48 Posts |
Posted - Jul 29 2004 : 02:23:05 AM
|
quote: Originally posted by support
quote: ...(note that this is just speculation on my part).
As we mentioned, we would prefer coloring that is aware of context. We have considered the options you mention, plus dozens of others. We continue the effort.
Well of course that I would prefer coloring aware of context. Does this mean that you are considering (note I did not say you promised anything or working on it) offering the possibility to colorize member variables with different color? That would be nice :)
What are the chances to generally improve C# support even more? Are those things I see mentioned for 10.1 sign of more good things to come? I surely hope so :) |
This problem when solved will be simple |
|
|
Stephen
Tomato Guru
United Kingdom
781 Posts |
Posted - Jul 29 2004 : 03:55:41 AM
|
Topic 1099 just explains again that it's impossible to parse while scrolling, because the IDE is greedy and eats up so much CPU. Cezariusz also suggested what you just suggested: dumb colouring when scrolling and then full colouring when idle. Support replied: "We have considered often the suggestion [...] to do smart coloring when idle. It has merit. One problem is we would switch to dumb coloring often, namely whenever you start typing. Symbols might change color often. We feel we'd just substitute one problem with another."
Personally I agree. I'd rather have dumber but consistent colouring. |
Stephen Turner ClickTracks http://www.clicktracks.com/ Winner: ClickZ's Best Web Analytics Tool 2003 & 2004
|
|
|
support
Whole Tomato Software
5566 Posts |
Posted - Jul 29 2004 : 1:28:27 PM
|
draza: We added you to a private forum so you can see the referenced post. We have nothing secret in the private forum -- it's just that the forum existed from the early betas of VA X 10.0. Much content is very old. Newer content is typically not relevant to a wider audience, and the members prefer not to waste others' time when not necessary.
We have a new, private forum for a forthcoming upgrade, VA X 10.1. We are keenly interested in participation and feedback from C# developers.
Send your request to participate to [email protected]. Include your member name.
The 10.1 forum is for comments and bug reports on new features only. You cannot pester us for fixes to old bugs, at least not in that forum, nor can you report bugs in the 10.1 forum that clearly exist in the 10.0 product. In this way, we hide only posts not relevant to a wider audience. Everyone is happy. |
|
|
draza
Senior Member
France
48 Posts |
Posted - Jul 29 2004 : 5:51:22 PM
|
quote: Originally posted by support draza: We added you to a private forum so you can see the referenced post. We have nothing secret in the private forum -- it's just that the forum existed from the early betas of VA X 10.0. Much content is very old. Newer content is typically not relevant to a wider audience, and the members prefer not to waste others' time when not necessary.
That's exactly why I asked if it was relevant, obviously it wasn't, but I was still dying of curiosity :)
quote: We have a new, private forum for a forthcoming upgrade, VA X 10.1. We are keenly interested in participation and feedback from C# developers.
Send your request to participate to [email protected]. Include your member name.
I noticed this forum. New features look really exciting and I am looking forward to trying them out.
quote: The 10.1 forum is for comments and bug reports on new features only. You cannot pester us for fixes to old bugs, at least not in that forum, nor can you report bugs in the 10.1 forum that clearly exist in the 10.0 product. In this way, we hide only posts not relevant to a wider audience. Everyone is happy.
That's fine by me.
Thanks,
Drazen |
This problem when solved will be simple |
|
|
|
Topic |
|
|
|