Время летит! Всего месяц назад мы стартовали IntelliJ IDEA 2016.2 EAP, а уже сегодня рады представить вашему вниманию Public Preview. Предлагаем вам убедиться в том, что этот месяц не прошел даром, прочитав этот пост. Нетерпеливые могут его пропустить и пойти сразу качать превью, чтобы попробовать все самостоятельно. Для остальных предлагаю короткий рассказ об основных улучшениях.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/1ca/7e9/d1d/1ca7e9d1de45c41ef7e3f8dba829449e.png)
Отладчик
Продолжая бороться за пространство и общее удобство, мы объединили вкладку Watches с вкладкой Variables.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/c34/d27/82c/c34d2782c090693e6a63387ee5bb1194.png)
Также теперь можно использовать многострочные выражения в настройке брейкпойнта в полях Condition и Evaluate and log, и в настройках Data Type Renderers в поле Use following expression.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/196/a04/717/196a047173e2f618e4d6a442d32b042b.png)
Интеграция с Git и Mercurial
Вкладка Log для Git и Mercurial в очередной раз претерпела ряд изменений. Ее содержание теперь обновляется в фоновом режиме (и при загрузке проекта, и при изменениях в локальном репозитории). За счет этого открываться вкладка стала гораздо быстрее.
Кроме того, во время обновления и загрузки под панелью инструментов теперь отображается тонкая полоска прогресса.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/4a2/47f/4f3/4a247f4f3e8b461173ecdf1e00b983c8.png)
Если в поле Filter указана строка поиска, во время прокрутки внизу также появляется индикатор загрузки.
Подробная информация о коммитах показывается теперь для нескольких выделенных коммитов.
И наконец, можно установить шорткат для быстрого перехода к полю Filter.
Для Git мы исправили важную проблему, с которой наверняка сталкиваются пользователи Windows и OS X: переименование файлов, где меняется только регистр символов.
Работа с патчами
Если вы скопируете патч в буфер обмена и переключитесь в IDE (или перетащите патч в окно IDE мышью), вам автоматически предложат применить этот патч.
Кроме того, применение патча значительно упростилось в тех случаях, когда он не содержит информации о ревизии, а оригинальный файл был перенесен, переименован или изменен. В простейших случаях IDE постарается самостоятельно определить оригинальный файл, в сложных — предложит вам его указать. Также, если содержание файла изменилось, IDE поможет объединить эти изменения с патчем.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/2f7/8c8/d3c/2f78c8d3c806d150d615b8d658ed754b.png)
И наконец, перед применением патч теперь можно просто сравнить с локальной копией (кнопка Show Diff) и при необходимости внести изменения в локальную версию вручную по ходу сравнения.
Редактор
Редактор теперь поддерживает шрифты с лигатурами — специальными символами, образованными путем соединения других символов. Включить опцию можно в Settings → Editor → Colors & Fonts → Font (флажок Enable font ligatures). Убедитесь, что выбранный шрифт поддерживает лигатуры, например FiraCode, Hasklig, Monoid или PragmataPro.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/0ce/447/f34/0ce447f3445328c2a7e329d48d3e349b.png)
Интерфейс
Внешний вид IDE теперь можно настроить под себя, выбрав любое изображение как фон редактора и окна IDE. За счет настроек прозрачности это прекрасно работает и с темной, и со светлой темами.
Изображение выбирается с помощью действия Set Background Image, которое доступно как из Find Action, так и из контекстного меню на файле изображения.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/690/d73/94a/690d7394aeb0c44da854ea151e5e8946.png)
Также внешне изменились всплывающие нотификации. Теперь они отображаются в нижнем правом углу (ближе к окну инструментов Events), имеют более компактную форму и группируются по типу подсистемы.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/f3a/8ff/2f9/f3a8ff2f914453a510b901cae28bbb0c.png)
Spring Framework
Поддержка Spring Framework продолжает совершенствоваться.
Мы добавили инспекцию, которая предлагает автоматически заменять инжектирование полей конструкторами. Поддержали опцию (добавленную в Spring 4.3), которая позволяет использовать параметризированные типы (generics) в качестве классификаторов (qualifiers). Поддержали пользовательские аннотации EventListener, определенные с помощью AliasFor.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/d4b/61e/2e7/d4b61e2e7e6008360cef06433b7badf2.png)
Кроме того, готова основательная поддержка Spring Cache (абстракции, добавленной в Spring 3.0 и полностью обновленной в Spring 4.1). Поддержка включает навигацию, инспекции, подсветку синтаксиса, автодополнение и навигацию при редактировании SpEl, и многое другое.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/397/9ab/59a/3979ab59a337560cc185dfcbc531d60b.png)
Для Spring MVC внутри шаблонов Freemarker и Velocity появилось автодополнение и навигация для переменных, объявленных в контроллере.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/618/776/035/618776035bb96f73b2ffa795baa2966f.png)
Также мы поддержали изменения Spring Security 4.0 и добавили автодополнение и навигацию при редактировании SpEl и для аннотаций и внутри XML.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/0ca/9fb/8f2/0ca9fb8f207cc6061a55982eed4d83e7.png)
Плюс мы добавили подсветку и навигацию для сообщений от Spring в консоли.
JavaScript
Теперь IDE не только помогает в написании ES6 кода, но и предлагает конвертировать в него код более старых версий JavaScript. Новый intention сможет заменить нормальные анонимные функции на стрелочные функции (arrow functions) и короткие стрелочные функции (shorthand arrow functions).
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/854/25e/81b/85425e81b93dd6471f6c68b06ae249f2.png)
В дополнение к постфикс-автодополнениям, реализованным ранее, мы добавили шаблоны .const и .let.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/d15/b2d/104/d15b2d1040d4c7c8a07f17665112fd16.png)
React
IDE научилась понимать свойства (props) компонентов, объявленные при помощи propTypes, и теперь предлагает автодополнение и навигацию.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/ac1/f44/ece/ac1f44ece0a76782b6ecbb92996f915a.png)
Методы жизненного цикла компонентов (например, componentDidMount) больше не подсвечиваются как неиспользуемые.
Когда вы передаете компоненту обработчики событий (например, onClick, onChange), IDE вместо кавычек ставит фигурные скобки (как и положено).
К слову о кавычках, теперь в Settings → Editor → Code Style → HTML → Other → Generated quote marks вы вообще можете указать, что использовать: двойные кавычки, одинарные или вообще ничего.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/6e1/365/09b/6e136509b2db7e1bb975f05d6bd9c1b5.png)
Наконец, IDE научилась понимать non-DOM аттрибуты, такие как key, ref и dangerouslySetInnerHTML.
AngularJS
Для AngularJS 2 мы добавили много полезных шаблонов (live templates). В Project Wizard → Static Web появился раздел Angular CLI.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/ff0/3d4/875/ff03d48751b1570b8d06aaa7f1a7602b.png)
TypeScript
IDE предлагает умное автодополнение для enum-типов.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/37a/3ea/540/37a3ea540e4374ea8d98100f590b38a1.png)
Npm, Gulp и Grunt
Любой скрипт npm, Gulp и Grunt может теперь автоматически запускаться IDE перед запуском Run configuration. Для этого этот скрипт необходимо добавить в разделе Before launch в диалоге Run configuration.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/f82/659/b93/f82659b9381aaf3abb013ccf4234effd.png)
Работа с базами данных
По мере развития DataGrip, нового продукта JetBrains, инструменты для работы с SQL и базами данных внутри IntelliJ IDEA также продолжают улучшаться.
В диалоге настроек Data Source and Drivers появилось автодополнение для поля Database.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/03a/240/f6d/03a240f6dd3a2b9a2414a966cac4cdf8.png)
В окне инструментов Database появилась опция Auto-scroll from Editor. При открытии того или иного элемента базы данных в редакторе, этот элемент выделяется в окне Database.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/c4d/91a/b67/c4d91ab679fcfd5be845d5970ec26d13.png)
Автодополнение SQL стало еще больше учитывать контекст. Например, если в контексте ожидается имя таблицы, IDE больше не предлагает функции.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/571/4e5/d22/5714e5d226fa233ee13555e9c8ff4adf.png)
Surround With предлагает передать текущее выражение в качестве параметра функции.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/a9e/125/1da/a9e1251da00c29342826662bc49cb21d.png)
Редактор таблицы предлагает автодополнение при редактировании значения таблицы (на основе других значений этого столбца).
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/1f4/a53/184/1f4a53184f1b4346c6526400bae0ea0b.png)
Размеры столбцов таблицы можно менять с помощью шорткатов Ctrl + Shift + Вправо/Влево (⌘⇧→← для OS X).
Для PostgreSQL была добавлена поддержка Schema Search Path, а также Range-типов и типов с TimeZone.
Установщик
И наконец, установщик для Windows теперь также включает наш кастомный билд JDK с нашими исправлениями проблем с фокусом и рендеринга шрифтов.
Вот, пожалуй, и все основные нововведения. Теперь можно смело скачивать превью и пробовать его самостоятельно! Как всегда, я с удовольствием отвечу на ваши вопросы в комментариях.
Программируйте с удовольствием!
![image](https://habrastorage.org/getpro/habr/post_images/1ca/7e9/d1d/1ca7e9d1de45c41ef7e3f8dba829449e.png)
Отладчик
Продолжая бороться за пространство и общее удобство, мы объединили вкладку Watches с вкладкой Variables.
![image](https://habrastorage.org/getpro/habr/post_images/c34/d27/82c/c34d2782c090693e6a63387ee5bb1194.png)
Также теперь можно использовать многострочные выражения в настройке брейкпойнта в полях Condition и Evaluate and log, и в настройках Data Type Renderers в поле Use following expression.
![image](https://habrastorage.org/getpro/habr/post_images/196/a04/717/196a047173e2f618e4d6a442d32b042b.png)
Интеграция с Git и Mercurial
Вкладка Log для Git и Mercurial в очередной раз претерпела ряд изменений. Ее содержание теперь обновляется в фоновом режиме (и при загрузке проекта, и при изменениях в локальном репозитории). За счет этого открываться вкладка стала гораздо быстрее.
Кроме того, во время обновления и загрузки под панелью инструментов теперь отображается тонкая полоска прогресса.
![image](https://habrastorage.org/getpro/habr/post_images/4a2/47f/4f3/4a247f4f3e8b461173ecdf1e00b983c8.png)
Если в поле Filter указана строка поиска, во время прокрутки внизу также появляется индикатор загрузки.
Подробная информация о коммитах показывается теперь для нескольких выделенных коммитов.
И наконец, можно установить шорткат для быстрого перехода к полю Filter.
Для Git мы исправили важную проблему, с которой наверняка сталкиваются пользователи Windows и OS X: переименование файлов, где меняется только регистр символов.
Работа с патчами
Если вы скопируете патч в буфер обмена и переключитесь в IDE (или перетащите патч в окно IDE мышью), вам автоматически предложат применить этот патч.
Кроме того, применение патча значительно упростилось в тех случаях, когда он не содержит информации о ревизии, а оригинальный файл был перенесен, переименован или изменен. В простейших случаях IDE постарается самостоятельно определить оригинальный файл, в сложных — предложит вам его указать. Также, если содержание файла изменилось, IDE поможет объединить эти изменения с патчем.
![image](https://habrastorage.org/getpro/habr/post_images/2f7/8c8/d3c/2f78c8d3c806d150d615b8d658ed754b.png)
И наконец, перед применением патч теперь можно просто сравнить с локальной копией (кнопка Show Diff) и при необходимости внести изменения в локальную версию вручную по ходу сравнения.
Редактор
Редактор теперь поддерживает шрифты с лигатурами — специальными символами, образованными путем соединения других символов. Включить опцию можно в Settings → Editor → Colors & Fonts → Font (флажок Enable font ligatures). Убедитесь, что выбранный шрифт поддерживает лигатуры, например FiraCode, Hasklig, Monoid или PragmataPro.
![image](https://habrastorage.org/getpro/habr/post_images/0ce/447/f34/0ce447f3445328c2a7e329d48d3e349b.png)
Интерфейс
Внешний вид IDE теперь можно настроить под себя, выбрав любое изображение как фон редактора и окна IDE. За счет настроек прозрачности это прекрасно работает и с темной, и со светлой темами.
Изображение выбирается с помощью действия Set Background Image, которое доступно как из Find Action, так и из контекстного меню на файле изображения.
![image](https://habrastorage.org/getpro/habr/post_images/690/d73/94a/690d7394aeb0c44da854ea151e5e8946.png)
Также внешне изменились всплывающие нотификации. Теперь они отображаются в нижнем правом углу (ближе к окну инструментов Events), имеют более компактную форму и группируются по типу подсистемы.
![image](https://habrastorage.org/getpro/habr/post_images/f3a/8ff/2f9/f3a8ff2f914453a510b901cae28bbb0c.png)
Spring Framework
Поддержка Spring Framework продолжает совершенствоваться.
Мы добавили инспекцию, которая предлагает автоматически заменять инжектирование полей конструкторами. Поддержали опцию (добавленную в Spring 4.3), которая позволяет использовать параметризированные типы (generics) в качестве классификаторов (qualifiers). Поддержали пользовательские аннотации EventListener, определенные с помощью AliasFor.
![image](https://habrastorage.org/getpro/habr/post_images/d4b/61e/2e7/d4b61e2e7e6008360cef06433b7badf2.png)
Кроме того, готова основательная поддержка Spring Cache (абстракции, добавленной в Spring 3.0 и полностью обновленной в Spring 4.1). Поддержка включает навигацию, инспекции, подсветку синтаксиса, автодополнение и навигацию при редактировании SpEl, и многое другое.
![image](https://habrastorage.org/getpro/habr/post_images/397/9ab/59a/3979ab59a337560cc185dfcbc531d60b.png)
Для Spring MVC внутри шаблонов Freemarker и Velocity появилось автодополнение и навигация для переменных, объявленных в контроллере.
![image](https://habrastorage.org/getpro/habr/post_images/618/776/035/618776035bb96f73b2ffa795baa2966f.png)
Также мы поддержали изменения Spring Security 4.0 и добавили автодополнение и навигацию при редактировании SpEl и для аннотаций и внутри XML.
![image](https://habrastorage.org/getpro/habr/post_images/0ca/9fb/8f2/0ca9fb8f207cc6061a55982eed4d83e7.png)
Плюс мы добавили подсветку и навигацию для сообщений от Spring в консоли.
JavaScript
Теперь IDE не только помогает в написании ES6 кода, но и предлагает конвертировать в него код более старых версий JavaScript. Новый intention сможет заменить нормальные анонимные функции на стрелочные функции (arrow functions) и короткие стрелочные функции (shorthand arrow functions).
![image](https://habrastorage.org/getpro/habr/post_images/854/25e/81b/85425e81b93dd6471f6c68b06ae249f2.png)
В дополнение к постфикс-автодополнениям, реализованным ранее, мы добавили шаблоны .const и .let.
![image](https://habrastorage.org/getpro/habr/post_images/d15/b2d/104/d15b2d1040d4c7c8a07f17665112fd16.png)
React
IDE научилась понимать свойства (props) компонентов, объявленные при помощи propTypes, и теперь предлагает автодополнение и навигацию.
![image](https://habrastorage.org/getpro/habr/post_images/ac1/f44/ece/ac1f44ece0a76782b6ecbb92996f915a.png)
Методы жизненного цикла компонентов (например, componentDidMount) больше не подсвечиваются как неиспользуемые.
Когда вы передаете компоненту обработчики событий (например, onClick, onChange), IDE вместо кавычек ставит фигурные скобки (как и положено).
К слову о кавычках, теперь в Settings → Editor → Code Style → HTML → Other → Generated quote marks вы вообще можете указать, что использовать: двойные кавычки, одинарные или вообще ничего.
![image](https://habrastorage.org/getpro/habr/post_images/6e1/365/09b/6e136509b2db7e1bb975f05d6bd9c1b5.png)
Наконец, IDE научилась понимать non-DOM аттрибуты, такие как key, ref и dangerouslySetInnerHTML.
AngularJS
Для AngularJS 2 мы добавили много полезных шаблонов (live templates). В Project Wizard → Static Web появился раздел Angular CLI.
![image](https://habrastorage.org/getpro/habr/post_images/ff0/3d4/875/ff03d48751b1570b8d06aaa7f1a7602b.png)
TypeScript
IDE предлагает умное автодополнение для enum-типов.
![image](https://habrastorage.org/getpro/habr/post_images/37a/3ea/540/37a3ea540e4374ea8d98100f590b38a1.png)
Npm, Gulp и Grunt
Любой скрипт npm, Gulp и Grunt может теперь автоматически запускаться IDE перед запуском Run configuration. Для этого этот скрипт необходимо добавить в разделе Before launch в диалоге Run configuration.
![image](https://habrastorage.org/getpro/habr/post_images/f82/659/b93/f82659b9381aaf3abb013ccf4234effd.png)
Работа с базами данных
По мере развития DataGrip, нового продукта JetBrains, инструменты для работы с SQL и базами данных внутри IntelliJ IDEA также продолжают улучшаться.
В диалоге настроек Data Source and Drivers появилось автодополнение для поля Database.
![image](https://habrastorage.org/getpro/habr/post_images/03a/240/f6d/03a240f6dd3a2b9a2414a966cac4cdf8.png)
В окне инструментов Database появилась опция Auto-scroll from Editor. При открытии того или иного элемента базы данных в редакторе, этот элемент выделяется в окне Database.
![image](https://habrastorage.org/getpro/habr/post_images/c4d/91a/b67/c4d91ab679fcfd5be845d5970ec26d13.png)
Автодополнение SQL стало еще больше учитывать контекст. Например, если в контексте ожидается имя таблицы, IDE больше не предлагает функции.
![image](https://habrastorage.org/getpro/habr/post_images/571/4e5/d22/5714e5d226fa233ee13555e9c8ff4adf.png)
Surround With предлагает передать текущее выражение в качестве параметра функции.
![image](https://habrastorage.org/getpro/habr/post_images/a9e/125/1da/a9e1251da00c29342826662bc49cb21d.png)
Редактор таблицы предлагает автодополнение при редактировании значения таблицы (на основе других значений этого столбца).
![image](https://habrastorage.org/getpro/habr/post_images/1f4/a53/184/1f4a53184f1b4346c6526400bae0ea0b.png)
Размеры столбцов таблицы можно менять с помощью шорткатов Ctrl + Shift + Вправо/Влево (⌘⇧→← для OS X).
Для PostgreSQL была добавлена поддержка Schema Search Path, а также Range-типов и типов с TimeZone.
Установщик
И наконец, установщик для Windows теперь также включает наш кастомный билд JDK с нашими исправлениями проблем с фокусом и рендеринга шрифтов.
Вот, пожалуй, и все основные нововведения. Теперь можно смело скачивать превью и пробовать его самостоятельно! Как всегда, я с удовольствием отвечу на ваши вопросы в комментариях.
Программируйте с удовольствием!