В этом выпуске: больше новых рефакторингов, лучше автодополнение, поддержка баз данных из DataGrip и даже поддержка Touch Bar. Более подробно — под катом.

Splash

Swift


Извлечение замыканий


Вслед за извлечением методов мы научились извлекать замыкания. Отдельного сочетания клавиш не нашлось, но рефакторинг можно легко вызвать через ?T + 5:
Извлечение замыканий

Сигнатуру замыкания, как и всегда, легко менять:

Извлечение замыканий

Переименование


Убрали диалоги для локального переименования:

Локальное переименование

Многое доработали в кросс-языковой части. Теперь можно нормально переименовывать аргументы блоков в Objective-C, имена классов, экспортированных из Objective-C в Swift с помощью атрибута @objc, и элементы перечислений в Swift.

Автодополнение


Продолжаем закрывать “элементарные” случаи типов автодополнения. В этот раз добавили автоматическую вставку ‘?’ для опциональных типов:

Автодополнение для ?

И параллельно добавляем чуть менее элементарные, вроде автодополнения для атрибутов в Swift:

Автодополнение атрибутов

Гензель и Гретель спасены


Плюс наших хлебных крошек — в том, что птицы их не съедят. Поэтому и Гензель, и Гретель без проблем найдут путь домой:

Breadcrumbs

Комментарии для расширений


В Objective-C категории легко отличить по имени. А вот в Swift имен у расширений (extensions) нет. Поэтому мы добавили в Structure View отображение комментариев из кода расширений в Swift:

Комментарии в Structure

Override/Implement


Исправили генерацию перегрузок / реализаций для полей с одинаковым именем из базовых классов и протоколов, изменяемых свойств (mutable) и опциональных частей протоколов, еще не реализованных в базовом классе:

Override/Implement

Intentions


В AppCode 2017.3 появились действия для добавления / удаления явно указанных типов у переменных, а в AppCode 2018.2 мы реализовали то же самое для циклов:

Intentions

Отладка


Решили проблему с выводом для скриптов на Python (таких как Chisel):

Chisel

Платформа выкатила небольшую, но очень удобную фичу — пачку действий для манипуляции с точками останова через ??:

Debugger

Сообщения сборки


В этом релизе мы решили, кажется, последнюю действительно крупную проблему с отображением сообщений сборки — стали нормально обрабатывать вывод фазы Run Script:

Run Script

Поддержка баз данных


В AppCode 2018.2 мы включили полную функциональность DataGrip для работы с БД. Вот, кстати, пример для SQLite:


Со всеми возможностями можно ознакомиться у нас на сайте.

Touch Bar


Теперь работает и в AppCode:

Touch Bar

Контроль версий


Как и всегда, множество улучшений добавлено в платформу IntelliJ, и все они теперь доступны в AppCode.

Интерфейс пользователя


Самое видимое из изменений — это полностью переработанные в едином стиле иконки:

Иконки

Про процесс изменения иконок можно прочитать вот тут.

На этом все. Как и всегда, скачивать — тут, баги — в трекер, вопросы общего характера задаем прямо здесь.

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


  1. SerafimArts
    28.08.2018 18:59
    +1

    Отдельного сочетания клавиш не нашлось, но рефакторинг можно легко вызвать через ?T + 5:


    Предлагаю добавить киллерфичу с голосовым вводом. Хотя бы по ключевым словам: «дополни», «переименуй», «найди», «раздели» и проч, а то я от силы 1/100 хоткеев помню. Вам бы с Яндексом и их Алисой скооперироваться и будет вообще бомба).

    Ну или можно поступить более тривиально и неинтересно и заменить даблшифт на команду поиска команд, а не обычного поиска (который полностью идентичен набору Ctrl+Shift+A, Ctrl+Shift+N, Ctrl+N, etc).


    1. staticlab
      28.08.2018 20:15

      Ну или можно поступить более тривиально и неинтересно и заменить даблшифт на команду поиска команд, а не обычного поиска (который полностью идентичен набору Ctrl+Shift+A, Ctrl+Shift+N, Ctrl+N, etc).

      Эмм, так Ctrl+Shift+A — это как раз и есть поиск команд, разве нет? Притом контекстнозависимый.


      1. SerafimArts
        28.08.2018 21:52

        Я об этом сочетании узнал только что, когда начал смотреть какие вообще есть сочетания и что-то не подумал об этой логической несостыковочке. Бывает. Последний абзац действительно глупо звучит.

        Основной посыл был в том, что сочетаний клавиш овердохрена.


        1. yeswolf Автор
          29.08.2018 15:13

          Тут как:

          1. Скоро Go to Class/Symbol/File/Search Everywhere/Find action будут объединены в одно окно.

          2. Шорткаты надо учить, как правило они довольно логично выстроены группами. В этом смысле для начала стоит освоить основные группы по генерации / рефакторингам / возможностями редактора. Да, придется потратить время. Но грубо говоря, это X, который потом сэкономит 10X. Допустим, даже элементарное выделение через Expand/Shrink Selection существенно упрощает жизнь. В целом, это верно для любого инструмента разработки.

          3. Активное использование Find Action сильно упрощает их изучение. Можно еще поставить что-нибудь вроде Key Promoter X.


  1. iFamily
    28.08.2018 19:16

    Был бы очень рад туториалу как использовать AppCode при разработки бэкенда на Swift + Vapor3, потому что самому завести не удалось.


    1. yeswolf Автор
      28.08.2018 19:30

      Это есть в планах. Но так как за время с написания черновика произошли секретные улучшения, о которых говорить нельзя, требуется переработка :).

      А что не получилось завести конкретно? По идее, Xcode-проект для Vapor мы нормально обрабатываем.


      1. iFamily
        28.08.2018 20:55

        Цель была получить хороший быстрый автокомплит, который недоступен в Xcode когда проект большой.
        В AppCode очень долго минут 20 шла индексация, и в итоге совсем не работал автокомплит:( (MBP2017 15")


        1. yeswolf Автор
          29.08.2018 15:03

          Поподробнее бы понять, с проектом, где и что отвалилось. У меня на тестовых проектах комплит работал нормально. Опять же, встает вопрос — какая версия Xcode / AppCode.


  1. SergeyMild
    29.08.2018 15:02
    +1

    Поправьте переходы, когда кликаешь по классу, чтобы перебрасывало в класс, а не в NSObject к методу init()


    1. yeswolf Автор
      29.08.2018 15:02

  1. sacred
    29.08.2018 16:21

    Автокомплит для Apollo GraphQL бы завести. А то не показывает все доступные варианты


    1. SerafimArts
      29.08.2018 20:08

      Ну так обратитесь к разработчику плагина: github.com/jimkyndemeyer/js-graphql-intellij-plugin/issues

      Это же не проблема AppCode и/или IDEA


      1. sacred
        29.08.2018 20:11

        при чем тут разработчик плагина? никаких плагинов я не использую. автокомплит не видит часть полей из обычного swift файла который генерится при билде. очевидно, что это проблема среды разработки, а не отсутствующего плагина


        1. SerafimArts
          29.08.2018 20:15

          А, ну я не так понял проблему.

          Некоторые проблемы, особенно автогенерации и вообще новых файлов (бывает и после пулла новых файлов из репы) можно решить обычным рефрешем (Ctrl+Alt+Y), кнопочкой слева-сверху. Мне помогало.


    1. yeswolf Автор
      30.08.2018 12:47

      И все-таки нужно чуть побольше информации. Вот мы отсмотрели их тестовый проект, на первый взгляд криминала нет (AppCode 2018.2). Можете форкнуть проект и просто там, где есть проблемы, поставить короткий комментарий? Или хотя бы участок кода нужен, пока непонятно, куда копать.


      1. sacred
        30.08.2018 12:48

        хорошо. я попробую


  1. spiceginger
    29.08.2018 17:36

    Хочу сказать спасибо за AppCode, это самые продуктивные 6 евро которые я трачу в месяц. Если бы вы еще добавили возможность принудительной переиндексации проекта — было бы здорово. У нас большой проект состоящий из нескольких фреймворков и очень часто возникает ситуация, что, после нескольких переключений бранчей в гит, индексация проекта слетает и приходится закрывать и открывать AppCode снова.


    1. yeswolf Автор
      29.08.2018 17:48

      Спасибо! Про ваш комментарий — есть вот такая проблема, мы ее очень долго нормально не можем воспроизвести. Переиндексация должна происходить, но не происходит. Что бы помогло нам:


      1. Help > Show Log in Finder > отправить всю папку на stanislav.dombrovsky@jetbrains.com (мне). Либо приттачить в тикет выше с видимостью на appcode-developers


      2. Описать (либо по email, либо в тикете), как в точности действия происходят до возникновения красного кода (только ли это переключений бранчей или, допустим, установка pods, удаление pods, что-либо еще). Кажется, мы не реагируем на какое-то действие, на которое должны.



      Если сможем воспроизвести — это очень сильно поможет, давно хотим решить.


      1. spiceginger
        29.08.2018 17:54

        Как возникнет в следующий раз — сделаю. Это точно стало происходить реже в последние месяцы.


        1. yeswolf Автор
          29.08.2018 18:46

          Логи лучше выслать сейчас — там с большой вероятностью осталось что-то полезное.


          1. spiceginger
            29.08.2018 19:10

            Done.