Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Xcode将自定义文件扩展名识别为Objective-C以突出显示语法?_Objective C_Xcode_Syntax Highlighting - Fatal编程技术网

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

如何使Xcode将自定义文件扩展名识别为Objective-C以突出显示语法?,objective-c,xcode,syntax-highlighting,Objective C,Xcode,Syntax Highlighting,我想让Xcode 4将自定义文件扩展名(例如.*.lx)识别为Objective-C,以便进行语法高亮显示和缩进。如何让工具自动执行此操作?在Xcode中,当您的文件在编辑器中处于活动状态时,您可以进入编辑器菜单->语法着色->Objective-C 这将对文件应用objective-c语法着色。为我工作的纯文本文件,不考虑其扩展名 这似乎也适用于自动缩进。Xcode根据文件的大小确定如何在用户界面中表示文件。据我所知,不可能向现有的UTI添加额外的文件扩展名标记,但是可以声明一个符合您要映射到

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

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

这将对文件应用objective-c语法着色。为我工作的纯文本文件,不考虑其扩展名


这似乎也适用于自动缩进。Xcode根据文件的大小确定如何在用户界面中表示文件。据我所知,不可能向现有的UTI添加额外的文件扩展名标记,但是可以声明一个符合您要映射到的类型的新UTI。然后,系统将指定的文件扩展名与您的新UTI关联,并通过一致性Xcode,所有其他支持UTI的应用程序将文件识别为映射类型的源代码

您可能需要考虑向新UTI声明的位置。例如,如果此类型的文件是由工具创建的,则该工具的捆绑包将是最合适的位置。在没有更好的替代方案的情况下,您可以创建存根应用程序包并在其中声明新的UTI:

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

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

    /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister-dump
    
    在输出中搜索UTI的标识符,并验证它是否存在且处于活动状态。

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

    如上所示,我将项目的
    Fastfile
    设置为Ruby脚本,尽管缺少预期的
    .rb
    扩展名。产生预期的语法高亮显示(使用我的自定义配色方案):

    注意:只有将文件添加到组内(而不是文件夹引用内)的项目中时,此选项才有效:


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

    我还不知道如何自动执行此操作,但您可以在“文件检查器”面板中告诉Xcode以这种方式识别文件。我要找的是一种自动突出显示语法的方法。不是手动的。这会在我更改的文件中自动突出显示语法。或者您的意思是更改“默认文件类型”语法高亮显示,以便该类型的任何文件都具有这种高亮显示?如果是这样的话,我确实发现了这个解决方法…但还没有测试:这个方法有效!对于C++ .IPP文件,我使用了公共.cPLU-PLUS源<代码>作为标识符名称。我使用.ejs文件将其与HTML fule+1000相关联,而.leaf Vapor文件扩展名对我来说也适用。(符合->public.html)这看起来很复杂,但它是唯一有效的方法。同样的方法,这里有一个更形象的描述:谢谢,这正是我所需要的Hanks Brian,这正是我所需要的,应该是公认的答案。