AppCode 2017.1: улучшенная поддержка Swift, новые возможности кодогенерации и многое другое


Привет, Хабр! Недавно мы выпустили AppCode 2017.1, сейчас готовим первое обновление — пора рассказать обо всех изменениях в этой версии.
0d239af5f34e48dc9fbd25e237a48b01.png

Swift


Поддержка языка


Мы реализовали поддержку множества изменений в Swift 3, среди которых особенно хочется отметить:
  • SE-0005 — улучшили и автодополнение, и навигацию, и в целом связку Objective-C и Swift AppCode стал понимать значительно лучше:

    6f2cd1d2165a485a9397344e004c0c9b.gif

  • SE-0062 — научились корректно парсить выражения с #keyPath (и изменения в синтаксисе #selector тоже):

    3b6683d384b04202beb47822af047658.png
    9a4d9c669e294e91a6881503f31ac9e4.png

  • SE-0091 — доработали автодополнение для ключевых слов prefix, postfix, infix и реализовали корректную навигацию между декларацией оператора в протоколе и его реализацией. Кроме этого, теперь можно быстро сгенерировать заглушку для таких операторов через Override/Implement:

    b6a1fe5a137645b3afe2884c6082dcd5.gif

  • SE-0033 — поддержали импорт констант из Objective-C с помощью __attribute__((swift_wrapper(struct))) и __attribute__((swift_wrapper(enum)))

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

Кроме этого, мы реализовали поддержку метатипов, научились корректно обрабатывать nullability audited regions и nullability attributes в Objective-C и улучшили резолв для super.init() и self.init().

Create from usage


В прошлой версии мы реализовали возможность создавать переменные, функции, методы и даже свойства классов из их использований. А в этой мы сделали то же самое для типов (классов, структур, перечислений, протоколов) и их инициализаторов:

a784ebb79c1749feaf68d0787afa7d3b.gif

Override/Implement


Override/Implement (^O/^I) позволяет генерировать определения сразу для нескольких методов какого-либо класса или протокола. В AppCode 2017.1 мы сделали диалог Override/Implement для Swift более удобным, а генерацию кода — более корректной:
  • Элементы в диалоге теперь показываются иерархично:

    27560f395e4149799d1d50669db6d545.gif

  • Для инициализаторов всегда отображается тип (convenience/required)
  • Перегрузки class-методов корректно генерируются, а перегружать статические методы мы больше не предлагаем
  • Optional-методы предлагаются только в случае вызова Override (^O)

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


Теперь AppCode умеет фильтровать список автодополнения для методов и функций не только по их названиям, но и по названиям их параметров:

4eb4c1a54fd8467fa2e5aa59a1560cbd.gif

Кроме этого, мы добавили ключевые слова dynamic, lazy, postfix, prefix и indirect в список автодополнения там, где это необходимо.

Structure view


Нас долго просили добавить в Structure view (⌘7) и popup-окно File Structure (⌥F12) отображение комментариев вида //MARK, //TODO и //FIXME для Swift, и вот мы это сделали:

1470194e0ad74c1293fa1912cc4d5b27.png

Если нужен список только //TODO и //FIXME, можно, как и раньше, использовать TODO view (⌘6):

cb1fd843e571496e8b715dd3f8cb8c7a.png

C++


По традиции, улучшения поддержки C++, реализованные командой CLion, доступны и в AppCode. Про них можно прочитать в этом посте в разделе C++14 и C++17.

IDE


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


В окне сообщений сборки (⌘0) появилась возможность фильтрации сообщений по типу:

2aae18b3dfe8440c849a62d676e7d31e.gif

Xcode-like breakpoints


По умолчанию, нажатие на breakpoint в продуктах IntelliJ убирает его, что иногда может мешать (например, если breakpoint срабатывает в случае определенного условия, заданного в его настройках). Теперь можно избежать подобной ситуации, выбрав Drag to the editor area в разделе настроек Preferences | Build, Execution, Deployment | Debugger | Remove breakpoint:

d5929548753e49469675c55e1c80a42a.gif

Поддержка эмодзи


Как и все продукты JetBrains, AppCode теперь корректно отображает эмодзи в редакторе кода и различных окнах IDE:

1bd9dc2f607a4ea89e35fcce2b8ec1cd.png

Find in Path


Изменилось окно полнотекстового поиска Find in Path — интерфейс стал лаконичнее, необходимость переключаться между несколькими вкладками в окне отпала:

2395d7a720e248d2829114c12bac1e83.png

На этом все — читайте о других возможностях продукта у нас на сайте, следите за обновлениями в нашем англоязычном блоге, и задавайте любые возникшие вопросы в комментариях к этому посту.

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

  • 14 апреля 2017 в 15:42

    0

    Салют, очень хочется увидеть возможность запуска аппкода на винде, так чтобы, при наличии мака в сети, компиляция и прочие необходимые действия выполнялись на нём.
    • 14 апреля 2017 в 17:58

      0

      Что?))
    • 14 апреля 2017 в 18:57

      0

      Кейз редкий и специфичный, а вот задача крайне сложная. Вряд ли мы за это когда-либо возьмемся.

© Habrahabr.ru