GoLand 2021.3 Help

Reformat and rearrange code

GoLand lets you reformat your code according to the requirements you've specified in your current code style scheme or the .editorconfig file. If anything is not defined in .editorconfig, it's taken from the project settings.

You can reformat a part of code, the whole file, group of files, a directory, and a module. You can also exclude part of code or some files from the reformatting.

Reformat a code fragment

  1. In the editor, select a code fragment you want to reformat.

    Before reformatting, you can take a look at the code style settings that are applied to the selected code: press Alt+Enter and click Adjust code style settings.

  2. From the main menu, select Code | Reformat Code or press Ctrl+Alt+L.

Reformat a file

  1. Either open your file in the editor and press Ctrl+Alt+Shift+L or in the Project tool window, right-click the file and select Reformat Code.

  2. In the dialog that opens, if you need, select the following reformatting options:

    • Optimize imports: select this option if you want to remove unused imports, add missing ones, or organize import statements.

    • Code cleanup: select this option to run the code cleanup inspections.

    • Do not keep line breaks: reformat line breaks according to the code style settings. This option overrides the Keep when reformatting | Line breaks setting.

  3. Click Run.

    If you want to see the exact changes made to your code during the reformatting, use the Local History feature.

Reformat line indents

You can reformat line indents based on the specified settings.

  1. While in the editor, select the necessary code fragment and press Ctrl+Alt+I.

  2. If you need to adjust indentation settings, in the Settings/Preferences dialog (Ctrl+Alt+S), go to Editor | Code Style.

  3. On the appropriate language page, on the Tabs and Indents tab, specify the appropriate indents options and click OK.

Automatically reformat code on save

You can configure the IDE to reformat code in modified files automatically when your changes are saved.

  1. Press Ctrl+Alt+S to open the IDE settings and select Tools | Actions on Save.

  2. Enable the Reformat code option.

  3. Additionally, you can configure the way the IDE will reformat your code:

    • Click Configure scope… to specify the patterns of filenames and directories that you want to exclude from reformatting.

    • From the All file types list, select the types of files in which you want to reformat code.

    • Select Whole file or Changed lines if your project is under version control.

      If you select Changed lines, reformatting will apply only to the lines of code that have been changed locally, but not yet checked in to the repository.

Exclude files from reformatting

You can exclude a group of files and directories from reformatting and import optimization.

  1. In the Settings/Preferences dialog (Ctrl+Alt+S), go to Editor | Code Style.

  2. Switch to the Formatter tab and in the Do not format field, enter the files and directories that you want to exclude using a glob pattern.

    You can specify several glob patterns separated with a semicolon ;. If you click the Expand icon, the field will expand, and each pattern will be shown on a separate line.

  3. Apply the changes and close the dialog.

    Specifying a glob pattern for excluding files from reformatting

Exclude code fragments from reformatting in the editor

  1. In the Settings/Preferences dialog (Ctrl+Alt+S), go to Editor | Code Style.

  2. Switch to the Formatter tab and enable the Turn formatter on/off with markers in code comments option.

  3. In the editor, at the beginning of a region that you want to exclude, create a line comment Ctrl+/ and type @formatter:off. At the end of the region, create another line comment and type @formatter:on.

    The code between the markers won't be reformatted.

    Formatting markers

Reformatting with the gofmt tool

Comparing to the gofmt tool, GoLand’s formatter works with syntactically incorrect code and can be invoked on an arbitrary block. Also, the built-in formatter can automatically insert semicolons and wrap parameters and arguments.

If you want to use the gofmt anyway, you can use the following tools:

  • Go tools: click Tools | Go Tools and select Go Fmt File (to run gofmt in the current file) or Go Fmt Project (to run gofmt for the current project).

  • The Before Сommit section: run the gofmt tool before you commit your changes.

    go fmt before commit
  • File Watchers: to set a file watcher to run the gofmt tool, open settings by pressing Ctrl+Alt+S and navigate to Tools | File Watchers, click the Add button and select go fmt. In the New Watcher dialog, click OK.

    gofmt with file watcher

By using the following option, you can run the gofmt tool each time you use the reformat action. For example, GoLand will run the gofmt tool each time you press Ctrl+Alt+L.

Run the gofmt tool after the reformat action

  • You can run the gofmt tool each time you reformat your code (for example, by pressing Ctrl+Alt+L). The first pass is made by the built-in GoLand formatter and then by gofmt.

    To enable this feature, open settings by pressing Ctrl+Alt+S and navigate to Editor | Code Style | Go. Click the Other tab and select On code reformat checkbox.

    run gofmt after the code reformatting action

Configure leading spaces in comments

After you applied the Reformat Code action Ctrl+Alt+L, GoLand may add leading spaces before the comment text.

Before

After

//easyjson:json
// easyjson:json

In Go, comments are also used as annotations. In some libraries, spaces between comment markers and annotation instructions are not processed correctly. In the previous example, easyjson:json is an annotation.

You can disable leading spaces for annotations that start with certain prefixes.

  1. Open the Settings window (File | Settings).

  2. Click Editor | Code Style | Go.

  3. Click the Other tab.

  4. Select the Add leading space to comments checkbox.

  5. In the Except for space to comments field, click the Add icon (the Add button).

  6. Type the prefix name that you want to add as an exception (for example, easyjson).

  7. Click OK.

Configure leading spaces for comments in Go
Last modified: 19 March 2022