Я хотел бы, чтобы XCode 4 распознал пользовательское расширение файла (например, *.lx) как Objective-C для выделения синтаксиса и отступов. Как получить инструмент для автоматического выполнения этого?
Как заставить XCode распознавать пользовательское расширение файла как Objective-C для подсветки синтаксиса?
Ответ 1
Xcode определяет, как представлять файл в своем пользовательском интерфейсе на основе файла Uniform Type Identifier. Насколько я знаю, невозможно добавить дополнительные теги расширения файлов к существующему UTI, но вы можете объявить новый UTI, который соответствует типу, на который вы хотите сопоставить. Затем система свяжет указанные расширения файлов с вашим новым UTI и с помощью Xcode соответствия, и каждое другое приложение, поддерживающее UTI, распознает файлы как исходный код отображаемого типа.
Вы можете подумать, где объявить новый UTI. Например, если файлы этого типа создаются с помощью инструмента, то наиболее подходящим местом будет набор для этого инструмента. В отсутствие лучшей альтернативы вы можете создать пакет приложений для заглушек и объявить новый UTI:
- Создайте новый проект приложения Cocoa в Xcode.
- В настройках проекта выберите цель приложения, а затем вкладку "Информация".
- Создайте новый экспортированный UTI.
- Задайте поле Идентификатор уникальному имени, используя обратную DNS-нотацию для домена, который вы контролируете. Например,
com.yourdomain.objective-c-source
. - Установите для поля Conforms To значение UTI, на которое вы хотите установить карту, например
public.objective-c-source
. Вы можете найти это, просмотрев список объявленных системой UTI или экспортированных в Xcode Info.plist. - Установите поле "Расширения" в список расширений, разделенных запятыми, которые вы хотите связать с новым UTI.
- Завершите изменение в последнем поле, нажав кнопку возврата или перемещая фокус в другое поле.
- Создайте и запустите приложение, чтобы зарегистрировать его с помощью служб запуска.
- Перезапустить Xcode.
Xcode теперь должен использовать соответствующую подсветку синтаксиса для файлов с указанными расширениями.
Если это не работает, проверьте Info.plist встроенного приложения, чтобы убедиться, что вся ожидаемая информация отсутствует без каких-либо конечных пробелов. Вы также можете проверить, что UTI зарегистрирована с помощью lsregister
:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump
Найдите результат для вашего идентификатора UTI и убедитесь, что он присутствует и активен.
Ответ 2
Xcode имеет поле "Тип" в "Attributes Inspector" (крайняя левая вкладка в правой панели "Утилиты" ) для файлов в вашем проекте:
Как вы можете видеть выше, я установил наш проект Fastfile
для распознавания как Ruby Script, который он, несмотря на отсутствие ожидаемого расширения .rb
. Выдача ожидаемой подсветки синтаксиса (с моей собственной цветовой схемой):
Примечание. это работает только в том случае, если файл добавлен в ваш проект внутри группы (не внутри ссылки на папку):
Это может быть не идеально, но Xcode не может сохранять атрибуты файлов, которые явно не отслеживаются в файле проекта. Папки, по дизайну, не имеют записей для их содержимого в проекте Xcode, так как это должно быть динамическим.
Ответ 3
В Xcode, когда ваш файл активен в редакторе, перейдите в меню редактора → Раскраска синтаксиса → Objective-C
Это применит синтаксическую раскраску objective-c к файлу. Работал для меня с помощью обычного текстового файла независимо от его расширения.
Казалось, что это работает и для автоматического отпечатка