Programing

Sublime2 (또는 textMate?)의 범위 목록은 어디에서 찾을 수 있습니까?

lottogame 2021. 1. 10. 16:46
반응형

Sublime2 (또는 textMate?)의 범위 목록은 어디에서 찾을 수 있습니까?


.tmTheme 파일에서 범위 키는 요소가 강조 표시되는 방법을 정의합니다.

    <dict>
        <key>name</key>
        <string>HTML: Attribute Values</string>
        <key>scope</key>
        <string>meta.tag string.quoted, meta.tag string.quoted constant.character.entity</string>
        <key>settings</key>
        <dict>
            <key>background</key>
            <string>#FFFFFF</string>
            <key>fontStyle</key>
            <string></string>
            <key>foreground</key>
            <string>#2aa198</string>
        </dict>
    </dict>

이러한 앱에서 지원하는 모든 범위의 목록을 어디서 찾을 수 있습니까? 내 스타일을 만들 수 있습니까?


불행히도 그러한 포괄적 인 목록은없는 것 같습니다.

그러나 SublimeText 2에서 Shift + Ctrl + P를 누르면 화면 하단의 상태 표시 줄에 커서 위치 바로 다음 문자에 적용되는 모든 범위 키의 전체 목록이 표시됩니다.

이 메서드를 사용하여 SublimeText 내에서 필요한 모든 항목에 대한 범위 키를 찾을 수 있습니다.


TextMate Language Grammar Guide 의 "Naming Conventions"섹션의 현재 버전에서 복사 / 붙여 넣기 (HTML을 Markdown으로 변환) :

  • comment — 주석.
    • line — 줄 주석, 우리는 주석 시작 문자의 유형을 범위에서 추출 할 수 있도록 더 전문화합니다.
      • double-slash// comment
      • double-dash-- comment
      • number-sign# comment
      • percentage% comment
      • character — 다른 유형의 줄 주석.
    • block/* … */및과 같은 여러 줄 주석 <!-- … -->.
      • documentation — 포함 된 문서.
  • constant -다양한 형태의 상수.
    • numeric- 예를 들어 번호를 대표하는 그 42, 1.3f, 0x4AB1U.
    • character- 예를 들어 문자를 표현하는 그 &lt;, \e, \031.
      • escape- 같은 이스케이프 시퀀스 \e가 될 것입니다 constant.character.escape.
    • language- 상수는 (일반적으로) "특별한"같이있는 언어가 제공하는 true, false, nil, YES, NO, 등
    • other — 기타 상수, 예를 들어 CSS의 색상.
  • entity— 엔티티는 장, 클래스, 함수 또는 태그와 같이 문서의 더 큰 부분을 나타냅니다. 우리는 전체 엔티티를 entity.*(우리가 사용 meta.*하는) 범위로 지정하지 않습니다 . 그러나 우리는 entity.*더 큰 엔터티에서 "자리 표시 자"를 사용합니다. 예를 들어 엔터티가 장인 entity.name.section경우 장 제목으로 사용 합니다.
    • name — 우리는 더 큰 엔티티를 명명하고 있습니다.
      • function — 함수의 이름.
      • type — 유형 선언 또는 클래스의 이름.
      • tag — 태그 이름.
      • section — 이름은 섹션 / 제목의 이름입니다.
    • other — 다른 엔티티.
      • inherited-class — 수퍼 클래스 /베이스 클래스 이름.
      • attribute-name — 속성의 이름 (주로 태그에 있음).
  • invalid — "무효"한 것.
    • illegal — 불법, 예 : HTML의 앰퍼샌드 또는보다 작은 문자 (엔티티 / 태그의 일부가 아님).
    • deprecated — 더 이상 사용되지 않는 항목 (예 : 더 이상 사용되지 않는 API 함수 사용 또는 엄격한 HTML로 스타일링 사용).
  • keyword — 키워드 (다른 그룹에 속하지 않는 경우).
    • control- 주로 같은 흐름 제어 관련 continue, while, return
    • operator— 연산자는 텍스트 (예 :) or이거나 문자 일 수 있습니다.
    • other — 다른 키워드.
  • markup — 이것은 마크 업 언어 용이며 일반적으로 텍스트의 더 큰 하위 집합에 적용됩니다.
    • underline — 밑줄이 그어진 텍스트.
      • link— 이것은 링크를위한 것입니다. 편의상 이것은 markup.underline특별히 대상이되는 테마 규칙이없는 경우 markup.underline.link밑줄 스타일을 상속 할 수 있도록 파생되었습니다 .
    • bold — 굵은 텍스트 (강하고 유사한 텍스트는이 이름에서 파생 된 것이 좋습니다).
    • heading— 섹션 헤더. 선택적으로 제목 수준을 다음 요소로 제공합니다 (예 markup.heading.2.html: <h2>…</h2>HTML).
    • italic — 기울임 꼴 텍스트 (강조되고 유사한 텍스트는이 이름에서 파생되어야 함).
    • list — 목록 항목.
      • numbered — 번호가 매겨진 목록 항목.
      • unnumbered — 번호가없는 목록 항목.
    • quote — 인용 된 (때로는 인용 된 블록) 텍스트.
    • raw— 축어적인 텍스트 (예 : 코드 목록). 일반적으로 맞춤법 검사는에 대해 비활성화되어 markup.raw있습니다.
    • other — 기타 마크 업 구성.
  • meta — the meta scope is generally used to markup larger parts of the document. For example the entire line which declares a function would be meta.function and the subsets would be storage.type, entity.name.function, variable.parameter etc. and only the latter would be styled. Sometimes the meta part of the scope will be used only to limit the more general element that is styled, most of the time meta scopes are however used in scope selectors for activation of bundle items. For example in Objective-C there is a meta scope for the interface declaration of a class and the implementation, allowing the same tab-triggers to expand differently, depending on context.
  • storage — things relating to “storage”.
    • type — the type of something, class, function, int, var, etc.
    • modifier — a storage modifier like static, final, abstract, etc.
  • string — strings.
    • quoted — quoted strings.
      • single — single quoted strings: 'foo'.
      • double — double quoted strings: "foo".
      • triple — triple quoted strings: """Python""".
      • other — other types of quoting: $'shell', %s{...}.
    • unquoted — for things like here-docs and here-strings.
    • interpolated — strings which are “evaluated”: date, $(pwd).
    • regexp — regular expressions: /(\w+)/.
    • other — other types of strings (should rarely be used).
  • support — things provided by a framework or library should be below support.
    • function — functions provided by the framework/library. For example NSLog in Objective-C is support.function.
    • class — when the framework/library provides classes.
    • type — types provided by the framework/library, this is probably only used for languages derived from C, which has typedef (and struct). Most other languages would introduce new types as classes.
    • constant — constants (magic values) provided by the framework/library.
    • variable — variables provided by the framework/library. For example NSApp in AppKit.
    • other — the above should be exhaustive, but for everything else use support.other.
  • variable — variables. Not all languages allow easy identification (and thus markup) of these.
    • parameter — when the variable is declared as the parameter.
    • language — reserved language variables like this, super, self, etc.
    • other — other variables, like $some_variables.

There are a couple of sublime text packages you can use to do this.

Installing Package Control

Go to https://sublime.wbond.net/ and click "Installation" and follow the instructions to install sublime text package manager.

Packages Which Display the Current Scope

I know of a couple of sublime text packages which display the current scope in the status bar.

Installing One of the Above Packages

To install a package with sublime text package manager open sublime text's command palette (ctrl+shift+p) and choose the command Package Control: Install Package and then select one of the above packages.


Scopes are from tmLanguage files which are different for each syntax. You can find a list of scope naming conventions at http://manual.macromates.com/en/language_grammars


In addition to the excellent answers already posted, the Scopes Stats tab of TMTheme Editor displays a useful list of all the scopes in its 236 colour themes, with the most commonly-supported scopes at the top.


See a reference guide on the sublime site below:


Each syntax can name their own scopes, but they are based off of this list. For instance your syntax might specify that function is storage.type.function.js scope. If your theme supports that directly it will use that color, otherwise it will fallback to storage.type.function then storage.type then finally storage trying to find a color in your theme.

Since you are creating your own style, I would recommend installing ScopeStatus (CTRL+SHIFT+P, then Install Package, then ScopeStatus). Looking at a file using the syntax you want to concentrate on, do CTRL+SHIFT+P, then "Scope: Show in Status Bar". Now you can move the cursor to various elements to see what scope they give and you can use those to define colors.

You can check your themes to see what they do, go to "Preferences->Browse Packages" to open the folder where your packages are stored. I installed "Theme - Phoenix" which has a folder and a "Color Scheme" folder underneath. In one of the theme files I found 16 colors that were used for various scopes:

keyword.operator.class, constant.other, source.php.embedded.line
variable, support.other.variable, string.other.link, entity.name.tag, entity.other.attribute-name, meta.tag, declaration.tag
constant.numeric, constant.language, support.constant, constant.character, variable.parameter, punctuation.section.embedded, keyword.other.unit
entity.name.class, entity.name.type.class, support.type, support.class
string, constant.other.symbol, entity.other.inherited-class, markup.heading
keyword.operator, constant.other.color
entity.name.function, meta.function-call, support.function, keyword.other.special-method, meta.block-level
keyword, storage, storage.type, entity.name.tag.css
invalid
meta.separator
invalid.deprecated
markup.inserted.diff, markup.deleted.diff, meta.diff.header.to-file, meta.diff.header.from-file
markup.inserted.diff, meta.diff.header.to-file
markup.deleted.diff, meta.diff.header.from-file
meta.diff.header.from-file, meta.diff.header.to-file
meta.diff.range

Different themes might have different settings, for keyword.operator.class in the first group might have its own color or be the same as meta.diff.range.

ReferenceURL : https://stackoverflow.com/questions/10834765/where-to-find-a-list-of-scopes-for-sublime2-or-textmate

반응형