Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Привет, Хабр!
Вышел GoLand 2021.2 — второй релиз этого года. Сегодня расскажем, что нового в этом релизе, и покажем, как пользоваться новой функциональностью.
Что нового:
Расширенная поддержка Go-модулей
Возможность запускать gofmt вместе с встроенным форматером GoLand
Поддержка новой функциональности Go 1.17 — преобразования среза в указатель на массив
Возможность подписывать коммиты GPG-ключом
Автоматическая перезагрузка страницы в браузере при сохранении кода
Автодополнение кода для полей и операторов в MongoDB
И многое другое!
Кстати, узнать о новой функциональности в интерактивной форме можно прямо в IDE. Пройдите урок What's New in GoLand 2021.2, доступный на экране приветствия в разделе Learn GoLand. Там же вы найдете наш новый Onboarding Tour, который поможет поближе познакомиться с IDE, а также курс по Git.
Go-модули
Загружайте обновления go.mod вручную
Когда вы вносите изменения в go.mod, GoLand автоматически исполняет команду go list и загружает эти изменения. Некоторые пользователи отмечали, что автоматическая загрузка осложняет работу, потому что иногда IDE исполняет команду go list прямо во время редактирования.
Теперь вы можете вручную загружать обновления go.mod. Для этого перейдите в Settings/Preferences | Build, Execution, Deployment | Build Tools и выберите External Changes.
Теперь, если вы внесете изменений в go.mod, то увидите иконку Load Go modules Changes. Нажмите на нее, когда закончите редактирование, — изменения go.mod загрузятся. Если вы выбрали опцию External Changes, то автоматическая загрузка будет по-прежнему работать для внешних изменений.
Чтобы иконка появлялась при внесении любых изменений — как внешних, так и внутренних, — нужно убрать галочку в чекбоксе Reload project after changes in the build scripts.
На наш взгляд, отключать автоматическую загрузку обновлений go.mod не стоит. Но если для вас эта опция, напротив, окажется полезной, обязательно расскажите нам об этом (нам интересно узнать подробнее о ваших сценариях).
Улучшенная поддержка версий Go
Если вы использовали в коде функциональность из более новой версии Go, чем та, которая указана в go.mod, GoLand сообщит об ошибке.
Для числовых литералов и //go:embed есть быстрые исправления, с помощью которых можно поменять версию языка в go.mod.
Например, если вы хотите использовать директиву //go:embed, которая доступна в версии 1.16, а в go.mod у вас указана версия 1.15, GoLand сообщит, что функциональность //go:embed доступна только в версии 1.16 и выше. Нажмите Alt + Enter (⌥+Enter), и IDE предложит быстрое исправление, которое изменит версию Go в go.mod.
Go значит Go modules
Теперь при выборе опции Go на начальном экране создается проект с Go-модулями. А проекты с GOPATH теперь называются “Go (GOPATH)”.
Работа с неиспользуемыми зависимостями
Бывают ситуации, когда в директивах replace в файле go.mod оказываются зависимости, которые вы не используете в коде. Например, вы сгенерировали go.mod с помощью скрипта, который добавил много директив replace — как нужных, так и не очень.
Раньше GoLand не загружал и не удалял неиспользуемые зависимости в директивах replace, и они становились красными. Эти строки кода красного цвета в go.mod вынуждали некоторых пользователей искать ошибки, которых на самом деле не было, — наличие неиспользуемых зависимостей не влияло на работу приложения.
Теперь неиспользуемые зависимости в директивах replace становятся серыми, чтобы их было легче отличить от ошибок. Серым форматируются и неиспользуемые зависимости в директивах require, рядом с которыми есть комментарий indirect.
Наведите указатель мыши на серую строку, и вы увидите сообщение “Unused dependency”. Если нужно загрузить неиспользуемые зависимости, нажмите Alt+Enter (⌥+Enter) и выберите опцию Download all modules to the module cache. Также можно загрузить любую из зависимостей по отдельности.
Форматирование
В Go есть утилита gofmt, которая форматирует код. И, как вы, возможно, знаете, у GoLand есть свой встроенный форматер.
GoLand позволяет настроить запуск gofmt вместе со встроенным форматером. Однако пользователи просили нас сделать использование gofmt более доступным и удобным.
В этом релизе у нас появилась опция Run gofmt on code reformat, позволяющая запускать gofmt вместе со встроенным в GoLand форматером.
Опция активна по умолчанию. Вы можете запускать оба инструмента с помощью комбинации Ctrl+Alt+L (⌘+⌥+L). Команда gofmt будет исполняться после встроенного форматера.
Это лишь первый шаг. Мы планируем и другие изменения в работе с gofmt.
Больше быстрых исправлений
Поддержка нового синтаксиса ограничений сборки //go:build
В прошлом году команда разработки Go предложила заменить синтаксис ограничений сборки // +build на //go:build.
В связи с этим мы добавили в GoLand два быстрых исправления. Первое переносит строку с //go:build в начало файла, как того требует новый синтаксис.
В Go 1.16 можно использовать либо старый синтаксис, либо оба вместе. Чтобы сгенерировать объявление // +build в дополнение к //go:build, вы можете воспользоваться вторым быстрым исправлением.
Активируйте поддержку cgo одним кликом
Если вы импортировали пакет для языка С, но забыли активировать поддержку cgo в настройках проекта, GoLand предложит быстрое исправление Enable cgo support.
Опция Navigate to cgo import перемещает курсор в начало названия пакета. Это поможет вам отыскать инструкцию импорта в большом проекте.
GoLand также предложит изменить настройки, если вы указали в ограничениях сборки одну ОС, а в настройках — другую. В этом случае также будет доступна опция переместить курсор на строку с объявлением об ограничениях сборки.
Отладчик
Теперь вы можете пользоваться режимом Preview во время отладки приложения. Он позволяет открывать файлы последовательно в одной вкладке. Так вы избежите загромождения видимой зоны редактора многочисленными открытыми вкладками.
Чтобы активировать режим Preview во время отладки, перейдите в Preferences/Settings | Editor | General | Editor Tabs и включите опцию Enable preview tab.
Когда вы открываете файлы в режиме предпросмотра, название файла показывается курсивом. Как только вы начинаете вносить изменения, шрифт меняется на обычный и режим Preview для этого файла отключается.
Go 1.17
В Go 1.17 есть возможность преобразовывать срез в указатель на массив. GoLand не будет считать такие преобразования ошибками. Чтобы использовать функциональность Go 1.17, нужно изменить значение GOROOT на “Go 1.17beta1” или “Go 1.17rc1” в Settings/Preferences | Go.
Быстрая навигация
Теперь Navigate to implementations работает с реализациями интерфейсов, которые находятся в папке internal. Чтобы перейти к реализациям, нажмите на значок в поле редактора слева от интерфейса. Также можно переходить к интерфейсу от его реализаций.
Интеграция с системами контроля версий
Подпись коммитов GPG-ключом
В GoLand 2021.2 вы можете верифицировать коммиты с помощью GPG-ключа. Чтобы активировать эту функциональность, перейдите в Settings | Version Control | Git.
Если у вас уже есть ключ, то просто выберите его из раскрывающегося списка. Если вы делаете это в первый раз, то сначала ключ нужно сгенерировать.
Новые проверки перед коммитом
В разделе проверок перед коммитом вы найдете две новые опции: Run tests и Analyze code. Они позволяют тестировать и анализировать код перед коммитом. Чтобы активировать их, перейдите в Settings | Version Control | Commit | Before commit или нажмите на значок шестеренки в окне Commit.
Обратите внимание, что возможность тестировать код перед коммитом доступна только в том случае, если у вас включена опция Use non-modal commit interface в Settings | Version Control | Commit.
Новая поисковая строка в Local History
Мы добавили в окно Local History новую строку поиска. Локальная история отслеживает изменения в файлах независимо от систем контроля версий. Новая строка поиска поможет быстрее найти нужный текст в изменениях файла.
Чтобы открыть Local History, щелкните правой кнопкой на файле и перейдите в Local History | Show History.
Это не значит, что системами контроля версий можно больше не пользоваться. Local History их, конечно, не заменит, но может послужить палочкой-выручалочкой в случае, если вы, например, не успели внести изменения в Git-репозиторий.
Changes вместо Default Changelist
Список Default Changelist, в котором показывались файлы с изменениями, еще не внесенными в Git-репозиторий, теперь называется Changes. Это обновление будет доступно по умолчанию во всех ваших новых проектах. Кроме того, операции Git больше не будут автоматически создавать changelist.
Улучшения пользовательского интерфейса
Новое представление для объединенных проектов
Объединенные проекты в окне Project теперь представлены иначе. Раньше они показывались как дочерние папки существующего проекта, хотя их реальное расположение в файловой системе могло быть совершенно другим. Сейчас объединенные проекты представлены в виде отдельных папок.
Дополнительные настройки и стрелки навигации
Мы добавили в настройки новый раздел — Advanced Settings. В нем содержатся дополнительные настройки, например возможность изменить ширину левого отступа в режиме Distraction-free.
Также в правом верхнем углу окна Settings появились стрелки, с помощью которых можно переходить между разделами.
Уведомления о новых версиях
GoLand уведомит вас о наличии новой версии, и вы сможете установить обновление прямо из IDE. Для этого у вас должно быть установлено приложение Toolbox App версии 1.20.8804 и выше.
Новые опции для встроенного терминала
Курсоры бывают разные. Если вам больше нравится вертикальная линия или нижнее подчеркивание, перейдите в Settings | Tools | Terminal и задайте удобную для вас форму курсора при помощи раскрывающегося списка.
В настройках терминала есть еще одно изменение: теперь мы поддерживаем опцию Use Option as Meta key. Клавиша Meta изменяет назначение другой клавиши, если нажать их вместе. Использование клавиши Meta может быть полезным, если вы много работаете в терминале. Например, эта опция позволяет использовать следующие комбинации:
Option + F — перейти к следующему слову
Option + B — вернуться на одно слово назад
Option + D — удалить следующее слово
Улучшенное окно Change project icon
Мы изменили вид окна, которое позволяет загрузить свою иконку для проекта. Для этого нажмите на название проекта в списке проектов на начальном экране и в контекстном меню выберите Choose project icon.
Веб-разработка
Перезагрузка страниц при сохранении изменений
Мы доработали Live Edit. Теперь GoLand может автоматически обновлять страницу в любом браузере, когда вы изменяете и сохраняете HTML, CSS или JavaScript.
Чтобы использовать эту функцию, откройте HTML-файл и нажмите на иконку вашего любимого браузера. Перезагрузка страниц при сохранении изменений включена по умолчанию. Настройки Live Edit можно изменить в Settings | Build, Execution, Deployment | Debugger | Built-in Server.
Рефакторинг для хуков useState в React
Рефакторинг Rename теперь работает для хуков useState в React. Просто поставьте курсор на значение состояния и вызовите рефакторинг Rename с помощью комбинации Shift+F6(⇧+F6) или щелкните правой кнопкой мыши и выберите Refactor | Rename.
Автоимпорт для require()
GoLand уже умеет добавлять недостающие инструкции import для ES6-символов, и теперь такая же функция доступна для модулей CommonJS — необходимые инструкции require() добавятся в код при выполнении автодополнения.
Автодополнение частных пакетов npm
Автодополнение теперь работает для частных пакетов npm. GoLand покажет данные о последних версиях таких пакетов, как и в случае с публичными пакетами.
Расширенная поддержка web-types
Мы запускаем новую версию web-types — стандарта для документирования различных фреймворков. Первая версия web-types включала в себя поддержку Vue.js.
Мы хотим построить новую архитектуру, которая будет поддерживать новые JavaScript-фреймворки и улучшит поддержку для уже существующих. Чтобы лучше понять, как использовать web-types в ваших проектах, прочитайте статью в блоге WebStorm или посмотрите вебинар.
Работа с базами данных
Консоль MongoDB теперь поддерживает автодополнение для полей, вложенных полей и полей внутри агрегатных выражений. Также автодополнение работает для операторов запроса и проекции, операторов обновления и стадий агрегирования.
Другие изменения
Действия при сохранении кода
Мы собрали вместе все действия, которые можно запускать при сохранении кода. Теперь их можно настроить в Settings | Tools | Actions on Save. Просто поставьте галочку в чекбоксе рядом с действием, которое хотите активировать.
Также можно применить расширенные настройки. Для этого наведите указатель на действие, нажмите на ссылку с настройками конфигурации и измените настройки на появившейся странице.
Автоматическое удаление кеша и логов
GoLand автоматически удаляет кеш и логи после того, как они не обновлялись 180 дней. Этот процесс не затронет ваши системные настройки и плагины.
Вы можете удалить кеш и логи вручную с помощью действия Help | Delete Leftover IDE Directories.
Проверка орфографии и грамматики в файлах Go
Теперь IDE по умолчанию выполняет проверку на опечатки и грамматические ошибки в файлах Go. Проверка возможна благодаря плагину Grazie, который включен в GoLand. Добавить и удалить языки, для которых вы хотите настроить проверку опечаток и ошибок, можно в Settings | Editor | Natural Languages.
Чтобы отрегулировать, в каких типах файлов будет активен Grazie и на какие именно языковые проблемы он будет обращать внимание, перейдите в подраздел настроек Grammar.
Пользовательский интерфейс на китайском, японском и корейском
Интерфейс GoLand теперь полностью локализован на китайский, корейский и японский. Локализация доступна в виде плагинов, которые не включены в IDE; их можно установить из репозитория.
Code With Me
Теперь во время сессии Code With Me вы можете видеть, какие опции автодополнения GoLand показывает вашим коллегам. Чтобы использовать эту функциональность, включите режим Following.
Это все на сегодня! Пишите нам здесь в комментариях, в наш баг-трекер или Twitter — мы часто берем идеи для улучшений из ваших отзывов и предложений.
Напомню, что, если вы уже используете IntelliJ IDEA Ultimate, то все возможности GoLand доступны прямо там, нужно лишь установить этот плагин.
Спасибо за внимание!