Supported extensions and languages

  • Tier: Premium with GitLab Duo Pro, Ultimate with GitLab Duo Pro or Enterprise - Start a trial
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
History

Code Suggestions is available in the following editor extensions and for the following languages.

Supported editor extensions

To use Code Suggestions, use one of these editor extensions:

IDEExtension
Visual Studio Code (VS Code)GitLab Workflow for VS Code
GitLab Web IDE (VS Code in the Cloud)No configuration required.
Microsoft Visual Studio (2022 for Windows)Visual Studio GitLab extension
JetBrains IDEsGitLab Duo Plugin for JetBrains
Neovimgitlab.vim plugin

A GitLab Language Server is used in VS Code, Visual Studio, and Neovim. The Language Server supports faster iteration across more platforms. You can also configure it to support Code Suggestions in IDEs where GitLab doesn’t provide official support.

You can express interest in other IDE extension support in this issue.

Supported languages

Code Suggestions supports a range of programming languages and familiar development concepts. It also works with infrastructure-as-code (IaC) interfaces, including Kubernetes Resource Model (KRM), Google Cloud CLI, and Terraform.

Code Suggestions provides enhanced support for the following core languages:

  • C#
  • C++
  • C
  • Go
  • Java
  • JavaScript
  • Kotlin
  • Python
  • Ruby
  • Rust
  • PHP
  • TypeScript

When working with these languages, Code Suggestions leverages files open in tabs as context and Repository X-Ray to deliver more accurate, context-aware code suggestions.

The following table provides more information on the languages Code Suggestions supports by default, and the IDEs.

Code Suggestions works with other languages that are not in this table, but you must manually add support for that language.

LanguageWeb IDEVS CodeJetBrains IDEsVisual Studio 2022 for WindowsNeovim
Ccheck-circle Yescheck-circle Yesdotted-circle Nocheck-circle Yescheck-circle Yes
C++check-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
C#check-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
CSScheck-circle Yesdotted-circle Nodotted-circle Nodotted-circle Nodotted-circle No
Gocheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
Google SQLcheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
HAMLcheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
HTMLcheck-circle Yesdotted-circle Nodotted-circle Nodotted-circle Nodotted-circle No
Javacheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
JavaScriptcheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
Kotlindotted-circle Nocheck-circle Yes

(Requires third-party extension providing Kotlin support)
check-circle Yescheck-circle Yescheck-circle Yes
Markdowncheck-circle Yesdotted-circle Nodotted-circle Nodotted-circle Nodotted-circle No
PHPcheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
Pythoncheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
Rubycheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
Rustcheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
Scaladotted-circle Nocheck-circle Yes

(Requires third-party extension providing Scala support)
check-circle Yescheck-circle Yescheck-circle Yes
Shell scripts (bash only)check-circle Yesdotted-circle Nocheck-circle Yescheck-circle Yescheck-circle Yes
Sveltecheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
Swiftcheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
TypeScriptcheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes
Terraformdotted-circle Nocheck-circle Yes

(Requires third-party extension providing Terraform support)
check-circle Yesdotted-circle Nocheck-circle Yes

(Requires third-party extension providing the terraform file type)
Vuecheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yescheck-circle Yes

Some languages are not supported in all JetBrains IDEs, or might require additional plugin support. Refer to the JetBrains documentation for specifics on your IDE.

Locally, you can add more languages. For languages not listed in the table, Code Suggestions might not function as expected.

Manage languages for Code Suggestions

History

You can customize your coding experience in VS Code by enabling or disabling Code Suggestions for specific supported languages. You can do this by editing your settings.json file directly, or from the VS Code user interface:

  1. In VS Code, open the extension settings for GitLab Workflow:
    1. On the top bar, go to Code > Settings > Extensions.
    2. Search for GitLab Workflow in the list, and select Manage ( settings ).
    3. Select Extension Settings.
  2. In your User settings, find the section titled AI Assisted Code Suggestions: Enabled Supported Languages.
  3. To enable Code Suggestions for a language, select its checkbox.
  4. To disable Code Suggestions for a language, clear its checkbox.
  5. Your changes are automatically saved, and take effect immediately.

When you disable Code Suggestions for a language, the Duo icon changes to show that suggestions are disabled for this language. On hover, it shows Code Suggestions are disabled for this language.

Add support for more languages

If your desired language doesn’t have Code Suggestions available by default, you can add support for your language locally.

Prerequisites:

To do this:

  1. Find your desired language in the list of language identifiers. You need the Identifier for your languages in a later step.
  2. In VS Code, open the extension settings for GitLab Workflow:
    1. On the top bar, go to Code > Settings > Extensions.

    2. Search for GitLab Workflow in the list, and select Manage ( settings ).

    3. Select Extension Settings.

    4. In your User settings, find GitLab › Ai Assisted Code Suggestions: Additional Languages and select Add Item.

  3. In Item, add the identifier for each language you want to support. Identifiers should be lowercase, like html or powershell. Don’t add leading periods from file suffixes to each identifier.
  4. Select OK.

Prerequisites:

To do this:

  1. Find your desired language in the list of language identifiers. You need the Identifier for your languages in a later step.
  2. In your IDE, on the top bar, select your IDE name, then select Settings.
  3. On the left sidebar, select Tools > GitLab Duo.
  4. Under Code Suggestions Enabled Languages > Additional languages, add the identifier for each language you want to support. Identifiers should be in lower case, like html. Separate multiple identifiers with commas, like html,powershell,latex, and don’t add leading periods to each identifier.
  5. Select OK.