如何使XCode将自定义文件扩展名识别为Objective-C以进行语法突出显示?

时间:2012-01-29 00:57:56

标签: objective-c xcode

我想让XCode 4将自定义文件扩展名(例如* .lx)识别为Objective-C,以便进行语法高亮和缩进。如何让工具自动执行此操作?

3 个答案:

答案 0 :(得分:27)

Xcode根据文件Uniform Type Identifier确定如何在其用户界面中表示文件。据我所知,无法向现有UTI添加其他文件扩展名标签,但您可以声明符合要映射到的类型的新UTI。然后,系统将指定的文件扩展名与您的新UTI相关联,并通过一致性Xcode与其他所有UTI感知应用程序将这些文件识别为映射类型的源代码。

您可能想要考虑向新UTI声明的位置。例如,如果工具正在创建此类文件,则该工具的包将是最合适的位置。如果没有更好的替代方案,您可以创建存根应用程序包并在那里声明新的UTI:

  1. 在Xcode中创建一个新的Cocoa Application项目。
  2. 在项目设置中,选择应用程序目标,然后选择“信息”选项卡。
  3. 创建新的导出UTI。 UTI definition example
  4. 使用反向DNS表示法为您控制的域将标识符字段设置为唯一名称。例如,com.yourdomain.objective-c-source
  5. 将Conforms To字段设置为要映射到的UTI,例如public.objective-c-source。您可以通过浏览system-declared UTIs列表或在Xcode的Info.plist中导出的列表来查找。
  6. 将“扩展程序”字段设置为要与新UTI关联的以逗号分隔的扩展名列表。
  7. 按返回或将焦点移动到其他字段,将更改提交到最后一个字段。
  8. 构建并运行应用程序以使用Launch Services注册它。
  9. 重启Xcode。
  10. Xcode现在应该对具有指定扩展名的文件使用适当的语法高亮显示。

    如果这不起作用,请检查构建的应用程序的Info.plist,以确保所有预期信息都没有任何尾随空格。您还可以使用lsregister检查UTI是否已注册:

    /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump
    

    在输出中搜索您的UTI标识符,并验证它是否存在并处于活动状态。

答案 1 :(得分:14)

Xcode有" Type" "属性检查器中的字段" (项目中的最左边的标签"实用程序"右侧边栏)用于项目中的文件:

identity and type settings

正如您在上面所看到的,我设置我们的项目Fastfile被识别为Ruby脚本 - 尽管缺少预期的.rb扩展名。产生预期的语法高亮(使用我的自定义颜色方案):

enter image description here

注意:这仅适用于将文件添加到中的项目(不在文件夹参考中)的情况:

fastlane group

这可能不太理想,但Xcode不能保留在项目文件中未明确跟踪的文件属性。根据设计,文件夹在Xcode项目中没有内容条目,因为它意味着动态。

答案 2 :(得分:8)

在Xcode中,当您的文件在编辑器中处于活动状态时,您将转到编辑器菜单 - >语法着色 - >目标C

这会将objective-c语法着色应用于文件。无论扩展名如何,我都使用纯文本文件为我工作。

这似乎也适用于自动缩进