Jag märkte att ibland blir min kod markerad i olika färger när den renderas.
- Vad är syntaxmarkering?
- Hur fungerar det?
- Varför markeras inte min kod korrekt?
- Hur rapporterar jag ett fel eller begär ett nytt språk?
- Hur använder jag syntaxmarkering?
- Vilka språk finns för närvarande på Stack Exchange?
Kommentarer
Svar
Vad är syntaxmarkering?
Syntaxmarkering gör det möjligt att markera kod i inlägg baserat på språket det är skrivet på, för att göra det lättare att läsa.
Hur fungerar det?
Stack Exchange har ingen egen syntaxmarkeringsmotor. Den använder highlight.js , och kanske inte nödvändigtvis använder den senaste versionen av det biblioteket. Därför kan inga buggar och funktionsförfrågningar angående syntaxmarkering hanteras av Stack Exchange.
Syntaxmarkering tilldelas, baserat på -taggar , till förhandsgranskningen när du skapar eller redigerar inlägg så snart du slutar skriva i 5 sekunder.
Varför är inte min kod markerad korrekt?
1. Kontrollera att webbplatsen du använder har syntaxmarkering aktiverad
Hela listan är tillgänglig på Meta . Om syntaxmarkering inte är aktiverad på en webbplats följer instruktionerna i den här frågan.
2. Kontrollera att språket stöds av highlight.js
Titta på lista över språk som stöds av highlight.js . Om ditt språk inte finns på listan måste det skapas inom projektet highlight.js innan det kan distribueras av Stack Exchange.
Om en språket finns redan på listan men används inte på Stack Exchange, vänligen ta upp en funktionsförfrågan här på Meta för att distribuera det i nätverket.
3. Kontrollera att språket används av Stack Exchange
Titta på highlight-loader.js -filen på dev CDN, öppna i din favoritredigerare och sök efter språktips. Till exempel att söka efter " dart " tar dig till en rad som består av hljs.registerLanguage("dart", ...
. Detta betyder att lang-dart
är en tillgänglig språkanvisning. Söker efter " psh " eller " powershell " returnerar inte några resultat, vilket innebär att psh inte stöds av Stack Exchange-versionen av highlight.js.
4. Kontrollera att taggarna i frågan har syntaxmarkering aktiverad
Bakom kulisserna använder Stack Exchanges taggarna i frågan för att bestämma språket du använder. Varje tagg har ett markeringsspråk som anges i dess egenskaper, eller inget språk. Om det finns mer än en tagg som har ett markeringsspråk specificerat, eller om ingen av taggarna har angett en, använder den en standard och låter highlight.js dra slutsatsen vad som är det bästa språket att använda. Samma markeringsspråk som används i frågan används också i dess svar.
Besök den taggen ”s wiki sida. Klicka på en tagg (t.ex. " javascript "), klicka sedan på " Läs mer … " och språktips (om någon) som för närvarande används för den taggen visas på längst ner , under knapparna för wiki:
Om taggen inte har ett markeringsspråk specificerat när det borde, skapa en funktionsförfrågan på meta per webbplats för att din webbplats ska begära den. (Endast moderatorer kan ändra markeringsspråket för en tagg.)
Hur rapporterar jag ett fel eller begär ett nytt språk?
Om det verkligen är ett fel i syntaxmarkören själv, leta efter befintliga rapporter först för att se om det redan har rapporterats, om det inte har gått vidare och rapportera det där. För felkorrigeringar och funktioner som redan har implementerats av highlight.js men inte fungerar här, vänta, eftersom nya versioner av highlight.js distribueras på webbplatserna enligt schemalagd basis, och senaste versionen har ännu inte distribuerats. (Om den inte har distribuerats efter lång tid kan du höja en funktionsbegäran på Meta för att begära att en ny version av highlight.js distribueras.)
Tänk på att Stack Exchange upprätthåller inte den här syntaxmarkeringen (förutom att installera nyare versioner av den), och att publicera felrapporter eller funktionsförfrågningar angående den här på Meta kommer inte att få dem fixade eller implementerade. gör vad som helst, se till att se till att du har rätt markering aktiverad.
Hur använder jag syntaxmarkering?
Så länge alla villkor är i avsnittet Varför är inte min kod korrekt markerad? avsnittet ovan är nöjda, markeringen kommer att starta automatiskt på kodblock baserat på taggarna i frågan. (Se 4. Kontrollera taggar på din fråga har syntaxmarkering aktiverat ovan för hur detta fungerar.) Inline -kod (t.ex. this
) är inte markerad.
Det är möjligt att åsidosätta uttryckligen det standardmarkeringsspråk som används i inlägget med ditt språk i ett specifikt kodblock, genom att ange en språkanvisning ovanför kodblocket. Observera att detta endast stöds när du använder kodstaket (```
) för kodformatering; från och med -implementeringen av CommonMark stöds inte längre att göra det på kodblock med metoden med fyra mellanslag indrag *:
```lang-or-tag-here code goes here ```
Du kan använda antingen en språkkod eller ett tagg namn i språktipset för att aktivera syntaxmarkering. Se nedan för den kompletta listan över highlight.js-stödda språkkoder.
Till exempel:
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 ```
Om du inte vill om du vill ha syntaxmarkering kan du använda lang-none
-språket:
```lang-none [code here] ```
Du kan också använda en språktips till alla kodblock i ditt inlägg, så du behöver inte lägga till en ledtråd före varje genom att lägga till en HTML-kommentar högst upp i ditt inlägg. Tipsen kommer sedan att tillämpas på alla kodblock i ditt inlägg, inklusive de som använder fyra mellanslag eller HTML <pre><code>
:
<!-- language-all: lang-or-tag-here -->
Observera att när det används på en fråga inte åsidosätter det markeringsspråket på dess svar; de kommer fortfarande att markeras som standard enligt frågaens taggar.
Språkkoder som för närvarande finns tillgängliga på Stack Exchange
Detta är en fullständig lista över alla identifierare som du kan använda i språktipsen för syntaxmarkering. Alla dessa språkintips i varje grupp pekar på samma överstrykningspenna. Andra språkalias som anges av highlight.js kan fungera, men endast följande identifierare stöds officiellt av Stack Exchange.
- Standard: tolka koden och gissa
lang-default
- Ingen: använd uttryckligen ingen syntaxmarkering
lang-none
,lang-plaintext
,lang-text
,lang-txt
- Bash
lang-bash
,lang-sh
,lang-zsh
- C, C ++ och andra C-gillar
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
- Gå
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-rubriker
lang-http
,lang-https
- Ini och 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
- Mindre
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-mall
lang-php-template
- Protokollbuffertar
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
- Rost
lang-rs
,lang-rust
- Scala
lang-scala
- Schema
lang-scheme
- SCSS
lang-scss
- Skal
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
Alla språkidentifierare som används i ett inlägg som inte känns igen av highlight.js kommer funktionellt att vara lang-default
.
Tips: Taggar
Du kan ange vilken -tagg som finns på webbplatsen, och den använder vilken språkkod som för närvarande är associerad med den taggen (som kan vara antingen null (ingen ledtråd), standard eller en specifik språkkod).
Tänk på att som standard alla taggar börjar med none
som språkkod. Taggar med none
som anges som språkkod ignoreras och återgår till lang-default
.
Du kan också använda det vanliga none
nyckelordet för att manuellt ange ingen syntaxmarkering, liknande att använda lang-none
kod ovan.
* Den tidigare metoden för att ange ett markeringsspråk kan fortfarande användas för HTML-kodblock: placera en HTML-kommentar <!-- language: lang-or-tag-here -->
före <pre><code>
-taggarna och det fungerar.
Den här tidigare metoden har inte tagits bort helt för kodblock med fyra mellanslag, men bara föråldrad. Även om den fortfarande kommer att fungera på kodblock med fyra mellanslag kan / kommer den att tas bort i framtiden.
Anmärkning till redaktörerna:
Lägg inte till till listan ovan om du inte är 100% säker e det finns.
Bara för att du skriver in något och det ser ut som om det är markerat korrekt betyder inte att identifieraren faktiskt finns i systemet. Tänk på att ogiltiga identifierare återgår till standard .
Dessutom finns det flera språk som anges som stöds i highlight.js dokumentation kanske inte stöds av Stack Exchange-versionen av highlight.js , eftersom de kan vara i separata moduler som inte kan distribueras på Stack Exchange.
På grund av dessa punkter vänligen länka till Meta-frågan som bekräftar att det finns en ledtråd i din redigeringsöversikt när du lägger till en ny ledtråd till listan.
Anmärkning till kommentatorer:
kommentarer på denna FAQ är för att begära klargörande av något du kanske inte förstår i FAQ så att det kan fixas. Vänligen INTE fråga om vissa språk kommer att stödjas i framtiden. Det är inte en fråga vi kan svara på eftersom Stack Exchange inte behåller denna överstrykningspenna. Besök highlight.js för språkstöd.
Kommentarer
- Bör ' det finns en angiven preferens (inte regel) här i det här svaret för att använda antingen en språkkod eller ett taggnamn (eventuellt med vissa kvalificeringar)? T.ex. " Föredrar att använda X över Y, såvida inte Z. " (Något relaterad fråga om MSO (i kommentarer ): Vad ' är skillnaden mellan de två kodformateringsstilarna (kodstängsel mot indragna block) angående syntaxmarkering ? )
- och den kommer att använda vilken språkkod som för närvarande är associerad med den taggen Finns det en officiell lista över dessa mappningar tillgänglig någonstans?
- Avsnitt 4, " 4. Kontrollera att taggarna i frågan har syntaxmarkering aktiverad " , har all information för att ta reda på @JoshGoebel
- @Josh Till din direkta fråga Jag tror inte ' att det finns en lista var som helst för närvarande innehåller alla taggar med tillhörande språk. Det ser inte heller ut ' att den här informationen är tillgänglig med SEDE, den ' finns inte i taggtabellen.
https://github.com/highlightjs/
-projekt eller använder SE Sites egna färger? Kan vi ändra färg och färgton?Language Categories
=All
ochThemes
=Stackoverflow Light
är detta tema exakt samma som används på SE-webbplatser? Vilket språk används förlang-default
?