Время летит! Всего месяц назад мы стартовали IntelliJ IDEA 2016.2 EAP, а уже сегодня рады представить вашему вниманию Public Preview. Предлагаем вам убедиться в том, что этот месяц не прошел даром, прочитав этот пост. Нетерпеливые могут его пропустить и пойти сразу качать превью, чтобы попробовать все самостоятельно. Для остальных предлагаю короткий рассказ об основных улучшениях.

image


Отладчик

Продолжая бороться за пространство и общее удобство, мы объединили вкладку Watches с вкладкой Variables.

image

Также теперь можно использовать многострочные выражения в настройке брейкпойнта в полях Condition и Evaluate and log, и в настройках Data Type Renderers в поле Use following expression.

image

Интеграция с Git и Mercurial

Вкладка Log для Git и Mercurial в очередной раз претерпела ряд изменений. Ее содержание теперь обновляется в фоновом режиме (и при загрузке проекта, и при изменениях в локальном репозитории). За счет этого открываться вкладка стала гораздо быстрее.

Кроме того, во время обновления и загрузки под панелью инструментов теперь отображается тонкая полоска прогресса.

image

Если в поле Filter указана строка поиска, во время прокрутки внизу также появляется индикатор загрузки.

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

И наконец, можно установить шорткат для быстрого перехода к полю Filter.

Для Git мы исправили важную проблему, с которой наверняка сталкиваются пользователи Windows и OS X: переименование файлов, где меняется только регистр символов.

Работа с патчами

Если вы скопируете патч в буфер обмена и переключитесь в IDE (или перетащите патч в окно IDE мышью), вам автоматически предложат применить этот патч.

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

image

И наконец, перед применением патч теперь можно просто сравнить с локальной копией (кнопка Show Diff) и при необходимости внести изменения в локальную версию вручную по ходу сравнения.

Редактор

Редактор теперь поддерживает шрифты с лигатурами — специальными символами, образованными путем соединения других символов. Включить опцию можно в Settings > Editor > Colors & Fonts > Font (флажок Enable font ligatures). Убедитесь, что выбранный шрифт поддерживает лигатуры, например FiraCode, Hasklig, Monoid или PragmataPro.

image

Интерфейс

Внешний вид IDE теперь можно настроить под себя, выбрав любое изображение как фон редактора и окна IDE. За счет настроек прозрачности это прекрасно работает и с темной, и со светлой темами.

Изображение выбирается с помощью действия Set Background Image, которое доступно как из Find Action, так и из контекстного меню на файле изображения.

image

Также внешне изменились всплывающие нотификации. Теперь они отображаются в нижнем правом углу (ближе к окну инструментов Events), имеют более компактную форму и группируются по типу подсистемы.

image

Spring Framework

Поддержка Spring Framework продолжает совершенствоваться.

Мы добавили инспекцию, которая предлагает автоматически заменять инжектирование полей конструкторами. Поддержали опцию (добавленную в Spring 4.3), которая позволяет использовать параметризированные типы (generics) в качестве классификаторов (qualifiers). Поддержали пользовательские аннотации EventListener, определенные с помощью AliasFor.

image

Кроме того, готова основательная поддержка Spring Cache (абстракции, добавленной в Spring 3.0 и полностью обновленной в Spring 4.1). Поддержка включает навигацию, инспекции, подсветку синтаксиса, автодополнение и навигацию при редактировании SpEl, и многое другое.

image

Для Spring MVC внутри шаблонов Freemarker и Velocity появилось автодополнение и навигация для переменных, объявленных в контроллере.

image

Также мы поддержали изменения Spring Security 4.0 и добавили автодополнение и навигацию при редактировании SpEl и для аннотаций и внутри XML.

image

Плюс мы добавили подсветку и навигацию для сообщений от Spring в консоли.

JavaScript

Теперь IDE не только помогает в написании ES6 кода, но и предлагает конвертировать в него код более старых версий JavaScript. Новый intention сможет заменить нормальные анонимные функции на стрелочные функции (arrow functions) и короткие стрелочные функции (shorthand arrow functions).

image

В дополнение к постфикс-автодополнениям, реализованным ранее, мы добавили шаблоны .const и .let.

image

React

IDE научилась понимать свойства (props) компонентов, объявленные при помощи propTypes, и теперь предлагает автодополнение и навигацию.

image

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

Когда вы передаете компоненту обработчики событий (например, onClick, onChange), IDE вместо кавычек ставит фигурные скобки (как и положено).

К слову о кавычках, теперь в Settings > Editor > Code Style > HTML > Other > Generated quote marks вы вообще можете указать, что использовать: двойные кавычки, одинарные или вообще ничего.

image

Наконец, IDE научилась понимать non-DOM аттрибуты, такие как key, ref и dangerouslySetInnerHTML.

AngularJS

Для AngularJS 2 мы добавили много полезных шаблонов (live templates). В Project Wizard > Static Web появился раздел Angular CLI.

image

TypeScript

IDE предлагает умное автодополнение для enum-типов.

image

Npm, Gulp и Grunt

Любой скрипт npm, Gulp и Grunt может теперь автоматически запускаться IDE перед запуском Run configuration. Для этого этот скрипт необходимо добавить в разделе Before launch в диалоге Run configuration.

image

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

По мере развития DataGrip, нового продукта JetBrains, инструменты для работы с SQL и базами данных внутри IntelliJ IDEA также продолжают улучшаться.

В диалоге настроек Data Source and Drivers появилось автодополнение для поля Database.

image

В окне инструментов Database появилась опция Auto-scroll from Editor. При открытии того или иного элемента базы данных в редакторе, этот элемент выделяется в окне Database.

image

Автодополнение SQL стало еще больше учитывать контекст. Например, если в контексте ожидается имя таблицы, IDE больше не предлагает функции.

image

Surround With предлагает передать текущее выражение в качестве параметра функции.

image

Редактор таблицы предлагает автодополнение при редактировании значения таблицы (на основе других значений этого столбца).

image

Размеры столбцов таблицы можно менять с помощью шорткатов Ctrl + Shift + Вправо/Влево (??>< для OS X).

Для PostgreSQL была добавлена поддержка Schema Search Path, а также Range-типов и типов с TimeZone.

Установщик

И наконец, установщик для Windows теперь также включает наш кастомный билд JDK с нашими исправлениями проблем с фокусом и рендеринга шрифтов.

Вот, пожалуй, и все основные нововведения. Теперь можно смело скачивать превью и пробовать его самостоятельно! Как всегда, я с удовольствием отвечу на ваши вопросы в комментариях.

Программируйте с удовольствием!
Поделиться с друзьями
-->

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


  1. 0xcffaedfe
    16.06.2016 18:10
    +7

    За лигатуры отдельное спасибо, давно ждал.


    1. ScratchBoom
      17.06.2016 07:52

      А для чего может быть полезно? Сходу не могу ничего кроме != придумать


      1. TheKnight
        17.06.2016 10:47

        Сходу еще в голову лямбды (->), сравнения(>=, <=) начинают чуть красивее выглядеть. В Haskell больше сочетаний, которые лигатурами красиво отображаются. Рекомендую сходить на странички шрифтов и посмотреть примеры.


        1. dougrinch
          17.06.2016 14:01
          +1

          Только вот жалко что в дефолтном Source Code Pro их нет. Все 4 предложенных в статье шрифта (включая Hasklig, который вроде как форк Source Code Pro) выглядят плохо.


          1. eBuster
            17.06.2016 15:29

            Hasklig это и есть Source Code Pro с лигатурами. Не может он плохо выглядеть, если вас дефолтовый устраивает.


            1. dougrinch
              17.06.2016 16:35

              Т.е. это мои персональные глюки?
              Source Code Pro



              Hasklig



              1. dougrinch
                17.06.2016 16:37

                Почему-то хабр уменьшает картинки и они выглядят почти одинаково. Вот оригиналы:
                https://hsto.org/files/265/436/d3e/265436d3e1c240a4a54def73e42caeac.png
                https://hsto.org/files/787/2f9/4fc/7872f94fc93e42cbb593653d62c4a779.png


                1. eBuster
                  17.06.2016 18:10

                  Какие глюки? Что именно в нём для вас выглядит плохо?
                  Начертание практически одниковое (насколько я могу судить как неискушённый зритель), на скринах разница видна только в межстрочном интревале и немного в сглаживании. Но про сглаживание мне сложно что-то плохое сказать, кроме того, что нижний (Hasklig) выглядит более чётким.


            1. dougrinch
              17.06.2016 16:43

              Я вот что подумал: может быть я поставил не тот hasklig? Их ведь там архиве штук 15. Я ставил regular.


          1. k12th
            17.06.2016 15:42

            Мне ниже в комментах посоветовали Settings > Appearance & Behaviour > Appearance > Antialiasing > Editor режим Greyscale, мне помогло.


            1. dougrinch
              17.06.2016 16:29

              Изменения есть, но ничтожные.


  1. KChernenko
    16.06.2016 18:25
    +5

    Спасибо! Уже не представляю как можно использовать что-то другое вместо IntelliJ IDEA.


  1. vedenin1980
    16.06.2016 18:43
    +7

    Для Git мы исправили важную проблему, с которой наверняка сталкиваются пользователи Windows и OS X: переименование файлов, где меняется только регистр символов.


    Вот за это отдельное спасибо. Сталкивался с ней несколько раз.


    1. ilfroloff
      17.06.2016 12:25
      +1

      Очень надоедливая проблема. Я нашел ее решение в этой статье (к сожалению, только для OS X).
      Может кому-то будет полезно, если он не привязан к JetBrains продуктам.


  1. Vlad_Yermak0v
    16.06.2016 19:07

    Круто, а когда можно ждать поддержку лигатур в других IDE, а именно в RubyMine?


    1. andreycheptsov
      16.06.2016 19:15
      +3

      С этого года релизы всех JetBrains IDE синхронизированы и в плане номеров версий и в плане дат релиза. Поэтому изменения в IntelliJ IDEA 2016.2 появятся в других IDE примерно в это же время – летом.


  1. guai
    16.06.2016 19:10
    +1

    а эту ботву вы когда-нибудь сделаете?
    https://youtrack.jetbrains.com/issue/IDEABKL-99
    11 лет ждём…


    1. rauch
      16.06.2016 19:17
      +1

      Ага, или эту: https://youtrack.jetbrains.com/issue/IDEA-117446


  1. TheKnight
    16.06.2016 19:29

    Есть вопрос — а где можно прочитать полный патчноут для данного public preview?
    Конкретно интересует, войдет ли в этот public preview исправление IDEA-156608?


    1. andreycheptsov
      16.06.2016 19:35

      Пока не вошло, но войдет.


  1. cs0ip
    16.06.2016 20:39

    Я так понимаю, что кастомный билд JDK пришлось делать потому, что ваши исправления не удавалось пропихнуть в OpenJDK. А с чем было связано нежелание принимать ваши исправления, когда речь идет об исправлении их же косяков, чем это аргументировалось? Я просто не в курсе ситуации и мне интересно.


    1. andreycheptsov
      16.06.2016 21:50
      +3

      Все наши изменения попадают в OpenJDK, просто с некоторой задержкой.


      1. andreycheptsov
        17.06.2016 12:16

        Хотя в некоторых отдельных случаях задержка может быть очень приличная.


  1. stgunholy
    16.06.2016 21:40

    Подскажите пожалуйста, мне часто приходится выбирать ключи локализации из приложения angular с angular-translate
    Используются ключи вида «login.usernameField.label». Соответственно в шаблонах это выглядит как {{«login.usernameField.label» | translate}}
    До определенного момента при нажатии cmd + W идея выделяла именно то, что мне нужно — «login.usernameField.label», теперь же выделяется вот так: {{«login.usernameField.label», я перерыл все настройки но так и не нашел, где это можно настроить… Заранее спасибо!


    1. enDal
      16.06.2016 22:13

      У меня получилось воспроизвести в проекте без angular. Установлен ли плагин и работает ли остальная интеграция (например, переход на декларации директив)?


      1. stgunholy
        16.06.2016 22:43

        Плагин установлен. Переход на директивы работает через раз, но это особо глаза не мозолит… а вот cmd+W действительно часто использую…


        1. enDal
          16.06.2016 23:55

          angular.js в проекте или как библиотека доступен?


          1. stgunholy
            17.06.2016 00:36

            Сейчас как библиотека… Хотя я оба варианта пробывал настраивать…


            1. enDal
              17.06.2016 22:57

              >Переход на директивы работает через раз
              Это может говорить о том, что мы по каким-то причинам не определяем наличие angular в проекте, что в свою очередь приводит к тому, что строки между {{ и }} не считаются кодом. Было бы здорово увидеть проект, в котором оно не работает, достаточно какого-то минимального.


  1. ilmarranen
    16.06.2016 22:12

    Ссылка на PragmataPro заводит в Monoid.


    1. andreycheptsov
      16.06.2016 22:12

      Спасибо, поправил.


  1. m1ld
    16.06.2016 22:12
    -9

    Обзор новой версии от компании сделавшей эту новую версию. Обзор такой обзор.

    Когда ожидать валидацию запросов в spring-data-jpa репозиториях?


    1. andreycheptsov
      16.06.2016 22:14

      Можете по-конкретнее, желательно с примером (я про валидацию запросов в spring-data-jpa репозиториях)?


      1. m1ld
        16.06.2016 23:04

        Я про эти случаи, работает только подсветка, но не проверка на то что имена атрибутов правильные:

        public interface SomeEntityRepository extends CrudRepository<SomeEntity, Long> {
        
          @Query("select someEntity from SomeEntity someEntity where someEntity.keyId = ?1 and someEntity.anotherKeyId = ?2")
          List<SomeEntity> findAllForKeys(Key key, AnotherKey anotherKey);
          
        }
        


        1. andreycheptsov
          17.06.2016 12:10
          +1

          Spring Boot или обычное приложение? Настроен ли JPA фасет?


          1. m1ld
            21.06.2016 12:32

            Обычный gradle проект с наборами spring библиотек, jpa настроен.


            1. andreycheptsov
              21.06.2016 14:53
              +1

              Все понял! Поддержка Spring Data JPA запланирована на 2016.3.


  1. k12th
    16.06.2016 23:09

    За лигатуры спасибо, работают. Однако FiraCode у меня в WebStorm выглядит вот так:
    image


    ЧДЯНТ? Win10, если это важно.


    1. sabio
      17.06.2016 11:12

      Вы запускаете WebStorm на bundled jre?
      Вот, например, как у меня выглядит FiraCode 14 pt (line spacing 1.1) на bundled jre (слева) и на JDK 1.8.0_92 от Oracle (справа):

      image

      // Win7


      1. k12th
        17.06.2016 11:13

        Честно? Я запускаю по дефолту, как поставилось. Где это посмотреть?


      1. k12th
        17.06.2016 11:22

        Судя по Help -> About, на bundled. Но шрифт выглядит как справа.


    1. andreycheptsov
      17.06.2016 12:11
      +1

      Попробуйте включить в Settings > Appearance & Behaviour > Appearance > Antialiasing > Editor режим Greyscale.


      1. k12th
        17.06.2016 12:15

        Помогло, спасибо!


  1. PHmaster
    17.06.2016 02:22
    +1

    Вопрос, возможно, немного не в тему: можно ли как-то заплатить за IDEA с помощью Webmoney? А то подписка истекла, банковской карты нет, приходится использовать Community Edition, а там не хватает несколько фич, которые есть в Ultimate.


  1. sdwvit
    17.06.2016 03:50

    Как приятно видеть что любимая IDE развивается семимильными шагами!

    Пользуюсь случаем, хотел бы задать вопрос на счет поддержки гита:
    Допустим, у меня мерж конфликт в файле на 1000 строк (конфиг какой-то). У меня 150 изменений/добавлений и на сервере 150 добавлений. В данный момент после добавления своих изменений в смерженую версию, мне нужно еще прокликать добавленые строчки с правой (серверной) версии. Можно ли как-то автоматизировать это? Знаю что сейчас есть кнопка Accept Right / Accept Left, но она откидывает все изменения с противоположной стороны.
    Заранее спасибо.


    1. artspb
      17.06.2016 11:11
      +2

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


    1. maks1mm
      17.06.2016 12:24

      В смысле откидывает? Она принимает с выбранной стороны все неконфликтные изменения и с противоположной стороны все остаётся как было.


  1. softkot
    17.06.2016 03:51

    Складывается впечатление что на поддерждку android подзабили. В настоящий момент пользоваться релизом idea для работы с последними sdk не представляется возможным, в eap и preview с горем пополам. Понятно что instant run это штука новая но последнее время уж очень сильно idea отстает от android studio в этом плане.


    1. andreycheptsov
      17.06.2016 12:14

      Есть такое. Я очень надеюсь в самое ближайшее время мы начнем наверстывать это.


    1. asmrnv777
      17.06.2016 12:24

      А зачем оно надо, если есть Android Studio?


      1. softkot
        17.06.2016 12:26

        Ну, например, чтобы нормально в одной среде отлаживать приложение с бэком на AppEngine


  1. akamensky
    17.06.2016 12:15

    Эти изменения касаются только IDEA? Я раньше в основном пользовался только IDEA с некоторыми плагинами (в частности Python и Go), а сейчас больше переключился на PyCharm и CLion соответственно. Будут ли эти изменения включены в остальные IDE? И когда ждать обновлений для остальных продуктов?


    1. andreycheptsov
      17.06.2016 12:17

      Мой комментарий выше: «С этого года релизы всех JetBrains IDE синхронизированы и в плане номеров версий и в плане дат релиза. Поэтому изменения в IntelliJ IDEA 2016.2 появятся в других IDE примерно в это же время – летом.»


  1. LionZXY
    17.06.2016 12:15

    Не подскажите где можно найти ту фото на фоне с маяком?


    1. prigara
      17.06.2016 13:01

      На https://kotlinlang.org/ — https://kotlinlang.org/css/com/layout/images/index-page-header-bg.jpg


    1. andreycheptsov
      17.06.2016 13:01

      Оригинал выложу в понедельник


    1. andreycheptsov
      24.06.2016 12:51
      +2

      Лучше поздно, чем никогда: https://blog.jetbrains.com/idea/files/2016/06/IMG_4446.jpg


  1. solver
    17.06.2016 12:58
    +3

    Скажите, а почему ваши продукты все еще ориентированы на 32bit системы?
    ToolBox запускает 32бит версию, по умолчанию тоже 32бита зпускается.
    И если это можно поменять как-то, то в комплекте jre только 32 бита и это уже не изменить.
    С чем это связано? У вас основная ЦА сидит на старом железе с 3Гб оперативки?


    1. vsb
      17.06.2016 16:54
      +1

      А зачем вам 64 бита? Вопрос без подвоха. Я идее больше 1 гигабайта никогда не давал, и так хватает с головой вроде бы. Теоретически 64 бита должны давать ускорение за счёт большего числа регистров (может быть ещё за счёт чего-то), но я никогда не видел каких-то конкретных чисел, показывающих это преимущество.


      1. solver
        18.06.2016 08:53

        — Доктор, у меня нога болит
        — Странно, у меня точно такая же нога и не болит


        1. rauch
          19.06.2016 18:09

          Я вот тоже не могу представить себе Enterprise-проекта, для нормальной навигации по которому, Идеи хватит 1GB


      1. danslapman
        23.06.2016 16:02
        +2

        Вы просто на Scala не писали видимо :)


  1. seregamorph
    17.06.2016 14:23

    Что за шрифт в вашем скриншоте с лигатурами? Какая OS (если это важно)?


    1. eBuster
      17.06.2016 15:34

      FiraCode и MacOS (судя по первым скриншотам, но это не важно).


      1. seregamorph
        17.06.2016 16:28
        +1

        Судя по всему, важно.
        Так оно выглядит на Win7 — не очень приятно.
        Шрифт FiraCode_1.102
        image
        Если подскажете, как это сделать приятнее на вид, буду признателен.


        1. seregamorph
          17.06.2016 17:01

          Я видел комментарий выше про antialiasing grayscale, становится по-другому, но сказать чтобы лучше.
          Проверил на Mac OS — там действительно шрифт выглядит хорошо.


          1. seregamorph
            17.06.2016 17:47

            *НЕ сказать чтобы лучше


            1. 0xcffaedfe
              19.06.2016 20:56

              Ну как сказать, лучше.

              image


          1. eBuster
            17.06.2016 18:15

            А про бандленную версию jdk с фиксами для рендеринга шрифтов видели комент, у вас она или обычная? Может это поможет, потому что вид тут мало сказать неприятный, выглядит это всё вообще неприемлимо.
            Я, признаться, последние не знаю сколько уже лет, только под убунтой работаю, так что такие фокусы от винды для меня сюрприз.


  1. Miklos
    17.06.2016 17:15

    Ideavim отвалился.


    1. andreycheptsov
      17.06.2016 17:41
      +1

      К сожалению да. Пока не починили, можете проинсталлировать IdeaVim EAP: https://github.com/JetBrains/ideavim#get-an-early-access


    1. kimifish
      22.06.2016 22:13

      Спасибо, что предупредили.


  1. Cubist
    20.06.2016 19:16

    MacOS только Light начертание шрифта FiraCode c лигатурами. Хотя если лигатуры отключить, снова Regular.
    https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FIDEA-127539#comment=27-1267636
    Я не устанавливал Light версию, только Retina.


  1. wibotwi
    23.06.2016 03:24

    Подскажите как в виндоус 7 поставить шрифт, а то админ аксесса нету? Можно внутрь папки идеи куда-то положить? Попробую пока через груви скрипт загружать в JVM, авось получится.


    1. wibotwi
      23.06.2016 17:02

      Работает, но после рестарта идеи сбрасывается. Нужно вновь идти в настройки фонта и выбирать этот фонт. Видимо скрипты выполняются после загрузки фонтов на старте. Пойду фича реквест создавать, чтобы можно было фонт из файла выбирать.
      Еще попробую по АПИ идеи полазить, може можно самому шрифт ставить из груви скрипта.

      Font font = Font.createFont(Font.TRUETYPE_FONT, new File("FiraCode-Regular.otf"));
      GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
      ge.registerFont(font);
      


      1. Borz
        23.06.2016 17:13

        Погуглите возможность загружать шрифты в Windows без прав админа — этого должно быть достаточно


        1. wibotwi
          23.06.2016 19:44

          Да я начал с гугла. Похоже что никак.


          1. Borz
            23.06.2016 20:19

            меня гугл сюда привёл. Проверить не могу — не винда.


            1. wibotwi
              23.06.2016 21:09

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