UFO ET IT

사용자 정의 Sublime Text 2 스 니펫의 범위 정의

ufoet 2020. 11. 15. 12:10
반응형

사용자 정의 Sublime Text 2 스 니펫의 범위 정의


Sublime Text 2에 대한 내 스 니펫을 작성하는 동안 다음 두 가지 문제가 발생했습니다.

  1. 범위 키 찾기 . 패키지를 하나씩 살펴보고 선언 된 "범위"속성에 대한 참조를 찾을 수 있다는 것을 알아 냈습니다. 예를 들어 ~/Library/Application Support/Sublime Text 2/Packages/JavaScript/Comments.tmPreferences(내 HTML 패키지의 파일)에는 다음 두 줄이 있습니다.

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

    따라서 현재 코드 조각이 javascript 파일에서 작동하도록하려면 다음과 같이 범위를 정의합니다.

    <scope>source.js</scope>
    

    이 모든 스코프 키는 내가 설치 한 패키지를 기반으로 즉석에서 정의된다고 가정합니다. Sublime Text는 내가 더 쉽게 참조 할 수있는 목록을 작성합니까? 많은 패키지 파일을 살펴 보는 것은 지나치게 지루해 보입니다.

  2. 여러 범위 속성 정의 . 이것은 내가 알아 냈고 다음 줄은 내 코드가 HTML 및 JavaScript 파일 모두에서 작동하도록 허용합니다.

    <scope>text.html, source.js</scope>
    

커서 위치의 현재 범위보기

  1. 범위를 알고 싶은 파일에 커서를 놓습니다.
  2. 다음 키보드 단축키를 사용하십시오.

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

  3. 현재 범위는 Windows의 경우 상태 표시 줄 왼쪽에 표시되거나 Mac의 경우 팝업 창에 표시됩니다.

이를 파일 <scope>키로 사용하십시오 foo.sublime-snippet.

반환 된 범위는 일반적으로 구체적으로 나열됩니다. 탭 트리거에 사용할 수 있어야하는 스 니펫의 "범위를 가장 잘 지정한"범위를 선택합니다.


다음은 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

If anything is missing, add it in this gist https://gist.github.com/4705378.


There's a package called Scope Hunter, by Isaac Muse, which is really helpful for this.

It can show you the scope under any cursor in a document, which I've found really helpful when debugging my own snippets. Sometimes it's very detailed; a sample scope from my frontmost document:

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

(Wrapped for ease of reading)

I wouldn't have been able to find that if I spent a week picking SL2 apart, but this package gets it in seconds. Highly recommended.

This level of detail also means that you can define snippets in a very granular way, if you want. For example, the meta.function.environment.list.latex corresponds broadly to lists in LaTeX, so I have a snippet that inserts a new \item when I press super+enter in a list environment, but nobody else. I can target snippets much more effectively than with blind guesswork.

The source code is in Github, or you can install it through Package Control.


Actually, you can use the Ctrl+Alt+Shift+P (without using Scope Hunter) and it will show you the scope on the bottom bar on the left side right after the Col/Line information. It's pretty small print but it's there.


To answer, #1, look in the syntax's .tmLanguage file, look for the key: scopeName. This is what the syntax uses for the snippet's scope value.

For example, an excerpt from nathos / sass-textmate-bundle

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

So you would use source.sass in your snippet.

Here is more info on defining a syntax

참고URL : https://stackoverflow.com/questions/13922174/defining-scope-for-custom-sublime-text-2-snippets

반응형