我希望我的.ejs文件可以使用html语法,但它总是以纯文本形式打开。
在sublime中,您可以选择“Open all with current extension as...”,然后选择所需的语法。
我发现您可以在左下角更改语法。
如何使用特定的语法打开具有特定类型的文件?
在sublime中,您可以选择“Open all with current extension as...”,然后选择所需的语法。
我发现您可以在左下角更改语法。
如何使用特定的语法打开具有特定类型的文件?
text.html.php
),然后像这样编辑 config.cson
:core:
customFileTypes:
"text.html.php": [
"phl"
]
themes: [
// snip
~/.atom/config.cson
找到此文件,或者从设置窗口点击“打开配置文件夹”按钮。 由于在GitHub issue上出现的众多错误,很容易出错。.jsx
文件,则需要将以下内容添加到您的config.cson
中。"*":
core:
customFileTypes:
"source.js": [
"jsx"
]
编辑:自从我写下这个答案的时候,这个功能已经被添加到Atom核心中了,请查看此答案以获取详细信息。
(https://atom.io/packages/file-types)
该包正好实现了标题问题所要求的功能:您可以通过简单编辑config.cson
文件来为现有语言定义新的文件扩展名。
如果您的语言只是HTML,您可以设置一个简单的包来处理它。
创建一个名为language-ejs
的包,在grammars/ejs.cson
中,您可以将HTML包含为您关心的模式:
'fileTypes': [
'ejs'
]
'name': 'Embedded JavaScript'
'patterns': [
{
'include': 'source.html'
}
]
'scopeName': 'source.ejs'
language-ipynb 通过扩展JSON来实现这一点。
但事实上,您的模板标签位于HTML之上,您希望编辑器能够识别它们。我能找到的最好的例子是erb(嵌入式Ruby模板)。它源自HTML,但还添加了其他标签,如此片段所示:
...
'patterns': [
{
'begin': '<%+#'
'captures':
'0':
'name': 'punctuation.definition.comment.erb'
'end': '%>'
'name': 'comment.block.erb'
}
{
'begin': '<%+(?!>)[-=]?'
'captures':
'0':
'name': 'punctuation.section.embedded.ruby'
'end': '-?%>'
'name': 'source.ruby.rails.embedded.html'
'patterns': [
{
'captures':
'1':
'name': 'punctuation.definition.comment.ruby'
'match': '(#).*?(?=-?%>)'
'name': 'comment.line.number-sign.ruby'
}
{
'include': 'source.ruby.rails'
}
]
}
{
'include': 'text.html.basic'
}
]
...
package-generator:generate-language-package
生成一个语言包框架,可以轻松地进行扩展。 - Dmitry Zotikov
text.html.php
这个标识符是从哪里来的?是否有一些参考资料或方法可以确定其他文件类型的标识符? - Luketext.html.php
的作用域名称来自于 Atom 的语法列表。您可以查看语法列表包源代码中的引入方式:https://github.com/atom/grammar-selector/blob/master/lib/grammar-list-view.coffee#L57您可以从 Atom 控制台(cmd+shift+i 或 ctrl+shift+i)获取最新的语法列表,然后粘贴以下内容:atom.grammars.getGrammars().map(function (grammar) { console.log(grammar.scopeName); });
- spawnedc