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?
Reacties
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 " javascript ") 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:
Als de tag geen accentueringstaal heeft opgegeven wanneer dat zou moeten, maak dan een feature-request 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.
https://github.com/highlightjs/
-project of dat SE-sites eigen sets kleuren gebruiken? Kunnen we de kleur en toon van kleuren veranderen?Language Categories
=All
enThemes
=Stackoverflow Light
zijn dit thema precies hetzelfde gebruikt op SE-sites? Welke taal wordt gebruikt voorlang-default
?