{"id":468903,"date":"2024-07-10T14:49:11","date_gmt":"2024-07-10T13:49:11","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=dotnet&#038;p=468903"},"modified":"2024-11-13T13:33:13","modified_gmt":"2024-11-13T12:33:13","slug":"full-line-code-completion-in-jetbrains-rider","status":"publish","type":"dotnet","link":"https:\/\/blog.jetbrains.com\/en\/dotnet\/2024\/07\/10\/full-line-code-completion-in-jetbrains-rider","title":{"rendered":"Try Full Line Code Completion in JetBrains Rider"},"content":{"rendered":"\n<p>Full Line Code Completion (FLCC), a local and fast AI model fine-tuned for product-specific programming languages, is one of the most anticipated features of this release. In this post, we\u2019d like to introduce you to FLCC, explain what it is and what it isn\u2019t, and invite you to try it out and provide feedback because you, as valued community members, complete us. Let\u2019s get into it.<\/p>\n\n\n    <div class=\"buttons\">\n        <div class=\"buttons__row\">\n                                                <a href=\"https:\/\/www.jetbrains.com\/rider\/download\/\" class=\"btn\" target=\"_blank\" rel=\"noopener\">Download JetBrains Rider<\/a>\n                                                    <\/div>\n    <\/div>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">What is Full Line Code Completion?<\/h2>\n\n\n\n<p><a href=\"https:\/\/plugins.jetbrains.com\/plugin\/14823-full-line-code-completion\" target=\"_blank\" rel=\"noopener\">Full Line Code Completion is an IntelliJ-platform plugin<\/a> designed to predict the following line of code in the current scope. Predictions use a fine-tuned model for each language to suggest syntactically correct lines. Syntactic accuracy means there\u2019s no chance that FLCC will suggest anything that will be a compilation error in the current scope of your code. Focusing on correctness means more valuable suggestions and less noise in the editor, keeping you in the coding flow.<\/p>\n\n\n\n<p>In addition to correctness, FLCC is <strong>entirely local<\/strong>, which means all suggestions are processed and presented in the privacy of your development environment. Local also enables offline scenarios for those famous coding sessions on trains, planes, and automobiles. The locality of the models also means suggestions are <em>\u201cblink and you\u2019ll miss it\u201d<\/em> fast. FLCC speed is another way we help you stay in the flow.<\/p>\n\n\n\n<p>Finally, the best part of FLCC is that it\u2019s included at <strong>no additional cost to current JetBrains IDE subscription holders.<\/strong> Yes, that\u2019s right; it\u2019s part of the core JetBrains IDE experience.&nbsp;<\/p>\n\n\n\n<p>Check out our <a href=\"https:\/\/www.youtube.com\/watch?v=DLBiJ5kYUFg\" target=\"_blank\" rel=\"noopener\">YouTube announcement<\/a> for a visual summary of FLCC. Developer advocate Paul Everitt explains FLCC in his usual charming way.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Local and Fast AI comes to your developer workflow - Full Line Code Completion\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/DLBiJ5kYUFg?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>I\u2019d also recommend reading the <a href=\"https:\/\/blog.jetbrains.com\/en\/blog\/2024\/04\/04\/full-line-code-completion-in-jetbrains-ides-all-you-need-to-know\">IntelliJ Full Line Code Completion announcement<\/a>, as it provides further details for those more curious about the plugin&#8217;s inner workings.<br>This sounds great, but what about the JetBrains Rider user community? When do <strong><em>we<\/em><\/strong><em> <\/em>get access to FLCC? Well&#8230; right now!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Trying out Full Line Code Completion<\/h2>\n\n\n\n<p>For earlier versions of JetBrains Rider, (the minor updates to 2024.1, starting with Rider 2024.1.4), the plugin can be found under the <strong>Staff Picks<\/strong> category of the Plugins section or by searching for &#8220;Full Line Completion&#8221; in the marketplace tab. Install the plugin as you would any other plugin from our JetBrains Marketplace.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1964\" height=\"1444\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/image000187-2024-07-10-09-35-09.png\" alt=\"JetBrains Marketplace tab in Plugins\" class=\"wp-image-492308\"\/><\/figure>\n\n\n\n<p><strong>As of the 2024.2 release of Rider, the Full Line Code Completion plugin is bundled<\/strong> and requires no additional efforts for you to start taking advantage of it. <\/p>\n\n\n\n<p>You can verify that the plugin is available and enabled by navigating to \u201cSettings | Editor\u201d and finding the \u201cCode Completion\u201d section. <\/p>\n\n\n\n<p>In this section, you\u2019ll see a \u201cMachine Learning-Assisted Completion\u201d group, where you can pre-emptively download the models for each supported language in JetBrains Rider: C#, CSS-like, and JavaScript\/TypeScript. Before F# folks ask, we are also researching F# support. C++ support for game developers is also coming soon.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1964\" height=\"1444\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/07\/image000189-2024-07-10-09-42-24.png\" alt=\"Machine Learning-Assisted Completion in settings\" class=\"wp-image-492341\"\/><\/figure>\n\n\n\n<p>You can choose which FLCC suggestions are available or disable the feature by checking the appropriate box. For folks on a strict bandwidth budget, you can also change the <strong>Download Models<\/strong> setting to ask before downloading any model. Downloading the models you use in your everyday workflow is a breeze. Considering they\u2019re only 100 MB, you can download one or all. Remember, they\u2019re fine-tuned, so they\u2019re small and efficient. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Examples of Full Line Code Completion<\/h2>\n\n\n\n<p>FLCC works based on the current file and the position of your current cursor, attempting to predict the following line. You don\u2019t have to do anything differently regarding your current workflow and developer habits other than look for suggestions and pick the ones that work best for you.<\/p>\n\n\n\n<p>As a usability hint, the more code in the file, the more suggestions will meet your expectations. Here\u2019s an example in a unit testing suite. Each new Assert is predicted by using similarly-scoped tests.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"1428\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/04\/image-56.png\" alt=\"Assert statement full line code completed by JetBrains Rider\" class=\"wp-image-468930\"\/><\/figure>\n\n\n\n<p>FLCC can use existing patterns in your code to predict what you will do next. The context supercharges FLCC&#8217;s predictive powers, especially in opinionated codebases. A framework like ASP.NET Core MVC follows a predictable pattern and is an excellent place for predictive models to help you get to solutions faster.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"818\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/04\/image-57.png\" alt=\"Another example of full line code completion in ASP.NET MVC\" class=\"wp-image-468941\"\/><\/figure>\n\n\n\n<p>As you may have noticed in the previous screenshot, the code completion key is fully customizable to your needs. Hover over the completion and select which key combination you want to use when picking a suggestion. Options include <strong>Tab,<\/strong> <strong>Right<\/strong>, <strong>Enter, Shift + Right<\/strong>, or a custom key combination of your choice.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1330\" height=\"1208\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/04\/image-58.png\" alt=\"Showing the full line code completion bar with optional Inline completion shortcut options\" class=\"wp-image-468952\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Where You Can Help<\/h2>\n\n\n\n<p>As we mentioned at the beginning of this post, these models continue to undergo fine-tuning to serve our ultimate goal: providing JetBrains Rider users with the best experience possible. Your feedback is not just important; it&#8217;s crucial. While these models can feel like magic, they ultimately work on your feedback and insights. You can download newer iterations as these models improve, boosting your productivity.<\/p>\n\n\n    <div class=\"buttons\">\n        <div class=\"buttons__row\">\n                                                <a href=\"https:\/\/www.jetbrains.com\/rider\/download\/\" class=\"btn\" target=\"_blank\" rel=\"noopener\">Download<\/a>\n                                <p>JetBrains Rider 2024.2<\/p>\n                    <\/div>\n    <\/div>\n\n\n\n\n\n\n\n<p>The next step for the adventurous and curious is to download the latest version of JetBrains Rider along with the relevant models and try it for yourself. While doing so, tell us what you like and what we could do better. In the section below, let us know if you have any questions or comments.<\/p>\n","protected":false},"author":1079,"featured_media":492277,"comment_status":"closed","ping_status":"closed","template":"","categories":[4992],"tags":[6847,211,1978],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/468903"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/types\/dotnet"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/users\/1079"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/comments?post=468903"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/468903\/revisions"}],"predecessor-version":[{"id":526602,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/468903\/revisions\/526602"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media\/492277"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media?parent=468903"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/categories?post=468903"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/tags?post=468903"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/cross-post-tag?post=468903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}