web-dev-qa-db-ja.com

カスタムSublime Text 2スニペットのスコープの定義

Sublime Text 2用に自分のスニペットを作成しようとしたときに、次の2つの問題に遭遇しました。

  1. スコープキーの検索。パッケージを1つずつ見て、宣言された「スコープ」プロパティへの参照を見つけることができることがわかりました。たとえば、~/Library/Application Support/Sublime Text 2/Packages/JavaScript/Comments.tmPreferences(私のHTMLパッケージのファイル)次の2行があります。

    <key>scope</key>
    <string>source.js</string>
    

    したがって、現在のスニペットをjavascriptファイルで動作させるには、次のようにスコープを定義します。

    <scope>source.js</scope>
    

    これらのスコープキーはすべて、インストールしたパッケージに基づいてオンザフライで定義されるものと想定しています。 Sublime Textは、より簡単に参照できる場所にリストを作成しますか?多数のパッケージファイルを熟読するのは面倒です。

  2. 複数のスコーププロパティの定義。これを私は理解しました。次の行により、スニペットをHTMLファイルとJavaScriptファイルの両方で使用できます。

    <scope>text.html, source.js</scope>
    
65
James Heston

カーソル位置の現在の範囲を表示

  1. スコープを知りたいファイルにカーソルを置きます。
  2. このキーボードショートカットを使用します。

    Windows: ctrl+shift+alt+p
    Mac: ctrl+shift+p

  3. 現在のスコープは、Windowsではステータスバーの左側に、Macではポップアップウィンドウに表示されます。

これらを<scope>ファイルのfoo.sublime-snippetキーとして使用します。

返されたスコープは、特定の汎用にリストされます。タブトリガーに使用できるスニペットを最適に「スコープ」したスコープを選択します。

76
Joseph Knight

Sublime Text 2スニペットで使用するスコープのリストは次のとおりです-

ActionScript: source.actionscript.2
AppleScript: source.applescript
ASP: source.asp
Batch FIle: source.dosbatch
C#: source.cs
C++: source.c++
Clojure: source.clojure
CoffeeScript: source.coffee
CSS: source.css
D: source.d
Diff: source.diff
Erlang: source.erlang
Go: source.go
GraphViz: source.dot
Groovy: source.groovy
Haskell: source.haskell
HTML: text.html(.basic)
JSP: text.html.jsp
Java: source.Java
Java Properties: source.Java-props
Java Doc: text.html.javadoc
JSON: source.json
Javascript: source.js
BibTex: source.bibtex
Latex Log: text.log.latex
Latex Memoir: text.tex.latex.memoir
Latex: text.tex.latex
LESS: source.css.less
TeX: text.tex
LISP: source.LISP
Lua: source.lua
MakeFile: source.makefile
Markdown: text.html.markdown
Multi Markdown: text.html.markdown.multimarkdown
Matlab: source.matlab
Objective-C: source.objc
Objective-C++: source.objc++
OCaml campl4: source.camlp4.ocaml
OCaml: source.ocaml
OCamllex: source.ocamllex
Perl: source.Perl
PHP: source.php
Regular Expression(python): source.regexp.python
Python: source.python
R Console: source.r-console
R: source.r
Ruby on Rails: source.Ruby.Rails
Ruby HAML: text.haml
SQL(Ruby): source.sql.Ruby
Regular Expression: source.regexp
RestructuredText: text.restructuredtext
Ruby: source.Ruby
SASS: source.sass
Scala: source.scala
Shell Script: source.Shell
SQL: source.sql
Stylus: source.stylus
TCL: source.tcl
HTML(TCL): text.html.tcl
Plain text: text.plain
Textile: text.html.textile
XML: text.xml
XSL: text.xml.xsl
YAML: source.yaml

不足しているものがある場合は、この要点に追加します https://Gist.github.com/4705378

145
Bibhas Debnath

Isaac Muse によるScope Hunterと呼ばれるパッケージがあり、これは非常に役立ちます。

ドキュメント内の任意のカーソルの下にスコープを表示できます。これは、自分のスニペットをデバッグするときに非常に役立ちました。時にはそれは非常に詳細です。私の最前面のドキュメントからのサンプルスコープ:

Scope: text.tex.latex
       meta.function.environment.list.latex
       meta.function.environment.general.latex
       meta.function.environment.math.latex
       string.other.math.block.environment.latex
       meta.group.braces.tex
       meta.space-after-command.latex

(読みやすくするためにラップされています)

1週間SL2をばらばらに選んだ場合、それを見つけることはできませんでしたが、このパッケージでは数秒で取得できます。強くお勧めします。

このレベルの詳細は、必要に応じて、非常にきめ細かな方法でスニペットを定義できることも意味します。たとえば、meta.function.environment.list.latexはLaTeXのリストに広く対応しているので、リスト環境でsuper + enterを押したときに新しい\itemを挿入するスニペットがありますが、それ以外は誰もいません。ブラインド推測作業よりもはるかに効率的にスニペットをターゲットにできます。

ソースコードは inGithub であるか、Package Controlからインストールできます。

9
alexwlchan

実際には、Ctrl + Alt + Shift + Pを使用して(Scope Hunterを使用せずに)、Col/Line情報の直後の左側の下部バーにスコープを表示できます。それはかなり小さな活字ですが、そこにあります。

7
Chuck

#1に答えるには、構文の。tmLanguageファイルを見て、キーscopeNameを探します。これは、構文がスニペットのスコープ値に使用するものです。

たとえば、 nathos/sass-textmate-bundle からの抜粋

<key>scopeName</key>
<string>source.sass</string>

したがって、スニペットでsource.sassを使用します。

構文の定義 の詳細はこちら

5
d_rail