メイソンにあるプロジェクトがあります。ST2 にそのプロジェクトだけの Mason として .html ファイルを開くように指示するにはどうすればよいですか?
より一般的には、プロジェクトごとにファイルタイプを再割り当てするように ST2 に指示するにはどうすればよいですか?
メイソンにあるプロジェクトがあります。ST2 にそのプロジェクトだけの Mason として .html ファイルを開くように指示するにはどうすればよいですか?
より一般的には、プロジェクトごとにファイルタイプを再割り当てするように ST2 に指示するにはどうすればよいですか?
ST3 のソリューションに関心のある方のために、私はこのブログ投稿を書きました。ここでは抜粋します。
まず、以下の 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
キーと値のペアをいくつでも含めることができます。キーは、ファイルの名前と照合される正規表現である必要があります。値は、2 つの文字列を含む配列でなければなりません。最初の文字列は構文ファイルを含むパッケージの名前で、2 番目の文字列は構文の名前です。Sublime Text のディレクトリ構造を調べて、 で終わるファイルを見つけます.tmLanguage
。これらのファイルの名前 (.tmLanguage
拡張子を除いたもの) は、2 番目の文字列に使用するものです。
これは Sublime Text 3 でしかテストしていませんが、Sublime Text 2 で動作するように簡単に適応できると確信しています。
SublimeText2にはプロジェクトごとのネイティブ構文設定はありません。
現在、回避策としてModelines.html
プラグインを使用していますが、プロジェクトの各ファイルの上部(または下部)にこのモードラインを追加する必要があります。
<!-- sublime: x_syntax Packages/Mason/Syntaxes/Mason.tmLanguage
-->
キャリッジリターンに注意してください-->
。同じ行に配置しないでください。同じ行に配置しないと、パラメータとして解釈されます。
別のトラック、私はDetectSyntaxプラグインについてたくさんのコメントを読みました。私はすぐに試してみましたが、成功しませんでしたが、おそらくあなたは私よりも辛抱強くなるでしょう!とにかく、あなたがそれを機能させることができれば、私はフィードバックに興味があります。