{"id":25134,"date":"2019-11-04T21:12:08","date_gmt":"2019-11-04T21:12:08","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=25134"},"modified":"2019-11-04T21:12:08","modified_gmt":"2019-11-04T21:12:08","slug":"visual-studio-code-c-extension-nov-2019-update","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/visual-studio-code-c-extension-nov-2019-update\/","title":{"rendered":"Visual Studio Code C++ extension: Nov 2019 update"},"content":{"rendered":"<p>The November 2019 update of the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode.cpptools\">Visual Studio Code C++ extension<\/a> is now available. This latest release comes with a big list of improvements: Find All References, Rename Symbol refactoring, support for localization, new navigation breadcrumb controls, and improvements to the Outline view to name a few. For a more detailed list of changes, check out our <a href=\"https:\/\/github.com\/microsoft\/vscode-cpptools\/releases\/tag\/0.26.0\">release notes on GitHub<\/a>.<\/p>\n<h3>Find All References<\/h3>\n<p>Now you can right-click on a C++ symbol anywhere in your file and select <strong>Find All References<\/strong> from the context menu. This will search for all instances of a symbol inside the current workspace. Depending on the symbol selected, the search will show at first a progress bar while it is searching for all instances of that symbol or directly display the results in the References Results view.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-25135 \" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-text-description-automatically-ge.png\" alt=\"C++ editor with context menu showing &quot;Find all references&quot; menu item selected\" width=\"529\" height=\"233\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-text-description-automatically-ge.png 927w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-text-description-automatically-ge-300x132.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-text-description-automatically-ge-768x338.png 768w\" sizes=\"(max-width: 529px) 100vw, 529px\" \/><\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-25136\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati.png\" alt=\"Progress dialog showing &quot;Find all References&quot; operation with 30 files out of 37 completed\" width=\"533\" height=\"140\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati.png 650w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-300x79.png 300w\" sizes=\"(max-width: 533px) 100vw, 533px\" \/><\/p>\n<p>The References Results window will display its results into two panes \u2013 the top one will show the confirmed results: those instances where IntelliSense confirmed that the text match is also a semantic match for the symbol you searched for. The bottom pane will show all other text matches, categorized by the location where they were found e.g. in a string, in a comment or inside an inactive macro block.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-25137\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-1.png\" alt=\"Find all references results showing in the References Window\" width=\"1158\" height=\"527\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-1.png 1158w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-1-300x137.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-1-768x350.png 768w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-1-1024x466.png 1024w\" sizes=\"(max-width: 1158px) 100vw, 1158px\" \/><\/p>\n<p>You can clear individual results from the list or all the results by using the controls in the References Results window. If you clear all the results, you can also review the list of previous searches and you have the option to rerun them.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-25138\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-2.png\" alt=\"References results windows showing history of searches\" width=\"283\" height=\"321\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-2.png 537w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-2-265x300.png 265w\" sizes=\"(max-width: 283px) 100vw, 283px\" \/><\/p>\n<h3>Rename Symbol refactoring<\/h3>\n<p>The Rename symbol operation is unquestionably the most requested refactoring tool by C++ developers. With the November 2019 release, we\u2019re happy to announce that this functionality is now supported in the C++ extension. Whether you directly invoke Rename via its keyboard shortcut F2, or select it from the context menu, you will be prompted with a textbox that allow you to introduce the new symbol name.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-25139\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-3.png\" alt=\"C++ editor with Rename operation in progress\" width=\"572\" height=\"141\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-3.png 924w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-3-300x74.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-3-768x190.png 768w\" sizes=\"(max-width: 572px) 100vw, 572px\" \/><\/p>\n<p>If all the references to the symbol can be confirmed, the rename operation is performed immediately after you confirm the new name for your symbol. Otherwise, a list of candidates is displayed in the C++ Rename Results window. Before committing the refactor operation, you now have the option to include additional candidates for rename that were found as text matches (not semantic matches) during the search e.g. in strings, comments or inactive blocks.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-25140\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-text-description-automatically-ge-1.png\" alt=\"Pending Rename window showing confirmed changes and additional candidates for rename\" width=\"284\" height=\"536\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-text-description-automatically-ge-1.png 501w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-text-description-automatically-ge-1-159x300.png 159w\" sizes=\"(max-width: 284px) 100vw, 284px\" \/><\/p>\n<p>To confirm a rename operation, click on the \u201cCommit Rename\u201d action on the \u201cPending rename\u201d title bar.<\/p>\n<h3>Localization support<\/h3>\n<p>With this version, the C++ extension UI, command names, tooltips, warnings, and errors are all localized and will respect your choice of language that you selected via the \u201cConfigure Display Language\u201d command.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-25141\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-4.png\" alt=\"Visual Studio Code with UI elements in Japanese\" width=\"1430\" height=\"942\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-4.png 1430w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-4-300x198.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-4-768x506.png 768w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-4-1024x675.png 1024w\" sizes=\"(max-width: 1430px) 100vw, 1430px\" \/><\/p>\n<h3>Navigation breadcrumbs in C++ editors and Outline view improvements<\/h3>\n<p>The C++ editor now includes in its navigation breadcrumbs the symbol path up to the cursor position in addition to the file path. To quickly navigate to the Breadcrumbs UI, you can run the \u201c<strong>Focus Breadcrumbs<\/strong>\u201d command (default keyboard shortcut for this command is Ctrl+Shift+. or Command+Shift+.). To switch between the different elements in the UI, use the <strong>Left<\/strong> and <strong>Right<\/strong> keyboard shortcuts (which default to Ctrl+Left Arrow\/Right Arrow or Option+Left Arrow\/Right Arrow).<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-25142\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-5.png\" alt=\"C++ editor with breadcrumb dropdown expanded\" width=\"653\" height=\"329\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-5.png 1412w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-5-300x151.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-5-768x387.png 768w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-a-cell-phone-description-automati-5-1024x516.png 1024w\" sizes=\"(max-width: 653px) 100vw, 653px\" \/><\/p>\n<p>You can also customize the appearance of breadcrumbs. If you have very long paths or are only interested in either file paths or symbol paths, you can configure <strong>breadcrumbs.filePath<\/strong> and <strong>breadcrumbs.symbolPath<\/strong> settings (both support <strong>on<\/strong>, <strong>off<\/strong>, and <strong>last<\/strong>). By default, breadcrumbs show icons, but you can remove that by setting <strong>breadcrumbs.icons<\/strong> to false.<\/p>\n<p>New in this release also is the ability for Outline view (as well as the new Breadcrumb section) to list the C++ symbols as a hierarchy rather than a flat list.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-25143\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-text-description-automatically-ge-2.png\" alt=\"Outline window showing hierarchy of C++ types\" width=\"292\" height=\"387\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-text-description-automatically-ge-2.png 600w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2019\/10\/a-screenshot-of-text-description-automatically-ge-2-227x300.png 227w\" sizes=\"(max-width: 292px) 100vw, 292px\" \/><\/p>\n<h3>What do you think?<\/h3>\n<p><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode.cpptools\">Download the C++ extension for Visual Studio Code<\/a> today, give it a try, and let us know what you think. If you run into any issues, or have any suggestions, please report them in the <a href=\"https:\/\/github.com\/Microsoft\/vscode-cpptools\/issues\">Issues section of our GitHub repository<\/a>. You can also join our Insiders program and get access to early builds of our releaseby going to <strong>File<\/strong> &gt; <strong>Preferences<\/strong> &gt; <strong>Settings<\/strong> (Ctrl+,) and under <strong>Extensions<\/strong> &gt; <strong>C\/C++,<\/strong> change the \u201c<strong>C_Cpp: Update Channel<\/strong>\u201d to \u201c<strong>Insiders<\/strong>\u201d.<\/p>\n<p>We can be reached via the comments below or in email at <a href=\"mailto:visualcpp@microsoft.com\">visualcpp@microsoft.com<\/a>. You can also find our team on Twitter at <a href=\"https:\/\/twitter.com\/visualc\">@<\/a><a href=\"https:\/\/twitter.com\/visualc\">VisualC<\/a>.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Find All References, Rename Symbol refactoring, support for localization, new navigation breadcrumb controls, and improvements to the Outline view are only a few of the improvements in the November 2019 update of Visual Studio Code C++ extension.<\/p>\n","protected":false},"author":308,"featured_media":25140,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[270,275,277],"tags":[8,140,64,284,2261,2810,276,2809],"class_list":["post-25134","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcement","category-visual-studio-code","category-writing-code","tag-announcement","tag-c","tag-find-all-references","tag-linux","tag-macos","tag-rename-refactor","tag-vscode","tag-windows"],"acf":[],"blog_post_summary":"<p>Find All References, Rename Symbol refactoring, support for localization, new navigation breadcrumb controls, and improvements to the Outline view are only a few of the improvements in the November 2019 update of Visual Studio Code C++ extension.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/25134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/308"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=25134"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/25134\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/25140"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=25134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=25134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=25134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}