AppCode 2017.1: улучшенная поддержка Swift, новые возможности кодогенерации и многое другое
Привет, Хабр! Недавно мы выпустили AppCode 2017.1, сейчас готовим первое обновление — пора рассказать обо всех изменениях в этой версии.
Мы реализовали поддержку множества изменений в Swift 3, среди которых особенно хочется отметить:
С полным списком изменений можно ознакомиться вот тут.
В прошлой версии мы реализовали возможность создавать переменные, функции, методы и даже свойства классов из их использований. А в этой мы сделали то же самое для типов (классов, структур, перечислений, протоколов) и их инициализаторов:
Override/Implement (
Теперь AppCode умеет фильтровать список автодополнения для методов и функций не только по их названиям, но и по названиям их параметров:
Нас долго просили добавить в Structure view (
По традиции, улучшения поддержки C++, реализованные командой CLion, доступны и в AppCode. Про них можно прочитать в этом посте в разделе C++14 и C++17.
В окне сообщений сборки (
По умолчанию, нажатие на breakpoint в продуктах IntelliJ убирает его, что иногда может мешать (например, если breakpoint срабатывает в случае определенного условия, заданного в его настройках). Теперь можно избежать подобной ситуации, выбрав Drag to the editor area в разделе настроек Preferences | Build, Execution, Deployment | Debugger | Remove breakpoint:
Как и все продукты JetBrains, AppCode теперь корректно отображает эмодзи в редакторе кода и различных окнах IDE:
Изменилось окно полнотекстового поиска Find in Path — интерфейс стал лаконичнее, необходимость переключаться между несколькими вкладками в окне отпала:
Swift
Поддержка языка
Мы реализовали поддержку множества изменений в Swift 3, среди которых особенно хочется отметить:
- SE-0005 — улучшили и автодополнение, и навигацию, и в целом связку Objective-C и Swift AppCode стал понимать значительно лучше:
- SE-0062 — научились корректно парсить выражения с
#keyPath
(и изменения в синтаксисе#selector
тоже): - SE-0091 — доработали автодополнение для ключевых слов
prefix
,postfix
,infix
и реализовали корректную навигацию между декларацией оператора в протоколе и его реализацией. Кроме этого, теперь можно быстро сгенерировать заглушку для таких операторов через Override/Implement: - 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
В прошлой версии мы реализовали возможность создавать переменные, функции, методы и даже свойства классов из их использований. А в этой мы сделали то же самое для типов (классов, структур, перечислений, протоколов) и их инициализаторов:
Override/Implement
Override/Implement (
^O
/^I
) позволяет генерировать определения сразу для нескольких методов какого-либо класса или протокола. В AppCode 2017.1 мы сделали диалог Override/Implement для Swift более удобным, а генерацию кода — более корректной: - Элементы в диалоге теперь показываются иерархично:
- Для инициализаторов всегда отображается тип (
convenience
/required
) - Перегрузки class-методов корректно генерируются, а перегружать статические методы мы больше не предлагаем
- Optional-методы предлагаются только в случае вызова Override (^O)
Автодополнение
Теперь AppCode умеет фильтровать список автодополнения для методов и функций не только по их названиям, но и по названиям их параметров:
Кроме этого, мы добавили ключевые слова dynamic
, lazy
, postfix
, prefix
и indirect
в список автодополнения там, где это необходимо.
Structure view
Нас долго просили добавить в Structure view (
⌘7
) и popup-окно File Structure (⌥F12
) отображение комментариев вида //MARK
, //TODO
и //FIXME
для Swift, и вот мы это сделали: Если нужен список только //TODO
и //FIXME
, можно, как и раньше, использовать TODO view (⌘6
):
C++
По традиции, улучшения поддержки C++, реализованные командой CLion, доступны и в AppCode. Про них можно прочитать в этом посте в разделе C++14 и C++17.
IDE
Сообщения сборки
В окне сообщений сборки (
⌘0
) появилась возможность фильтрации сообщений по типу: Xcode-like breakpoints
По умолчанию, нажатие на breakpoint в продуктах IntelliJ убирает его, что иногда может мешать (например, если breakpoint срабатывает в случае определенного условия, заданного в его настройках). Теперь можно избежать подобной ситуации, выбрав Drag to the editor area в разделе настроек Preferences | Build, Execution, Deployment | Debugger | Remove breakpoint:
Поддержка эмодзи
Как и все продукты JetBrains, AppCode теперь корректно отображает эмодзи в редакторе кода и различных окнах IDE:
Find in Path
Изменилось окно полнотекстового поиска Find in Path — интерфейс стал лаконичнее, необходимость переключаться между несколькими вкладками в окне отпала:
На этом все — читайте о других возможностях продукта у нас на сайте, следите за обновлениями в нашем англоязычном блоге, и задавайте любые возникшие вопросы в комментариях к этому посту.
Комментарии (3)
14 апреля 2017 в 15:42
0↑
↓
Салют, очень хочется увидеть возможность запуска аппкода на винде, так чтобы, при наличии мака в сети, компиляция и прочие необходимые действия выполнялись на нём.14 апреля 2017 в 17:58
0↑
↓
Что?))14 апреля 2017 в 18:57
0↑
↓
Кейз редкий и специфичный, а вот задача крайне сложная. Вряд ли мы за это когда-либо возьмемся.