如何在构建系统中使用自定义扩展名(例如*.ltx
,*.cmake
等)定义一个选择器,而该选择器没有可用的选择器(例如text.tex.latex
,source.c++
等)?
是否可以?如果是,怎么办?
最佳答案
如果定义了新的语法定义(即新的.tmLanguage文件),则是可能的。语法定义可以声明新的“作用域名称”,然后可以在新的自定义构建系统中使用。
新的语法定义文件实际上不必定义/匹配文件的语法,因为您可以简单地通过文件扩展名进行匹配...!
查看.tmLanguage文件语法的here。 “scopeName”项可让您命名新的范围(即“text.tex.latex”等)。我将在下面举一个例子。
我创建了一个新语法,它定义了一个新的范围-相当容易(就像Sublime中的大多数事情一样):
{“name”:“语法名称”,
“scopeName”:“source.syntax_name”,
“文件类型”: [””],
“模式”:[
],
“uuid”:“...”
}
...用描述性名称替换“语法名称”,用新的作用域名称替换“source.syntax_name”,然后填写“fileTypes”以包含一个或多个文件扩展名。例如:
"fileTypes": ["tex", "ltx"]
你完成了!任何碰巧具有在“fileTypes”中定义的扩展名之一的新文件都将激活“scopeName”作用域。
现在,您可以在新的构建系统文件中使用此范围(工具>构建系统>新构建系统... )
干杯!