Wat is syntaxisaccentuering en hoe werkt het?

Ik heb gemerkt dat mijn code soms in verschillende kleuren wordt gemarkeerd wanneer deze wordt weergegeven.

  • Wat is syntaxisaccentuering?
  • Hoe werkt het?
  • Waarom wordt mijn code niet correct gemarkeerd?
  • Hoe meld ik een bug of vraag ik een nieuwe taal aan?
  • Hoe gebruik ik syntaxisaccentuering?
  • Welke talen zijn momenteel beschikbaar op Stack Exchange?

Terug naar FAQ-index

Reacties

  • Ik heb een vraag: waarom SE-dingen (één persoon) zullen dergelijke fundamentele bugs niet meer rapporteren? Deze persoon zal een keer alle uitgiftelijsten van highlight.js lezen en kan gemakkelijk beslissen of het een bug is of niet. Dit ziet er echt niet-professioneel uit als je zulke highlight-bugs ziet … De SE heeft die bibliotheek gekozen, dus ik denk dat het de verantwoordelijkheid van de SE is om te rapporteren dergelijke bugs gaan verder naar highligt.js – vooral in situaties waarin dit proces gecompliceerd is (iedereen moet de lijst met problemen kennen). fout?
  • Ik moet controleren op bestaande rapporten op github.com/highlightjs/highlight.js/issues en eventueel nieuwe bugrapporten posten . Dus ik heb een paar vragen die hier niet worden genoemd. Welke versie van highlight.js wordt gebruikt op SE-sites? Hoe kleuren zijn voorgedefinieerd? In principe weet / veronderstel ik dat dit wordt onderhouden door een CSS-bestand, ik vraag of SE-sites standaardkleuren gebruiken van https://github.com/highlightjs/ -project of dat SE-sites eigen sets kleuren gebruiken? Kunnen we de kleur en toon van kleuren veranderen?
  • Ik kijk in de highlight.js demo en selecteer vervolgens Language Categories = All en Themes = Stackoverflow Light zijn dit thema precies hetzelfde gebruikt op SE-sites? Welke taal wordt gebruikt voor lang-default?

Antwoord

Wat is syntaxisaccentuering?

Syntaxisaccentuering maakt het mogelijk dat code in berichten wordt gemarkeerd op basis van de taal waarin deze is geschreven, om het lezen gemakkelijker te maken.

Hoe werkt het?

Stack Exchange heeft geen eigen engine voor het markeren van syntaxis. Het gebruikt highlight.js , en maakt niet noodzakelijkerwijs gebruik van de nieuwste release van die bibliotheek. Daarom kunnen eventuele bugs en functieverzoeken met betrekking tot syntaxisaccentuering niet worden afgehandeld door Stack Exchange.

Syntaxisaccentuering wordt toegewezen, op basis van -tags , aan het voorbeeld bij het maken of bewerken van berichten zodra u gedurende 5 seconden stopt met typen.

Waarom wordt mijn code niet correct gemarkeerd?

1. Controleer of de site die u gebruikt syntaxisaccentuering heeft ingeschakeld.

De volledige lijst is beschikbaar op Meta . Als syntaxisaccentuering niet is ingeschakeld op een site volgt u de instructies in deze vraag.

2. Controleer of de taal wordt ondersteund door highlight.js

Kijk naar de lijst met door highlight.js ondersteunde talen . Als uw taal niet op de lijst staat, moet deze worden gemaakt binnen het highlight.js-project voordat deze kan worden geïmplementeerd door Stack Exchange.

Als een taal staat al op de lijst maar wordt niet gebruikt op Stack Exchange. Dien hier een functieverzoek in op Meta om deze op het netwerk te laten implementeren.

3. Controleer of de taal wordt gebruikt door Stack Exchange

Bekijk het bestand highlight-loader.js op het dev CDN, open het in je favoriete editor en zoek naar de taalhint. Bijvoorbeeld: zoeken naar " dart " brengt je naar een regel bestaande uit hljs.registerLanguage("dart", .... Dit betekent dat lang-dart een beschikbare taalhint is. Zoeken naar " psh " of " powershell " retourneert geen resultaten, wat betekent dat psh niet wordt ondersteund door de Stack Exchange-versie van highlight.js.

4. Controleer of voor de tags op de vraag syntaxisaccentuering is ingeschakeld

Achter de schermen gebruikt Stack Exchanges de tags op de vraag om de taal te bepalen die u gebruikt. Elke tag heeft een accentueringstaal die is gespecificeerd in de eigenschappen, of geen taal. Als er meer dan één tag is waarvoor een accentueringstaal is gespecificeerd, of als geen van de tags er een heeft gespecificeerd, wordt een standaard gebruikt en laat highlight.js afleiden wat de beste taal is om te gebruiken. Dezelfde accentuerende taal die wordt gebruikt voor de vraag, wordt ook gebruikt voor de antwoorden.

Bezoek die tag “s wiki -pagina. Klik op een tag (zoals " ") en klik vervolgens op " Meer informatie … ", en de taalhint (indien aanwezig) die momenteel voor die tag wordt gebruikt, wordt weergegeven op de helemaal onderaan , onder de knoppen voor de wiki:

Code taal (gebruikt voor syntaxisaccentuering): lang-java

Als de tag geen accentueringstaal heeft opgegeven wanneer dat zou moeten, maak dan een op de meta per site voor uw site om deze aan te vragen. (Alleen moderators kunnen de accentueringstaal voor een tag wijzigen.)

Hoe meld ik een bug of vraag ik een nieuwe taal aan?

Als het inderdaad een bug is in de syntaxis markeerstift zelf, controleer dan op bestaande rapporten om eerst te kijken of het al is gerapporteerd; als dit niet het geval is, kunt u het daar melden. Voor bugfixes en functies die al zijn geïmplementeerd door highlight.js maar hier niet werken, wacht even, aangezien nieuwe versies van highlight.js op een geplande basis op de sites worden geïmplementeerd, en de de laatste versie is nog niet geïmplementeerd. (Als het na een lange tijd niet is geïmplementeerd, kunt u een functieverzoek indienen bij Meta om te vragen dat een nieuwe versie van highlight.js wordt geïmplementeerd.)

Houd er rekening mee dat Stack Exchange onderhoudt deze syntaxis markeerstift niet (afgezien van het installeren van nieuwere versies ervan), en het plaatsen van bugrapporten of functieverzoeken hierover hier op Meta zal ze niet laten repareren of implementeren.

Voor je iets doen, zeker dat u “de juiste accentuering hebt ingeschakeld.

Hoe gebruik ik syntaxisaccentuering?

Zolang alle voorwaarden in het Waarom wordt mijn code niet correct gemarkeerd? sectie hierboven is voldaan, zal accentuering automatisch starten op codeblokken op basis van de tags op de vraag. (Zie 4. Controleer of de tags op uw vraag hebben syntaxisaccentuering ingeschakeld hierboven voor hoe dit werkt.) Inline code (bijv. this) is niet gemarkeerd.

Het is mogelijk om overschrijf expliciet de standaard accentueringstaal die in het bericht wordt gebruikt met uw taal naar keuze in een specifiek codeblok, door een taalhint boven het codeblok te specificeren. Merk op dat dit alleen wordt ondersteund bij gebruik van de code fence (```) methode van code-opmaak; vanaf de implementatie van CommonMark , wordt dit op codeblokken met behulp van de indent-methode met vier spaties niet langer ondersteund *:

```lang-or-tag-here code goes here ``` 

Je mag een taalcode of een tag naam in de taalhint om syntaxisaccentuering te activeren. Zie hieronder voor de volledige lijst met door highlight.js ondersteunde taalcodes.

Bijvoorbeeld:

Here is a code block with language code (with "lang-" prefix) as a hint: ```lang-js function greet(person) { return "Hello " + person; } var user = "John Doe"; alert(greet(user)); ``` Here is a code block with tag name (no "lang-" prefix) as a hint: ```typescript var arr = [0, 1, 2]; // will highlight if typescript tag exists ``` 

Als u niet wilt om syntaxisaccentuering te hebben, kunt u de lang-none taal gebruiken:

```lang-none [code here] ``` 

U kunt ook een taalhint toepassen naar alle codeblokken in je bericht, zodat je geen hint hoeft toe te voegen voor elk bericht, door een HTML-commentaar toe te voegen aan de top van je bericht. De hint wordt dan toegepast op alle codeblokken in uw bericht, inclusief degene die een streepje met vier spaties of HTML gebruiken <pre><code>:

<!-- language-all: lang-or-tag-here --> 

Merk op dat wanneer het voor een vraag wordt gebruikt, het niet de accentueringstaal op zijn antwoorden overschrijft; die worden standaard nog steeds gemarkeerd volgens de tags van de vraag.


Taalcodes die momenteel beschikbaar zijn op Stack Exchange

Dit is een volledige lijst van elke identifier die je kan gebruiken in de taalhint voor syntaxisaccentuering. Al die taalhints in elke groep verwijzen naar dezelfde markeerstift. Andere taalaliassen die zijn ingesteld door highlight.js werken mogelijk, maar alleen de volgende ids worden officieel ondersteund door Stack Exchange.

  • Standaard: interpreteer de code en gok lang-default
  • Geen: gebruik expliciet geen syntaxisaccentuering lang-none, lang-plaintext, lang-text, lang-txt
  • Bash lang-bash, lang-sh, lang-zsh
  • C, C ++ , en andere C-likes lang-c, lang-h, lang-cpp, lang-hpp, lang-c++, lang-h++, lang-cc, lang-hh, lang-cxx, lang-hxx, lang-c-like
  • C # lang-cs, lang-csharp, lang-c#
  • Clojure lang-clojure, lang-clj
  • CoffeeScript lang-coffee, lang-coffeescript, lang-cson, lang-iced
  • CSS lang-css
  • Dart lang-dart
  • Erlang lang-erl, lang-erlang
  • Go lang-go, lang-golang
  • Haskell lang-hs, lang-haskell
  • HTML, XML, XSL, et al. lang-html, lang-xml, lang-xsl , lang-xhtml, lang-rss, lang-atom, lang-xjb, lang-xsd, lang-plist, lang-wsf, lang-svg
  • HTTP-headers lang-http, lang-https
  • Ini en TOML lang-ini, lang-toml
  • Java lang-java, lang-jsp
  • JavaScript lang-js, lang-javascript, lang-jsx, lang-mjs, lang-cjs
  • JSON lang-json
  • Kotlin lang-kotlin, lang-kt
  • LaTeX, TeX lang-latex, lang-tex
  • Minder lang-less
  • Lisp lang-lisp
  • Lua lang-lua
  • Makefile lang-makefile, lang-mk, lang-mak
  • Markdown lang-markdown, lang-md, lang-mkdown, lang-mkd
  • MATLAB lang-matlab
  • Objective-C lang-objectivec, lang-mm, lang-objc, lang-obj-c
  • OCaml lang-ocaml, lang-ml
  • Pascal, Delphi lang-pascal, lang-delphi, lang-dpr, lang-dfm, lang-pas, lang-freepascal, lang-lazarus, lang-lpr, lang-lfm
  • Perl lang-pl, lang-perl, lang-pm
  • PHP lang-php, lang-php3, lang-php4, lang-php5, lang-php6, lang-php7
  • PHP-sjabloon lang-php-template
  • Protocolbuffers lang-protobuf
  • Python lang-py, lang-python, lang-gyp, lang-ipython
  • R lang-r
  • Ruby lang-rb, lang-ruby, lang-gemspec, lang-podspec, lang-thor, lang-irb
  • Rust lang-rs, lang-rust
  • Scala lang-scala
  • Schema lang-scheme
  • SCSS lang-scss
  • Shell lang-shell, lang-console
  • SQL lang-sql
  • Swift lang-swift
  • TypeScript lang-typescript, lang-ts
  • VHDL lang-vhdl
  • VB.NET lang-vbnet, lang-vb
  • YAML lang-yaml, lang-yml

Alle taal-IDs die in een bericht worden gebruikt en die niet worden herkend door highlight.js, worden functioneel standaard lang-default.

Hinting: Tags

U kunt elke -tag specificeren die op de site bestaat, en deze zal elke taalcode gebruiken die momenteel aan die tag is gekoppeld (dit kan null (geen hint), standaard , of een specifieke taalcode).

Houd er rekening mee dat standaard alle tags beginnen met none als hun taalcode. Tags met none gespecificeerd als hun taalcode worden genegeerd en keren terug naar lang-default.

U kunt ook het gewone none trefwoord gebruiken om handmatig geen syntaxisaccentuering te specificeren, vergelijkbaar met het gebruik van de lang-none code hierboven.


* De vroegere methode om een accentueringstaal te specificeren kan nog steeds worden gebruikt voor HTML-codeblokken: plaats een HTML-commentaar <!-- language: lang-or-tag-here --> vóór de <pre><code> -tags en het zal werken.

Ook deze eerste methode is niet volledig verwijderd voor ingesprongen codeblokken met vier spaties, maar alleen verouderd. Hoewel het voorlopig nog zal werken op ingesprongen codeblokken met vier spaties, kan / zal het in de toekomst worden verwijderd.


Noot voor redacteuren:

Gelieve niet toe te voegen aan de bovenstaande lijst tenzij u 100% sur e het bestaat.

  • Alleen omdat je iets typt en het eruit ziet alsof het gemarkeerd is correct betekent niet dat de identifier daadwerkelijk in het systeem bestaat. Houd er rekening mee dat ongeldige IDs worden teruggezet naar standaard .

  • Bovendien worden verschillende talen aangegeven als ondersteund in highlight.js s documentatie wordt mogelijk niet echt ondersteund door de Stack Exchange-versie van highlight.js , aangezien deze zich mogelijk in afzonderlijke modules die niet op Stack Exchange kunnen worden geïmplementeerd.

Vanwege deze punten, link naar de metavraag die bevestigt het bestaan van een hint in uw bewerkingssamenvatting bij het toevoegen van een nieuwe hint aan de lijst.

Opmerking voor commentatoren:

De opmerkingen over deze veelgestelde vragen zijn bedoeld om opheldering te vragen over iets dat u misschien niet begrijpt in de veelgestelde vragen, zodat het kan worden opgelost. NIET vragen of bepaalde talen in de toekomst zullen worden ondersteund. Dat is niet een vraag die we kunnen beantwoorden omdat Stack Exchange deze markeerstift niet onderhoudt. Ga naar highlight.js voor taalondersteuning.

Reacties

  • Moet niet ' er een aangegeven voorkeur (geen regel) hier in dit antwoord staan voor het gebruik van een taalcode of een tagnaam (mogelijk met enkele kwalificaties)? Bijv. " Gebruik bij voorkeur X boven Y, tenzij Z. " (enigszins verwante vraag over MSO (in opmerkingen ): Wat is ' is het verschil tussen de twee code-opmaakstijlen (code-omheiningen versus ingesprongen blokken) met betrekking tot syntaxisaccentuering ? )
  • en het zal de taalcode gebruiken die momenteel aan die tag is gekoppeld Is er ergens een officiële lijst van deze toewijzingen beschikbaar?
  • Sectie 4, " 4. Controleer of voor de tags op de vraag syntaxisaccentuering is ingeschakeld " , alle informatie heeft om erachter te komen @JoshGoebel
  • @Josh Op uw directe vraag , Ik geloof echter niet dat er ' ergens een lijst is die momenteel alle tags met de bijbehorende taal bevat. Het ziet er ook niet ' uit alsof deze informatie ook toegankelijk is met SEDE, het ' staat niet in de tabel met tags.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deep Theme aangedreven door WordPress