Am observat că uneori codul meu este evidențiat în culori diferite atunci când este redat.
- Ce este evidențierea sintaxei?
- Cum funcționează?
- De ce nu este evidențiat corect codul meu?
- Cum raportez o eroare sau solicit o nouă limbă?
- Cum folosesc evidențierea sintaxică?
- Ce limbi sunt disponibile în prezent pe Stack Exchange?
Reveniți la Indice de întrebări frecvente
Comentarii
Răspuns
Ce evidențierea sintaxei este?
Evidențierea sintaxei permite evidențierea codului din postări pe baza limbii în care este scris, pentru a ușura citirea.
Cum funcționează?
Stack Exchange nu are propriul motor de evidențiere a sintaxei. Folosește highlight.js și este posibil să nu utilizeze neapărat cea mai recentă versiune a acelei biblioteci. Prin urmare, orice erori și cereri de caracteristici referitoare la evidențierea sintaxei nu pot fi gestionate de Stack Exchange.
Evidențierea sintaxei este atribuită, pe baza etichete , previzualizării atunci când creați sau editați postări imediat ce opriți tastarea timp de 5 secunde.
De ce nu este evidențiat corect codul meu?
1. Verificați dacă site-ul pe care îl utilizați are activată evidențierea sintaxică
Lista completă este disponibilă pe Meta . Dacă evidențierea sintaxei nu este activată pe un site urmează instrucțiunile din această întrebare.
2. Verificați dacă limba este acceptată de highlight.js
Uitați-vă la lista limbilor acceptate de highlight.js . Dacă limba dvs. nu este pe listă, trebuie să fie creată în cadrul proiectului highlight.js înainte de a putea fi implementată de Stack Exchange.
Dacă un limba este deja pe listă, dar nu este utilizată în Stack Exchange, vă rugăm să ridicați o cerere de caracteristică aici pe Meta pentru a o implementa în rețea.
3. Verificați dacă limba este utilizată de Stack Exchange
Uită-te la fișierul highlight-loader.js de pe CDN-ul dev, deschide în editorul tău preferat și caută indiciu de limbă. De exemplu, căutarea " dart " vă aduce la un linie formată din hljs.registerLanguage("dart", ...
. Aceasta înseamnă că lang-dart
este un indiciu de limbă disponibil. Se caută " psh " sau " powershell " nu returnează niciun rezultat, ceea ce înseamnă că psh nu este acceptat de versiunea Stack Exchange a highlight.js.
4. Verificați dacă etichetele de la întrebare au activată evidențierea sintaxică
În culise, Stack Exchanges folosește etichetele de la întrebarea pentru a determina limba pe care o utilizați. Fiecare etichetă are un limbaj de evidențiere specificat în proprietățile sale, sau nu există limbă. Dacă există mai multe etichete care au specificată o limbă de evidențiere sau dacă niciuna dintre etichete nu a specificat una, aceasta folosește o setare implicită și permite să highlight.js să deducă care este cea mai bună limbă de utilizat. Același lucru evidențierea limbajului utilizat la întrebare este, de asemenea, utilizată la răspunsurile sale.
Accesați eticheta respectivă „s . Faceți clic pe o etichetă (cum ar fi " javascript "), apoi faceți clic pe " Aflați mai multe … ", iar sugestia de limbă (dacă există) care este utilizată în prezent pentru acea etichetă va fi afișată la foarte jos , sub butoanele pentru wiki:
Dacă eticheta nu are o limbă de evidențiere specificată când ar trebui, creați o feature-request pe meta pe site pentru ca site-ul dvs. să o solicite. (Numai moderatorii pot schimba limba de evidențiere pentru o etichetă.)
Cum raportez o eroare sau solicit o nouă limbă?
Dacă este într-adevăr o eroare în evidențiatorul de sintaxă, verificați dacă există rapoarte existente mai întâi pentru a vedea dacă a fost deja raportat; dacă nu, continuați și raportați-l acolo. Pentru remedierile de erori și caracteristicile care au fost deja implementate de highlight.js , dar care nu funcționează aici, vă rugăm să așteptați, deoarece noile versiuni ale highlight.js sunt implementate pe site-uri în mod programat, iar ultima versiune nu a fost încă implementată. (Dacă nu a fost implementat după mult timp, puteți ridica o cerere de caracteristică pe Meta pentru a solicita implementarea unei noi versiuni a highlight.js.)
Rețineți că Stack Exchange nu menține acest marcator de sintaxă (în afară de instalarea versiunilor mai noi ale acestuia) și postarea rapoartelor de erori sau a cererilor de caracteristici care o privesc aici pe Meta nu le va rezolva sau implementa.
Înainte de dvs. faceți orice, asigurați-vă sigur că ați activat evidențierea corectă.
Cum folosesc evidențierea sintaxei?
Atâta timp cât toate condițiile în secțiunea De ce nu este evidențiat corect codul meu? secțiunea de mai sus sunt satisfăcute, evidențierea va intra automat în blocurile de cod pe baza etichetelor de la întrebare. (Vedeți 4. Verificați dacă etichetele din întrebarea dvs. au activat evidențierea sintaxei de mai sus pentru modul în care funcționează.) Codul Inline (de exemplu, this
) nu este evidențiat.
Este posibil să înlocuiți în mod explicit limba implicită de evidențiere utilizată în postare cu limba dvs. la alegere într-un anumit bloc de cod, specificând un indiciu de limbă deasupra blocului de cod. Rețineți că acest lucru este acceptat numai atunci când se utilizează metoda de formatare a codului gard de cod (```
); începând cu implementarea a CommonMark , nu mai este acceptată utilizarea blocurilor de cod folosind metoda indentare în patru spații *:
```lang-or-tag-here code goes here ```
Puteți utiliza fie un cod de limbă , fie un etichetă nume în indiciu de limbă pentru a activa evidențierea sintaxei. Vedeți mai jos lista completă a codurilor de limbă acceptate de highlight.js.
De exemplu:
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 ```
Dacă nu doriți pentru a avea orice evidențiere a sintaxei, puteți utiliza limba lang-none
:
```lang-none [code here] ```
Puteți aplica, de asemenea, un indiciu de limbă la toate blocurile de cod din postarea dvs., deci nu trebuie să adăugați un indiciu înainte de fiecare, adăugând un comentariu HTML în partea de sus a postării dvs. Sugestia va fi aplicată apoi blocurilor de cod toate din postarea dvs., inclusiv celor care utilizează liniuță în patru spații sau HTML <pre><code>
:
<!-- language-all: lang-or-tag-here -->
Rețineți că, atunci când este utilizat la o întrebare, nu suprascrie limba de evidențiere a răspunsurilor sale; acestea vor fi evidențiate în mod implicit în conformitate cu etichetele întrebării.
Codurile de limbă disponibile în prezent pe Stack Exchange
Aceasta este o listă completă a fiecărui identificator pe care îl aveți poate fi folosit în indiciu lingvistic pentru evidențierea sintaxei. Toate aceste indicii lingvistice din fiecare grup indică același evidențiere. Alte aliasuri de limbă setate de highlight.js ar putea funcționa, dar numai următorii identificatori sunt acceptați oficial de Stack Exchange.
- Implicit: interpretați codul și ghiciți
lang-default
- Niciuna: în mod explicit nu utilizați evidențierea sintaxei
lang-none
,lang-plaintext
,lang-text
,lang-txt
- Bash
lang-bash
,lang-sh
,lang-zsh
- C, C ++ și alte aprecieri C
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
- Accesați
lang-go
,lang-golang
- Haskell
lang-hs
,lang-haskell
- HTML, XML, XSL și colab.
lang-html
,lang-xml
,lang-xsl
,lang-xhtml
,lang-rss
,lang-atom
,lang-xjb
,lang-xsd
,lang-plist
,lang-wsf
,lang-svg
- Anteturi HTTP
lang-http
,lang-https
- Ini și 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
- Mai puțin
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
- Obiectiv-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
- Șablon PHP
lang-php-template
- Protocol Buffers
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
- Rugină
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
Orice identificator de limbă utilizat într-o postare care nu este recunoscut de highlight.js va fi funcțional implicit la lang-default
.
Sugestie: Etichete
Puteți specifica orice etichetă care există pe site și va utiliza orice cod de limbă este asociat în prezent cu acea etichetă (care poate fi null (fără sugestie), implicit sau un cod de limbă specific ).
Rețineți că în mod implicit toate etichetele încep cu none
ca cod de limbă. Etichetele cu none
specificate ca cod de limbă vor fi ignorate și vor reveni la lang-default
.
De asemenea, puteți utiliza cuvântul cheie simplu none
pentru a specifica manual fără evidențierea sintaxei, similar cu utilizarea lang-none
cod de mai sus.
* Fosta metodă de specificare a unui limbaj de evidențiere poate fi utilizată în continuare pentru blocurile de cod HTML: plasați un comentariu HTML <!-- language: lang-or-tag-here -->
înainte de etichetele <pre><code>
și va funcționa.
De asemenea, acest fost metoda nu a fost complet eliminată pentru blocurile de cod indentate cu patru spații, ci doar depreciată. Deși va funcționa pentru moment pe blocurile de cod indentate cu patru spații, poate / va fi eliminată în viitor.
Notă pentru editori:
Vă rugăm să nu adăugați la lista de mai sus, cu excepția cazului în care sunteți 100% sur există.
Doar pentru că tastați ceva și arată așa cum este evidențiat corect nu înseamnă că identificatorul există de fapt în sistem. Rețineți că identificatorii invalizi revin la implicit .
În plus, mai multe limbi care sunt indicate ca acceptate în Documentația „highlight.js” poate să nu fie de fapt acceptată de versiunea Stack Exchange a highlight.js , așa cum ar putea fi în module separate care nu pot fi implementate pe Stack Exchange.
Datorită acestor puncte, vă rugăm să faceți link către întrebarea Meta care confirmă existența unui indiciu în rezumatul dvs. de editare atunci când adăugați un nou indiciu în listă.
Notă pentru comentatori:
comentariile la acest FAQ sunt pentru a solicita clarificarea a ceva ce s-ar putea să nu înțelegeți în FAQ pentru a putea fi remediat. Vă rugăm să NU întrebați dacă anumite limbi vor fi acceptate în viitor. Aceasta este nu o întrebare la care putem răspunde, deoarece Stack Exchange nu menține acest marcator. Accesați highlight.js pentru asistență lingvistică.
Comentarii
- Nu ar trebui ca ' să existe o preferință (nu regulă) indicată aici în acest răspuns pentru utilizarea fie a unui cod de limbă , fie a unui nume de etichetă (posibil cu unele calificative)? De exemplu. " Prefer să utilizați X peste Y, cu excepția cazului în care Z. " (Întrebare oarecum legată de MSO (în comentarii ): Care este ' diferența dintre cele două stiluri de formatare a codului (garduri de coduri vs blocuri indentate) în ceea ce privește evidențierea sintaxei ? )
- și va folosi orice cod de limbă este asociat în prezent cu acea etichetă Există o listă oficială a acestor mapări disponibile oriunde?
- Secțiunea 4, " 4. Verificați dacă etichetele de la întrebare au activată evidențierea sintaxică " , are toate informațiile pentru a afla @JoshGoebel
- @Josh La întrebarea dvs. directă , ' nu cred că există o listă oriunde conținând în prezent toate etichetele cu limba asociată. De asemenea, nu ' nu arată că aceste informații sunt accesibile cu ajutorul SEDE, ' nu se află în tabelul cu etichete.
https://github.com/highlightjs/
sau Site-urile SE folosesc seturi proprii de culori? Am putea schimba culoarea și tonul culorilor?Language Categories
=All
șiThemes
=Stackoverflow Light
sunt exact această temă utilizată pe site-urile SE? Ce limbă este utilizată pentrulang-default
?