Wiki

Case Status
Log In

Wiki

 
Whole Tomato Software - Home
  • RSS Feed

Default IntelliSense and UE4

Visual Assist operates within Visual Studio with or without default IntelliSense. In small-to-medium solutions, the related modules provide separate and overlapping functionality without degradation of IDE responsiveness. If responsiveness suffers with a large solution, consider disabling default IntelliSense and using only the functionality of Visual Assist.

Aside from differences in functionality, Visual Assist and default IntelliSense employ different types of C/C++ parsers during edit. The advantage and disadvantage of the parser in default IntelliSense is that it is relatively complete, similar to one used in the early phase of a compilation. The parser finds definitions of all symbols, even those generated with complex preprocessor macros. Unfortunately, the parser sometimes requires significant resources to parse source code during edit.

The advantage and disadvantage of the parser in Visual Assist is that it is a relatively shallow parser. The parser understands code only enough to provide assistance during edit, but the parser sometimes fails to resolve deep enough to recognize definitions of some symbols. (Visual Assist actually employs two parsers: one for coloring and one for all other features. Both are shallow parsers.)

Identifying Default IntelliSense

Default Intellisense is actively parsing when its icon pulses. The icon is found in the bottom frame of Visual Studio.

If you regularly wait for member listboxes to appear, a pulsing icon suggests default IntelliSense is the culprit.

Content of Enhanced Listboxes

When parsers in both Visual Studio and Visual Assist are active, the enhanced listboxes of Visual Assist can be populated by either parser. Select the parser via the options dialog of Visual Assist.

Generated Headers of UE4

UE4 makes extensive use of preprocessor macros, and some of those macros are #defined in the generated.h file that accompanies each UCLASS. If you create a UCLASS MyClass, the file MyClass.h will #include MyClass.generated.h. The generated header, MyClass.generated.h, is made in the early part of the UE4 build process.

Default Intellisense requires the generated header in order to parse a UCLASS. Visual Assist, with its shallow parser, manages without the generated header.

If you rely on default IntelliSense, make sure your generated headers exist and are up to date.

Try Alt+G when the caret is on the #include directive of a generated header, e.g. on #include MyClass.generated.h. If Visual Assist does not open the target header, build your class—even if you know the build will fail. The build should produce the generated header required by default IntelliSense.

Also, some UE4 macros depend on the preprocessor macro __LINE__, whose value varies as you edit. UCLASS is one such macro. If you add/remove lines before the definition of a UCLASS, default IntelliSense no longer parses the UCLASS because its generated header, which expects __LINE__ to have a specific value, is out of date.

If you edit above a UCLASS, rebuild your class to refresh the its generated header and make default IntelliSense parse your UCLASS.

Disabling Default IntelliSense

If you suspect that default IntelliSense adversely affects performance of the IDE, especially with a large solution such as UE4, try operating with only the parser in Visual Assist.

First, make sure you are running the latest build Visual Assist. This article assumes you have the latest build, and improvements to the functionality and performance of the product's shallow parser are included in most builds. If you are not sure you have the latest build, click the "Check Now" button on the Startup page of the options dialog of Visual Assist.

Support for UE4

If you are working with UE4, enable support for UE4.

Content of Enhanced Listboxes

Make sure Visual Assist gets content for its enhanced listboxes from its parser, via the options dialog of Visual Assist.

Options Dialog of Visual Studio

Disable default IntelliSense by changing the following two settings in the options dialog of Visual Studio. (Adjusting these settings eliminates more parsing than what is eliminated when you set Disable IntelliSense to True.) Adjust the settings in the specified order, i.e. set the interval to zero before disabling the database.

Tools | Options | Text Editor | C/C++ | Advanced | Rescan Solution Interval = 0

Tools | Options | Text Editor | C/C++ | Advanced | Disable Database = True

Symbol Database

If you are working with UE4, tell Visual Assist to rebuild its symbol database, via its options dialog.

Restart Visual Studio, open your solution, and wait for parsing to complete.

Parsing Errors

If you encounter errors or omissions in the IntelliSense-like features of Visual Assist, report them via discussion forums, contact form, or email to support@wholetomato.com. Your report might initiate a parser improvement in a future build of Visual Assist.