В этом выпуске: больше новых рефакторингов, лучше автодополнение, поддержка баз данных из DataGrip и даже поддержка Touch Bar. Более подробно — под катом.
![Splash](https://habrastorage.org/r/w1560/webt/9l/xp/mx/9lxpmxgiw3wg-z5x-3tqy7qwwhc.png)
Вслед за извлечением методов мы научились извлекать замыкания. Отдельного сочетания клавиш не нашлось, но рефакторинг можно легко вызвать через
![Извлечение замыканий](https://habrastorage.org/r/w1560/webt/7j/kn/mu/7jknmu9ae_iqov9ruhyjhwqw8dk.png)
Сигнатуру замыкания, как и всегда, легко менять:
![Извлечение замыканий](https://habrastorage.org/webt/ug/ge/bj/uggebjortkg5jhldvai7idritnu.gif)
Убрали диалоги для локального переименования:
![Локальное переименование](https://habrastorage.org/webt/h8/ze/ez/h8zeeziccpzjbemfix7kzhua7ew.gif)
Многое доработали в кросс-языковой части. Теперь можно нормально переименовывать аргументы блоков в Objective-C, имена классов, экспортированных из Objective-C в Swift с помощью атрибута
Продолжаем закрывать “элементарные” случаи типов автодополнения. В этот раз добавили автоматическую вставку ‘?’ для опциональных типов:
![Автодополнение для ?](https://habrastorage.org/webt/4p/4v/r-/4p4vr-psdhkvwd861nyhr80p2ww.gif)
И параллельно добавляем чуть менее элементарные, вроде автодополнения для атрибутов в Swift:
![Автодополнение атрибутов](https://habrastorage.org/r/w1560/webt/gb/z9/4z/gbz94z6iislfs6_m5hjspoeqxqg.png)
Плюс наших хлебных крошек — в том, что птицы их не съедят. Поэтому и Гензель, и Гретель без проблем найдут путь домой:
![Breadcrumbs](https://habrastorage.org/webt/vd/hp/h0/vdhph0umnnbghns43fmpvug5usk.gif)
В Objective-C категории легко отличить по имени. А вот в Swift имен у расширений (extensions) нет. Поэтому мы добавили в Structure View отображение комментариев из кода расширений в Swift:
![Комментарии в Structure](https://habrastorage.org/r/w1560/webt/2w/j5/yu/2wj5yurwtkojyf-fak1ybcjt4xc.png)
Исправили генерацию перегрузок / реализаций для полей с одинаковым именем из базовых классов и протоколов, изменяемых свойств (mutable) и опциональных частей протоколов, еще не реализованных в базовом классе:
![Override/Implement](https://habrastorage.org/webt/3n/av/f7/3navf73q3pmi6l9bozonz4pjeyk.gif)
В AppCode 2017.3 появились действия для добавления / удаления явно указанных типов у переменных, а в AppCode 2018.2 мы реализовали то же самое для циклов:
![Intentions](https://habrastorage.org/webt/z-/qb/-z/z-qb-z-y_cv-_iirsl-kymzvkua.gif)
Решили проблему с выводом для скриптов на Python (таких как Chisel):
![Chisel](https://habrastorage.org/r/w1560/webt/ts/xf/rh/tsxfrhndjwbxhcsnqx5tkpkxv-u.png)
Платформа выкатила небольшую, но очень удобную фичу — пачку действий для манипуляции с точками останова через
![Debugger](https://habrastorage.org/r/w1560/webt/mi/jq/h0/mijqh0husepczhmgli1ownb_6sw.png)
В этом релизе мы решили, кажется, последнюю действительно крупную проблему с отображением сообщений сборки — стали нормально обрабатывать вывод фазы Run Script:
![Run Script](https://habrastorage.org/r/w1560/webt/-9/oz/rt/-9ozrtixzp3bw5-s8newh8_cbi0.png)
В AppCode 2018.2 мы включили полную функциональность DataGrip для работы с БД. Вот, кстати, пример для SQLite:
Со всеми возможностями можно ознакомиться у нас на сайте.
Теперь работает и в AppCode:
![Touch Bar](https://habrastorage.org/r/w1560/webt/tw/o2/bz/two2bzaaeykael02ltsh3p0kuso.png)
Как и всегда, множество улучшений добавлено в платформу IntelliJ, и все они теперь доступны в AppCode.
Самое видимое из изменений — это полностью переработанные в едином стиле иконки:
![Иконки](https://habrastorage.org/r/w1560/webt/ro/nf/ac/ronfaci8hzhm2x1bp7ivxe8qnce.png)
Про процесс изменения иконок можно прочитать вот тут.
На этом все. Как и всегда, скачивать — тут, баги — в трекер, вопросы общего характера задаем прямо здесь.
![Splash](https://habrastorage.org/webt/9l/xp/mx/9lxpmxgiw3wg-z5x-3tqy7qwwhc.png)
Swift
Извлечение замыканий
Вслед за извлечением методов мы научились извлекать замыкания. Отдельного сочетания клавиш не нашлось, но рефакторинг можно легко вызвать через
⌃T
+ 5
:![Извлечение замыканий](https://habrastorage.org/webt/7j/kn/mu/7jknmu9ae_iqov9ruhyjhwqw8dk.png)
Сигнатуру замыкания, как и всегда, легко менять:
![Извлечение замыканий](https://habrastorage.org/webt/ug/ge/bj/uggebjortkg5jhldvai7idritnu.gif)
Переименование
Убрали диалоги для локального переименования:
![Локальное переименование](https://habrastorage.org/webt/h8/ze/ez/h8zeeziccpzjbemfix7kzhua7ew.gif)
Многое доработали в кросс-языковой части. Теперь можно нормально переименовывать аргументы блоков в Objective-C, имена классов, экспортированных из Objective-C в Swift с помощью атрибута
@objc
, и элементы перечислений в Swift.Автодополнение
Продолжаем закрывать “элементарные” случаи типов автодополнения. В этот раз добавили автоматическую вставку ‘?’ для опциональных типов:
![Автодополнение для ?](https://habrastorage.org/webt/4p/4v/r-/4p4vr-psdhkvwd861nyhr80p2ww.gif)
И параллельно добавляем чуть менее элементарные, вроде автодополнения для атрибутов в Swift:
![Автодополнение атрибутов](https://habrastorage.org/webt/gb/z9/4z/gbz94z6iislfs6_m5hjspoeqxqg.png)
Гензель и Гретель спасены
Плюс наших хлебных крошек — в том, что птицы их не съедят. Поэтому и Гензель, и Гретель без проблем найдут путь домой:
![Breadcrumbs](https://habrastorage.org/webt/vd/hp/h0/vdhph0umnnbghns43fmpvug5usk.gif)
Комментарии для расширений
В Objective-C категории легко отличить по имени. А вот в Swift имен у расширений (extensions) нет. Поэтому мы добавили в Structure View отображение комментариев из кода расширений в Swift:
![Комментарии в Structure](https://habrastorage.org/webt/2w/j5/yu/2wj5yurwtkojyf-fak1ybcjt4xc.png)
Override/Implement
Исправили генерацию перегрузок / реализаций для полей с одинаковым именем из базовых классов и протоколов, изменяемых свойств (mutable) и опциональных частей протоколов, еще не реализованных в базовом классе:
![Override/Implement](https://habrastorage.org/webt/3n/av/f7/3navf73q3pmi6l9bozonz4pjeyk.gif)
Intentions
В AppCode 2017.3 появились действия для добавления / удаления явно указанных типов у переменных, а в AppCode 2018.2 мы реализовали то же самое для циклов:
![Intentions](https://habrastorage.org/webt/z-/qb/-z/z-qb-z-y_cv-_iirsl-kymzvkua.gif)
Отладка
Решили проблему с выводом для скриптов на Python (таких как Chisel):
![Chisel](https://habrastorage.org/webt/ts/xf/rh/tsxfrhndjwbxhcsnqx5tkpkxv-u.png)
Платформа выкатила небольшую, но очень удобную фичу — пачку действий для манипуляции с точками останова через
⌥⏎
:![Debugger](https://habrastorage.org/webt/mi/jq/h0/mijqh0husepczhmgli1ownb_6sw.png)
Сообщения сборки
В этом релизе мы решили, кажется, последнюю действительно крупную проблему с отображением сообщений сборки — стали нормально обрабатывать вывод фазы Run Script:
![Run Script](https://habrastorage.org/webt/-9/oz/rt/-9ozrtixzp3bw5-s8newh8_cbi0.png)
Поддержка баз данных
В AppCode 2018.2 мы включили полную функциональность DataGrip для работы с БД. Вот, кстати, пример для SQLite:
Со всеми возможностями можно ознакомиться у нас на сайте.
Touch Bar
Теперь работает и в AppCode:
![Touch Bar](https://habrastorage.org/webt/tw/o2/bz/two2bzaaeykael02ltsh3p0kuso.png)
Контроль версий
Как и всегда, множество улучшений добавлено в платформу IntelliJ, и все они теперь доступны в AppCode.
Интерфейс пользователя
Самое видимое из изменений — это полностью переработанные в едином стиле иконки:
![Иконки](https://habrastorage.org/webt/ro/nf/ac/ronfaci8hzhm2x1bp7ivxe8qnce.png)
Про процесс изменения иконок можно прочитать вот тут.
На этом все. Как и всегда, скачивать — тут, баги — в трекер, вопросы общего характера задаем прямо здесь.