我有一个项目在梅森。我如何告诉ST2打开.html文件作为Mason的只是那个项目?
更一般地说,如何告诉ST2基于每个项目重新分配文件类型?
答案 0 :(得分:2)
对于那些对ST3解决方案感兴趣的人,我写了this blog post,我将在此处摘录。
首先,您需要将下面的python代码保存到Packages/User
目录中的文件中。此目录所在的位置取决于您的系统。在MacOS上,它位于~/Library/Application Support/Sublime Text 3/Packages/User
。为文件指定名称,例如project_specific_file_syntax.py
。
import os.path
import re
import sublime_plugin
class ProjectSpecificFileSyntax(sublime_plugin.EventListener):
def on_load(self, view):
filename = view.file_name()
if not filename:
return
syntax = self._get_project_specific_syntax(view, filename)
if syntax:
self._set_syntax(view, syntax)
def _get_project_specific_syntax(self, view, filename):
project_data = view.window().project_data()
if not project_data:
return None
syntax_settings = project_data.get('syntax_override', {})
for regex, syntax in syntax_settings.items():
if re.search(regex, filename):
return syntax
return None
def _set_syntax(self, view, syntax):
syntax_path = os.path.join('Packages', *syntax)
view.set_syntax_file('{0}.tmLanguage'.format(syntax_path))
现在,您只需要在syntax_override
文件中添加.sublime-project
部分,就像这样。
{
...
"syntax_override": {
"\\.html$": [ "HTML Underscore Syntax", "HTML (Underscore)" ]
}
}
syntax_override
部分可以包含任意数量的键/值对。密钥应该是一个正则表达式,它将与文件名匹配。该值应该是包含两个字符串的数组。第一个字符串是包含语法文件的包的名称,第二个是语法的名称。在Sublime Text的目录结构中查找以查找以.tmLanguage
结尾的文件。这些文件的名称(减去.tmLanguage
扩展名)将用于第二个字符串。
我只使用Sublime Text 3进行了测试,但我确信它可以很容易地适应Sublime Text 2。
答案 1 :(得分:1)
Sublime Text 2中没有原生的每项目语法设置。
目前,我正在使用Modelines插件作为解决方法,但它需要在项目中每个.html
文件的顶部(或底部)添加此模式行:
<!-- sublime: x_syntax Packages/Mason/Syntaxes/Mason.tmLanguage
-->
请注意回车,-->
不得位于同一行,否则会被解释为参数。
另一首曲目,我读了很多关于DetectSyntax插件的评论。我很快就尝试了,没有成功,但也许你会比我更耐心!无论如何,如果你能让它发挥作用,我会对你的反馈感兴趣。