Author |
Topic |
|
stinos
New Member
7 Posts |
Posted - Jan 13 2007 : 10:33:44 AM
|
Hi All!
I've been using VaX for a few years; like 3 months ago I installed version 10.3.1541.0 built 2006.11.20 (using VS2005 sp1). At first it didn't give problems, but now it's rendered almost unusable. I didn't change any config or so, the only significant difference I can think of is that my project is bigger now, and that it has more templates. There are just so much things that don't seem to work anymore, even not after reinstall/rebuild cahce etc. Today it became a bit too much for my patience, so I made a little compilation of what working with VaX is like for me these days. Note that all for all srceenshots, I just randomly picked out a file, it could be as well one of the other approx. 300 files in the project.
* inconsistent colouring of variables, pictured together with completing a variable like it's a function. That last one happens throughout the whole file, VaX seems to get completion data from the initializer list. This is incredibly annoying, since what I want to type is mv_bIgnoreFirst = ..., but now I first have to delete the two brackets which pop up automatically after typing mv_bIgn and selecting the var from the completion list.
* wrong underlining of symbols. Does not go away after reparsing or closing the file. Sometimes goes away for a second, then comes up again. Is completely inconsistent, eg next time the project opens it happens for other functions or variables the the one you see here, or it doesn't happen at all.
* more completion problems. This one is ok:
This one however, just a few lines lower, and a few seconds later, doesn't make any sense.
* first completion presented in list is not always the closest match.
The strange thing is, the ManagedSingletonTest definition is not even known in this file (by the compiler I mean, it's header is not included), so it would be far more logical to present ManagedSingleton first, since it's header is included directly:
* ignoring cases, macro completion problems (this one is less worse, can be solved by Ctrl-space most of the time). First screen shows a fresh file, VaX starts with presenting lower case completions, while I'd like to see upper case. C++ is case sensitive, so VaX should be like that too. Next screen shows the macro intended to add which is presented again, alone. Third screen shows the list that I wanted to have already in the first two screens. List only popped up after Ctrl-space. While writing this I thought the problem was maybe that there wasn't a header included, but after includeing the header defining all macros, it didn't get any better.
* more macro problems. First screen shows that no completion was found, also not after Ctrl-space (so it might be IntelliSense's problem as well)
Second screen however, as I start typing, VaX comes up with completions that do not make sense at all, the first two are member functions from two different classes, both in no way related to ManagedSingleton or Test.
Third screen: "." doesn't turn into "->" automatically for macros.
Final screen: only one worthless completion, even after Ctrl-space
There are more problems (eg sometimes it's like VaX completely looses it, and cannot even complete for variables or words that are two lines up), but these are the most common.
Would these problems fade away with installing the latest build? I just read some people are having problems with it, so I didn't try it yet..
Oh yeah, alomost forgot, my question was: anyone has an idea why VaX behaves like this? btw sorry there's no proper testcase, I'm too fed up atm, and my head hurts from banging it at the keyboard too much.. Thanks for reading anyway. |
|
rhummer
Tomato Guru
USA
527 Posts |
Posted - Jan 13 2007 : 11:32:21 AM
|
VAX is solid as a rock for me, yes there are color issues but thats due to the color parser having to run extremely fast and some of our programmers using poor naming conventions so I get some conflicts with method names and class names.
Have you tried removing the macro at the end of the function definitions to see if that improves anything? Trying to narrow down when these issues occur will help the developers tremendously
Do you have any of the following options on for VA X? VA Options -> Text Editor -> Listboxes -> Shrink when possible VA Options -> Text Editor -> Listboxes -> Allow acronyms VA Options -> Text Editor -> Listboxes -> Allow short hand
For par of the macro issue, these two posts explain why that will not work.
http://forum.wholetomato.com/forum/topic.asp?TOPIC_ID=4704 http://forum.wholetomato.com/forum/topic.asp?TOPIC_ID=4253 |
Tools Engineer - Raven Software VS2005 SP2/VS2008 SP1 - VAX <LATEST> - Win 7 x64
|
Edited by - rhummer on Jan 13 2007 11:39:44 AM |
|
|
stinos
New Member
7 Posts |
Posted - Jan 14 2007 : 05:13:42 AM
|
Hi, thanks for clearing the macro issue out; it doesn't really bother me as I never use macros in the way pictured wih the "testint" example..
All 3 options concerning listboxes were indeed on; after turning them off and rebuilding dbase, and removing the s_no_throw macro from the function (for most platforms that just expands to throw() btw), this is what I got instead for example 3, not really an improvement:
Now here's something interesting: when the entire function is visible in the editor, it does complete ok:
|
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Jan 15 2007 : 12:34:20 PM
|
There is quite a lot going on here, so I am going to have to do this one small bit at a time.
Most of the listboxes you are showing here are suggestion listboxes (they have question mark icons), not completion listboxes (they appear when you press CTRL-SPACE).
Suggestion listboxes are VA's "best guess", and are not limited to the members of a class or namespace. So you can get "incorrect" suggestions produced. This is because suggestion listboxes can suggest other things, for example ", " (comma space) when I am typing a lot of comma separated items.
In VA both suggestion and completion listboxes are case insensitive. The idea that upper case letters should be case sensitive when filtering comes up now and then, but has yet to be done:
case=119
Where you are seeing "clearly wrong" suggestions, since you had both shorthand and acronyms turned on they were actually correct, just unexpected:
http://www.wholetomato.com/products/features/acronym.asp http://www.wholetomato.com/products/features/shorthand.asp
these two settings take time to get used to, but if you can get the hang of them they can be very helpful indeed.
quote: Originally posted by stinos
At first it didn't give problems, but now it's rendered almost unusable. I didn't change any config or so, the only significant difference I can think of is that my project is bigger now, and that it has more templates.
If you open both OFIW and FSIW, and look at the title bars. This will list how many files and symbols are in the current project. Can you post these numbers, so we have some sense of scale here.
Unless your project is *really* massive I would not expect there to be a problem. However VC6 its self has problems with projects that get to large.
Which IDE are you using?
quote: Originally posted by stinos
* wrong underlining of symbols. Does not go away after reparsing or closing the file. Sometimes goes away for a second, then comes up again. Is completely inconsistent, eg next time the project opens it happens for other functions or variables the the one you see here, or it doesn't happen at all.
One aspect, the underlining of mistyped symbols does not happen until you make an edit in a file. This is an optimisation to avoid unnecessary overhead if you are simply reading through code and not editing it.
This might explain why you sometimes see underlining and sometimes don't, but what gets underlined should be consistent.
quote: Originally posted by stinos
The strange thing is, the ManagedSingletonTest definition is not even known in this file (by the compiler I mean, it's header is not included), so it would be far more logical to present ManagedSingleton first, since it's header is included directly:
Part of the problem here is overhead. If the cpp file #include's 50 files, 7 of them conditionally (using the pre-processor) then working out what is and is not available quickly becomes hard to impossible for VA.
VA does not know all of the pre-processor directives, and the code it parses is constantly being written, so some things the compiler can resolve are unknown to VA.
Plus how many header files deep would the scan need to go?
Assume for the moment this was done, does this mean that you cannot get any help from VA until you have added the correct #include line? That is going to irritate quite a lot of people, starting with me
Hopefully this answers at least a couple of questions. We probably need to focus on one or two specific problems, and work from there. |
zen is the art of being at one with the two'ness |
|
|
stinos
New Member
7 Posts |
Posted - Jan 15 2007 : 1:24:54 PM
|
quote: Originally posted by feline
There is quite a lot going on here, so I am going to have to do this one small bit at a time.
Most of the listboxes you are showing here are suggestion listboxes (they have question mark icons), not completion listboxes (they appear when you press CTRL-SPACE).
Suggestion listboxes are VA's "best guess", and are not limited to the members of a class or namespace. So you can get "incorrect" suggestions produced. This is because suggestion listboxes can suggest other things, for example ", " (comma space) when I am typing a lot of comma separated items.
In VA both suggestion and completion listboxes are case insensitive. The idea that upper case letters should be case sensitive when filtering comes up now and then, but has yet to be done:
case=119
Where you are seeing "clearly wrong" suggestions, since you had both shorthand and acronyms turned on they were actually correct, just unexpected:
http://www.wholetomato.com/products/features/acronym.asp http://www.wholetomato.com/products/features/shorthand.asp
these two settings take time to get used to, but if you can get the hang of them they can be very helpful indeed.
ok, thanks for explaining this and taking some time.
quote: Originally posted by feline
If you open both OFIW and FSIW, and look at the title bars. This will list how many files and symbols are in the current project. Can you post these numbers, so we have some sense of scale here.
Unless your project is *really* massive I would not expect there to be a problem. However VC6 its self has problems with projects that get to large.
Which IDE are you using?
OFIW=325 FSIW=14473 using VS2005
quote: Originally posted by feline One aspect, the underlining of mistyped symbols does not happen until you make an edit in a file. This is an optimisation to avoid unnecessary overhead if you are simply reading through code and not editing it.
This might explain why you sometimes see underlining and sometimes don't, but what gets underlined should be consistent.
I already had the impression it went on/off when typing, but it's not really a big issue for me
quote: Originally posted by feline Part of the problem here is overhead. If the cpp file #include's 50 files, 7 of them conditionally (using the pre-processor) then working out what is and is not available quickly becomes hard to impossible for VA.
VA does not know all of the pre-processor directives, and the code it parses is constantly being written, so some things the compiler can resolve are unknown to VA.
Plus how many header files deep would the scan need to go?
Assume for the moment this was done, does this mean that you cannot get any help from VA until you have added the correct #include line? That is going to irritate quite a lot of people, starting with me
I understand this; I thought maybe there was some kind of priority ordering, but after thinking about that again I see that would be quite hard to do..
Thanks for the explanation so far!
|
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Jan 15 2007 : 3:03:05 PM
|
You have 325 files in your solution. I would call this small, almost tiny, unless we are looking at code files that are a couple of meg each. Certainly we have people running much larger solutions without these sorts of problems.
Do you do a lot of heavy duty work with C++ templates? This can cause some problems with VA, but normally only in the file with all the templates, and I am not seeing any obvious template code in these screen shots.
Taking your very first screen shot, with the class members being initialised on the constructor, could you post the source code, to save me typing in the screen shot This is as good a place as any to start. |
zen is the art of being at one with the two'ness |
|
|
stinos
New Member
7 Posts |
Posted - Jan 16 2007 : 07:49:18 AM
|
the project is indeed quite small, that can't be the problem.
There are some 'heavy' template classes, but they are not used directly in this file.
As for posting the source code, I hope you understand I can't post everything publicly, my boss wouldn't like that.. Here's the header and source used for the first screen: http://users.skynet.be/parklife/formatter.h http://users.skynet.be/parklife/formatter.cpp |
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Jan 16 2007 : 09:37:37 AM
|
It is very rare that code is available. I fully understand why, but it does make things a little difficult at times *shrug* Here since you have posted a screen shot there is no harm in posting just those few lines.
thank you for the files, I am seeing the same colouring problem as your first screen shot. If I remove "s_no_throw" from the constructor then the colouring problem goes away. All of the member variables are coloured as function calls, true, but this is consistent and alt-g works. Before alt-g did not work.
I am also seeing problems with things being underlined as mistyped symbols. Removing "s_no_throw" is fixing these as well.
Can you post the definition for "s_no_throw"? It does not seem to be defined in these files. It does look like this is causing quite a few of your problems. |
zen is the art of being at one with the two'ness |
|
|
stinos
New Member
7 Posts |
Posted - Jan 16 2007 : 11:57:21 AM
|
the macro is defined as
#ifndef S_C6X
#define s_no_throw throw()
#else
#define s_no_throw //unfortunatly no support for exceptions
//in the current cg6x
#endif
so for all 'normal' platforms (mac, unix, windows, arm,...) it expands to throw(). I don't have enough time now, but I'll try to replace all occurrences of s_no_throw with throw() and see if that fixes the problems.
|
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Jan 16 2007 : 2:11:44 PM
|
To save making a lot of changes to your code try this. Edit the file:
"C:\\Program Files\\Visual Assist X\\Misc\\StdAfx.h"
and add the entry:
#define s_no_throw throw()
at the bottom. This file is used to help VA's parser with difficult code, and can be used to work around odd effects. There are a couple of things to watch out for though. After modifying this file you need to rebuild the VA symbol database for the changes to take effect:
VA Options -> Performance -> General -> Rebuild symbol databases
Secondly when you install a new build of VA it will install the latest version of VA's StdAfx.h file, which will overwrite your changes. So long as you reapply your changes before loading the IDE then the rebuild that the installer triggers will also pick up your changes.
There is an outstanding bug to do with class member variables initialised after the constructor being underlined as mistyped if there is a throw() statement there, so if you see this it is actually "correct".
case=939
hopefully this will help to fix at least some of the bugs you are encountering. |
zen is the art of being at one with the two'ness |
|
|
stinos
New Member
7 Posts |
Posted - Jan 17 2007 : 03:21:01 AM
|
after adding the definition to StdAfx.h, nothing changed actually (fromatter.cpp looks exactly the same as in the fisrt screen, and VA behaves the same).
However, after replacing all (more the 1000) macro occurences with 'throw()', most problems fade away! Colouring is ok again, VA doesn't add brackets after the variables anymore, completion/suggestion is fixed and there's no more underlining of 'incorrect' symbols anymore. The only thing left is the 'first completion presented in list is not always the closest match' problem, but that's no big deal, although it would be nice if the first item shown is the one which comes first alphabetically.
So appearantly *all* havoc I listed is caused solely by using a macro for throw()..
|
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Jan 17 2007 : 12:12:12 PM
|
I ran some simple tests here before posting, and the VA stdafx.h file fix worked for me. I suggested that since you apparently need this macro to make the code compile successfully on all platforms.
Did you rebuild the symbol database? Or is your code edit a suitable solution?
The closest match effect, assuming this only applies to suggestion listboxes (these have question mark icons) then they are designed to guess, based on what you have been typing recently.
If you have been typing "m_chocolate" a lot then I would expect to see this suggested, even if this was not present where you are currently typing.
You may find playing with the option:
VA Options -> Text Editor -> suggestions -> Include bits of code from surrounding lines
helps, but I am not sure if you will find this turned on or off more useful. |
zen is the art of being at one with the two'ness |
|
|
stinos
New Member
7 Posts |
Posted - Jan 18 2007 : 3:00:29 PM
|
quote: Originally posted by feline
I ran some simple tests here before posting, and the VA stdafx.h file fix worked for me. I suggested that since you apparently need this macro to make the code compile successfully on all platforms.
Did you rebuild the symbol database? Or is your code edit a suitable solution?
I checked everything again, add definition to last line of the StdAfx.h, rebuild dbase, but strangely enough it doesn't change a thing.. Is this worth a bug report? The code edit is usable, I wrote a quick macro to do the replace all, and undo it when I'm working for the c6x platform. So it's more of a hack []-]
quote: Originally posted by feline The closest match effect, assuming this only applies to suggestion listboxes (these have question mark icons) then they are designed to guess, based on what you have been typing recently.
If you have been typing "m_chocolate" a lot then I would expect to see this suggested, even if this was not present where you are currently typing.
You may find playing with the option:
VA Options -> Text Editor -> suggestions -> Include bits of code from surrounding lines
helps, but I am not sure if you will find this turned on or off more useful.
ok thanks for the suggestion, mostly I'll leave the option on. |
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Jan 18 2007 : 4:01:18 PM
|
My edit to VA's stdafx.h was also a hack, so I cannot really complain if it does not work Still I would have expected it to. perhaps there is some other difference between my test project and the real project I am not allowing for.
Hopefully your hack will work hold together until this bug in VA is fixed, when ever that will be. |
zen is the art of being at one with the two'ness |
|
|
|
Topic |
|
|
|