Bear with me. This bug comes from a bad habit you won't cure me of...but it is still a bug.
I've observed that when I have something like the following:
SomeClass MyInstance;
... if (MyInstance.MxVarname) DoSomething;
Then I want to copy the 'if' to another line:
SomeClass MyInstance;
... if (MyInstance.MxVarname) DoSomething; if (MyInstance.MxVarname) DoSomethingElse;
Then I want to replace the second 'MxVarname' with another variable from the same class:
SomeClass MyInstance;
... if (MyInstance.MxVarname) DoSomething; if (MyInstance) DoSomethingElse;
[The above is deleting the variable name _AND_ the '.' operator.]
SomeClass MyInstance;
... if (MyInstance.MxVarname) DoSomething; if (MyInstance.) DoSomethingElse;
[The above is where I type the '.' operator back in. This is part of my 'bad habit'. The habit is pressing one key and then performing a counteraction to reverse the effect. I've had the habit for 15 years and you won't succeed in changing it. I can happily sit in front of a computer and press the left and right arrow keys for 20 minutes. In this case, I probably could hit Ctrl+Space, but then I wouldn't be able to "balance" out deleting the '.' with typing it back in.]
Anyway, the keyboard caret sometimes ends up after the '.' (which is correct) but every once in a while it will end up _BEFORE_ the '.' and it usually also shows the wrong suggestion box in the process. It only happens every so often, but I notice that it tends to happen more often when I am copying and pasting lines and then modifying the variable being accessed. The problem doesn't show up when VAX is disabled.
I should also mention that I use the 'backspace' key more often than the 'delete' key. So, I usually select the variable with the keyboard and press backspace twice and then type in the '.' again. The bug doesn't always show up but I've seen it happen enough times that surely someone else has run into it too but hasn't bothered to mention it.
And I should also mention VS.NET 2003 is the IDE (if that makes a difference).
Sorry about the delayed response. I've been busy. Anyway, I tried the link and it doesn't work. However, I just figured out how to replicate this issue every single time today. I was replacing a function call with another function call and came up with the following steps:
1) Have a class with two variables in it. Preferably some basic type like 'int'. 2) Have some line like this (CmdUIPtr is of type 'CCmdUI *'):
CmdUIPtr->SetCheck(GxConfig.MxFirstVar);
Copy the line to another line (i.e. I'd usually do this to replace the variable with something else).
3) Put the cursor _AFTER_ MxFirstVar but before the ')'. 4) Press Shift+Ctrl+Left Arrow. Press Shift+Left Arrow. 5) Press the '.' key.