3

メイソンにあるプロジェクトがあります。ST2 にそのプロジェクトだけの Mason として .html ファイルを開くように指示するにはどうすればよいですか?

より一般的には、プロジェクトごとにファイルタイプを再割り当てするように ST2 に指示するにはどうすればよいですか?

4

2 に答える 2

2

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 で動作するように簡単に適応できると確信しています。

于 2014-09-26T21:24:28.157 に答える
1

SublimeText2にはプロジェクトごとのネイティブ構文設定はありません。

現在、回避策としてModelines.htmlプラグインを使用していますが、プロジェクトの各ファイルの上部(または下部)にこのモードラインを追加する必要があります。

<!-- sublime: x_syntax Packages/Mason/Syntaxes/Mason.tmLanguage
-->

キャリッジリターンに注意してください-->。同じ行に配置しないでください。同じ行に配置しないと、パラメータとして解釈されます。

別のトラック、私はDetectSyntaxプラグインについてたくさんのコメントを読みました。私はすぐに試してみましたが、成功しませんでしたが、おそらくあなたは私よりも辛抱強くなるでしょう!とにかく、あなたがそれを機能させることができれば、私はフィードバックに興味があります。

于 2013-02-13T10:42:15.013 に答える