GoLand 2022.3 Reaches Beta!
GoLand 2022.3 Beta is out! We’ve stopped adding new features and are now concentrating on fixing bugs and getting GoLand ready for the major release at the beginning of December. This is the last build in our EAP cycle that doesn’t require a license.
You can get the Beta build via the Toolbox App, download it from our website, use a snap package (for Ubuntu), or from inside GoLand, select Check IDE updates for Early Access Program in Preferences / Settings | Appearance & Behavior | System Settings | Updates.
‘go list’ changes to improve indexing
When you open a project, GoLand indexes the files and runs the
go list command, which reports information about the project structure. Indexing is paused while
go list is running, and you don’t have access to code insight features until indexing is finished.
Previously, GoLand would run
go list twice in some cases. We’ve changed our API and managed to reduce the number of
go list launches. We hope that this change will significantly improve performance for big projects with a lot of modules.
Restore project structure from cache on open
Now, when you open a project, the information reported by
go list is saved on disk in cache memory. When you open that project again, the data about the project’s structure is loaded from memory and considered when indexing starts.
Thanks to this, indexing continues without pauses and finishes faster.
go list still needs to be launched, but it runs in the background. As a result of these changes, the code insight features are available much sooner after you open the project.
Faster IDE startup and project opening
GoLand has received a number of other performance improvements designed to decrease the time it takes to launch applications and open projects in JetBrains IDEs.
Some of the processes that used to run sequentially have been parallelized. The team has also managed to reduce eager class loading and save significant time on intention actions, inspections, some constants, and other extensions that were previously loaded and instantiated unnecessarily.
Nearly all project components in bundled plugins have been eliminated. As a result, overall startup performance – including editor restoration – has been improved by around 30%.
Test generation for generic functions
You can now generate tests for functions with generic parameters.
Quick-fix to capitalize type parameters
We now have an inspection that detects lowercase type parameters, as well as a quick-fix to make them uppercase.
The Go Workspace File action
In the New context menu, you’ll now find the Go Workspace File action. When you select it, a
go.work file will appear in your root folder. Existing Go modules will automatically be added to the
Generate go.work using replace directives
You can now generate
go.mod if you have replace directives there. Place the caret on a replace directive, press Alt+Enter (⌥ ⏎) to see all available intention actions, and select the Generate ‘go.work’ using ‘replace’ directives quick-fix.
Go doc comments
Go 1.19 has added support for links, lists, and new headings in doc comments. Now GoLand also supports these new features.
Support for links
We’ve added references to doc links in GoLand. Clicking on them leads to the referenced element, while clicking on a text link leads to a text-link definition.
Both text and doc links are rendered as links in the Quick Documentation popup and the Documentation tool window.
Support for new headings
Starting from Go 1.19, a heading is a line that begins with a number sign (
#) followed by a space and the heading text. Before, headings were identified “implicitly by single-line paragraphs satisfying certain conditions, most notably the lack of any terminating punctuation”.
New headings are rendered as HTML headings in GoLand’s Quick Documentation popup and the Documentation tool window.
Support for lists
A list item consists of a star, plus, dash, or Unicode bullet, followed by a space or tab and then text. Lists are rendered as HTML lists in GoLand’s Quick Documentation popup and the Documentation tool window.
Integrated Go Playground
We’ve integrated the Go Playground functionality inside GoLand.
You can select a piece of code, choose the Open in option, and then click Playground. This will open a scratch file with a toolbar that contains the same options you have when using the Go Playground.
You can format and share your code, change the Go version, run your code using the Go playground server, or run it locally.
Quick-fix for invalid recursive type
If your type contains itself, you will get an “Invalid recursive type” error. To avoid this, you should include a pointer to a type, not a type itself. We now have a quick-fix for that.
We’ve started implementing the Code vision feature. For now, we display the code authors if version control integration is enabled. If you click on a code author’s name, the Annotate with Git blame sidebar opens, letting you see who introduced various changes.
In the next steps of this feature’s implementation, we will introduce usages displayed near all functions and types that show how many times the function or the type is referenced in the current project.
Inlay hints for constant definitions
GoLand now shows inlay hints for constant definition blocks. This should be particularly useful in
iota-derived constant blocks, where the hints show the
iota values associated with each position.
Auto-generated protobuf fields ignored for Fill all fields
The IDE now ignores auto-generated protocol buffer fields that start with
XXX_ when you invoke the Fill all fields intention action. These fields are shown only after you invoke completion for the second time.
Other Go-related features
Go environment variables displayed in the settings
GoLand now automatically picks up system variables related to Go modules and displays them in the Environment variables dialog window. To open this window, go to Preferences/Settings | Go | Go Modules and click on the Edit environment variables icon.
Package names always shown in Quick documentation
The IDE now always shows package names in the Quick documentation popup for top-level declarations. Before, package headers were shown only when
<pkg_name>.go files were found.
The Receiver names are different inspection ignores Generated code
Since the Receiver names are different inspection is not relevant for generated code, we’ve disabled it for files that contain a comment matching the following regular expression:
^// Code generated .* DO NOT EDIT\.$
Increased file size limit
We’ve raised the file size limit from 2.5 MB to 10 MB. Code insight features, like navigation and highlighting, don’t work for files that exceed the size limit. While the 2.5 MB limit was enough for most files, there are projects with files bigger than that – for instance, the AWS SDK or GCP.
The HTTP Client now supports executing script blocks before requests. You can generate some data before executing a request and put it in the final request using variables. A quick-fix is available that will create the boilerplate code for initializing variables.
The HTTP Client now supports the Crypto API. You can compute the md5 or sha1 hash values for HTTP requests.
For simple cases, the IDE now features a new set of random variables.
Code style improvements
The HTTP Client now provides better formatting options for requests with long URLs. You can use the Put query parameters on separate lines intention action to break the query into smaller fragments on different lines.
Docker executable from WSL without Docker Desktop
GoLand now supports connections to Docker that run in Windows Subsystem for Linux (WSL). You can set up such a connection in Settings/Preferences | Build, Execution, Deployment | Docker.
New intention action: Pull image
There is now an easy way to pull a required image without running it from a
docker-compose.yml. Simply call up the context actions (Alt+Enter / ⌥⏎) on the highlighted image name and then select Pull Docker image.
Support for the .dockerignore file type
We’ve introduced full support for
.dockerignore files, including code highlighting and completion. These files are now taken into account when you build an image from the IDE.
Support for the heredoc format in Dockerfile files
Here documents allow you to redirect subsequent
Dockerfile lines to the input of the
COPY commands. GoLand now supports this syntax, so you can use it to generate config files or multiline scripts right in your
Docker connections from Docker Contexts
You can now set up additional Docker connections using Docker Contexts if you already have such settings in your Docker config. You can do so by calling the Add Service context menu in the Services view and selecting Docker Connections From Docker Contexts.
New UI available
As you may already know, this May we announced a closed preview program for the new UI in JetBrains IDEs.
We invite you to switch to the new UI in Settings/Preferences | Appearance & Behavior | New UI Preview, give it a test drive, and share your thoughts about this change with us.
Intention action preview enabled by default
The preview functionality for intention actions is now switched on by default, so you can instantly see how your code will be altered once you apply the IDE’s suggestions.
You can disable the preview feature by pressing F1 / Ctrl+Q while the list of intention actions is open, and it will remain disabled until you turn it back on in the same way.
Dock tool windows to floating editor tabs
To make it easier to arrange your working space and interact with GoLand on multiple monitors, we’ve implemented the option to drag tool windows out of the main window and dock them to floating editor tabs.
Improved Tips of the Day
We’ve enhanced the Tips of the Day feature – a learning tool that helps you explore GoLand.
Each tip now has a heading. We’ve also fine-tuned the algorithm that determines which tips appear so you’ll see the ones that are most relevant to your experience with the IDE and the project you’re working on.
It is again possible to bookmark files from editor tabs. Just right-click on a tab to invoke the context menu and select Bookmarks.
Moreover, you can add all the files in all currently open tabs to Bookmarks. To do this, either invoke the same context menu and select Bookmark Open Tabs, or call this action using the kebab (three dots) icon located on the right-hand side of the editor tabs pane.
New Settings Sync solution
We’ve introduced a reworked solution to synchronize your custom user settings. For quite a long time, there were two plugins that existed in parallel and featured intersecting functionality – IDE Settings Sync and Settings Repository. To avoid the confusion caused by having two similar bundled plugins, we’ve merged their feature sets into a single solution – the new Settings Sync plugin.
You can find details about the new unified solution here.
Check out the DataGrip 2022.3 EAP blog posts to see all the new features for working with databases that are available in this Beta.
A preliminary iteration of long-awaited support for Redis has been implemented.
Now, when using quick search, you also have the ability to filter objects. All non-matching objects will be hidden.
Check out the WebStorm 2022.3 EAP blog posts to see all the new features for web development that are available in this Beta.
Editing improvements for YAML
There’s a new quick-fix to suppress inspections with a comment in YAML files, including Kubernetes files, OpenAPI specifications, and
We’ve also introduced an option to fold multiline comments that make up a block of 3 or more lines and start with