Что нового в GoLand 2018.2
Привет, Хабр!
На прошлой неделе вышел GoLand 2018.2. В этой статье мы расскажем о том, что появилось в новой версии.
Что нового вкратце:
- поддержка модулей Go (ранее известных как vgo);
- улучшенный Move-рефакторинг и новые автоматические исправления;
- пополнение в семействах Postfix Completion and Intention Actions;
- отладчик теперь поддерживает точки останова, не требующие полного прерывания программы, а также отложенную загрузку массивов, слайсов и словарей.
Кроме того, много улучшений пришли из платформы IntelliJ: от нововведений для систем контроля версий и поддержки Touch Bar для MacBook Pro до последних новинок из мира фронтенд-разработки.
Поддержка модулей Go (vgo)
В феврале команда Go анонсировала пробную версию нового инструмента для управления зависимостями, и мы сразу же решили начать работу над его поддержкой.
GoLand позволяет создавать проекты нового типа (Go Module) и предлагает синхронизировать зависимости в один клик прямо из редактора кода.
Подробнее про про поддержку модулей Go читайте здесь (статья на английском).
Move-рефакторинг
В предыдущем релизе в GoLand появился Move-рефакторинг, который умеет быстро перемещать любое объявление в другой файл в пределах одного пакета. В этой версии мы научили его перемещать символы между пакетами.
Чтобы видеть всю картину целиком, мы добавили новый интерфейс, который показывает элементы, зависимые от перемещаемого объекта. Экспортируйте и переносите эти зависимости вместе с ним.
Быстрые исправления кода
Появились новые автоматические исправления ошибок несоответствия типов: Convert to expected type и Implement missing methods.
Convert to expected type преобразует значение в ожидаемый тип в соответствии с требованиями языка:
Implement missing methods в один клик добавляет отсутствующие методы, если ожидаемым типом является интерфейс:
Генерация кода
Implement Methods теперь может не только добавлять методы из интерфейса к существующим типам, но и создавать новый тип с имплементациями методов интерфейса:
Редактирование кода
Новое действие Add dot import alias позволяет ссылаться на все экспортируемые имена без использования имени пакета. Обратное действие Remove dot import alias отменяет эти изменения.
Рефакторинг Introduce local variable теперь доступен через Alt+Enter. Быстрое действие записывает результат выполнения функций и методов в новую локальную переменную.
Postfix-шаблоны
Новый шаблон .sort добавляет метод сортировки к массивам и слайсам на основе типа элементов. Если элементы относятся к пользовательскому типу, будет применяться метод sort.Slice.
Для удобства использования мы объединили шаблоны .rre и .rrv в один новый — .rr, его можно вызывать как на выражениях, так и на именах переменных.
Стиль кода
Изучив рекомендации для Go-разработчиков по оформлению кода, мы добавили подсветку для комментариев, которые начинаются не с пробела, и научили IDE форматировать их, добавляя недостающий пробел. Спустя время выяснилось, что некоторые библиотеки (например easyjson), наоборот, требуют их отсутствия!
Для библиотек с подобным требованием мы добавили список исключений для опции Add leading space to comments. Он помогает избежать лишних пробелов, достаточно внести необходимые префиксы. Включается здесь: Settings | Editor | Code Style | Go | Other.
Отладчик
В новой версии отладчик поддерживает точки останова, не требующие полного прерывания программы. Значения массивов, слайсов и словарей загружаются лениво, а структуры теперь можно разворачивать без ограничения по уровню вложенности.
File Watchers
Маленькое, но очень приятное улучшение появилось у File Watchers в этом релизе. Раньше нужно было настраивать File Watchers под каждый проект отдельно, теперь настройки можно переиспользовать между проектами.
Система контроля версий
Коротко о разрешении конфликтов слияния: легко ошибиться, проблему непросто найти и трудно исправить. Мы решили сделать этот процесс менее болезненным, поэтому система контроля версий теперь группирует файлы с конфликтами слияния для каждого списка изменений. Улучшенный диалог Files Merged with Conflicts показывает имена веток при выполнении Pull, Merge, или Rebase и группирует файлы по каталогам.
Появилось множество улучшений для окна Log, теперь можно:
- Открывать столько Log-окон — сколько вам необходимо;
- Удалять Git-тэг из коммита;
- Фильтровать коммиты по выбранным веткам;
- Изучать Diff Preview Panel не покидая Log-окна;
- Следить за состоянием репозитория с помощью нового действия Browse Repository at Revision.
Помимо изменений для окна Log, VCS стала лучше еще в нескольких направлениях.
Например, в новой версии можно коммитить и пушить изменения в один клик без диалога Push:
А еще управлять любым количеством аккаунтов GitHub, не переключаясь между ними:
Пользовательский интерфейс
Владельцы MacBook Pro, не проходите мимо: GoLand 2018.2 поддерживает Touch Bar. Все доступные инструменты для сенсорной панели можно настроить под свои задачи: Settings | Appearance & Behavior | Menus and Toolbars.
Еще одна новость для пользователей macOS: теперь заголовки окон можно сделать темными. Для этого необходимо включить опцию Use dark window headers в Settings | Appearance & Behavior | Appearance.
Иконки поменяли цвет, форму и стиль. Подробности вы можете найти в этом посте (на английском) от нашей команды по проектированию интерфейсов: они делятся тем, как принимали решения и что планируют сделать в будущем.
JavaScript/TypeScript
По традиции мы немного рассказываем про изменения в поддержке фронтэнд-технологий, вот несколько самых значимых:
- Поддержка TypeScript 2.9 и TypeScript 3.0;
- Много новых intention-действий: Implement interface, Create derived class, Implement members of an interface or abstract class, Generate cases for 'switch', и Iterate with 'for…of'.
- Теперь можно найти весь неиспользуемый код с новой функцией покрытия кода.
Подробнее прочитать про эти и другие улучшения можно на странице What«s New команды WebStorm.
Вот и все! Как всегда, мы будем рады услышать ваше мнение здесь в комментариях, в Twitter или баг-трекере:)
Скачать обновление можно на странице загрузки или через приложение Toolbox App.
На всякий случай напоминаю, что если вы уже используете IntelliJ IDEA Ultimate, то все возможности GoLand доступны прямо там, нужно просто установить этот плагин.
Спасибо за внимание!