GoLand 2018.1 EAP 3: Move Refactoring, Better Test Runner, Go Build, QuickDoc, and More

Great news everyone! A fresh GoLand 2018.1 EAP build is here with lots of goodies inside. Read on to learn what’s in there or go ahead and download the EAP build to try it for yourself.

Thanks to the new -json option introduced in Go 1.10 for go test, the update is able to represent the results of the tests better. Now it supports the hierarchy of tests and correctly attributes the output and compilation errors to individual tests and packages:

With the updated Go Build run configuration now you can select and run multiple files (GO-555). You can either select the files in the run configuration dialog using the Plus button next to the Files field, or select the files in the Project tool window and then choose Run from the context menu:

The Quick Documentation action is now aware of example functions and includes them as part of the documentation (GO-2000):

The family of available refactorings for Go is extended with Move (GO-4088). This refactoring allows you to move any top-level member to another file:

The Undo action when used along with File Watchers, doesn’t offer to undo Reload from Disk anymore (GO-4726). Instead, it simply undoes the latest change, including the change made by File Watchers.

Last but not least, the Auto Import has been made smarter and prevents you from adding undesired import statements (GO-5118).

That’s it for now. For a complete list of changes, please refer to the release notes. Please give the new EAP build a try and share your feedback with us in our issue tracker.

If you’d like to make your life easier and automate managing updates, please consider installing Toolbox App.

Happy developing!

Posted in New Features | Tagged , | Leave a comment

GoLand 2018.1 EAP 2 is Here

Last week we announced the opening of GoLand 2018.1. Today we’re glad to present you with a fresh EAP build with a number of improvements. Read on to learn about them in more detail, or go ahead and install the update in whatever is your preferred way: download from the website, update from the IDE, or update from Toolbox App.

The editor is now able to remove import statements for unused packages on the fly as you type. This is convenient as you don’t have to remove those import statements by yourself anymore. The IDE does it for you:

This option is called Optimize imports on the fly. You can enable it in Settings | Go | Imports:

The Build run configuration earlier didn’t allow you to use -o in the Go tools arguments field. Now it does, and overrides the value set in the Output directory field:

When debugging, the IDE now distinguishes shadowed variables in the Watches and Variables tabs of the Debugger tool window:

The name suggestion algorithm is now aware of the context and avoids name collisions, e.g. when extracting variables.

Some of the inspections that correspond to go vet and which are supposed to run before go test in Go 1.10 were improved. A few examples are given below:

1) In the following case, the IDE doesn’t offer to simplify the second part of the boolean expression:

2) The IDE warns about type mismatches for the calls of fmt.Printf:

3) The IDE reports invalid build tags:

And last but not least, if you now click Enter when the caret is on a chain call or a string literal, the IDE auto-formats the resulting code:

That’s it for today. For a more complete list of changes in the build, refer to the release notes.

As always, your feedback along with bug reports and feature requests is very welcome in our issue tracker!

Happy developing!

Posted in EAP, New Features | Tagged , | 3 Comments

Welcome GoLand 2018.1 EAP: Better Inspections, Completion, Performance, and More

Following the opening of the EAPs for IntelliJ IDEA and WebStorm, the GoLand team is in a hurry to let you know that GoLand 2018.1 EAP is here with lots of goodies. Read below to learn what’s new or go ahead, download the EAP and give it a spin yourself. If you use Toolbox App, it already awaiting you there.

Go 1.10

Following the changes introduced with Go 1.10, the IDE now supports many of these changes.

First, for method expressions, the IDE now supports any type as a receiver:

golang_2018_1_method_expressions

Second, the support for Go templates now respects the new keywords such as break and continue:

golang_2018_1_template

The formatter has also been updated and now offers correct formatting to three-index slices and single-method interfaces.

golang_2018_1_three_index_slice

Since go vet is now by default running as part of go test, the IDE added missing go vet inspections available on the fly.

For example, the inspection, that reports conditions that are always true (or false), now also spots unnecessary checks for functions on nil:

golang_2018_1_always_true

Also, the IDE reports direct assignments to atomic values:

golang_2108_1_atomic

Code completion

For return statements inside functions, code completion now suggest default values:

golang_2018_1_return

Intentions

There’s a number of new intentions added to the update, e.g. Flip for binary expressions, and Negate and Negate recursively for boolean expressions:

golang_2018_1_flip_negate

In addition to Negate, for if statement, you now can use Invert:

golang_2018_1_invert

Performance

Speaking of performance, the update makes it possible to limit indexing of the local project and avoid indexing an entire GOPATH. This new option makes sense when you vendor all your dependencies with dep or glide tools and don’t use libraries from global GOPATH.

The option is available in both File | Settings | Go | GOPATH | Index entire GOPATH and the Project Wizard.

Others

The EAP also brings many non-Go related improvements:

  • The IDE now respects fractional scale factors when multiple HiDPI monitors are used
  • The Replace in Path popup now previews replacements even if a regular expression is used.
  • Now any folder in the Project tool window can be easily opened in the Terminal tool window. The action is called Open in Terminal.
  • VCS
    • The Git Branches popup now supports pasting text from the clipboard.
    • The Force Push action is enabled by default for all branches except the protected ones. The Allow force push checkbox has been removed from the Preferences | Version Control | Git.
  • Web
    • Better code completion for SVG properties and values
    • Navigation from HTML to both compiled CSS and its source
    • Pasting HTML to JSX now respects React-specific attributes (className, onClick, onChange, etc).

Major bug fixes

The update has tons of bug fixes including a few major ones, such as with focus issues. Here’s a list of some of the fixed cases:

  • The Search Everywhere popup didn’t receive focus.
  • The Project tool window didn’t receive focus from the Select In popup.
  • The VCS tool window didn’t receive focus from the Diff dialog.
  • The Find in Path dialog doesn’t disappear now if you click outside the dialog

For the complete list of changes in the EAP build, please refer to the release notes.

That’s it for now. To try out to all these (and some other improvements), go ahead and download the EAP build from the website or from the Toolbox App.

Note, the EAP is work in progress and thus may have bugs. If you find a bug, please make sure to report it to our issue tracker. This way you not only help us make the product better but will also keep informed on the progress, e.g. when this or that bug is going to be fixed.

Happy developing!

Posted in EAP, New Features | Tagged , | 5 Comments

GoLand 2017.3.1: Syntax Highlighting, Fill Structs, Debugger, and More

The GoLand team is recovering from the holidays, and we wish everyone who celebrates like us on Dec 31st/Jan 1st a very happy New Year!

Here’s some good news for you. Though with a bit of a slight delay, GoLand 2017.3.1 is finally here. This minor update fixes many of the bugs we were having, increases stability, and improves performance.  Here’s a short list of the most notable changes.

First, the Code Style settings in addition to function declaration now offer syntax highlighting options for function calls as well:

Second, the IDE now bundles the Monokai color scheme which can be chosen in the Code Style settings or on the first initial IDE setup:

The Fill struct intention action added earlier is now able to add missing keys even to the structs that are only partially initialized:

Also, the update fixes a very annoying bug related to the cross-platform compilation (GO-2683). The IDE gave a wrong name to the binary (e.g., added .exe while compiling on Windows for Linux).

The Debugger has been updated to the latest version of Delve and now supports
macOS as well as Go 1.10 better.

Last but by no means least, the update fixes many other issues related to both the Go functionality (QuickDoc, Inspections, Test Runner, and Refactorings) and the platform. For the complete list, please refer to the release notes.

Happy developing!

Posted in New Features, Releases | Tagged , | 5 Comments

GoLand 2017.3.1 Nightly Builds

The moment GoLand 2017.3 was released, our team started addressing the feedback you’ve been sharing with us. As we’re approaching GoLand 2017.3.1 (a minor update that brings lots of fixes), we’d like to remind you that its nightly builds are already available to try. Below is a quick introductory instruction on how to try GoLand nightly builds.

To switch the IDE to the “nightly” channel, go to Settings | Plugins, click Browse repositories, then click Manage repositories and make sure you’ve added “https://plugins.jetbrains.com/plugins/nightly/9568” to the list of plugin repository URLs:

This way the IDE will be updated via the nightly versions of the Go plugin.

Keep in mind that the quality of nightly builds is usually below our normal standards and you may encounter many issues. On the plus side though, by using the nightly builds, you help us identify those possible issues in advance so we can fix them before the build goes GA.

If you’re using a nightly build and see an issue, please report it immediately to our issue tracker. We’re grateful for your support!

The GoLand Team
The Drive to Develop

Posted in Uncategorized | Tagged | Leave a comment

The Way to Go: JetBrains GoLand IDE Hits the Market

It has always fascinated us to see how fast the developer industry is evolving. If you watch it long enough, you’ll see new products and technologies join a developer’s essential toolset every year. No matter how effective or efficient a programming language or framework is, an even better way of doing things is bound to be discovered or invented. With this diversity of technologies, it’s vital for us at JetBrains to keep improving the one thing that matters most: Developer Experience.

Last winter we announced we were building a new Go IDE on top of IntelliJ Platform which we codenamed Gogland. Today we’ve reached a special milestone and are happy to report that this IDE finally hits the market as GoLand and is available for download and purchase!



NOTE: If you use IntelliJ IDEA Ultimate, you can take advantage of GoLand’s functionality inside IntelliJ IDEA via this plugin. To learn about the availability of the Go plugin in other IntelliJ-based IDEs, please read this post.

Functionality

GoLand is aimed at offering the same level of developer experience for Go as PyCharm does for Python or IntelliJ IDEA does for Java. GoLand provides clever completion, on-the-fly inspections and quick-fixes, navigation and automated refactorings – all packed together inside an ergonomic environment.

In addition to Go-specific in-editor coding assistance, the IDE offers a built-in test runner, test coverage, and a debugger. Other integrated tools include support for Git, Docker, databases, a terminal, and many more. Finally, GoLand fully supports front-end development with dedicated coding assistance for JavaScript, TypeScript, React, Vue.js, Angular, and other technologies.

In case you’ve heard the early announcement but haven’t followed the recent progress, take a look at the latest EAP news or check out GoLand’s website.

GoLand 2017.3 is officially released but this is only the beginning. We are going to keep improving every part of the IDE including its inspections, refactorings, the debugger, and everything else. If you have a feature request or a bug report, please make sure to file it into our issue tracker or simply tweet @GoLandIDE.

What is the licensing model?

GoLand uses the standard JetBrains licensing model: there are subscriptions available for corporate and individual customers, with monthly and yearly payment options. Using your subscription continuously helps you save up to 40% off the standard price for your third year and onwards. In addition to standalone licensing, GoLand is also part of the All Products pack along with other JetBrains IDEs and .NET tools.

To learn more about pricing, get a quote, or apply for a complimentary license, see GoLand’s Buy page. Or just try GoLand free for 30 days at any moment.

GoLand is available free for selected groups including students, teachers, and non-commercial Open Source projects.

How frequent are the updates?

Major updates for GoLand will be released 3 times per year, same as for our other IDEs: in Spring, Summer and Winter. Minor updates will be more frequent and will still be available should you ever decide to cancel your subscription.

Your JetBrains GoLand Team
The Way to Go

Posted in News, Releases | 17 Comments

GoLand EAP 20: Go Build Run Configuration and Other Improvements

Hurray! A fresh GoLand EAP is now out. One of the most notable changes in this update is a new type of run configuration: Go Build. This run configuration replaces the Go Application run configuration, and it basically runs the Go build command. You can configure this run configuration for a file, package or directory:

If the build command produces a binary, the IDE will run it. Otherwise, the IDE will simply show the build output. If you don’t want to run the binary, you can uncheck the corresponding option.

We hope with this addition your workflow and build process, in general, will now be even more straightforward.

Last but not least, the Status Bar now includes a widget (on the right-hand side) for quick access to the Go settings, UI theme, keymap, plugins, etc.

In addition to these improvements, the update has some bugfixes. Please give the update a thorough try and share your feedback with us in our issue tracker!

Happy developing!

Posted in EAP, New Features | 2 Comments

GoLand EAP 19: Docs in Param Info, Coverage for Multiple Packages, Build Tags and More

We’ve just published a fresh GoLand EAP build. Since we’re approaching the release date (roughly early December), we are now paying more attention to fixing important issues and the overall stability of the IDE. The published update comes with plenty of bugfixes. At the same time, the update includes several new features. Below are some details on some of them.

Now you can see the documentation on function parameters as a part of the Param Info popup:

It’s disabled by default. To enable it, go to Settings | Go, and check Show documentation in parameter info:

The Call Hierarchy introduced earlier now has a button that toggles the mode in which it additionally shows the calls on interfaces:

The upcoming Go 1.10 is going to support running tests with coverage from multiple packages. Now if you use Run with Coverage on a folder that has several packages, the IDE properly collects and displays the coverage data for all packages:

Note, to make it work, you have to use a Go distributive built from the sources.

Earlier we added Add directory to the current project to the context menu of the Project tool window so you could quickly add a content root to the project. Now the IDE also offers Remove directory from current project to quickly remove the content root from the project:

Running tests with build tags got easier. Now, if the tests you’re running have build tags that are not listed in Settings | Go | Vendoring & Build Tags, the IDE will automatically include the tags in the command line:

The Run Configuration dialog now has an option to automatically include the tags specified in Settings | Go | Vendoring & Build Tags into the command line:

For the complete list of changes in the build, please check out the release notes.

Once again, let us remind you that we’re getting close to the release date. It means we heavily need your feedback. Please help us test it more thoroughly to find and get fixed all the important issues before the release. When you notice anything, please be sure to submit it to our issue tracker. Thanks for your support and help!

Happy developing!

Posted in EAP, New Features | 7 Comments

Announcing GoLand (Former Gogland) EAP 18: Final Product Name, Templates Support and More

Yes, you read it right, it’s not a misprint: the final product name is now GoLand. We had to let the codename go and we’ll surely miss it. At the same time we hope everyone likes the new name. If you’re wondering what it takes to remove one letter from a product name, well… the short answer is “A lot.” For the long story, and the results of the naming contest, scroll to the end of this post.

At JetBrains we’re excited about GoLand the name as much as GoLand the new EAP build. The update brings some important improvements. Continue reading

Posted in EAP, New Features | 30 Comments

Gogland EAP 17: Type Hierarchy, Call Hierarchy, Parameter Hints, Vendor Scope, and More

Meet Gogland EAP 17. Along with the usual bugfixes the update also includes a few notable changes.

Vendor directories scope

To make the code navigation and search more straightforward, we moved the code from inside the vendor directories out of the Project Files scope and made it a part of the Project & Libraries scope instead. Now when you use an IDE feature you can control whether you want to include or exclude the code from the vendor folders. As an added bonus, because of how scopes work in the IDE, now you can also manage the way the code is visually presented:

Hierarchy tool window

There are two new features to help you work with the code: Type Hierarchy (Ctrl+H) and Call Hierarchy (Ctrl+Alt+H). Both are available on demand and appear in the Hierarchy tool window.

Type Hierarchy works when your caret is at an interface or a struct:

Based on the mode selected in the tool window toolbar, the interface displays either when the type at caret extend or implements, or when the types that implements the type at the caret:

Call Hierarchy works when your caret is at a function reference and collects the tree of function calls inside the function.

Note: The Hierarchy tool window is are not automatically updated as you navigate through the source code, it has to be triggered manually.

Parameter hints for named return values

The Parameter Hints already familiar to you have been updated and now display the hints for the named return values:

Diff viewer

The Diff viewer now supports the Ignore imports and formatting option for Go files:

This comes handy if you want to focus only on the changes in the code itself, not import statements or formatting.

Other improvements

  • The File Watchers which were recently introduced to replace On Save actions haven’t respected environment variables when executing. Now they do.
  • The IDE now warns you if the code uses non-strict comparison of integer types with the maximum or minimum values. Such checks are always true and may indicate a possible bug.
  • When using a version of Go prior to 1.8, the IDE reports incorrect conversions of structs with tags.
  • Last but not least, there’s a new inspection that finds unnecessarily exported identifiers and prompts unexport them via a quick-fix. You can either enable it or run it manually on the scope you need:

Since we’re approaching the release date, we very much appreciate your feedback. Please report any issues or glitches you find and simply share your feedback. Thanks for helping us make the release great. Stay tuned!

Happy developing!

Posted in EAP, New Features | 16 Comments