Jeg la merke til at noen ganger blir koden min uthevet i forskjellige farger når den blir gjengitt.
- Hva er syntaksutheving?
- Hvordan fungerer det?
- Hvorfor utheves ikke koden min riktig?
- Hvordan rapporterer jeg en feil eller ber om et nytt språk?
- Hvordan bruker jeg syntaksmarkering?
- Hvilke språk er for øyeblikket tilgjengelige på Stack Exchange?
Kommentarer
Svar
Hva er syntaks utheving?
Syntaks utheving gjør at kode i innlegg kan utheves basert på språket det er skrevet på, for å gjøre det lettere å lese.
Hvordan fungerer det?
Stack Exchange har ikke sin egen syntaksmarkeringsmotor. Den bruker highlight.js , og bruker kanskje ikke nødvendigvis den siste utgivelsen av biblioteket. Derfor kan ikke eventuelle feil og funksjonsforespørsler angående syntaksfremheving håndteres av Stack Exchange.
Syntaksfremheving tildeles, basert på -koder , til forhåndsvisningen når du oppretter eller redigerer innlegg så snart du slutter å skrive i 5 sekunder.
Hvorfor er ikke koden min uthevet riktig?
1. Kontroller at siden du bruker har syntaksfremheving aktivert
Den komplette listen er tilgjengelig på Meta . Hvis syntaksfremheving ikke er aktivert på et nettsted følger instruksjonene i dette spørsmålet.
2. Kontroller at språket støttes av highlight.js
Se på liste over språk som støttes av highlight.js . Hvis språket ditt ikke er på listen, må det opprettes i highlight.js-prosjektet før det kan distribueres av Stack Exchange.
Hvis en språk er allerede på listen, men ikke brukt på Stack Exchange, vennligst ta opp en funksjonsforespørsel her på Meta for å få den distribuert i nettverket.
3. Kontroller at språket brukes av Stack Exchange
Se på highlight-loader.js -filen på dev CDN, åpne i favorittredigereren din, og søk etter språkhint. For eksempel søker etter " pil " bringer deg til en linje bestående av hljs.registerLanguage("dart", ...
. Dette betyr at lang-dart
er et tilgjengelig språkhint. Søker etter " psh " eller " powershell " returnerer ikke noen resultater, noe som betyr at psh ikke støttes av Stack Exchange-versjonen av highlight.js.
4. Kontroller at kodene på spørsmålet har syntaksmarkering aktivert
Bak kulissene bruker Stack Exchanges kodene på spørsmålet for å bestemme språket du bruker. Hver tag har et uthevingsspråk som er spesifisert i egenskapene, eller ikke noe språk. Hvis det er mer enn en kode som har et uthevingsspråk spesifisert, eller hvis ingen av kodene har en spesifisert, bruker den en standard og lar highlight.js utlede hva som er det beste språket å bruke. Det samme fremhever språk som brukes på spørsmålet brukes også på svarene.
Besøk den taggen «s wiki side. Klikk på en kode (for eksempel " javascript "), og klikk deretter " Lær mer … ", og eventuelt språkhint som for øyeblikket brukes for den taggen, vises på helt nederst , under knappene for wiki:
Hvis taggen ikke har et fremhevingsspråk spesifisert når det skal, må du opprette en funksjonsforespørsel på metaen per side for nettstedet ditt for å be om det. (Bare moderatorer kan endre uthevingsspråket for en tag.)
Hvordan rapporterer jeg en feil eller ber om et nytt språk?
Hvis det virkelig er en feil i selve syntaksen, kan du se etter eksisterende rapporter først for å se om det allerede er rapportert, hvis det ikke har vært, fortsett og rapporter det der. For feilrettinger og funksjoner som allerede er implementert av highlight.js men ikke fungerer her, vennligst vent, ettersom nye versjoner av highlight.js distribueres på nettstedene på en planlagt basis, og siste versjon har ikke blitt distribuert ennå. (Hvis den ikke har blitt distribuert etter lang tid, kan du heve en funksjonsforespørsel på Meta for å be om at en ny versjon av highlight.js blir distribuert.)
Husk at Stack Exchange opprettholder ikke denne syntaksmarkeringen (bortsett fra å installere nyere versjoner av den), og å legge ut feilrapporter eller funksjonsforespørsler angående den her på Meta, vil ikke få dem løst eller implementert.
Før du gjør hva som helst, sørg for at at du har fått riktig utheving slått på.
Hvordan bruker jeg syntaksmarkering?
Så lenge alle forholdene i Hvorfor blir ikke koden min uthevet riktig? delen ovenfor er fornøyde, vil utheving automatisk sparke inn på kodeblokker basert på kodene på spørsmålet. (Se 4. Kontroller at tagger på spørsmålet ditt har syntaksutheving aktivert ovenfor for hvordan dette fungerer.) Inline kode (f.eks. this
) er ikke uthevet.
Det er mulig å overstyre eksplisitt standard markeringsspråk som brukes i innlegget med ditt valgte språk i en bestemt kodeblokk, ved å spesifisere et språkhint over kodeblokken. Merk at dette bare støttes når du bruker kodegjerde (```
) metoden for kodeformatering; fra og med implementeringen av CommonMark , støttes ikke lenger det å gjøre det på kodeblokker ved hjelp av metoden med fire mellomrom innrykk *:
```lang-or-tag-here code goes here ```
Du kan bruke enten en språkkode eller et tag navn i språkhintet for å aktivere syntaksmarkering. Se nedenfor for den komplette listen over highlight.js-støttede språkkoder.
For eksempel:
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 ```
Hvis du ikke vil ha Hvis du vil ha syntaksmarkering, kan du bruke lang-none
-språket:
```lang-none [code here] ```
Du kan også bruke et språkhint til alle kodeblokker i innlegget ditt, slik at du ikke trenger å legge til et hint før hver enkelt, ved å legge til en HTML-kommentar øverst i innlegget ditt. Hintet blir da brukt på alle kodeblokker i innlegget ditt, inkludert de som bruker fire mellomrom eller HTML <pre><code>
:
<!-- language-all: lang-or-tag-here -->
Merk at når det brukes på et spørsmål ikke tilsidesetter uthevingsspråket på svarene; disse vil fremdeles være uthevet som standard i henhold til spørsmålets koder.
Språkkoder som for øyeblikket er tilgjengelige på Stack Exchange
Dette er en komplett liste over alle identifikatorene du kan bruke i språkhintet for syntaksfremheving. Alle de språktippene i hver gruppe peker til samme markering. Andre språkaliaser satt av highlight.js kan fungere, men bare følgende identifikatorer støttes offisielt av Stack Exchange.
- Standard: tolker koden og gjetter
lang-default
- Ingen: eksplisitt ikke bruk syntaksen som fremhever
lang-none
,lang-plaintext
,lang-text
,lang-txt
- Bash
lang-bash
,lang-sh
,lang-zsh
- C, C ++ , og andre 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
- 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-overskrifter
lang-http
,lang-https
- Ini og 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-mal
lang-php-template
- Protokollbuffere
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
- Ordning
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 språkidentifikatorer som brukes i et innlegg som ikke gjenkjennes av highlight.js, vil som standard være lang-default
.
Hint: Tagger
Du kan spesifisere en hvilken som helst -kode som finnes på nettstedet, og den vil bruke den språkkoden som for øyeblikket er tilknyttet den koden (som kan være enten null (ingen hint), standard eller en spesifikk språkkode).
Husk at som standard alle koder starter med none
som språkkode. Merkelapper med none
spesifisert som språkkoden ignoreres og går tilbake til lang-default
.
Du kan også bruke det vanlige none
nøkkelordet til manuelt å spesifisere ingen syntaksfremheving, i likhet med å bruke lang-none
kode ovenfor.
* Den tidligere metoden for å spesifisere et uthevingsspråk kan fortsatt brukes for HTML-kodeblokker: plasser en HTML-kommentar <!-- language: lang-or-tag-here -->
før <pre><code>
-taggene, og det fungerer.
Også denne tidligere metoden har ikke blitt fjernet fullstendig for kodeblokker med fire mellomrom, men bare utfaset. Selv om den fremdeles vil fungere på kodeblokker med fire mellomrom, kan den / vil bli fjernet i fremtiden.
Merk til redaktørene:
Ikke legg til til listen over, med mindre du er 100% sur e den eksisterer.
Bare fordi du skriver inn noe og det ser ut slik det er uthevet riktig betyr ikke at identifikatoren faktisk eksisterer i systemet. Husk at ugyldige identifikatorer går tilbake til standard .
I tillegg er det flere språk som er angitt som støttet i highlight.js «dokumentasjon støttes kanskje ikke av Stack Exchange-versjonen av highlight.js , slik de kan være i separate moduler som kanskje ikke distribueres på Stack Exchange.
På grunn av disse punktene, , vennligst lenke til Meta-spørsmålet som bekrefter at det finnes et hint i redigeringssammendraget ditt når du legger til et nytt hint til listen.
Merknad til kommentatorer:
Kommentarer til denne FAQ er for å be om avklaring av noe du kanskje ikke forstår i FAQ, slik at det kan løses. Vennligst IKKE spør om visse språk vil bli støttet i fremtiden. Det er ikke et spørsmål vi kan svare på fordi Stack Exchange ikke opprettholder denne markøren. Gå til highlight.js for språkstøtte.
Kommentarer
- Skulle ' t være en angitt preferanse (ikke regel) her i dette svaret for å bruke enten en språkkode eller et kodenavn (muligens med noen kvalifikasjoner)? F.eks. " Foretrekker å bruke X over Y, med mindre Z. " (Noe beslektet spørsmål om MSO (i kommentarer ): Hva ' er forskjellen mellom de to kodeformateringsstiler (kodegjerder vs innrykkede blokker) angående syntaksfremheving ? )
- og den vil bruke hvilken språkkode som for øyeblikket er tilknyttet den koden Er det en offisiell liste over disse tilordningene tilgjengelig hvor som helst?
- Seksjon 4, " 4. Sjekk at kodene på spørsmålet har syntaksutheving aktivert " , har all informasjonen for å finne ut av @JoshGoebel
- @Josh Til ditt direkte spørsmål Jeg tror ikke ' det er en liste hvor som helst for øyeblikket inneholder alle koder med tilhørende språk. Det ser heller ikke ut ' at denne informasjonen er tilgjengelig med SEDE, den ' er ikke i taggetabellen.
https://github.com/highlightjs/
prosjekt eller SE Sites bruker egne sett med farger? Kunne vi endre farge og tone i farger?Language Categories
=All
ogThemes
=Stackoverflow Light
er dette temaet nøyaktig det samme som brukes på SE-nettsteder? Hvilket språk brukes tillang-default
?