Sublime Text 2のScope Nameについて知る
- 2013 5/30
- カテゴリー : Sublime Text
- Sublime Text 2
- 投稿者 : flied_onion
- コメントを書く
以前のエントリSublime Text 2で編集中のファイルの種類を取得するでも出てきましたが、Sublime Text 2ではscope_nameというものが出てきます。
たとえば Consoleで以下のようなコマンドを実行すると取得できます。
[python]
>>> view.scope_name(view.sel()[0].begin()).strip().split(\’ \’)[0]
u\’source.python\’
[/python]
または ショートカットキーの編集で、条件(context)としてkeyにselectorを指定した場合、オペランドに指定するのはscope nameになります。
[javascript highlight=\”2\”]
{ "keys": ["ctrl+alt+shift+z"], "command": "new_window",
"context": [ { "key": "selector", "operator": "equal", "operand": "source.perl" } ]
}
[/javascript]
scope_name
はどこを見ればわかるのでしょう?国際規格でしょうか?ルールがあるんでしょうか?はたまた一律 source.XXXX
というスタイルなのでしょうか?
答えはどれも違います。
scope_name
はそれぞれのスタイル用の tmLanguage
ファイルに定義されています。
python
ならPython.tmLanguage
です。
tmLanguage
ファイルはどこにあるのでしょう。
主にプラグインを追加するパッケージのディレクトリにおいてあります。
メニューから[Preferences] - [Browse Packages]
と選択すればパッケージのディレクトリが出てきます。
Pythonディレクトリを探して中を開いてみると、そこにPython.tmLanguage
があるはずです。
そしてそのファイルの最後のほうに・・・
[xml highlight=\”2\”]
<key>scopeName</key>
<string>source.python</string>
<key>uuid</key>
<string>F23DB5B2-7D08-11D9-A709-000D93B6E43C</string>
</dict>
</plist>
[/xml]
ありましたね。この文字列を元に表示されます。ですので、言語ごとに異なります。
今見たのはファイル自体を示す名前ですが、もっと細かいスコープに関する名前もここで名づけられています。
たとえばpythonファイルの複数行文字列の中にカーソルを置いた状態でscope_name
を以下のようにsplitなどせずに表示します。
[python]
>>> view.scope_name(view.sel()[0].begin())
u\’source.python string.quoted.double.block.python \’
[/python]
右側に出ている string.quoted.double.block.python
の文字列。
この文字列をさっきのPython.tmLanguageで検索してみてください。きっと見つかるはずです。
これ以上は細かくなりすぎるのでここまでにします。
あとはドキュメントなどを参照してみてください。
コメントはまだありません。