Waar vind ik een lijst met scopes voor Sublime2 (of textMate?)

in .tmTheme-bestanden definieert de bereiksleutel hoe een element wordt gemarkeerd:

   <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>

Waar kan ik een lijst vinden van alle scopes die door deze apps worden ondersteund, zodat ik mijn eigen stijl kan creëren?


Antwoord 1, autoriteit 100%

Kopieer/plak (maar converteer HTML naar Markdown) uit de huidige versie van de sectie ‘Naamconventies’ van de TextMate Taalgids voor grammatica:

  • comment— voor opmerkingen.
    • line— regelcommentaar, we specialiseren ons verder zodat het type beginteken(s) van het commentaar uit het bereik kan worden geëxtraheerd.
      • double-slash// comment
      • double-dash-- comment
      • number-sign# comment
      • percentage% comment
      • karakter— andere soorten regelopmerkingen.
    • block— opmerkingen met meerdere regels zoals /* … */en <!-- … -->.
      • documentation— ingebedde documentatie.
  • constant— verschillende vormen van constanten.
    • numeric— die getallen vertegenwoordigen, b.v. 42, 1.3f, 0x4AB1U.
    • character— die tekens vertegenwoordigen, b.v. &lt;, \e, \031.
      • escape— escape-reeksen zoals \ezouden constant.character.escapezijn.
    • language— constanten (in het algemeen) geleverd door de taal die “speciaal” zijn, zoals true, false, nil, YES, NO, enz.
    • other— andere constanten, bijv. kleuren in CSS.
  • entity— een entiteit verwijst naar een groter deel van het document, bijvoorbeeld een hoofdstuk, klasse, functie of tag. We beschouwen de hele entiteit niet als entity.*(daarvoor gebruiken we meta.*). Maar we gebruiken wel entity.*voor de “placeholders” in de grotere entiteit, b.v. als de entiteit een hoofdstuk is, zouden we entity.name.sectiongebruiken voor de titel van het hoofdstuk.
    • name— we noemen de grotere entiteit.
      • function— de naam van een functie.
      • type— de naam van een typedeclaratie of klasse.
      • tag— een tagnaam.
      • section— de naam is de naam van een sectie/kop.
    • other— andere entiteiten.
      • inherited-class— de naam van de superklasse/basisklasse.
      • attribute-name— de naam van een attribuut (voornamelijk in tags).
  • invalid— dingen die “ongeldig” zijn.
    • illegal— illegaal, b.v. een ampersand of lager-dan-teken in HTML (die geen deel uitmaakt van een entiteit/tag).
    • deprecated— voor verouderde dingen, b.v. een API-functie gebruiken die is verouderd of styling gebruiken met strikte HTML.
  • keyword— trefwoorden (wanneer deze niet in de andere groepen vallen).
    • control— voornamelijk gerelateerd aan flow control zoals continue, while, return, etc.
    • operator— operators kunnen tekstueel zijn (bijv. or) of tekens zijn.
    • other— andere zoekwoorden.
  • markup— dit is voor opmaaktalen en is over het algemeen van toepassing op grotere subsets van de tekst.
    • underline— onderstreepte tekst.
      • link— dit is voor links, voor het gemak is dit afgeleid van markup.underlinezodat als er geen themaregel is die specifiek gericht is op markup.underline.linkdan zal het de onderstrepingsstijl erven.
    • bold— vetgedrukte tekst (tekst die sterk en vergelijkbaar is, moet bij voorkeur van deze naam worden afgeleid).
    • heading— een sectiekop. Geef optioneel het kopniveau op als het volgende element, bijvoorbeeld markup.heading.2.htmlvoor <h2>…</h2>in HTML.
    • italic— cursieve tekst (tekst die wordt benadrukt en vergelijkbaar moet bij voorkeur van deze naam worden afgeleid).
    • list— lijst met items.
      • numbered— genummerde lijstitems.
      • unnumbered— ongenummerde lijstitems.
    • quote— geciteerde (soms blokgeciteerde) tekst.
    • raw— tekst die letterlijk is, b.v. code vermeldingen. Normaal gesproken is spellingcontrole uitgeschakeld voor markup.raw.
    • other— andere opmaakconstructies.
  • meta— de metascope wordt over het algemeen gebruikt om grotere delen van het document te markeren. De hele regel die een functie declareert zou bijvoorbeeld meta.functionzijn en de subsets zijn storage.type, entity.name.function, variable.parameterenz. en alleen de laatste zou worden gestileerd. Soms wordt het metagedeelte van de scope alleen gebruikt om het meer algemene element dat wordt gestyled te beperken, meestal worden metascopes echter gebruikt in scopeselectors voor het activeren van bundelitems. In Objective-C is er bijvoorbeeld een metascope voor de interfacedeclaratie van een klasse en de implementatie, waardoor dezelfde tab-triggers verschillend kunnen uitbreiden, afhankelijk van de context.
  • storage— dingen met betrekking tot “opslag”.
    • type— het type van iets, class, function, int, var, enz.
    • modifier— een opslagmodifier zoals static, final, abstract, enz.
  • string— tekenreeksen.
    • quoted— tekenreeksen tussen aanhalingstekens.
      • single— enkelvoudige tekenreeksen tussen aanhalingstekens: 'foo'.
      • double— dubbele aanhalingstekens: "foo".
      • triple— driedubbele tekenreeksen tussen aanhalingstekens: """Python""".
      • other— andere soorten citaten: $'shell', %s{...}.
    • unquoted— voor zaken als here-docs en here-strings.
    • interpolated— tekenreeksen die zijn “geëvalueerd”: date, $(pwd).
    • regexp— reguliere expressies: /(\w+)/.
    • other— andere soorten tekenreeksen (zouden zelden moeten worden gebruikt).
  • support— dingen die door een framework of bibliotheek worden geleverd, moeten lager zijn dan support.
    • function— functies geleverd door het framework/bibliotheek. NSLogin Objective-C is bijvoorbeeld support.function.
    • class— wanneer het framework/de bibliotheek klassen biedt.
    • type— typen geleverd door het framework/bibliotheek, dit wordt waarschijnlijk alleen gebruikt voor talen die zijn afgeleid van C, die typedef(en struct). De meeste andere talen zouden nieuwe typen als klassen introduceren.
    • constant— constanten (magische waarden) geleverd door het raamwerk/bibliotheek.
    • variable— variabelen geleverd door het framework/de bibliotheek. Bijvoorbeeld NSAppin AppKit.
    • other— het bovenstaande zou uitputtend moeten zijn, maar gebruik voor al het andere support.other.
  • variable— variabelen. Niet alle talen laten een gemakkelijke identificatie (en dus opmaak) hiervan toe.
    • parameter— wanneer de variabele als parameter wordt gedeclareerd.
    • language— gereserveerde taalvariabelen zoals this, super, self, enz.
    • other— andere variabelen, zoals $some_variables.

Antwoord 2, autoriteit 39%

Bewerken: Phrogz’s antwoordis beter dan mijn antwoord hier, omdat het de gestelde vraag nauwkeuriger beantwoordt. Ik raad je aan het eens te bekijken!


Helaas lijkt er niet zo’n uitgebreide lijst te zijn.

Als u echter op Shift+Ctrl+Pdrukt in SublimeText 2, zal de statusbalk onder aan het scherm een ​​uitgebreide lijst weergeven van alle bereiktoetsen die van toepassing zijn op het teken dat onmiddellijk volgt uw cursorpositie.

Je kunt deze methode gebruiken om de bereiksleutels te vinden voor alles wat je nodig hebt vanuit SublimeText.

Update:commentatoren Zullenen fregantehieronder geven aan dat dit is gewijzigd voor SublimeText 3.
Voor Windows/Linux is Shift+Ctrl+Alt+Phet juiste commando, en op een Mac is het commando ⌘⌥P.


Antwoord 3, autoriteit 16%

Er zijn een aantal sublieme tekstpakketten die je hiervoor kunt gebruiken.

Pakketbeheer installeren

Ga naar https://sublime.wbond.net/en klik op “Installatie” en volg de instructies om sublieme tekstpakketbeheerder te installeren.

Pakketten die het huidige bereik weergeven

Ik ken een paar sublieme tekstpakketten die het huidige bereik in de statusbalk weergeven.

Een van de bovenstaande pakketten installeren

Om een ​​pakket met sublime text package manager te installeren, opent u het commandopalet van sublime text (ctrl+shift+p) en kiest u het commando Package Control: Install Packageen selecteert u vervolgens een van de bovenstaande pakketten.


Antwoord 4, autoriteit 13%

Scopes zijn afkomstig uit tmLanguage-bestanden die voor elke syntaxis anders zijn. U kunt een lijst met conventies voor het benoemen van scopes vinden op http://manual.macromates.com/en/language_grammars


Antwoord 5, autoriteit 7%

Naast de uitstekende antwoorden die al zijn gepost, is het tabblad Scopes Statsvan TMTheme Editorgeeft een handige lijst weer van alle scopes in zijn 236 kleurenthema’s, met de meest ondersteunde scopes bovenaan.


Antwoord 6, autoriteit 5%

Bekijk een referentiegids op de sublieme site hieronder:


Antwoord 7, autoriteit 2%

Elke syntaxis kan zijn eigen scopes een naam geven, maar ze zijn gebaseerd op deze lijst. Uw syntaxis kan bijvoorbeeld specificeren dat functionhet bereik van storage.type.function.jsis. Als je thema dat rechtstreeks ondersteunt, zal het die kleur gebruiken, anders valt het terug naar storage.type.functiondan storage.typeen tenslotte storageproberen een kleur in je thema te vinden.

Omdat je je eigen stijl creëert, raad ik aan om ScopeStatus(CTRL< /kbd>+SHIFT+P, dan Pakket installeren, dan ScopeStatus). Als u naar een bestand kijkt met de syntaxis waarop u zich wilt concentreren, voert u CTRL+SHIFT+Puit en vervolgens "Scope: Show in Status Bar" . Nu kun je de cursor naar verschillende elementen verplaatsen om te zien welk bereik ze geven en je kunt die gebruiken om kleuren te definiëren.

U kunt uw thema's controleren om te zien wat ze doen, ga naar "Voorkeuren->Pakketten bladeren" om de map te openen waarin uw pakketten zijn opgeslagen. Ik heb "Theme - Phoenix" geïnstalleerd met een map en een map "Color Scheme" eronder. In een van de themabestanden vond ik 16 kleuren die voor verschillende scopes werden gebruikt:

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

Verschillende thema's kunnen verschillende instellingen hebben, want keyword.operator.class in de eerste groep kan een eigen kleur hebben of hetzelfde zijn als meta.diff.range.

Other episodes