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
 VAX Code Definition Window
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 18 2022 :  12:23:12 AM  Show Profile  Reply with Quote
Could VAX add a VAX Code Definition Window, one that does the equivalent of an alt-g lookup on the thing under the cursor, and display it contextually in the VAX Code Definition Window?

If you're on a function, then you could show the forward declaration / signature, and the actual start of the body.

And also, I'm currently limited to using VAX 1837 in old versions of Visual Studio (2003, for example). Would it be possible to add that ability to VAX for versions of VS 2005 and older so that it has the VAX Code Definition Window as well? By taking that older code base and just adding that one ability as an old tool update?

It's a tall order, but there aren't that many tools for older versions of Visual Studio. And the reason I use the older versions for some development is because it's so much faster than the newer versions which are memory hogs, and do too much while developing and debugging.

Visual Studio 1998, for example, is nearly instantaneous for C/C++ edit-and-continue apply changes. VS 2003 takes about 2 seconds. The same code in VS 2008 takes about 4-5 seconds. And the same code in VS 2019 or VS2022 takes about 8 seconds.

When you do lots of development and debugging / testing, using the older tools is actually more productive in most cases than the newer ones. What's lacking is a good Code Definition Window in those older tools. Since VAX knows how to look things up and navigate to a particular place, it would be a great add-on, and if you provided that older tool support it would benefit everyone who uses those older tools (in VMs, for speed of development and debugging).

Thank you,
Rick C. Hodgin

Edited by - foxmuldr on Dec 18 2022 12:24:31 AM

feline
Whole Tomato Software

United Kingdom
18099 Posts

Posted - Dec 19 2022 :  06:14:19 AM  Show Profile  Reply with Quote
I have just installed VS2003 under Windows 7, which complains that VS2003 has known compatibility issues with Windows 7, which isn't ideal, considering that Windows 7 is long past getting security updates from Microsoft.

Still, VA 2471, the current version, installed quite happily into VS2003, so I am not sure why you are limited to such an old version of VA, unless you are using an old license that doesn't allow a newer version. But this would have to be quite an old license, since VA 1837 is quite a few years old now.

Remember that such an old version of Visual Studio won't support more modern C++. Speed isn't the only thing that matters.

As for code definition, are you aware of VA's Context and Definition fields? These already show you the function definition when you place the caret into a function call:

https://docs.wholetomato.com/default.asp?W188

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

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 19 2022 :  08:50:20 AM  Show Profile  Reply with Quote
I'm running it under Windows 2000 Professional SP4. Try installing there.

Edited by - foxmuldr on Dec 19 2022 08:52:41 AM
Go to Top of Page

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 19 2022 :  08:52:23 AM  Show Profile  Reply with Quote
quote:
Remember that such an old version of Visual Studio won't support more modern C++. Speed isn't the only thing that matters.

Most of the programming I do is assembly and C in a C++ compiler, so I use very few modern C++ features. But even so, I can do the bulk of the programming in VS2003, and then move up to a newer version for final compilation and tweaking.

In my experience, edit-and-continue with faster debugging is almost always faster than any other type of development. It's easy to make tweaks, adjust things, even code new parts to some extent, all while running the app. And being able to do that without 5-10 second delays here and there is well worth the loss you have in some modern features (during development). You can always refactor later if they're really required.
quote:
As for code definition, are you aware of VA's Context and Definition fields? These already show you the function definition when you place the caret into a function call:

Yes. It's not the same as the code definition window which shows surrounding code, including comments, and allows you to scroll.

Edited by - foxmuldr on Dec 19 2022 08:54:39 AM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18099 Posts

Posted - Dec 20 2022 :  06:21:49 AM  Show Profile  Reply with Quote
Replicating a feature of newer versions of Visual Studio isn't a very efficient use of our time or resources. Plus any new features that we add to VA are always added to the latest version, so if you are still using VA 1837 then you are not going to benefit from any new features. If you were using the latest version of VA, which does support older versions of Visual Studio, then it might be worth discussing a bit.

As for running Windows 2000, VMware Workstation 17 is crashing when I try and edit my Windows 2000 VM's settings, which isn't that helpful.

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

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 22 2022 :  08:44:19 AM  Show Profile  Reply with Quote
Try Virtual Box.
Go to Top of Page

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 22 2022 :  08:48:48 AM  Show Profile  Reply with Quote
One thing VS's Code Definition Window doesn't do is show both references, or also overloads. When I hit Alt+G, I get a menu of multiple places to go if there are multiple. The VAX Code Definition window could show those multiple sources, with as many lines as would fit based on how many there were.

If you would add on a feature to allow 3rd party apps to hook into certain API features you expose, we could add these things. It would make your product so much more powerful. We'd need access to a few key hook points, and callbacks to do things like lookup a token and receive the array (such as whatever an Alt+G lookup does internally), and things like the size of the VAX Custom window. We could paint our own DC and return handle that as something to overlay in that custom window.

So much more could be exposed through VAX's base abilities if you allowed us to have access to some of those functions.

I hope you'll (re-)consider offering us that ability.
Go to Top of Page

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 22 2022 :  09:40:33 AM  Show Profile  Reply with Quote
I've written an example of how to code the add-on API extension to VAX. It's been uploaded to this URL (expires in 30 days):

https://ufile.io/n6ka3olr

It's the 32KB ZIP file: vax_addon_api_example.zip
The solution is in vax\vax.sln.

If you load it, set your debugging environment to point to the parent where vax.exe and addon.dll are, and add the debugging parameter "addon.dll" (see vax.vcxproj.user, and the x86 32-bit environment should already have everything set), then you can F10 step into and trace how it runs, how it calls into add-on dll code, how it calls back into the vax code from there, etc. It's a stand-alone exe and dll that simulate the vax environment, and an add-on we would provide.

There are other functions defined that aren't used in this example (print_value), but it's just to show how they can be implemented.

By exposing hooks through a registration process, where our code (at startup) calls back into your API and says we want to hook into certain API points, then our code will be scheduled to run at those points on the parts you expose.

One hook could be before you draw your window content. We could overlay, augment, or completely swap out your with our content. A new VAX Custom or VAX Addon window might be usable for that end. You could even expose an API to create new windows that we name and populate (if that's possible).

It would allow us developers to have our own logic, built atop the base abilities of VAX, to create amazing addons that Whole Tomato does not have the resources for, and of such a kind that, if you like them, then you could contact those developers and directly incorporate those features with us having done the labor in creative content, development, and debugging.

It would give VAX a leg up on the competition because you extend your abilities beyond your rigid product release.

I'm willing to help with any of this code as I've indicated before. No charge.

Edited by - foxmuldr on Dec 22 2022 10:08:45 AM
Go to Top of Page

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 22 2022 :  8:15:11 PM  Show Profile  Reply with Quote
I tried upgrading to newer versions this evening. The error I'm getting is: "Cannot find import; DLL may be missing, corrupt, or wrong version. File 'KERNEL32.dll', function 'CreateActCtxW' (error 2)"

If you visit MSDN (https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createactctxw) and scroll near the bottom, you'll see that the minimum supported client is Windows XP.




Go to Top of Page

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 22 2022 :  8:19:08 PM  Show Profile  Reply with Quote
I just noticed this when trying newer versions. I was on 1837, which was the last version released in 2010. Version 1842 was released in 2011, and has this note:

Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18099 Posts

Posted - Dec 23 2022 :  11:02:26 AM  Show Profile  Reply with Quote
We are aware of the request to make a plugin interface for VA:

case=142275

but this isn't currently something we are looking to add. Please remember that Microsoft removed Macros from Visual Studio since basically "no one" used them. They were definitely useful and helpful, and I used to use them as a solution for various problems, but the average programmer shows no real interest in these sort of tools in Visual Studio.

For overloaded functions, in the current version of VA you can use Goto Related, Alt-Shift-G, to see the definitions of the different overloads, and to jump to them directly:

https://docs.wholetomato.com/default.asp?W478

If you are looking at overloaded methods in a class, which I know don't exist in C, but do in C++, then the bottom half of VA View, the Hovering Class Browser can be helpful:

https://docs.wholetomato.com/default.asp?W222

As for Windows 2000, it was a shock when someone recently reported running Windows 7 and I needed to check things there. If we are going to support the current versions of Windows and Visual Studio then we need to focus on them. Windows 2000 is now 22 years old, and not really recommended for general use.

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

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 23 2022 :  11:36:34 AM  Show Profile  Reply with Quote
quote:
Originally posted by feline
As for Windows 2000, it was a shock when someone recently reported running Windows 7 and I needed to check things there. If we are going to support the current versions of Windows and Visual Studio then we need to focus on them. Windows 2000 is now 22 years old, and not really recommended for general use.



My wife recently rented a vehicle for an out of state trip. It was a 2023 Toyota Highlander. It has steering assist to keep you in your lane. Cruise control that auto slows when you approach traffic. Built in navigation. All kinds of bells and whistles.

And while it's all great, it's also a lot more that can go wrong, and a much steeper learning curve to wield it all properly. Core technology from some timeframe like the late 80s / early 90s, when things were made at a time when mechanical knowledge had increased, manufacturing capability had increased, and people still had their grandfather's values where most were interested in building something that was easy for people to maintain and repair, so they could fix something that broke rather than replacing the whole unit.

The 1984-87 Honda Civics, for example, are some of the most flexible / easily maintainable cars ever made (by the home mechanic). Move into their next 88-91 models and you start needing special tools to do common things.

Being newer isn't always better, and software doesn't rust. Something to think about.

BTW, it would take very little for VAX to still support Windows 2000 if you did it right. A core engine that runs atop Windows 2000, using capabilities exposed in each version of VS through their plugin module that doesn't change much (if any) over time, and reaches out into the common core engine that does the work in all versions. By using the plugin modules for each version of VS, you would be able to support even Windows 95 if you wanted to.
Go to Top of Page

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 23 2022 :  1:57:20 PM  Show Profile  Reply with Quote
It may come across that I don't appreciate what you do with VAX. I do. And I'm very thankful for the product you've provided. VAX makes VS better in many regards. I'm very thankful for it.

Merry Christmas and a Happy New Year!
Go to Top of Page

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 27 2022 :  10:51:08 AM  Show Profile  Reply with Quote
UPDATE: Over this holiday break (12/23 thru 12/26), I added over 10,000 new lines of new code using that Windows 2000 + Visual Studio 2003 environment, and modified an additional 2,700. That's how much I use VAX in my heavy development times. Not having a Code Definition window is my only real hindrance to greater productivity in VS 2003 as I have to do Alt+G to go to the thing under the cursor, orient myself (which takes a moment as I'm dyslexic), look at the info I need, then navigate backward with a mouse click or Ctrl+- shortcut.

Would be nice to just be able to glance up to a known location on the screen and see what I need in context.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18099 Posts

Posted - Dec 28 2022 :  09:10:16 AM  Show Profile  Reply with Quote
From a commercial point of view, going back and adding a new feature to such an old version of VA simply doesn't make any sense, and takes quite a bit of work and time away from working on our next release. The same basic point applies to reworking VA so that it works on a very old, and no longer supported OS.

Remember modern versions of Windows support multiple monitors with different DPI and refresh rate settings. When the IDE is split across different monitors with different DPI and refresh settings we have to handle this well. Handing the OS gets woven into all sorts of spots, since we are working around the IDE, not always handling things in the most logical or structured manor possible.

For overloaded functions, when the caret is placed into a function call, have you tried the pull down arrow at the right hand side of the VA definition field, the right hand field on the VA navigation bar at the top of the editor (by default), where the Alt-M list appears from? This should show you the different overloads of the function.

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

foxmuldr
Tomato Guru

USA
338 Posts

Posted - Dec 28 2022 :  6:17:56 PM  Show Profile  Reply with Quote
The entire Win2K SP4 Professional OS running with Visual Studio 2003 (after loading my project, compiling, debugging for a few hours, everything), consumes a whopping 370 MB of memory. That's the whole OS and VS. It's just simply too small and fast not to use.

And please keep in mind, if you design and do it right you can always support older operating systems and modern ones with a common core code base that runs on the older OS. It doesn't take that much more effort, just some interfacing between the plugin that installs with each version of Visual Studio, and the actual core logic itself. The ability to call back into each version for newly exposed features is there. It just takes the appropriate design.

And having a tool that would work with every version of Visual Studio would get you additional customers.

I know we'll never see eye to eye on this, but you will see it in my philosophy if I ever succeed in any of my projects.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18099 Posts

Posted - Dec 30 2022 :  06:49:26 AM  Show Profile  Reply with Quote
Conceptually I do actually agree with you. But given that VA stopped supporting this OS many years ago, this isn't something that could be quickly or easily done. It's not as if we are at the point of stopping supporting the OS. Now a lot of re-working would have to be done, reworking years of work on the codebase. Such an undertaking would require quite a good justification.

When someone reporting Windows 7 is basically unheard of, let alone anything older, this is not something that makes a lot of sense. Basically should resources go on something that will be nice in theory, but basically no one will notice or use, or go on something that a large portion of our users will benefit from? This is an unusually clear cut example of this question that comes up for every single feature request I look at. It's often not an easy decision to make, so I try to work out if a feature looks likely to have reasonably wide use and appeal.

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