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
 Technical Support
 New VAssist eats next word. Again.
 New Topic  Reply to Topic
 Printer Friendly
Next Page
Author Previous Topic Topic Next Topic
Page: of 3

Went
New Member

4 Posts

Posted - Sep 26 2015 :  05:34:31 AM  Show Profile  Reply with Quote
Hello. There is an old-new annoying bug in the actual VAssist version. When I autocomplete some word in a string, VA overwrites next word with found suggestion instead of to insert it before one. It's very confusing and waste much of my time.

accord
Whole Tomato Software

United Kingdom
3164 Posts

Posted - Sep 27 2015 :  9:56:05 PM  Show Profile  Reply with Quote
We've improved the behaviour for this in the last build. The logic behind overwriting is the following: if you type something before a word without space and you accept the listbox, it will only replace the word right to the caret when that word cannot be found in the symbol databases.

We're considering a new setting to be able to disable the overwriting behaviour altogether:
case=90899

For now, you can put a space between the symbol and what you type as a workaround.
Go to Top of Page

Went
New Member

4 Posts

Posted - Sep 28 2015 :  02:48:55 AM  Show Profile  Reply with Quote
Thank you for understanding. I will wait for new build :)
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3164 Posts

Posted - Sep 28 2015 :  10:27:42 PM  Show Profile  Reply with Quote
I've increased the priority of this case for you.

Edited by - accord on Sep 28 2015 10:27:53 PM
Go to Top of Page

fredizzimo
Junior Member

Finland
11 Posts

Posted - Oct 30 2015 :  09:29:43 AM  Show Profile  Reply with Quote
What's the status of this?

This behavior is very annoying, for example when you have moved a free function to a class, and you want to refactor the code and insert variable->, before all the calls.

The space workaround is also not really a solution, and it's hard to remember to use it, and when you actually do remember, it's still very annoying. A little bit better is to leave the old symbol in place, to avoid the overwriting, until all calls are replaced, but then you can't rely on compiler errors until it's completely deleted.

Personally I never want the following word to be overwritten, as I'm using VSVim, so if I actually need to change the word I would use cw or ciw.

Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3164 Posts

Posted - Oct 30 2015 :  12:21:24 PM  Show Profile  Reply with Quote
If the word is a known symbol it should not be overwritten.

Regarding the status: the case is resolved as implemented so it should be in the next build if it passes internal testing.
Go to Top of Page

sean
Whole Tomato Software

USA
2641 Posts

Posted - Nov 20 2015 :  4:03:42 PM  Show Profile  Reply with Quote
case=90899 is implemented in build 2083 via the registry value named "CompletionOverwriteBehavior"

0: default behavior, va will overwrite text immediately to right of caret in some scenarios
1: never overwrite text immediately right of caret
2: always overwrite text immediately right of caret

http://support.wholetomato.com/default.asp?W640

Edited by - feline on Nov 21 2015 4:38:54 PM
Go to Top of Page

Adequat
Tomato Guru

149 Posts

Posted - Jul 30 2016 :  05:03:31 AM  Show Profile  Reply with Quote
Do you have a list of all registry "secrets"? I have lost so many hours of typing before I find this option.
You should actually have a UI to access all the "secret" options. Don't forget your audience: you are talking to programmers, a category of people not afraid of advanced options!
(the common concept "limit the options" to make it easy for users, does not apply to the VA business domain).
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3164 Posts

Posted - Jul 30 2016 :  05:50:00 AM  Show Profile  Reply with Quote
We used to have a page for all registry settings, but we don't want to encourage to modify a lot of them, because if something goes wrong, who knows what is causing the problem.

Our new approach is multi-faceted:

1. We put related settings on the bottom of our documentation. For example, this registy setting can be found on the bottom of this page:
https://docs.wholetomato.com/default.asp?W204

2. You can search our kb articles:
https://docs.wholetomato.com/default.asp?pg=pgWikiView&ixWiki=8&sView=title_index

3. We're planning to add an advanced part of our options dialog. It would be a filtered list of options that we officially support.

case=69399

Edited by - accord on Aug 02 2016 2:00:18 PM
Go to Top of Page

tjcbs
Ketchup Master

99 Posts

Posted - Aug 17 2016 :  06:00:01 AM  Show Profile  Reply with Quote
I was going to complain about this in another thread, but the "known symbol" thing just doesn't work. Please test it.

Wasting years of my life, making a stupid game: http://www.indiedb.com/games/plannet
Go to Top of Page

Mordachai
Tomato Guru

USA
224 Posts

Posted - Aug 17 2016 :  10:20:37 AM  Show Profile  Reply with Quote
I'm going to pile on here too - see my post in "feature requests" - but this is essentially the same thing.

It's unpleasant the way it destroys instead of inserts.

If my cursor is ON the symbol and I accept a suggestion - fine, replace it.

But if my cursor is inserting at the head of it, just insert the accepted symbol.

Edited by - Mordachai on Aug 17 2016 11:01:14 AM
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3164 Posts

Posted - Aug 18 2016 :  9:05:30 PM  Show Profile  Reply with Quote
I have found some problems with listbox behavior. I found cases when it overwrites despite it shouldn't. I have put in a bug report for this:

case=99511

I found this to be an issue with Visual Assist listboxes (with tomato icons) It means that it will happen more with disabled intellisense.

Have any of you disabled default intellisense?
Tools -> Options... -> Text Editor -> C/C++ -> Advanced -> Disable Intellisense

Edited by - accord on Aug 18 2016 9:11:58 PM
Go to Top of Page

Mordachai
Tomato Guru

USA
224 Posts

Posted - Aug 19 2016 :  10:13:03 AM  Show Profile  Reply with Quote
not I - I leave intellisense on. fwiw.

EDIT: I have found that this happens if the symbol I'm trying to insert text in front of is known by intellisense or not.

If the symbol is unknown, then my typing -> suggestion accepted -> inserts the new symbol.

If the symbol is known, then my typing -> suggestion accepted -> replaces the old "known" symbol.

The first behavior is far more useful - if there is a way to tell VA / VS "always insert - never try to guess what I mean" that would be greaaat! ;)

Edited by - Mordachai on Aug 19 2016 4:10:59 PM
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3164 Posts

Posted - Aug 19 2016 :  9:23:34 PM  Show Profile  Reply with Quote
You can achieve what you are after:
https://docs.wholetomato.com/default.asp?W640

But we also want to improve the behavior by default. We have found inconsistencies about it which makes it unpredictable thus annoying.

Edited by - accord on Aug 19 2016 9:24:27 PM
Go to Top of Page

rb_
New Member

9 Posts

Posted - Aug 24 2016 :  01:09:09 AM  Show Profile  Reply with Quote
I recently upgraded from a much older version of VAX and this became a problem for me almost immediately.

Please fix it or at least provide a proper GUI setting for it until you are sure it's fixed.

This is very annoying and I imagine that not everyone will be able to find the registry workaround (I searched for quite a while before I found this thread).

Yes, my IntelliSense is disabled.
Go to Top of Page

sean
Whole Tomato Software

USA
2641 Posts

Posted - Sep 17 2016 :  2:50:12 PM  Show Profile  Reply with Quote
case=99511 is fixed in build 2112.
Go to Top of Page

rb_
New Member

9 Posts

Posted - Oct 05 2016 :  01:10:45 AM  Show Profile  Reply with Quote
This is still a problem for me on 2112.

Please just add a control to completely turn off the overwriting behavior. I can't think of any case where I would want the next word to be overwritten. If I really wanted that, I could easily do that myself (e.g. ctrl+delete).

For example, if there is a macro invocation, and I need to add an argument to the front, like this:

FOO(bar);

->

FOO(baz, bar);

It doesn't work right, even though bar is a symbol recognized by VAX (I can alt+g to it).

Currently I have to first remember to add a space - or type the entire thing and not use autocomplete, which can be annoying (at just this moment I need to actually make about 50 such edits involving rather long identifiers :( - and no I can't just batch replace because they're all different in this case)

This particular macro invocation case might be another specific bug, but there could be others... To me, it doesn't matter how well or poorly this works - I don't want the behavior at all. Probably there will be some odd cases (e.g. a macro that takes arguments that aren't symbols at all) that will never work as expected, so the only truly reliable solution to this is to allow the user to disable the overwrite behavior completely.
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3164 Posts

Posted - Oct 05 2016 :  07:38:24 AM  Show Profile  Reply with Quote
Have you tried the registry setting described here?
https://docs.wholetomato.com/default.asp?W640

Close all instances of the IDE before editing the registry to ensure your changes are not overwritten at IDE exit.

Edited by - accord on Oct 05 2016 07:38:50 AM
Go to Top of Page

rb_
New Member

9 Posts

Posted - Oct 05 2016 :  2:15:48 PM  Show Profile  Reply with Quote
Strange... I had seen that registry key before but don't recall whether I had tried it or not. I would think I'd already have tried that. Maybe I found that I wanted the overwrite behavior in some cases after all... or perhaps somehow the setting became reverted.

Thanks for the reminder.

I'll try that again and see how it goes. Will follow up if I find it doesn't work well for me for some reason.
Go to Top of Page

rb_
New Member

9 Posts

Posted - Oct 05 2016 :  7:39:44 PM  Show Profile  Reply with Quote
Oops... it turns out I didn't edit the registry setting for the new IDE I switched too. It's working fine.
Go to Top of Page

Mordachai
Tomato Guru

USA
224 Posts

Posted - Oct 06 2016 :  10:48:17 AM  Show Profile  Reply with Quote
quote:
Originally posted by Mordachai

I'm going to pile on here too - see my post in "feature requests" - but this is essentially the same thing.

It's unpleasant the way it destroys instead of inserts.

If my cursor is ON the symbol and I accept a suggestion - fine, replace it.

But if my cursor is inserting at the head of it, just insert the accepted symbol.


I read through this entire thread again. I had previously missed the registry edit - and I'm trying that out now.

HOWEVER - that behavior is still NOT what I want.

I want "if cursor is ON the symbol, replace it; if the cursor is BEFORE the symbol, insert it."
Your registry only allows "always/never/default" - where default is the problematic behavior I don't like.
Always & Never are too dumb. I need "if cursor is on the symbol, replace it. If cursor is in front (at leading edge) do NOT replace it)."

EDIT: Also, the documentation seems to be the opposite of what's true:

It claims that it will replace the symbol unless it is known. But the behavior I've witnessed is it will replace the symbol unless it is UNknown.

Edited by - Mordachai on Oct 06 2016 2:38:33 PM
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3164 Posts

Posted - Oct 06 2016 :  6:38:05 PM  Show Profile  Reply with Quote
Mordachai: we improved the behaviour with build 2112. Have you tried using that?
Go to Top of Page

Mordachai
Tomato Guru

USA
224 Posts

Posted - Oct 07 2016 :  3:05:28 PM  Show Profile  Reply with Quote
I will try for the next week and give you feedback if I have problems. Thank you!
Go to Top of Page

Mordachai
Tomato Guru

USA
224 Posts

Posted - Oct 07 2016 :  5:10:37 PM  Show Profile  Reply with Quote
Hey - so far so good!!!

I've been inserting namespace qualifiers without VA overwriting the symbol I'm trying to qualify! Woot!

THANK YOU! :D
Go to Top of Page

Mordachai
Tomato Guru

USA
224 Posts

Posted - Oct 10 2016 :  10:36:36 AM  Show Profile  Reply with Quote
Okay - an update - :(

Here's a common scenario: I need to change the level of indirection of my code (almost any problem can be solved with another layer of indirection):

So instead of an object being stored in the container `m_OtherInstallsOfThisProduct`, a pointer of some type is stored there.
So I need to change the following from a direct -> to ->get().
But when I type get - and am offered the "get()" from the drop-down, and accept it, "GetPaidVersion" is deleted!!!

This is sooooo wrong. My cursor is at the BEGINNING of a symbol, not the middle of it, and so accepting the offered symbol should INSERT it.

It's really that simple 99.999% of the time.

Also - even if that algorithm is wrong - it's super trivial to hit Shift+Del to delete to the next non-symbol character - whereas it is a major PIA to have to undo and walk back this over-eager replacement strategy that VA seems to insist upon using. :(

return m_OtherInstallsOfThisProduct.begin()->GetPaidVersion() < CCimexPaidVersion(m_Version);
return m_OtherInstallsOfThisProduct.begin()->^geGetPaidVersion() < CCimexPaidVersion(m_Version);

Please offer a registry setting or - better - change the default behavior to respect my insertion point.

If I am at the head of a symbol - PLEASE DO NOT OVERWRITE IT.

Or tell me of the scenarios where overwriting it is not only better, but creates less work and headache for me than having to leave the "wrong text" after accepting the suggestion (which I can super-trivially delete with Shift+Del)?
Go to Top of Page

Mordachai
Tomato Guru

USA
224 Posts

Posted - Oct 10 2016 :  12:35:58 PM  Show Profile  Reply with Quote
quote:
Originally posted by Mordachai

Okay - an update - :(

Here's a common scenario: I need to change the level of indirection of my code (almost any problem can be solved with another layer of indirection):

So instead of an object being stored in the container `m_OtherInstallsOfThisProduct`, a pointer of some type is stored there.
So I need to change the following from a direct -> to ->get().
But when I type get - and am offered the "get()" from the drop-down, and accept it, "GetPaidVersion" is deleted!!!

This is sooooo wrong. My cursor is at the BEGINNING of a symbol, not the middle of it, and so accepting the offered symbol should INSERT it.

It's really that simple 99.999% of the time.

Also - even if that algorithm is wrong - it's super trivial to hit Ctrl+Del to delete everything to the right up to the next non-symbol character - whereas it is a major PIA to have to undo and walk back this over-eager replacement strategy that VA seems to insist upon using. :(

return m_OtherInstallsOfThisProduct.begin()->GetPaidVersion() < CCimexPaidVersion(m_Version);
return m_OtherInstallsOfThisProduct.begin()->^geGetPaidVersion() < CCimexPaidVersion(m_Version);

Please offer a registry setting or - better - change the default behavior to respect my insertion point.

If I am at the head of a symbol - PLEASE DO NOT OVERWRITE IT.

Or tell me of the scenarios where overwriting it is not only better, but creates less work and headache for me than having to leave the "wrong text" after accepting the suggestion (which I can super-trivially delete with Ctrl+Del)?


Go to Top of Page

tjcbs
Ketchup Master

99 Posts

Posted - Jan 03 2017 :  3:23:37 PM  Show Profile  Reply with Quote
Please add a proper setting for this.

It is extrememly annoying having to find this post with each new install of VS.

Since it is in the registry only, it can not be exported along with the other VS settings.

Wasting years of my life, making a stupid game: http://www.indiedb.com/games/plannet
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3164 Posts

Posted - Jan 03 2017 :  6:27:02 PM  Show Profile  Reply with Quote
Mordachai: thank you for your feedback. After pondering about your request, I have put it a feature request for this to see what the team thinks of this idea:

case=102622

For now, can you change this registry setting as a workaround:
https://docs.wholetomato.com/default.asp?W640

My new proposed behaviour would be something like this:
1. If you're typing at the middle of the symbol or pressing ctrl+space there, overwrite would happen. You may be changing a symbol which can be common with enums (changing to another enum item).
e.g. changing STATE_WAITING to STATE_RUSH. I do this type of changes often.

2. If you're typing at the beginning of the symbol, VA would always overwriteinsert, which is useful with qualifications. e.g. you have an enum but you want to qualify it:
You type EnumName:: before STATE_WAITING, and accepting a listbox for the enum name. e.g. when you changed the enum to enum class.

tjcbs: sorry for the inconvenience. Would the new proposed method work better for you as well?

For now, you can export your VA settings via: VA Options -> Performance -> Export

Edited by - accord on May 21 2017 1:03:50 PM
Go to Top of Page

rb_
New Member

9 Posts

Posted - Jan 03 2017 :  6:49:58 PM  Show Profile  Reply with Quote
The proposed work around still wouldn't meet my expectations - which is that symbols should never be overwritten.

I reiterate the request to simply make this a setting - allow overwriting behavior of this feature to be completely disabled.

You already have it as a registry key. Why not add it as a GUI setting?
Go to Top of Page

accord
Whole Tomato Software

United Kingdom
3164 Posts

Posted - Jan 03 2017 :  6:55:53 PM  Show Profile  Reply with Quote
I have put in a feature request to add an option for CompletionOverwriteBehavior in VA Option dialog

case=102623
Go to Top of Page

tjcbs
Ketchup Master

99 Posts

Posted - May 19 2017 :  4:47:23 PM  Show Profile  Reply with Quote
Please implement this already. It is a single gui option, it shouldn't be hard. Once again, I have to find the post, and slog through the process of changing this registry setting. This behavior is wasting your user's time, your job is to preserve their time, and their sanity.

Wasting years of my life, making a stupid game: http://www.indiedb.com/games/plannet
Go to Top of Page
Page: of 3 Previous Topic Topic Next Topic  
Next Page
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2019 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000