Привет, Хабр!
На прошлой неделе вышел AppCode 2016.1. Изначально мы анонсировали его как 3.4, но потом совместно с другими десктопными продуктами JetBrains перешли на новую схему версионирования и теперь будем использовать ее.
С момента выпуска версии 3.3 прошло еще два минорных релиза, в которых появилось много полезного (например, Evaluate Expression и Set Value для отладчика в Swift). В 2016.1 мы в основном продолжали работать над поддержкой Swift — и вот что получилось.
Теперь AppCode умеет корректно обрабатывать следующие языковые конструкции:
Теперь декларации в коде на Swift можно сворачивать при необходимости. Сделать это можно несколькими способами:
Начиная с версии 2.5, в AppCode есть встроенный менеджер CocoaPods, который позволяет создавать pod-файлы прямо из IDE, подсвечивает синтаксис в них, показывает автодополнение для ключевых слов и помогает следить за актуальностью зависимостей для проекта, показывая в нужный момент intention или inspection (например, о том, что есть новая версия для конкретной библиотеки). В этой версии мы решили актуализировать список автодополнения для ключевых слов в pod-файлах и добавили недостающие, такие как:
Посмотреть, как все это работает, можно в коротком видео ниже:
В AppCode есть окно Build messages (
Все изменения и улучшения по работе с кодом на C++, реализованные в последней версии CLion, также вошли в новую версию AppCode. Это относится и к поддержке variadic templates, и к отображению документации для кода, и к улучшенной работе автоимпорта для символов из STL. Объясняется это просто — часть функциональности, относящаяся к редактированию C++-кода, одинакова для обоих продуктов и используется каждым из них.
Поэтому мы не будем повторяться и предлагаем тем, для кого важны изменения в поддержке C++, прочитать о них в отличном посте anastasiak2512. Отметим также, что меню Mark directory as…, позволяющее дополнительно контролировать индексацию тех или иных директорий проекта и работу рефакторингов в них, в AppCode доступно в режиме Files для проектного навигатора (
Об этих и других возможностях продукта можно прочитать у нас на сайте, следить за обновлениями можно в нашем англоязычном блоге, а прямо сейчас мы традиционно готовы ответить на любые ваши вопросы в комментариях к этому посту.
На прошлой неделе вышел AppCode 2016.1. Изначально мы анонсировали его как 3.4, но потом совместно с другими десктопными продуктами JetBrains перешли на новую схему версионирования и теперь будем использовать ее.
С момента выпуска версии 3.3 прошло еще два минорных релиза, в которых появилось много полезного (например, Evaluate Expression и Set Value для отладчика в Swift). В 2016.1 мы в основном продолжали работать над поддержкой Swift — и вот что получилось.
Swift
Теперь AppCode умеет корректно обрабатывать следующие языковые конструкции:
- Типы, соответствующие протоколу OptionSetType:
- Тип Self:
- Variadic-параметры в функциях и замыканиях.
- Объявления альтернативных имен для существующих типов с помощью ключевого слова typealias.
- Типы, представляющие собой массивы функций.
Code folding в Swift
Теперь декларации в коде на Swift можно сворачивать при необходимости. Сделать это можно несколькими способами:
- Кликнуть значок
+/-
в левой части окна редактора:
Кстати, если потом навести мышь на свернутый участок кода, AppCode покажет свернутый фрагмент:
- Поставить курсор на участок кода и развернуть/свернуть его, нажав
?+/?-
:
- Если нужно сделать то же самое для вложенных деклараций, используем
??+/??-
:
- А если потребовалось развернуть-свернуть все возможные участки кода в текущем файле, достаточно нажать
??+
или??-
:
Поддержка CocoaPods
Начиная с версии 2.5, в AppCode есть встроенный менеджер CocoaPods, который позволяет создавать pod-файлы прямо из IDE, подсвечивает синтаксис в них, показывает автодополнение для ключевых слов и помогает следить за актуальностью зависимостей для проекта, показывая в нужный момент intention или inspection (например, о том, что есть новая версия для конкретной библиотеки). В этой версии мы решили актуализировать список автодополнения для ключевых слов в pod-файлах и добавили недостающие, такие как:
- use_frameworks!
- install!
- source
- project
- abstract_target
- inherit! и abstract!
- plugin
Посмотреть, как все это работает, можно в коротком видео ниже:
Сообщения сборки
В AppCode есть окно Build messages (
?0
), которое показывает сообщения сборки для конкретного проекта. Для проектов, написанных на Swift, часть сообщений, которые выдает при сборке xcodebuild (а именно он используется в AppCode для сборки проектов), оставались не вполне корректно обработанными, что по понятным причинам не нравилось большому количеству пользователей. В 2016.1 мы это исправили — теперь ошибки, предупреждения и сообщения типа note
отображаются намного более понятно и удобно.Поддержка C++ и управление директориями проекта
Все изменения и улучшения по работе с кодом на C++, реализованные в последней версии CLion, также вошли в новую версию AppCode. Это относится и к поддержке variadic templates, и к отображению документации для кода, и к улучшенной работе автоимпорта для символов из STL. Объясняется это просто — часть функциональности, относящаяся к редактированию C++-кода, одинакова для обоих продуктов и используется каждым из них.
Поэтому мы не будем повторяться и предлагаем тем, для кого важны изменения в поддержке C++, прочитать о них в отличном посте anastasiak2512. Отметим также, что меню Mark directory as…, позволяющее дополнительно контролировать индексацию тех или иных директорий проекта и работу рефакторингов в них, в AppCode доступно в режиме Files для проектного навигатора (
?1
). Другие изменения
- Улучшена работа localization intentions в Objective-C
- Появилась поддержка Git worktrees
- В Diff viewer теперь есть возможность просмотра изменений для отдельных слов в составе строки (опция Highlight words)
- Переработан интерфейс окна Attach to local process…
Об этих и других возможностях продукта можно прочитать у нас на сайте, следить за обновлениями можно в нашем англоязычном блоге, а прямо сейчас мы традиционно готовы ответить на любые ваши вопросы в комментариях к этому посту.
Anisotropic
>перешли на новую схему версионирования
Значит ли это, что продукты теперь будут САМИ обновляться до новой версии?
Сейчас webstorm (11.0.3) радостно сообщает, что 2016.1.1 is now available и предлагает мне самому поискать где его скачать. Ладно бы это была какая-нибудь взломаная версия, а это честно купленная рабочая копия.
gibson_dev
Она предлагает не поискать а отправляет на страницу загрузки
Anisotropic
Ещё вчера хотел скинуть скриншот, где диалог апдейт отправляет поискать где его скачать на блог разработчиков, а не на страницу загрузки.
Только вот теперь вообще диалога о новой версии вылазит это:
MeGaPk
Нет, просто поменяли номера релизов.
prigara
Процесс обновления пока не изменится — между баг-фикс апдейтами будут доступны патчи, но новую мажорную версию, к сожалению, по-прежнему придется скачивать целиком.
> Сейчас webstorm (11.0.3) радостно сообщает, что 2016.1.1 is now available и предлагает мне самому поискать где его скачать.
По кнопке More info на диалоге должна быть доступна информация о новых фичах и ссылка на скачивание. Извините, что нет прямой ссылки на скачивание прямо на диалоге, он сейчас в процессе изменений, не доглядели.
MEFILT
Приобрел и пожалел. Очень сильно лагает по сравнение XCode.
Много вкусный плюх, но delay autocompleted вымораживает.
yeswolf
А подскажите пожалуйста:
1. На какой версии наблюдаете такое поведение?
2. Код на каком языке преобладает в проекте (ObjC/C++/Swift)?
3. В коде на каком языке воспроизводится?
YGeorge
Второй год заканчивается, продлеваем лицензии на третий. Лагов не замеченно ни на одной из машин. Вообще, xcode использую лишь для работы с интерфесом приложения либо загрузки приложения в аппстор. Работа с кодом — исключительно AppCode.
(простите, ответил немного не туда)
pingvin_i
У меня такая же проблема,
1. 2016.1 (RC2) — я как понимаю это и есть релизная версия
2. 50% swift — 50% objc
3. Swift
yeswolf
Давайте попробуем проверить, достаточно ли памяти для IDE. Можете включить Preferences -> Appearance -> Show memory indicator (в правом нижнем углу должен появиться индикатор памяти, доступной для IDE) и сказать — насколько этот объем использован (доступно vs использовано)?
pingvin_i
Загрузил занято 719 из 4083
yeswolf
Тогда — т.к. с памятью все вроде бы ок — быстрого решения найти не получится, нужно снять CPU snapshot и сделать тикет здесь. Если получится сам проект приложить, было бы совсем хорошо.
yeswolf
Забыл дать ссылку на то, как именно снять CPU snapshot — прочитать про это можно вот тут
pingvin_i
Спасибо, в выходные все сниму и создам тикет. Проект, к сожалению, приложить не могу.
evgen_sichkar
Вы выделяли больше памяти для AppCode в appcode.vmoptions?
Mecid
Сделайте нормальное дополнение для лейблов параметров функций.
yeswolf
Подскажите пожалуйста, вы про Swift или есть проблемы в Objective-C? Если Objective-C, то пример был бы полезен. По Swift — после текущих задач поймем, сможем ли мы это выдать в будущем релизе или нет.
Mecid
Про Swift конечно же, с Obj-C все хорошо. Но новые проекты начинаем на Swift'e делать.
А какие у вас текущие задачи по Swift и когда будет следующий EAP Build?
yeswolf
Текущие задачи по Swift сейчас следующие:
1. Поддержать дополнения в Swift 2.2 (OC-13365)
2. Научиться отображать те же сообщения типа warning/error, что и Xcode в окне редактора (по сути переиспользовав их)
3. Улучшить resolve в mixed-code (типы Swift из Objc и наоборот), что в прикладном плане должно улучшить навигацию, Find Usages, Rename, да и просто необходимо для корректной реализации рефакторингов в будущем.
4. Сделать часть рефакторингов — Introduce variable, Inline variable.
Плюсом нужно доработать часть задач по generics в Objective-C (в основном это кейзы вроде OC-13178) и performance в редакторе для Swift. То, о чем вы спрашивали — parameter placeholders — понятно, что необходимо сделать, но пока то, о чем я сказал выше, для нас более приоритетно. Сделать постараемся, но гарантировать здесь что-либо сложно — в силу сложности всех остальных задач.
iLLuzor
Как правильно установить cocoapods gem?
Выскакивает предупреждение «Cocoapods gem is not installed», жму install gem. Проходит прогрессбар «1 gem installed», но предупреждение не пропадает. Повторная установка тоже ни к чему не приводит. В чём может быть проблема?
yeswolf
Пока похоже на вот эту проблему, причину пока точно установить не удалось. Если сможете в тот же тикет приложить лог из Help -> Show log in finder для момента, когда устанавливали gem, это бы нам помогло.
iLLuzor
Не понял, как именно, но установилось. Теперь другая проблема:
yeswolf
Видимо, такое еще не встречалось. Давайте заведем тикет вместе с логом из IDE — для того, чтобы стало чуть более понятно, что происходит, постараемся помочь.
iLLuzor
Хорошо. Напишу тикет.
deej
Когда вы наконец почините import в Objective-C?
yeswolf
Если вы про этот тикет, то ближайший апдейт это поправит. Если про другой — дайте пожалуйста ссылку в трекер.
deej
youtrack.jetbrains.com/issue/OC-12183
yeswolf
Пока пытаемся понять, почему clang в этом случае ругается. Как только поймем — исправим, задача в процессе.
bronenos
Имею проблемы с форматированием кода на Swift, которые пока не удалось решить через настройки. Возможно, я не понял, где следует менять поведение.
Но мою ситуацию может описать картинка:
yeswolf
Частично поможет Preferences -> Editor -> Code Style -> Swift -> Wrapping and braces -> Method call arguments -> Align when multiline, но сделать indent для аргументов с помощью этой опции не получится. Вообще, для форматтера Swift пока есть достаточно много нереализованного и в ближайшее время мы этими задачами с большой вероятностью заняться не сможем.