+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

AppCode 2019.1: Нові функції в JetBrains AppCode

AppCode 2019.1: Нові функції в JetBrains AppCode

Що нового в JetBrains AppCode 2019.1:

Swift

Swift 5

Всі нові можливості Swift 5 коректно працюють у AppCode 2019.1:

  • SE-0200 Raw text literals
  • SE-0213 Literal initialization via coercion
  • SE-0216 Dynamic callables
  • SE-0224 Support 'less than' operator in compilation conditions
  • SE-0227 Identity key path
  • SE-0228 Fix ExpressibleByStringInterpolation
  • SE-0230 Flatten nested optionals resulting from try?

Перейменування

Була проблема з перейменуванням перевантажених методів та методів класу-батька — а тепер її немає.

Навігація до визначення

Здавалося б, що може бути простіше і елементарніше переходу до визначення методу чи класу? Стандартна, звична дія.

І все справді так у Objective-C: назва типу при ініціалізації об'єкта стоїть окремо, сам метод-ініціалізатор — окремо. Відповідно, якщо курсор стоїть на назві типу, ми переходимо до визначення типу, якщо на ініціалізаторі до визначення ініціалізатора. А ось у Swift все стає складніше. Ініціалізатор злився з назвою типу воєдино, і якщо відтворювати поведінку Xcode, втрачаємо можливість переходу саме до ініціалізатора. Якщо ж залишати поведінку AppCode 2018.3.x, ламаємо звичку користувача (як у Xcode, тобто перехід не до визначення ініціалізатора, а до визначення типу). Це зі зрозумілих причин не подобається користувачам.

У результаті виробили серединне рішення: все-таки вираз, що ініціалізує об'єкт у Swift, як і раніше, складається з двох частин. Все, що стосується круглих дужок — назва типу, а все всередині — сигнатура ініціалізатора. Тому якщо курсор стоїть на назві типу, переходимо до визначення типу, якщо всередині круглих дужок — до визначення ініціалізатора:

Переміщення виразів

Поки користувачі Xcode виділяють мишкою і копіпастять, користувачі AppCode ставлять курсор на вираз і рухають його цілком легким натисканням ⇧⌘↑/:

Працює для циклів, функцій, методів, класів, умов загалом майже для всього.

Багаторядкові літерали

Як перетворити однорядковий літерал на багаторядковий? В AppCode тепер достатньо натиснути :

Підсвічування, автодоповнення, аналіз коду та все-все-все

Чим коректніше ми будуємо дерево символів, яке використовується для підсвічування, аналізу коду, навігації та інших функцій IDE (навіть для відображення змінних у налагоджувачі), тим краще і правильніше буде працювати AppCode. У цьому релізі ми вирішили кілька фундаментальних проблем, які псували життя користувачам:

  • Ми почали будувати символи бібліотек як для симуляторів, так і для пристроїв. Раніше будували лише для симулятора.
  • Зробивши це, стали коректно визначати поточну платформу (симулятор/пристрій) і правильно передавати її clang-annotator у Objective-C та SourceKit у Swift. Чому це важливо? Наприклад, SourceKit не буде відображати помилки та попередження, якщо йому некоректно передати в аргументах папку з продуктами збирання. Ця проблема має зникнути.
  • Стали правильно обробляти DerivedSources і всі вихідні коди, згенеровані в цій папці (Core Data, Intents).

Objective-C/C/C++

Колеги з CLion додали стилі іменування кодових конструкцій для C/C++, а ми їх отримали ще й для Objective-C (Preferences | Editor | Code Style |

Запуск та налагодження

AppCode тепер вміє приєднуватися до процесів, запущених не тільки на симуляторі, а й на пристрої (⇧⌘A → Attach to process):

У налаштуваннях конфігурацій запуску додано можливість вибору мови та регіону програми:

Run to Cursor можна викликати не тільки через ⌥F9, але й натисканням на номер рядка в редакторі:

Перерахунок змінних під час налагодження тепер можна заборонити за допомогою дії Mute Variables в контекстному меню:

Теми для IDE

Уважний читач уже помітив, що всі скріншоти в пості зроблені з використанням нової теми оформлення Dark Purple:

Теми IDE тепер можна робити самостійно, тому в репозиторії плагінів крім кількох тем, зроблених нами, вже можна знайти кілька варіантів оформлення. А до 3-го травня можна не лише зробити свою тему, а й взяв участь у конкурсі, нещодавно анонсованому нами.

Список нещодавно переглянутих/змінених ділянок коду

Є кілька корисних дій для навігації до нещодавно відкритих або змінених місць у коді:

  • Recent Files (⌘E)
  • Switcher (⌃⇥)
  • Jump to Last Edit Location (⇧⌘⌫)

Переміщення до останньої відредагованої ділянки коду взагалі важко переоцінити, особливо коли редагуєш файл великого розміру.

Тепер з'явився ще й список нещодавно переглянутих/змінених місць Recent Locations (⇧⌘E):

Інші новини