【问题标题】:How to make Xcode recognize a custom file extension as Objective-C for syntax highlighting?如何让 Xcode 将自定义文件扩展名识别为 Objective-C 以进行语法高亮显示?
【发布时间】:2020-06-25 23:08:29
【问题描述】:

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

【问题讨论】:

  • 我还不知道如何自动执行此操作,但您可以在“文件检查器”面板中告诉 Xcode 以这种方式识别文件。

标签: objective-c xcode syntax-highlighting


【解决方案1】:

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

您可能需要考虑在哪里向新 UTI 申报。例如,如果这种类型的文件是由某个工具创建的,那么该工具的捆绑包将是最合适的位置。如果没有更好的选择,您可以创建一个存根应用程序包并在那里声明新的 UTI:

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

Xcode 现在应该对具有指定扩展名的文件使用适当的语法突出显示。

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

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

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

【讨论】:

  • 这成功了!对于 C++ .ipp 文件,我使用 public.c-plus-plus-source 作为标识符名称。
  • 这行得通!我使用 .ejs 文件将其与 HTML 文件相关联
  • +1000 也适用于 .leaf Vapor 文件扩展名。 (符合 -> public.html)
  • 这看起来很复杂,但它是唯一有效的方法。下面是对同一方法的更形象的描述:stackoverflow.com/questions/41961953/…
【解决方案2】:

Xcode 在“属性检查器”(“实用程序”右侧边栏中最左侧的选项卡)中有一个“类型”字段,用于您项目中的文件:

正如您在上面看到的,我将项目的 Fastfile 设置为被识别为 Ruby 脚本——尽管缺少预期的 .rb 扩展,但确实如此。产生预期的语法突出显示(使用我的自定义配色方案):

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

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

【讨论】:

  • 谢谢,这正是我需要的
  • 谢谢布莱恩,这正是我所需要的,应该是公认的答案。
【解决方案3】:

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

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

这似乎也适用于自动缩进

【讨论】:

  • 我正在寻找的是一种自动语法高亮的方法。不是手动的。
  • 这会在我更改它的文件中为我自动突出显示语法。还是您的意思是更改“文件类型的默认值”语法突出显示,以便该类型的任何文件都具有这种突出显示?如果是这样,我确实找到了这个解决方法......虽然没有测试:lists.apple.com/archives/xcode-users/2007/Dec/msg00679.html
猜你喜欢
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多