Обзор IntelliJ IDEA 2016.2 Public Preview
Время летит! Всего месяц назад мы стартовали IntelliJ IDEA 2016.2 EAP, а уже сегодня рады представить вашему вниманию Public Preview. Предлагаем вам убедиться в том, что этот месяц не прошел даром, прочитав этот пост. Нетерпеливые могут его пропустить и пойти сразу качать превью, чтобы попробовать все самостоятельно. Для остальных предлагаю короткий рассказ об основных улучшениях.
Отладчик
Продолжая бороться за пространство и общее удобство, мы объединили вкладку Watches с вкладкой Variables.
Также теперь можно использовать многострочные выражения в настройке брейкпойнта в полях Condition и Evaluate and log, и в настройках Data Type Renderers в поле Use following expression.
Интеграция с Git и Mercurial
Вкладка Log для Git и Mercurial в очередной раз претерпела ряд изменений. Ее содержание теперь обновляется в фоновом режиме (и при загрузке проекта, и при изменениях в локальном репозитории). За счет этого открываться вкладка стала гораздо быстрее.
Кроме того, во время обновления и загрузки под панелью инструментов теперь отображается тонкая полоска прогресса.
Если в поле Filter указана строка поиска, во время прокрутки внизу также появляется индикатор загрузки.
Подробная информация о коммитах показывается теперь для нескольких выделенных коммитов.
И наконец, можно установить шорткат для быстрого перехода к полю Filter.
Для Git мы исправили важную проблему, с которой наверняка сталкиваются пользователи Windows и OS X: переименование файлов, где меняется только регистр символов.
Работа с патчами
Если вы скопируете патч в буфер обмена и переключитесь в IDE (или перетащите патч в окно IDE мышью), вам автоматически предложат применить этот патч.
Кроме того, применение патча значительно упростилось в тех случаях, когда он не содержит информации о ревизии, а оригинальный файл был перенесен, переименован или изменен. В простейших случаях IDE постарается самостоятельно определить оригинальный файл, в сложных — предложит вам его указать. Также, если содержание файла изменилось, IDE поможет объединить эти изменения с патчем.
И наконец, перед применением патч теперь можно просто сравнить с локальной копией (кнопка Show Diff) и при необходимости внести изменения в локальную версию вручную по ходу сравнения.
Редактор
Редактор теперь поддерживает шрифты с лигатурами — специальными символами, образованными путем соединения других символов. Включить опцию можно в Settings → Editor → Colors & Fonts → Font (флажок Enable font ligatures). Убедитесь, что выбранный шрифт поддерживает лигатуры, например FiraCode, Hasklig, Monoid или PragmataPro.
Интерфейс
Внешний вид IDE теперь можно настроить под себя, выбрав любое изображение как фон редактора и окна IDE. За счет настроек прозрачности это прекрасно работает и с темной, и со светлой темами.
Изображение выбирается с помощью действия Set Background Image, которое доступно как из Find Action, так и из контекстного меню на файле изображения.
Также внешне изменились всплывающие нотификации. Теперь они отображаются в нижнем правом углу (ближе к окну инструментов Events), имеют более компактную форму и группируются по типу подсистемы.
Spring Framework
Поддержка Spring Framework продолжает совершенствоваться.
Мы добавили инспекцию, которая предлагает автоматически заменять инжектирование полей конструкторами. Поддержали опцию (добавленную в Spring 4.3), которая позволяет использовать параметризированные типы (generics) в качестве классификаторов (qualifiers). Поддержали пользовательские аннотации EventListener, определенные с помощью AliasFor.
Кроме того, готова основательная поддержка Spring Cache (абстракции, добавленной в Spring 3.0 и полностью обновленной в Spring 4.1). Поддержка включает навигацию, инспекции, подсветку синтаксиса, автодополнение и навигацию при редактировании SpEl, и многое другое.
Для Spring MVC внутри шаблонов Freemarker и Velocity появилось автодополнение и навигация для переменных, объявленных в контроллере.
Также мы поддержали изменения Spring Security 4.0 и добавили автодополнение и навигацию при редактировании SpEl и для аннотаций и внутри XML.
Плюс мы добавили подсветку и навигацию для сообщений от Spring в консоли.
JavaScript
Теперь IDE не только помогает в написании ES6 кода, но и предлагает конвертировать в него код более старых версий JavaScript. Новый intention сможет заменить нормальные анонимные функции на стрелочные функции (arrow functions) и короткие стрелочные функции (shorthand arrow functions).
В дополнение к постфикс-автодополнениям, реализованным ранее, мы добавили шаблоны .const и .let.
React
IDE научилась понимать свойства (props) компонентов, объявленные при помощи propTypes, и теперь предлагает автодополнение и навигацию.
Методы жизненного цикла компонентов (например, componentDidMount) больше не подсвечиваются как неиспользуемые.
Когда вы передаете компоненту обработчики событий (например, onClick, onChange), IDE вместо кавычек ставит фигурные скобки (как и положено).
К слову о кавычках, теперь в Settings → Editor → Code Style → HTML → Other → Generated quote marks вы вообще можете указать, что использовать: двойные кавычки, одинарные или вообще ничего.
Наконец, IDE научилась понимать non-DOM аттрибуты, такие как key, ref и dangerouslySetInnerHTML.
AngularJS
Для AngularJS 2 мы добавили много полезных шаблонов (live templates). В Project Wizard → Static Web появился раздел Angular CLI.
TypeScript
IDE предлагает умное автодополнение для enum-типов.
Npm, Gulp и Grunt
Любой скрипт npm, Gulp и Grunt может теперь автоматически запускаться IDE перед запуском Run configuration. Для этого этот скрипт необходимо добавить в разделе Before launch в диалоге Run configuration.
Работа с базами данных
По мере развития DataGrip, нового продукта JetBrains, инструменты для работы с SQL и базами данных внутри IntelliJ IDEA также продолжают улучшаться.
В диалоге настроек Data Source and Drivers появилось автодополнение для поля Database.
В окне инструментов Database появилась опция Auto-scroll from Editor. При открытии того или иного элемента базы данных в редакторе, этот элемент выделяется в окне Database.
Автодополнение SQL стало еще больше учитывать контекст. Например, если в контексте ожидается имя таблицы, IDE больше не предлагает функции.
Surround With предлагает передать текущее выражение в качестве параметра функции.
Редактор таблицы предлагает автодополнение при редактировании значения таблицы (на основе других значений этого столбца).
Размеры столбцов таблицы можно менять с помощью шорткатов Ctrl + Shift + Вправо/Влево (⌘⇧→← для OS X).
Для PostgreSQL была добавлена поддержка Schema Search Path, а также Range-типов и типов с TimeZone.
Установщик
И наконец, установщик для Windows теперь также включает наш кастомный билд JDK с нашими исправлениями проблем с фокусом и рендеринга шрифтов.
Вот, пожалуй, и все основные нововведения. Теперь можно смело скачивать превью и пробовать его самостоятельно! Как всегда, я с удовольствием отвечу на ваши вопросы в комментариях.
Программируйте с удовольствием!