Привет, Хабр! 

Сегодня расскажем о свежем релизе GoLand.

Что нового: 

  • полная поддержка WSL;

  • запуск gofmt при сохранении по умолчанию;

  • рефакторинг Inline Function;

  • удаленная разработка (Beta);

  • поддержка gRPC в HTTP-клиенте;

  • улучшения отладчика;

  • и многое другое! 

Узнать о новой функциональности в интерактивной форме можно прямо в IDE. Урок What's New in GoLand 2021.3 доступен на экране приветствия в разделе Learn GoLand.

Скачать GoLand 2021.3 можно на сайте JetBrains или через приложение Toolbox App.

Полная поддержка WSL

По вашим многочисленным запросам, для работы с проектами в WSL теперь можно использовать SDK, загруженный в директорию \\wsl$.

wsl.gif
wsl.gif

gofmt при сохранении файла

Раньше вы могли настроить автоматическое выполнение опции Reformat code при сохранении файла. Теперь мы сделали это поведением по умолчанию. Опция Reformat code позволяет запускать gofmt и встроенный форматтер GoLand. 

gofmt.gif
gofmt.gif

Мы добавили уведомление об этом изменении — оно будет показано один раз в каждом проекте. 

gofmt-notification.1.png
gofmt-notification.1.png

Рефакторинг Inline Function

Мы добавили долгожданный рефакторинг Inline для функций и методов! 

Чтобы попробовать новый рефакторинг, поставьте курсор на функцию, метод или вызов и нажмите ⌥⌘N на macOS или Ctrl + Alt + N на Windows/Linux.

Улучшенное автодополнение для тегов в структурах

Мы улучшили автодополнение для разных стилей написания составных слов (camelCase, snake_case и т. д.) в тегах структур. 

Теперь при вводе значения тега GoLand предлагает несколько опций. IDE запомнит ваш выбор и предложит тот же стиль первым для остальных тегов этой структуры. 

name-style-struct-tags.1.gif
name-style-struct-tags.1.gif

Новые шаблоны постфиксного автодополнения

Шаблоны постфиксного автодополнения позволяют изменять код, который вы уже написали, без необходимости возвращаться назад. 

У нас появились новые шаблоны для преобразования строк в числа. Введите число в двойных кавычках, поставьте точку, и GoLand предложит две опции для парсинга числа — parseInt и parseFloat.   

postfix-string-to-integer.3.gif
postfix-string-to-integer.3.gif

Предпросмотр исходного кода для Show Usages

Мы улучшили окно Show Usages. Теперь для любого использования можно сделать предпросмотр исходного кода. Для этого нажмите на соответствующую иконку в верхней панели инструментов. 

preview-source.1.png
preview-source.1.png

Улучшение run targets 

Названия папок для исходных и исполняемых файлов

Теперь вы можете переименовывать папки на удаленной машине для хранения исходных и исполняемых файлов проекта. Для этого перейдите в раздел Run | Manage targets | Additional Settings. 

ssh-sources-settings.png
ssh-sources-settings.png

Конфигурация run target по умолчанию для всего проекта

В новой версии вы можете настроить конфигурацию run target, которая будет использоваться по умолчанию для всего проекта. 

Перейдите в раздел Run | Manage targets. Укажите в качестве Project default target существующую конфигурацию run target — и все новые конфигурации запуска будут создаваться на ее основе.

default-run-target-1.png
default-run-target-1.png

Поддержка прокси для подключений по SSH

В настройках SSH Configurations появилась новая секция HTTP/SOCKS Proxy, где вы можете настроить прокси. Для этого перейдите в раздел Preferences/Settings | Tools | SSH Configurations либо откройте проект и нажмите Run | Manage Targets | ...  

ssh-proxy.png
ssh-proxy.png

Обновления отладчика 

Улучшенное представление нулевых интерфейсов

У интерфейсов в Go есть две составляющие: тип и значение. Интерфейс может быть равен nil только тогда, когда обе составляющие равны nil

Если у вас в программе есть интерфейс, значение которого равно нулевому указателю на int, то сам интерфейс не будет нулевым, потому что внутренний тип не равен nil (а равен *int). Это может сбить вас с толку. 

Чтобы распознавать такие случаи, мы изменили способ отображения интерфейсов во вкладке Variables окна Debug. Например, если у вас есть интерфейс с внутренним типом *int и значением nil, он будет показан так: 

{interface{} | *int} *int(nil)

Сокращенные названия пакетов 

Теперь во вкладке Variables полные имена пакетов сокращаются — указывается только последняя часть. 

Возможность спрятать/показать типы объектов

Если тип объекта занимает слишком много места во вкладке Variables, нажмите правой кнопкой мыши и в открывшемся контекстном меню отключите опцию Show Types. Включить опцию можно тем же способом. 

Delve для Linux ARM64

GoLand 2021.3 включает версию Delve для ARM64. Отладка на Linux ARM работает «из коробки».

Шаблон для утверждений testify

Мы добавили новый шаблон для табличных тестов с утверждениями testify. Если вы уже использовали утверждения testify в своем пакете, то, когда вы нажмете ⌘N (Alt + Ins) и выберете опцию — например, Test for function, — GoLand сгенерирует код с утверждениями. 

Новые быстрые исправления

Форматирование сообщений об ошибках 

Мы добавили быстрое исправление для инспекции, предупреждающей, что сообщения об ошибках не должны начинаться с заглавной буквы и заканчиваться знаками пунктуации

Нажмите ⌥ ↩ (Alt + Enter), и GoLand предложит исправить форматирование сообщения. 

fix-error-str-format.gif
fix-error-str-format.gif

Export type

Если у вас есть экспортированная функция, которая возвращает неэкспортированный тип, GoLand предложит быстрое исправление для экспорта этого типа. 

export-type-quickfix.1.gif
export-type-quickfix.1.gif

Инспекция context.TODO()

Мы добавили инспекцию, которая подсвечивает использования context.TODO(), чтобы вы не забыли указать верный контекст. 

Комментарий TODO в шаблоне Implement Method 

Мы добавили комментарий //TODO implement me в шаблоны, которые генерируются при использовании действия Implement Methods. GoLand подсвечивает и индексирует эти комментарии, а также показывает их в окне TODO — так вы не забудете добавить все недостающие реализации. 

todo-implement-me.1.gif
todo-implement-me.1.gif

Удаленная разработка

Еще одно долгожданное изменение — GoLand 2021.3 поддерживает удаленную разработку (пока в режиме Beta).

Чтобы попробовать новую функциональность, нажмите на Remote Development на приветственном экране GoLand. Также вы можете использовать JetBrains Gateway — наше новое приложение, служащее точкой входа для ваших удаленных машин. 

Инструкции по удаленной разработке в GoLand можно найти здесь

Поддержка gRPC в HTTP-клиенте 

Теперь для запросов gRPC в GoLand работает автодополнение. Начните запрос с ключевого слова GRPC, и HTTP-клиент будет работать с ним как с gRPC-запросом. 

Вы можете сгенерировать gRPC-запрос в HTTP-клиенте: для этого откройте файл .proto и нажмите на иконку на полях редактора.

generate-req.gif
generate-req.gif

HTTP-клиент поддерживает унарные и серверные потоковые вызовы RPC. 

О других улучшениях HTTP-клиента можно прочитать здесь

Обновления системы контроля версий 

Checkout and Rebase onto Current для удаленных веток

Действие Checkout and Rebase onto Current позволяет переключиться на другую ветку и перебазировать ее поверх текущей ветки. Теперь это действие также доступно для удаленных веток. 

Новое действие Push All up to Here

Теперь вы можете отправить в удаленный репозиторий все коммиты вплоть до указанного. Для этого перейдите во вкладку Log окна Git, выберите коммит, на котором хотите остановиться, нажмите по нему правой кнопкой мыши и в контекстном меню выберите Push All up to Here.

Реорганизация настроек системы контроля версий

Настройки системы контроля версий теперь легче найти. Также мы по-новому структурировали их. Все настройки VCS можно найти в разделе Preferences/Settings | Version Control

vcs-settings.gif
vcs-settings.gif

Улучшения пользовательского интерфейса

Evaluate expression во вкладке Variables

Функциональность Evaluate expression теперь доступна во вкладке Variables отладчика. 

old-debug-ui--1.png
old-debug-ui--1.png

Разделение окна Run

Теперь можно разделять окно Run, перетаскивая вкладки в подсвеченную область. Чтобы объединить вкладки, нажмите правой кнопкой мыши в верхней части панели и выберите в контекстном меню опцию Unsplit.

split-run-window.1.gif
split-run-window.1.gif

Новое окно Bookmarks

У нас появилось окно Bookmarks. Отныне все файлы и папки, которые вы помечаете как важные с помощью клавиши F3 (F11), будут показаны в этом окне.

 

Визуализация сравнения снэпшотов в профилировщике

Вы можете визуализировать сравнение двух снэпшотов на флейм-графе. Для этого дважды нажмите ⇧ (Shift) и напечатайте «Open Profiler Snapshots» в поисковой строке. Выберите в списке нужный снэпшот, снова дважды нажмите ⇧ (Shift) и напечатайте «Open Profiler Snapshots», чтобы открыть второй снэпшот.

Затем перейдите во вкладку любого из снэпшотов и нажмите Compare With Baseline. В открывшемся меню выберите снэпшот, с которым хотите сравнить текущий. Откроется вкладка Diff, в которой вы увидите результаты сравнения.  

Поддержка ConPTY

Терминал GoLand поддерживает новый прикладной программный интерфейс ConPTY для Windows. PTY на Windows теперь включен по умолчанию. Благодаря ConPTY в терминале поддерживаются 24-разрядные цвета. 

Опережающий ввод в терминале 

Мы добавили в наш встроенный терминал функцию опережающего ввода. Теперь, когда вы работаете на удаленной машине, терминал пробует предсказывать, какие символы вы введете дальше, и отображает их в светло-сером цвете. Это помогает сгладить эффект сетевой задержки. 

Веб-разработка 

Поддержка URL в инструкциях import 

Теперь, чтобы загрузить модуль, можно просто поставить курсор на URL в инструкции import и выполнить быстрое исправление. 

url-import-js.png
url-import-js.png

Улучшенное автодополнение в HTML-файлах

Мы улучшили автодополнение в HTML-файлах. Вам больше не нужно печатать открывающую скобку (<), чтобы вызвать автодополнение, — достаточно просто начать вводить имя тега или аббревиатуру, и GoLand сразу же покажет подходящие варианты. Кроме того, мы улучшили автодополнение для мнемоников.  

html-completion.1.gif
html-completion.1.gif

Новая инспекция для обновления зависимостей

Обновлять пакеты npm до новой версии теперь можно прямо из редактора. Для этого откройте файл package.json, поставьте курсор на строчку с пакетом, который вы хотите обновить, нажмите ⌥↩ (Alt + Enter) и выберите Update <имя_пакета> to the latest version

Преобразование списка элементов

Для фронтенд-проектов теперь есть действие, позволяющее быстро разместить разделенные запятыми элементы на отдельных строках либо, наоборот, сгруппировать их на одной строке. 

Работа с базами данных

Aggregate view для диапазона ячеек

Выберите диапазон ячеек, нажмите по нему правой кнопкой мыши и выберите Show Aggregate View — GoLand рассчитает и покажет значения агрегатных функций для выбранного диапазона. 

Независимые вкладки в редакторе

Если вы разделите редактор на две вкладки и откроете в них одну и ту же таблицу, работать в этих вкладках можно будет абсолютно независимо — например, применять разные параметры фильтрации и сортировки. 

database-split.1.gif
database-split.1.gif

Проверка логических выражений

У нас появилась инспекция для логических выражений в командах WHERE и HAVING. Если выражение не является логическим, GoLand подсвечивает его желтым и показывает предупреждение перед выполнением запроса. 

Навигация по внешним ключам на основе нескольких значений

Теперь вы можете выбрать несколько значений в редакторе и по ним перейти к соответствующим данным. 

Определение типов столбцов в CSV-файлах

GoLand теперь автоматически определяет типы данных в столбцах CSV-файлов и позволяет сортировать числовые данные. 

MongoDB: автодополнение для filter {} и sort {}

При сортировке и фильтрации данных в коллекциях MongoDB теперь можно пользоваться автодополнением.

mongo-completion.png
mongo-completion.png

Настройка шрифта в редакторе данных

Вы можете настроить шрифт для редактора данных. Для этого перейдите в Preferences/Settings | Tools | Database | Data views | Use custom font.

Обновления режима специальных возможностей

Мы исправили некоторые недочеты режима специальных возможностей: убрали всплывающее окно со списком окон инструментов и всплывающее окно для быстрого просмотра документации, которые появлялись по наведению курсора. Благодаря этому пользоваться инструментом чтения с экрана стало удобнее.

Также мы улучшили поддержку режима специальных возможностей на macOS. Во-первых, мы исправили несколько неполадок, связанных с VoiceOver. Во-вторых, теперь вы можете создавать проекты при помощи инструмента чтения с экрана. Мы убрали некоторые подсказки со звуком, чтобы снизить количество отвлекающих факторов.

На этом всё. Будем рады узнать ваши впечатления от новой версии!

Команда GoLand

Комментарии (12)


  1. f0rk
    15.12.2021 16:01
    +7

    Спасибо, ребята. Вы делаете очень крутые инструменты!


    1. asspirin12 Автор
      15.12.2021 16:35
      +3

      Спасибо, нам приятно!


  1. Akuma
    15.12.2021 19:45
    +2

    Отличная IDE, как раз решил поработать на Go.

    Разве что название путает )) Golang Goland. Когда что-то гуглишь, Гугл норовит исправить.


  1. Verdoga
    15.12.2021 21:34
    +1

    Во-первых, спасибо большое за такой инструмент!) Не профи и не зарабатываю, но пишу для души)

    Во-вторых, вы не планируете добавить yaml поддержку в полном объёме, на таком же уровне как и json? Чтобы он мог структуры делать из него, как и из json.

    Поясните, пожалуйста, вот это о чём конкретно речь:
    «… убрали всплывающее окно со списком окон инструментов…»?


    1. s0xzwasd
      16.12.2021 10:36
      +2

      Идея о yaml to struct хорошая, но пока ближайших планов на это нету. Вы можете перейти на наш трекер и заполнить новый фича-реквест для добавления этой функциональности.

      По поводу «… убрали всплывающее окно со списком окон инструментов…»: это были две задачи IDEA-278151 и IDEA-274143. Если кратко, то теперь когда Screen Reader доходит до, например, объявления функции, всплывающее окно с Quick Documentation не показывается и перемещаться по коду удобнее.


  1. prognosis
    16.12.2021 08:28
    +1

    А что из этого примерно будет доступно в IDEA, и в какой версии? Всегда смущал паритет по фичам в линейке.


    1. s0xzwasd
      16.12.2021 10:20
      +2

      Всё это уже доступно в 2021.3 версии IntelliJ IDEA в связке с Go плагином.


  1. AterCattus
    17.12.2021 18:40

    А вместо gofmt вот бы сразу `goimports -format-only -w $ FilePath $`, который и форматирует и импорты нормально расставляет.

    P.S. Редактор комментов упоролся и не дает вставить FilePath нормально без пробелов. Их там быть не должно.


    1. s0xzwasd
      17.12.2021 18:54
      +1

      Можете пример комментария, который ломается, показать?

      Вы можете настроить собственный форматтер через Preferences/Settings | Tools | Actions on Save, добавив и включив кастомный File Watcher без опции Auto-save edited files to trigger the watcher.


      1. AterCattus
        17.12.2021 19:06

        Я про редактор комментариев на Хабре, не в Goland, если что.

        Да, сейчас и использую кастомный File Watcher.

        Но тут в новости как раз про gofmt по умолчанию. А goimports c -format-only делает автоформат еще полезнее. Вот я и прокомментировал.


        1. artspb
          17.12.2021 19:30
          +1

          Не все хотят сортировать импорты с помощью goimports, поэтому увы. Может быть потом добавим возможность выбирать. Не очень понятно только, нужно ли это, потому что File Watchers есть.


          1. AterCattus
            17.12.2021 19:33
            +1

            Вероятно, часть и не в курсе, что импорты можно сортировать (если нет на это линтеров/ревью). А так бы IDE по умолчанию показывала, как можно сделать красиво и читаемо. Но с возможностью выключить в настройках, как сейчас с gofmt.

            Эх, мечты, мечты )