What’s Next: GoLand 2021.1 Roadmap
A few weeks ago we introduced the last major update of this year – GoLand 2020.3. With it came goroutines dump in the debugger, support for individual table tests, and expanded support for the Testify test framework. It also had lots of UI improvements; new features for code editing, web development, and working with databases; and a service for collaborative development and pair programming.
Not checked what was packed inside the release yet? Visit our What’s New page for detailed descriptions, GIFs, and screenshots, or complete the What’s New in GoLand 2020.3 tutorial from the new reworked Welcome screen inside the IDE.
As usual, we would like to say a big THANK YOU to all the people who helped us make GoLand better by sharing their product experience, feedback, and suggestions with us. The most active contributors are getting a free 1-year GoLand subscription and special branded T-shirt!
Here are these wonderful folks:
- Vitaly Solodilov (YouTrack username: Mcdoker18)
- Victor Alenkov (YouTrack username: borz )
- Max Neverov (YouTrack username: nmax )
Thank you for all your input. We love hearing from you and each submitted issue is very much appreciated!
Let’s move on to looking at our plans now going forward. As usual we had a planning session with the team after the release, discussed what our next steps should be, and have already begun working on them. Stay tuned for the next Early Access Program!
Please note that we can’t guarantee that all of the features listed below will be included in GoLand 2021.1.
Go 1.16 and beyond
Support for //go:embed
We always try to keep our eye on the ball and provide you with support for the latest language features as soon as possible. This release is no exception.
We’ve decided that it will be useful to provide support for the embed package. This package provides access to files embedded in the running Go program. Please visit this page from the official documentation to learn more about this feature.
We are planning to provide delivery of highlighting for directives, code completion for paths, and navigation.
Generics a.k.a. Type Parameters
We are keeping track of the changes coming from the Go team on the initial proposal for generics, and we have something extra planned on top from our side too. Stay tuned!
Refactoring
There will be lots of new refactorings in the next release:
- Create type quick-fix will additionally generate missing fields.
- Extract type or function type refactoring.
- Add method for the interface which will add a method in the interface and in all implementations.
- Extract Parameter.
Boilerplate code
The Unhandled error code inspection, which reports calls to functions/methods that return an error if the error is not handled, will get a dedicated quick-fix. We’re also adding a new Postfix Template to bind the call result and the return error, if there is any, via completion.
In 2020.1 it will be easier to generate getters and setters together at the same time for a structure with several non-exported fields.
Code editing
Code folding
We are planning to improve foldings in several ways:
- We will add highlighting inside return foldings, which can be edited.
- The IDE will not fold multiple one-line panics into one line automatically.
- Folded format strings will be editable.
- GoLand will not fold a return statement while you’re typing.
Struct tags
Struct tags will be given some attention too! We will support Go 1.16 struct tag syntax, add code highlighting, and provide the ability to generate struct tags from JSON.
Navigation
The Navigate to symbol popup available via Search Everywhere will be improved to show you only relevant suggestions and results.
Also, we are looking to add possibilities to find usages of embedded struct/interface, and customize the scope of the Problems View reporting.
Code completion
GoLand will assist to generate switch statements for enum-like constants, prioritize local variables over function calls in the completion list, complete existing struct tags, and more!
Code formatting
Our formatter will get a possibility similar to ‘goimports -local’, an additional way of grouping imports. We’re also going to look into how to improve the current behavior of ‘go fmt’ on save. We’ll publish a blog post soon about this!
That’s all for today. Want some features added? Let us know! Send us your feature requests via the bug tracker or tweet us @GoLandIDE. Thank you!