Go logo

GoLand

A cross-platform Go IDE with extended support for JavaScript, TypeScript, and databases

Early Access Program

The GoLand 2023.1 Early Access Program Is Open!

Today we’re starting our first Early Access Program for 2023!

Check out the GoLand Roadmap 2023.1 to see what we have planned for the upcoming release.

You can get this EAP 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.

Download GoLand 2023.1 EAP #1

If you’re not familiar with our EAPs, here’s a brief overview:

EAP builds let you try out the latest features and enhancements in GoLand while we continue to work on them. These builds are not fully tested and might be unstable, but this is where you can help us. By taking these builds and their new features for a test drive with your real-world projects and scenarios, you can help us polish them. This way, when the final version is released, it will work smoothly for you.

  • The EAP lets you be among the first to try out the newest features.
  • EAP builds are free to use for 30 days from the build date. You can use this period as an extended trial of GoLand.
  • We provide a series of EAP builds until a stable release is almost ready. For version 2023.1, the EAP period will last until mid-March.
  • In each release cycle, we reward the most active evaluators and people who have helped us make GoLand better by sharing their product experience, feedback, and suggestions with a free 1-year GoLand subscription.
  • New builds come out almost every day. If you don’t want to wait for the official EAP build announcements, you can download our nightly builds, which are only available via the Toolbox App. Note that the nightly builds often do not meet the quality standards for official EAP builds, and they don’t come with release notes. Like EAP builds, they expire within 30 days of being released.

Here’s what we implemented in this build.

Ability to implement unexported interfaces

The Implement interface intention action now works for unexported interfaces.

Conversion between different kinds of string literals

There is now an intention action that lets you quickly convert raw string literals – strings that are surrounded by backticks – to double-quoted ones, and vice-versa.

Rename refactoring for generic receivers

When you rename a type parameter in a struct, the Rename refactoring now suggests changing the receivers accordingly.

Intention Preview: more supported intention actions and quick-fixes

In the previous release, we enabled the Intention Preview functionality by default. This feature lets you instantly see how your code will be altered once you apply the IDE’s suggestions.

It is now possible to preview a wider range of intention actions and quick-fixes:

  • Introduce local variable
  • Create variable/global variable
  • Create constant/global constant
  • Create field
  • Merge declaration up
  • Delete all unused parameters

The preview appears when you open the list of available intention actions and hover an option.

You can disable the preview feature by pressing Ctrl+Q / F1 while the list of intention actions is open, and it will remain disabled until you turn it back on in the same way.

Simplified conversion of integers to strings

Before, when you needed to convert an integer to a string, GoLand would first suggest the Convert to ‘string’ quick-fix. To complete the conversion properly, you would then need another quick-fix – Convert integer to string using strconv.Itoa() call.

We’ve simplified this workflow, and now GoLand suggests the Convert integer to string using strconv.Itoa() call quick-fix right away.

The new Call group in Find Usages

We’ve introduced a new Find Usages group for function calls – the Call group.

We’ve also implemented some fixes that relate to how usages of generic code elements are represented in the Find Usages window. You can see a full list of fixes in this ticket.

Bug fixes and other improvements

In addition to the new functionality, there are some bug fixes that are particularly noteworthy:

GO-12702, GO-14051, GO-14005 – We’ve fixed several issues affecting navigation between interfaces, implementations, and method specifications in generic code.

Moreover, we’ve implemented several additional fixes for generics-related false positives and false negatives.

We have fixed over 360 genetics-related issues since the work on implementing support for type parameters in GoLand started in November 2021.

Markdown

New intention action for reformatting tables 

A new intention action allows you to correct the formatting of tables in Markdown files. You can access the quick-fix via the Context actions shortcut (⌥⏎ / Alt+Enter) or by pressing the yellow bulb icon and selecting Reformat code from the list that appears.

Fill Paragraph

The Fill Paragraph editor action is now supported for Markdown files, allowing you to break long texts into several lines of even length. To do this, set the caret inside the paragraph you want to edit and call the action from the Edit menu or search for the Fill Paragraph command using Find Action (⇧⌘A / Ctrl+Shift+A) and execute it.

New Smart Keys settings page

We’ve added a dedicated page for configuring and editing your Markdown preferences in Settings/Preferences | Editor | General | Smart Keys. This page should make it easier to manage your preferences, as it provides separate checkboxes for various editor features, replacing the single checkbox previously stored in Settings/Preferences | Languages & Frameworks.

Version Control Systems

VCS status color hints in the Structure tool window

To make tracking changes to files more convenient, we’ve added color hints to the Structure tool window. The names of modified objects will now become blue, and the names of the newly added objects will appear in the tool window highlighted in green.

Improved Branches popup

We’ve improved the usability of the Branches popup. For instance, navigating between branches is now easier, as they are grouped and stored in expandable lists.

Completion in the Create New Branch popup

We’ve implemented completion in the Create New Branch popup. Press Ctrl + Space, and the IDE will suggest relevant prefixes based on the names of existing local branches.

Background pre-commit checks

We’ve reworked the behavior of the pre-commit checks for Git and Mercurial to speed up the overall commit process. Checks are now performed in the background after you commit but before you push.

That’s it for today. We’d love to hear what you think about our new features. Get in touch with us on Twitter, leave your comments here, open an issue in our tracker, or drop us a message in the Gophers Slack #goland channel. Thanks!

image description