web-dev-qa-db-de.com

Definieren des Bereichs für benutzerdefinierte Sublime Text 2-Snippets

Beim Versuch, meine eigenen Snippets für Sublime Text 2 zu schreiben, traten die folgenden zwei Probleme auf:

  1. Scope Keys finden. Ich fand heraus, dass ich meine Pakete einzeln durchsehen und Verweise auf eine deklarierte "scope" -Eigenschaft finden kann. Zum Beispiel in ~/Library/Application Support/Sublime Text 2/Packages/JavaScript/Comments.tmPreferences (eine Datei in meinem HTML-Paket) gibt es diese zwei Zeilen:

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

    Wenn ich also möchte, dass mein aktuelles Snippet mit Javascript-Dateien funktioniert, definiere ich meinen Gültigkeitsbereich wie folgt:

    <scope>source.js</scope>
    

    Ich gehe davon aus, dass all diese Scope-Keys im laufenden Betrieb basierend auf den von mir installierten Paketen definiert werden. Erstellt Sublime Text eine Liste, auf die ich leichter verweisen kann? Das Durchsuchen einer Reihe von Paketdateien scheint zu langwierig.

  2. Definieren mehrerer Bereichseigenschaften. Dies habe ich herausgefunden und die folgende Zeile ermöglicht es meinem Snippet, sowohl in HTML- als auch in JavaScript-Dateien zu arbeiten.

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

Aktuellen Bereich der Cursorposition anzeigen

  1. Platzieren Sie den Cursor in der Datei, in der Sie den Bereich kennen möchten.
  2. Verwenden Sie diese Tastenkombination:

    Windowsctrl+shift+alt+p
    Mac: ctrl+shift+p

  3. Der aktuelle Bereich wird unter Windows links in der Statusleiste oder unter Mac in einem Popup-Fenster angezeigt.

Verwenden Sie diese als <scope> Geben Sie Ihr foo.sublime-snippet Datei.

Die zurückgegebenen Bereiche werden generisch und spezifisch aufgelistet. Wählen Sie die Bereiche aus, die den Bereich des Snippets am besten auf den Bereich beschränken, in dem es für den Tabulator-Trigger verfügbar sein soll.

76
Joseph Knight

Hier ist eine Liste der Bereiche, die in Sublime Text 2-Snippets verwendet werden sollen:

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

Wenn etwas fehlt, fügen Sie es in diesem Gist https://Gist.github.com/4705378 hinzu.

145
Bibhas Debnath

Es gibt ein Paket mit dem Namen Scope Hunter von Isaac Muse , das hier wirklich hilfreich ist.

Es kann Ihnen den Bereich unter jedem Cursor in einem Dokument anzeigen, was ich beim Debuggen meiner eigenen Snippets als sehr hilfreich empfunden habe. Manchmal ist es sehr detailliert; Ein Beispielbereich aus meinem vordersten Dokument:

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

(Zum leichteren Lesen eingewickelt)

Ich hätte das nicht finden können, wenn ich eine Woche damit verbracht hätte, SL2 auseinander zu nehmen, aber dieses Paket bringt es in Sekundenschnelle. Sehr empfehlenswert.

Dieser Detaillierungsgrad bedeutet auch, dass Sie Snippets sehr detailliert definieren können, wenn Sie möchten. Zum Beispiel entspricht das meta.function.environment.list.latex Weitgehend Listen in LaTeX, sodass ich einen Ausschnitt habe, der ein neues \item Einfügt, wenn ich in einer Listenumgebung Super + Enter drücke, aber sonst niemanden. Ich kann Schnipsel viel effektiver als mit blinder Vermutung zielen.

Der Quellcode ist in Github , oder Sie können ihn über Package Control installieren .

9
alexwlchan

Tatsächlich können Sie die Tastenkombination Strg + Alt + Umschalt + P verwenden (ohne Scope Hunter zu verwenden). Der Scope wird in der unteren Leiste auf der linken Seite direkt nach den Col/Line-Informationen angezeigt. Es ist ziemlich klein gedruckt, aber es ist da.

7
Chuck

Um zu antworten, # 1, suchen Sie in der Syntaxdatei . TmLanguage nach dem Schlüssel: scopeName. Dies ist, was die Syntax für den Bereichswert des Snippets verwendet.

Zum Beispiel ein Auszug aus nathos/sass-textmate-bundle

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

Also würden Sie source.sass in deinem Snippet.

Hier finden Sie weitere Informationen zu Definieren einer Syntax

5
d_rail