{"id":2717,"date":"2022-11-09T12:37:39","date_gmt":"2022-11-09T16:37:39","guid":{"rendered":"https:\/\/blog.wholetomato.com\/?p=2717"},"modified":"2023-11-28T03:08:08","modified_gmt":"2023-11-28T07:08:08","slug":"visual-assist-2022-4-now-available","status":"publish","type":"post","link":"https:\/\/www.wholetomato.com\/blog\/visual-assist-2022-4-now-available\/","title":{"rendered":"Visual Assist 2022.4 now available"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">The fourth update to Visual Assist 2022 is here! This release updates some core Visual Assist behaviors, adds a key C++ language feature, and adds support for external configuration files. The release also continues initiatives on shader code from the previous release.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you haven\u2019t updated yet, download the latest release <\/span><a href=\"https:\/\/www.wholetomato.com\/downloads\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><b>Parser changes<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">One of the highlights of this release is <a href=\"https:\/\/www.wholetomato.com\/blog\/2021\/12\/15\/improving-visual-assist-we-need-your-opinion\/\" target=\"_blank\" rel=\"noopener\">improvements<\/a> to Visual Assist\u2019s parser. The parser is core to how Visual Assist understands (and therefore suggests) code.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">Numerous upgrades and fixes have been undertaken to make the parser smarter. This makes it recognize <a href=\"https:\/\/www.wholetomato.com\/blog\/2021\/03\/11\/how-to-modernize-c-code-with-visual-assist-in-five-easy-steps\/\" target=\"_blank\" rel=\"noopener\">modern C++ code<\/a> standards and practices, thereby minimizing unwanted behavior as well. Here are some of them:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"3\"><span style=\"font-weight: 400;\">Now distinguishes between std::get and std::tuple.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"3\"><span style=\"font-weight: 400;\">Now understands parameters declared with &#8220;out int&#8221; in C#<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"3\"><span style=\"font-weight: 400;\">Fixed parser getting confused with case&#8217;1&#8242; inside switch statement.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Expect a steady stream of updates to parser behavior. If you encounter any bugs or errors <\/span><a href=\"https:\/\/forums.wholetomato.com\/\"><span style=\"font-weight: 400;\">submit a bug report on our community forums<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><b>Support for <\/b><b>C++17\u2019s structured bindings<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">With the parser changes, VA 2022.4 also includes added support for <\/span><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/structured_binding#:~:text=Binds%20the%20specified%20names%20to,be%20of%20a%20reference%20type.\"><span style=\"font-weight: 400;\">C++17\u2019s structured bindings<\/span><\/a><span style=\"font-weight: 400;\">. <span style=\"font-weight: 400; color: #252525;\">Structured bindings enable users to declare multiple variables initialized from a tuple or struct, simplifying and improving code readability.<\/span><\/span><\/p>\n<div id=\"attachment_2724\" style=\"width: 1130px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/VA-Supports-Structured-Bindings.png?ssl=1\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2724\" data-attachment-id=\"2724\" data-permalink=\"https:\/\/www.wholetomato.com\/blog\/visual-assist-2022-4-now-available\/va-supports-structured-bindings\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/VA-Supports-Structured-Bindings.png?fit=1120%2C543&amp;ssl=1\" data-orig-size=\"1120,543\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"VA Supports Structured Bindings\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;VA&#8217;s improved parser recognizing structured bindings introduced in C++17\u00e2\u20ac\u201dadding support for code suggestion and navigation.&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/VA-Supports-Structured-Bindings.png?fit=300%2C145&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/VA-Supports-Structured-Bindings.png?fit=1024%2C496&amp;ssl=1\" class=\"size-full wp-image-2724\" src=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/VA-Supports-Structured-Bindings.png?resize=1120%2C543&#038;ssl=1\" alt=\"\" width=\"1120\" height=\"543\" srcset=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/VA-Supports-Structured-Bindings.png?w=1120&amp;ssl=1 1120w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/VA-Supports-Structured-Bindings.png?resize=300%2C145&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/VA-Supports-Structured-Bindings.png?resize=1024%2C496&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/VA-Supports-Structured-Bindings.png?resize=768%2C372&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/VA-Supports-Structured-Bindings.png?resize=360%2C175&amp;ssl=1 360w\" sizes=\"auto, (max-width: 1120px) 100vw, 1120px\" data-recalc-dims=\"1\" \/><\/a><p id=\"caption-attachment-2724\" class=\"wp-caption-text\">VA&#8217;s improved parser recognizes structured bindings introduced in C++17, adding support for VA features such as code suggestion and navigation.<\/p><\/div>\n<p><span style=\"font-weight: 400;\">With this change, variables that are contained within the binding are now recognized. For example, typing a dot will now be properly colored and displayed on the navigation bar. You can also rename, search, and perform all the other actions you would expect from VA.<\/span><\/p>\n<h3><b>Continued HLSL improvement<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">The recently-added <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/direct3dhlsl\/dx-graphics-hlsl\"><b>High Level Shading Language <\/b><\/a><span style=\"font-weight: 400;\">(HLSL) <\/span><b>support<\/b><span style=\"font-weight: 400;\"> has been augmented with coloring support for a variety of file types. This includes matrix types double4x2 and fixed3x4, and some base types such as min10float3. <span style=\"font-weight: 400; color: #252525;\">Because HLSL typically lacks corresponding header files, a more sophisticated understanding of code was required.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;\">For those who are unaware, official HLSL support shipped with the <\/span><a href=\"https:\/\/www.wholetomato.com\/blog\/2022\/08\/18\/visual-assist-2022-322-3-now-available\/\"><span style=\"font-weight: 400;\">previous release<\/span><\/a><span style=\"font-weight: 400;\">. HLSL and Unreal\u2019s USF and USH files now integrate with VA\u2019s core features.<\/span><\/p>\n<h3><b>Respecting VSCode excludes config files<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Visual Assist now includes an option to consider configuration instructions similar to those used in VSCode settings .json files. This comes at the request of those who wish to skip unnecessary parsing when building solutions.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This means that you can open a file without needing to parse an entire project or a solution, saving precious time. This is a way to essentially tell Visual Studio and Visual Assist to \u201copen a file but do not parse anything else apart from a specific part.\u201d<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">Enable the option to detect and honor exclu<\/span><span style=\"font-weight: 400;\">de settings via ticking a checkbox in <\/span><span style=\"font-weight: 400;\">Visual Assist options<\/span><span style=\"font-weight: 400;\">. Here is an example of a configuration file with exclude settings:<\/span><\/p>\n<div id=\"attachment_2720\" style=\"width: 818px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/Example-config-settings.png?ssl=1\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2720\" data-attachment-id=\"2720\" data-permalink=\"https:\/\/www.wholetomato.com\/blog\/visual-assist-2022-4-now-available\/example-config-settings\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/Example-config-settings.png?fit=808%2C294&amp;ssl=1\" data-orig-size=\"808,294\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Example config settings\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;A simple JSON file that VA will now recognize. Although, these are often configured in VSCode itself through a UI.&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/Example-config-settings.png?fit=300%2C109&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/Example-config-settings.png?fit=808%2C294&amp;ssl=1\" class=\"size-full wp-image-2720\" src=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/Example-config-settings.png?resize=808%2C294&#038;ssl=1\" alt=\"\" width=\"808\" height=\"294\" srcset=\"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/Example-config-settings.png?w=808&amp;ssl=1 808w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/Example-config-settings.png?resize=300%2C109&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/Example-config-settings.png?resize=768%2C279&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/Example-config-settings.png?resize=360%2C131&amp;ssl=1 360w\" sizes=\"auto, (max-width: 808px) 100vw, 808px\" data-recalc-dims=\"1\" \/><\/a><p id=\"caption-attachment-2720\" class=\"wp-caption-text\">An example configuration that VA will now recognize. Note: The actual JSON files are often configured in VS Code itself through a UI.<\/p><\/div>\n<h3><b>A new code inspection<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">This release also adds an inspection for <\/span><a href=\"https:\/\/clang.llvm.org\/extra\/clang-tidy\/checks\/bugprone\/string-integer-assignment.html\"><i><span style=\"font-weight: 400;\">bugprone-string-integer-assignment<\/span><\/i><\/a><span style=\"font-weight: 400;\">\u2014a check based on LLVM\/Clang-Tidy. It checks for easy-to-miss instances of assigning an integer to\u00a0 <\/span><span style=\"font-weight: 400;\">std::basic_string&lt;CharT&gt;<\/span><span style=\"font-weight: 400;\"> (<\/span><span style=\"font-weight: 400;\">std::string, std::wstring<\/span><span style=\"font-weight: 400;\">, etc.).<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">Access other code inspections by accessing the following: <\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">(If you are not seeing options, please remember to <\/span><a href=\"https:\/\/docs.wholetomato.com\/default.asp?W760\"><span style=\"font-weight: 400;\">enable code inspections<\/span><\/a><span style=\"font-weight: 400;\">!)<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400; text-align: left;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Quick Actions and Refactorings menu ( <\/span><i><span style=\"font-weight: 400;\">Shift + Alt + Q<\/span><\/i><span style=\"font-weight: 400;\"> )\u00a0<\/span><\/li>\n<li style=\"font-weight: 400; text-align: left;\" aria-level=\"1\"><em><span style=\"font-weight: 400;\">VAssistX <\/span><\/em><span style=\"font-weight: 400;\">->><\/span><span style=\"font-weight: 400;\"><em> Code Inspection (beta<\/em>) <\/span><span style=\"font-weight: 400;\">->> <\/span><em><span style=\"font-weight: 400;\">VA Code Inspection Results<\/span><\/em><\/li>\n<\/ul>\n<h3><b>Minor bug fixes<\/b><\/h3>\n<ul>\n<li><span style=\"font-weight: 400;\">Fixed comments getting duplicated in tooltips.<\/span><\/li>\n<li>Fixed issue where VA&#8217;s tooltips would not appear if IntelliSense was disabled<\/li>\n<li><span style=\"font-weight: 400;\">Fixed issue where VA Outline tooltip spreads across two monitors with different DPI settings could cause the system to freeze.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Fixed issue where tomato icon may become black on hover in VS 2022<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Fixed issue where class method name that begins with &#8220;using&#8221; is missing from MIF.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">For more information about the changes in this release, head on over to the <\/span><a href=\"https:\/\/support.wholetomato.com\/default.asp?W404\"><span style=\"font-weight: 400;\">documentation<\/span><\/a><span style=\"font-weight: 400;\">. We hope you find these changes useful. Happy coding!<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The fourth update to Visual Assist 2022 is here! This release updates some core Visual Assist behaviors, adds a key C++ language feature, and adds support for external configuration files. The release also continues initiatives&#8230;<\/p>\n","protected":false},"author":213500340,"featured_media":2722,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[10673833],"tags":[2426,1509023,12004844,726359802,717708410],"class_list":["post-2717","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-build-announcements","tag-c","tag-clang","tag-visual-assist","tag-visual-assist-for-visual-studio","tag-visual-studio-2022"],"jetpack_publicize_connections":[],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.wholetomato.com\/blog\/wp-content\/uploads\/2022\/11\/WT_Banner_Visual-Assist-2022.3_1200x628-No-Logo.png?fit=1200%2C628&ssl=1","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfpLS4-HP","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts\/2717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/users\/213500340"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/comments?post=2717"}],"version-history":[{"count":18,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts\/2717\/revisions"}],"predecessor-version":[{"id":3542,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts\/2717\/revisions\/3542"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/media\/2722"}],"wp:attachment":[{"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/media?parent=2717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/categories?post=2717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wholetomato.com\/blog\/wp-json\/wp\/v2\/tags?post=2717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}