The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Introducing 10 new features in Quarkus Tools for Visual Studio Code 1.3.0

Quarkus Tools for Visual Studio Code 1.3.0 has been released on the VS Code Marketplace , the first release of the year.

Alongside various bug fixes, this release focused on introducing VS Code support that accompanies new Quarkus features like application.yaml support, server-side templating support and the Quarkus 1.2 kebab-case @ConfigProperties property names.

For a list of all changes, please refer to the changelog.

Watch a demo video of all features presented in this article:

URL CodeLens for RESTEasy JAX-RS GET methods

When editing a resource class while the current Quarkus application is running in development mode (./mvnw compile quarkus:dev or ./gradlew quarkusDev), there are now CodeLenses that provide the URL for the GET endpoints.

This feature takes into account the path name and the HTTP server port from your application.properties file in order to create the URL.

Clicking on the CodeLens URL will open the URL in your default browser.

URL CodeLens

Once the Quarkus application stops running, the CodeLens URL will no longer appear.

URL CodeLens

Please keep in mind, CodeLens in VS Code are only updated when certain events happen. If the URL CodeLens does not appear, some easy ways to trigger a CodeLens update are by switching tabs or by starting to type in any file. Also make sure that the quarkus.tools.codeLens.urlCodeLensEnabled VS Code setting is set to true.

Hover support for @ConfigProperty name in Java sources

Hovering over the name value in a @ConfigProperty annotation will now display the value of the hovered property. Currently, the value will either come from the application.properties file, or the default value field.

Hover @ConfigProperty name

Language support for Kubernetes, Openshift, S2i and Docker properties

There is now completion, hover, documentation and validation for kubernetes.*, openshift.*, s2i.*, docker.* properties coming from the Kubernetes Quarkus extension.

Language support for Kubernetes, Openshift, S2i and Docker properties

Language support for MicroProfile REST Client properties

Likewise, there is now completion, hover, documentation and validation for the MicroProfile properties from REST Client.

After registering a REST client using @RegisterRestClient like so:

package com.mycompany.remoteServices;

@RegisterRestClient
public interface MyServiceClient {
    @GET
    @Path("/greet")
    Response greet();
}

The related MicroProfile Rest config properties will have language feature support (completion, hover, validation, etc.).

Language support for MP Rest properties

More information about using the MicroProfile REST Client with Quarkus is available on the Quarkus guides here.

YAML support (experimental)

The release of Quarkus 1.1.0.Final, brought YAML configuration support, meaning that you can now configure your Quarkus application with either an application.yaml or application.properties file (but try to stick with one!).

As a result, there is now completion support for application.yaml files. Similarly to application.properties, the completion options in application.yaml will be in sync with the Quarkus extensions that are currently available to the current project (in pom.xml or build.gradle), therefore giving you only the relevant completion options.

This feature depends on the VS Code YAML extension. If it is not currently installed, a new prompt will propose to install it.

Completion in application.yaml

Language feature support for the application.yaml file is in its experimental stages. Compared to application.properties support, there are some limitations:

Missing features:
  • Go to definition support

  • Code action support

  • Automatic completion for default values

  • Limited config property and value validation support

Quick Fix to add unknown property namespaces to ignore

There is now a new Quick Fix that helps exclude large groups of unknown properties from unknown property validation, as long as they share the same parent namespace.

For example, if your application.properties file contains four properties with an Unknown property error like so:

# All four properties cause an 'Unknown property' error
unknown.test1=a
unknown.test2=b
unknown.test3=c
unknown.test4=d

Ignoring all four properties from unknown property validation is easily done by the Quick Fix, which adds unknown.* to the quarkus.tools.validation.unknown.excluded workspace configuration array.

Quick Fix to ignore unknown property validation

Go to definition support for enum values in application.properties

Until now, Go to definition was only supported for config property keys and not the values. This release brings the Go to definition feature for enum values.

Go to definiton for enum values

New extensions descriptions toggle

As the number of Quarkus extensions continues to rise, the new extension descriptions in the extension selection prompts helps recognize and discover new extensions. The extension selection prompt appears when selecting Quarkus extensions from the Quarkus: Generate a Quarkus project and Quarkus: Add extensions to current project wizards.

Before and after comparison

There is also a new button on the top right of the prompt that toggles whether or not the extension descriptions should appear.

Toggle description

Different ways to open a new Quarkus project

After creating a new project with the Quarkus: Generate a Quarkus project wizard there is now a new prompt that asks you how the new project should be opened. The following tables describe the before and after changes.

Table 1. Before
Scenarios Ways to open the new project

All scenarios

Open project in a new window

Table 2. After
Scenarios Ways to open the new project

A workspace is open

Open project by adding to current workspace

Open project in a new window

An editor is open

Open project in the current window

Open project in a new window

Nothing is open

Open project in the current window

Here is one of the scenarios in action, when a new project has been generated while a workspace is already open.

Create new project

Syntax highlighting for Qute languages

Qute is a new server-side templating engine created with Quarkus in mind. This release brings new Qute Language Modes in VS Code: Qute HTML, Qute JSON, Qute YAML and Qute Text. The new language modes are automatically applied to your current file, if your file’s file extensions is .qute.html, .qute.json, .qute.yaml and .qute.txt respectively.

Thanks to the new language modes, Qute-specific syntax highlighting and commenting are now provided.

Switch to Qute-specific language mode

For more information about the Qute templating engine, please refer to the Quarkus templating engine guide.

Moving Forward

This wraps up the new major features in this release. If you have any questions, suggestions or feedback, by all means please open a GitHub issue.

For future releases we are aiming to improve language support for MicroProfile properties, application.yaml and Qute languages.

Thank you for reading and stay tuned for the next release!