What's New in GoLand

GoLand 2022.1 offers support for generics and Go workspaces.

We've also added new features for working with microservices. You can now see all endpoints in a dedicated tool window and generate HTTP requests right from your Go files.

As usual, the new version of GoLand brings updates for databases, as well as web development improvements.

If you prefer an interactive approach to learning, we invite you to complete the What's New in GoLand 2022.1 tutorial from the Welcome screen.

Generics

Using generics to create an adding function

Improvements and bug fixes

Our most important task for this release was to fix false-positive and false-negative errors. We have fixed 200+ generics-related issues so far.

GoLand automatically adding a closing bracket after an opening bracket is typed

Completion

We've also added several features for type parameters.

As soon as you type an opening bracket, GoLand inserts a closing bracket for you.

Type parameters in the completion suggestions

GoLand shows type parameters in the completion suggestions and inserts the brackets when you accept one of the suggestions.

Implementing missing methods using a quick-fix

The Implement missing methods quick-fix

If a type argument doesn't have all of the methods from the interface it is constrained by, GoLand displays an error. You can implement missing methods by using a quick-fix right from the error message.

Alternatively, click on the red light bulb or press Alt+Enter, and then choose Implement missing methods.

Go workspaces

Opening a go.work file

You can open any directory with a go.work file and continue developing as usual. Later we will also implement syntax highlighting and code completion in go.work.

Microservices

Using the Go to declaration action from a Go file

Find usages and navigate

Note: new features for building microservices work only with the standard library for now.

There is now a globe icon next to each endpoint in your Go files. When you click on the icon, GoLand will suggest several options.

The first option lets you find all of the usages of an endpoint and navigate to them. You can also see usages by pressing Ctrl and clicking on an endpoint.

Generating a request from a Go file

Generate a request

The second option you'll see when you click on the globe icon is Generate request in HTTP client. Choose a corresponding option, and the IDE will open a bundled HTTP client. This action can be used to generate a request for every valid URL.

Our HTTP client now offers code completion for endpoints. Completion works for the endpoints from Go files (only the standard library is supported for now), Swagger specifications, .proto files, and JavaScript files.

Opening the new Endpoints tool window

Endpoints tool window

The third option is Show all endpoints of module. If you choose this option, GoLand will open the new Endpoints tool window where you can see all the endpoints for your project.

You can use Jump to source from here, or you can click on any endpoint and run requests right from the HTTP client tab.

GoLand showing completion suggestions for HTTP methods

Completion for methods and headers

Code completion now works for HTTP methods and headers in Go files.

Opening a link in a browser

Links and endpoints are underlined

All links and endpoints in Go files are now underlined so you can easily see them in the code. The links are clickable and can be opened in a browser.

GoLand showing completion suggestions for a gRPC request

gRPC reflection support

If your project doesn't have a .proto file but the server supports gRPC reflection, you will be able to run requests and get completion for service and method names right from a running server.

Testing

Error being displayed where the wrong formatting verb is used

String formatting for testify/assert

GoLand now reports errors if you use the wrong formatting verbs in testify/assert functions.

Debugger

Making tab labels visible in the Debug window

Hidden tab labels

To maximize the usable space in the Debug tool window, we've hidden the tab labels by default. To make them visible again or to customize their location, use the Show Tab Labels option in the Layout Settings.

Kubernetes

Modifying resources loaded from a cluster

Edit resources on a cluster

Note: the Kubernetes plugin can be installed in Settings | Plugins.

Resources loaded from a cluster can now be modified from the editor tab.

Settings where the path to kubectl can be changed

Custom path to kubectl

You can now manually configure a path to kubectl if it is not in the standard location. To set your custom path, go to Settings | Build, Execution, Deployment | Kubernetes | Path to kubectl executable.

Using port forwarding functionality from the toolbar

Port forwarding

We've added port-forwarding functionality for pods. To forward ports, you can either use the icon on the toolbar or right-click on a pod and choose Forward Ports… from the context menu.

Describe Resource action in use

Describe Resource action in the Services view

A new Describe Resource action is present for all resources in the Services view. You can call it from the context menu or use the toolbar button.

Cluster events displayed in the Services view.

Node for cluster events

Cluster events are now displayed in a separate node in the Services view, providing data about recent events in the system.

Code completion working with Helm template files.

Werf support

We've introduced limited editor support for werf.yaml and related Helm template files. The initial support includes code completion, inspections and quick-fix suggestions, refactoring and renaming for .Values.werf.image.*, and validation for some fields like boolean and int.

Docker

Services tool window

New Services view UI

We've significantly reworked the Docker UI in the Services tool window. The makeover brings improvements for containers, images, networks, and volumes.

Adding a Docker Compose target

Support for Docker Compose targets

We've added support for Docker Compose targets. To add a target, go to Run | Manage targets and click Add new target.

Docker V2 accessible in the Docker Registry settings.

Docker Registry V2 support

GoLand now offers support for Docker Registry HTTP API V2.

Markdown

Copy code icon in the Markdown editor

The Copy code icon

We've added a Copy code icon to Markdown blocks to help you easily copy contents to the clipboard.

Running a command from a Markdown file

Run commands

If a Markdown file contains instructions with commands that you need to execute in your terminal, you can run those commands directly from the Markdown file using the Run icon in the gutter.

Markdown file with new floating toolbar

Improved floating toolbar

To make it easier to format Markdown files, we've reworked the floating toolbar that appears on text selection. Besides the new design, the toolbar now offers list creation functionality and a dropdown menu that allows you to select header styles.

User experience

Notifications tool window

The new Notifications tool window

We've replaced the Event Log instanсe with a new Notifications tool window to highlight important and helpful notifications from the IDE.

Structural Search and Replace dialog

Updated Structural Search and Replace dialog

The Structural Search and Replace dialog has been redesigned to feature a list of all the templates, making it easier to navigate between them.

For Structural Search and Replace, GoLand supports XML, HTML, SQL, and JavaScript.

Splitting editor tabs evenly

Evenly split tabs

You can now distribute the working space in your editor evenly among various tabs. To set this up, go to Settings | Advanced Settings | Editor Tabs and select Equalize proportions in nested splits.

Exporting a UML diagram

Export UML diagrams to other formats

It is now possible to export UML diagrams as yEd .graphml, JGraph .drawio, Graphviz .dot, Graphviz .dot with Positions, Mermaid .md, Plantuml, and IDEA .uml files, which makes them compatible with third-party tools.

Version control

GPG signature information in the Commit details pane

Updated Commit details pane in the Git tool window

The Commit details pane now includes detailed GPG signature information.

GoLand highlighting the differences in lines when Annotate with Git Blame is enabled

Improved Annotate with Git Blame

We've improved the functionality of Annotate with Git Blame to make investigating changes easier. The IDE highlights the differences in lines right in the editor when you hover over an annotation, and it opens the Git Log tool window when you click on one.

Databases

Copying multiple tables to another schema

Copy multiple objects

You can now select multiple tables and copy them to another schema.

Select the tables and press F5 to open the export dialog. As with exporting a single table, you can map the columns, see the DDL of the new table, and change it.

Editing fields in MongoDB collections

MongoDB: Editing fields in results

You can now edit the results in MongoDB collections just as you do in relational databases.

Note: to learn about all the updates for databases in v2022.1, head over to the DataGrip What’s New page.

Web development

GoLand recognizes global components in Vue files.

Improvements for Vue

We have several improvements for Vue 3. If you define components as global, the IDE will now recognize them in your .vue files.

GoLand should also support the createApp syntax. It will correctly match applications created using createApp with their related elements. This version also includes support for Nuxt 3, a new version of the popular Vue framework.

GoLand resolves paths in the href property of a Link component.

Next.js updates

We’ve fixed the support for pages. GoLand resolves paths used in the href property of your Link components. Code completion, navigation, and refactorings like Rename work too.

Webpack configuration with ES modules

ESM support for webpack configuration

From now on, webpack coding assistance will work with ES modules in your webpack.config.js files.

GoLand automatically recognizes Yarn and npm installed using Volta.

Integration with Volta

GoLand now has integration with Volta, a JavaScript tool manager. It automatically recognizes Yarn and npm installed using Volta.

Note: to learn about all the web development improvements in v2022.1, head over to the WebStorm What’s New page.

Accessibility updates

The screen reader now reads the names and descriptions of the branches' trees in the Log tab and provides a voice prompt to use Ctrl+L to navigate through other Log filters.

Additionally, a number of updates for VoiceOver support were introduced to improve accessibility support for macOS users.