Добавили поддержку Swift 4.2, сделали Generate и навигацию к определению типа для Swift, улучшили форматирование, поддержали iOS-расширения в отладчике, стали лучше работать в проектах с несколькими таргетами, и еще сделали кучу крутых и полезных фич.
Swift
Поддержали все возможности версии 4.2, которые могли отразиться на работе IDE:
- SE-0192 (Handling Future Enum Cases)
- SE-0193 (Cross-module inlining and specialization)
- SE-0194 (Derived Collection of Enum Cases)
- SE-0195 (User-defined “Dynamic Member Lookup” Types)
- SE-0196 (Compiler Diagnostic Directives)
- SE-0212 (Compiler Version Directive)
Если что-то все-таки пропустили, обязательно напишите в комментариях. А про Swift 5 можно прочитать тут.
Генерация
Сделали все стандартные действия для генерации, которые есть для Objective-C — инициализаторы, description
/debugDescription
, hashValue
и оператор сравнения:
Для всех действий, кроме инициализатора можно еще и выбрать шаблон, используемый для генерации.
Навигация к определению типа
Тут все просто — жмем ⇧⌘B
и сразу попадаем к определению типа:
Подсветка точек выхода
Научились подсвечивать точки выхода по установке курсора на break
, continue
, try
, throw
или return
:
Форматирование
Почти в каждом релизе мы улучшаем что-то в движке форматирования, вот что успели в этом:
- поправили формирование отступов для многострочных строковых литералов:
- добавили настройки форматирования кода внутри препроцессорных директив:
- сделали возможность менять выравнивание выражений с тернарным оператором в
Preferences | Editor | Code Style | Swift | Wrapping and Braces | Ternary conditional operation
Поддержка Swift Package Manager в CLion
С CLion у нас не только общая поддержка C/C++, но еще и общая поддержка Swift. Долгое время плагин, который добавляет поддержку SPM-проектов в CLion, использовал CMake в качестве проектной модели. В этом году решили, что жить так больше нельзя — пользоваться неудобно, и поддержали SPM напрямую. Теперь можно работать вот так:
Получилось действительно хорошо, осталось только доработать интеграцию с тестами. А учитывая тот факт, что в CLion есть функциональность WebStorm для редактирования HTML/JavaScript, с базами данных можно работать так же, как и в DataGrip, доступен Docker-плагин и многое другое, получаем, что теперь в нем еще можно писать бэкенды на Swift:
Нет, с SourceKit-LSP пока работать не планируем. Причина проста: и так почти все есть, что он несет с собой (и то, что еще не несет, тоже).
Objective-C/C/C++
Проекты с несколькими таргетами
Наконец-то починили проблемы с подсветкой и автодополнением для классов с одним и тем же именем подключенным к разным таргетам в проекте. Навигацию тоже планируем починить.
Change Signature
Раньше при изменении сигнатуры в C/C++ AppCode терял дефолтные значения аргументов — а теперь обрабатывает их корректно:
Документация
Стали нормально форматировать макроподстановки в Quick Documentation (F1
):
Многострочные TODO
В AppCode все комментарии вида //FIXME
/ //TODO
можно быстро посмотреть через ⌘6
. Здесь же можно задать шаблоны для своих сообщений, что бывает удобно:
Теперь мы добавили поддержку многострочных TODO для Objective-C/C/C++ — достаточно для каждой строки, кроме первой, добавить отступ:
Смешанный код
Поправили проблемы при переименовании конструкций с swift_name
в Objective-C и перечислений в Swift / Objective-C.
Быстродействие
Починили фризы при вызове диалогов, связанных с запуском тестов, например Run Configurations с тестовыми конфигурациями.
Запуск и отладка
Расширения iOS
AppCode научился отлаживать расширения iOS — так же, как это делает Xcode:
Консоль LLDB для Swift
Починили автодополнение в консоли отладчика для Swift (для Objective-C/C/C++ все и так работало). Все сторонники p
/po
и expression
радуются, остальные, как и раньше, пользуются Evaluate Expression (⌥F8
):
Плагин IDE Features Trainer
Часто слышим на конференциях просьбу дать материалы о миграции с Xcode на AppCode, о том, какие возможности IDE надо знать в первую очередь. В процессе релиза сделали первый крупный шаг в эту стороны — добавили часть для Swift в IDE Features Trainer. Суть простая — ставим плагин, открываем уроки, следуем инструкциям и на простых примерах видим, какие возможности есть, как их использовать, и где их найти. Всем рекомендуем пройти — даже если пользуетесь IDE уже давно. С большой вероятностью, что-то новое и полезное все равно найдется :).
IDE
Search Everywhere
Объединили Search Everywhere, Go to Class / File / Symbol / Action:
Run Anything
Теперь любую конфигурацию можно запустить через двойное нажатие ⌃:
Или открыть проект, напечатав open
.
Плагины
Полностью переработали вид раздела с плагинами в IDE:
Контроль версий
Теперь умеем работать с подмодулями Git и удобно показывать пулл-реквесты с Github:
Высококонтрастная тема
Теперь она есть — как для редактора, так и для IDE (можно выбрать в Preferences | Appearance & Behavior | Appearance
):
Что дальше?
Следующий релиз мы планируем целиком посвятить исправлению проблем. Исключение — поддержка новых версий Swift. В общем, больше стабильности, лучше автодополнение с навигацией и подсветкой, меньше помех работе.
На этом все! Как и всегда, скачивать — тут, баги — в трекер, вопросы общего характера задаем прямо здесь.
Автор: yeswolf