Všiml jsem si, že můj kód je při vykreslování někdy zvýrazněn v různých barvách.
- Co je zvýraznění syntaxe?
- Jak to funguje?
- Proč není můj kód zvýrazněn správně?
- Jak mohu nahlásit chybu nebo požádat o nový jazyk?
- Jak mohu použít zvýraznění syntaxe?
- Jaké jazyky jsou aktuálně k dispozici na Stack Exchange?
Komentáře
odpověď
co je zvýraznění syntaxe?
Zvýraznění syntaxe umožňuje zvýraznění kódu v příspěvcích podle jazyka, ve kterém je napsán, aby bylo snazší číst.
Jak to funguje?
Stack Exchange nemá vlastní modul zvýraznění syntaxe. Používá highlight.js a nemusí nutně používat nejnovější verzi této knihovny. Stack Exchange proto nemůže zpracovávat žádné chyby a požadavky na funkce týkající se zvýrazňování syntaxe.
Zvýraznění syntaxe je na základě značek přiřazeno náhledu při vytváření nebo úpravách příspěvků, jakmile přestanete psát po dobu 5 sekund.
Proč není můj kód zvýrazněn správně?
1. Zkontrolujte, zda má web, který používáte, zvýraznění syntaxe povoleno
Celý seznam je k dispozici v Meta . Pokud není zvýraznění syntaxe v web postupujte podle pokynů v této otázce.
2. Zkontrolujte, zda jazyk podporuje zvýraznění.js
Podívejte se na seznam podporovaných jazyků highlight.js . Pokud váš jazyk není na seznamu, je třeba ho vytvořit v rámci projektu highlight.js, než jej bude možné nasadit pomocí Stack Exchange.
Pokud jazyk je již na seznamu, ale nepoužívá se na Stack Exchange, požádejte prosím zde o Meta požadavek na jeho implementaci v síti.
3. Zkontrolujte, zda jazyk používá Stack Exchange
Podívejte se na soubor highlight-loader.js na dev CDN, otevřete jej ve svém oblíbeném editoru a vyhledejte jazykovou nápovědu. Například vyhledávání " šipky " vás přivede na řádek skládající se z hljs.registerLanguage("dart", ...
. To znamená, že lang-dart
je nápověda v dostupném jazyce. Hledání " psh " nebo " Powershellu " nevrací žádné výsledky, což znamená, že verze zvýraznění.js na Stack Exchange nepodporuje psh.
4. Zkontrolujte, zda značky v otázce mají povolené zvýraznění syntaxe
V zákulisí používá Stack Exchanges značky k otázce k určení jazyka, který používáte. Každá značka má ve vlastnostech zvýrazněný jazyk, nebo žádný jazyk. Pokud existuje více než jedna značka, která má specifikovaný zvýrazňovací jazyk, nebo pokud žádná ze značek specifikovaný není, použije výchozí a nechá zvýraznit.js odvodit, jaký je nejlepší jazyk. Stejný zvýraznění jazyka použitého na otázku se použije také na její odpovědi.
Navštivte tuto značku „s stránka wiki . Klikněte na značku (například " javascript ") a poté klikněte na " Další informace … " a nápověda jazyka (pokud existuje), který se aktuálně používá pro tuto značku, se zobrazí na úplně dole pod tlačítky pro wiki:
Pokud značka nemá specifikovaný jazyk zvýraznění, kdy má, vytvořte a feature-request na metadat webu pro váš web, aby o něj mohl požádat. (Pouze moderátoři mohou změnit zvýrazňovací jazyk značky.)
Jak nahlásím chybu nebo požádám o nový jazyk?
Pokud se skutečně jedná o chybu v samotném zvýrazňovači syntaxe, zkontrolujte existující hlášení nejprve zkontrolujte, zda již byla nahlášena; pokud není, pokračujte a nahlaste to tam. Opravy chyb a funkce, které již byly implementovány pomocí highlight.js , ale zde nefungují, prosím počkejte, protože nové verze highlight.js jsou na stránkách nasazeny podle plánu a nejnovější verze ještě nebyla nasazena. (Pokud nebyl po dlouhé době nasazen, můžete v Meta vznést požadavek na funkci a požádat o nasazení nové verze highlight.js.)
Pamatujte, že Stack Exchange nezachovává tento zvýrazňovač syntaxe (kromě instalace jeho novějších verzí) a zveřejňování hlášení o chybách nebo požadavků na funkce, které se ho týkají, zde v Meta nebude opraveno ani implementováno.
Než začnete dělat cokoli, ujistěte se , že máte zapnuté správné zvýraznění.
Jak mohu použít zvýraznění syntaxe?
Pokud jsou splněny všechny podmínky v sekci Proč není můj kód správně zvýrazněn? výše, je zvýraznění automaticky spuštěno v blocích kódu na základě značek na otázce. (Viz 4. Zkontrolujte, zda značky u vaší otázky mají zvýraznění syntaxe výše, jak to funguje.) Vložený kód (např. this
) není zvýrazněn.
Je možné výslovně přepsat výchozí zvýrazňovací jazyk používaný na příspěvku s jazykem, který si vyberete, v konkrétním bloku kódu zadáním jazykové nápovědy nad blokem kódu. Toto je podporováno pouze při použití metody formátování kódu pomocí kódu (```
); od implementace CommonMark již není podporováno blokování kódu pomocí metody čtyřprostorového odsazení *:
```lang-or-tag-here code goes here ```
Můžete použít buď kód jazyka , nebo značku název v nápovědě jazyka k aktivaci zvýraznění syntaxe. Níže naleznete kompletní seznam kódů jazyků podporovaných highlight.js.
Například:
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 ```
Pokud nechcete pro zvýraznění syntaxe můžete použít jazyk lang-none
:
```lang-none [code here] ```
Můžete také použít jazykovou nápovědu do všech bloků kódu ve vašem příspěvku, takže nemusíte přidávat nápovědu před každou z nich přidáním komentáře HTML v horní části vašeho příspěvku. Nápověda se poté použije na všechny bloky kódu ve vašem příspěvku, včetně těch, které používají čtyřprostorové odsazení nebo HTML <pre><code>
:
<!-- language-all: lang-or-tag-here -->
Upozorňujeme, že při použití u otázky nepřepíše přepis zvýrazňovacího jazyka u jeho odpovědí; ty budou i nadále ve výchozím nastavení zvýrazněny podle značek otázky.
Jazykové kódy aktuálně dostupné na Stack Exchange
Toto je kompletní seznam všech identifikátorů, které jste lze použít v jazykové nápovědě pro zvýraznění syntaxe. Všechny tyto jazykové nápovědy v každé skupině ukazují na stejný zvýrazňovač. Jiné jazykové aliasy nastavené zvýrazněním.js mohou fungovat, ale Stack Exchange oficiálně podporuje pouze následující identifikátory.
- Výchozí: interpretujte kód a hádejte
lang-default
- Žádné: výslovně nepoužívejte zvýrazňování syntaxe
lang-none
,lang-plaintext
,lang-text
,lang-txt
- Bash
lang-bash
,lang-sh
,lang-zsh
- C, C ++ a další C-lajky
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
- Přejít
lang-go
,lang-golang
- Haskell
lang-hs
,lang-haskell
- HTML, XML, XSL atd.
lang-html
,lang-xml
,lang-xsl
,lang-xhtml
,lang-rss
,lang-atom
,lang-xjb
,lang-xsd
,lang-plist
,lang-wsf
,lang-svg
- Záhlaví HTTP
lang-http
,lang-https
- Ini a 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
- Méně
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
- Šablona PHP
lang-php-template
- Vyrovnávací paměti protokolu
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
- schéma
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
Veškeré jazykové identifikátory použité v příspěvku, které nebudou zvýrazněny souborem.jpe, budou funkčně výchozí lang-default
.
Nápověda: Značky
Můžete zadat libovolnou značku , která na webu existuje, a použije jakýkoli jazykový kód, který je aktuálně přidružen k této značce (což může být buď null (bez nápovědy), výchozí nebo konkrétní jazykový kód).
Mějte na paměti, že ve výchozím nastavení jsou všechny značky začínají kódem jazyka none
. Značky s none
zadaným jako jejich jazykový kód budou ignorovány a vrátit se k lang-default
.
Můžete také použít prosté klíčové slovo none
k ručnímu určení žádného zvýraznění syntaxe, podobně jako při použití lang-none
výše uvedený kód.
* Pro bloky kódu HTML lze stále použít dřívější metodu určení zvýrazňovacího jazyka: vložte komentář HTML <!-- language: lang-or-tag-here -->
před značkami <pre><code>
a bude to fungovat.
Také tento bývalý metoda nebyla úplně odstraněna pro čtyřprostorové odsazené bloky kódu, ale pouze zastaralá. I když bude v současné době stále fungovat na čtyřprostorových odsazených blocích kódu, může / bude odstraněna v budoucnu.
Poznámka pro redaktory:
Nepřidávejte na výše uvedený seznam, pokud si nejste 100% sur e existuje.
Jen proto, že něco napíšete a vypadá se to zvýrazní správně neznamená , že identifikátor v systému skutečně existuje. Pamatujte, že neplatné identifikátory se vrátí zpět na výchozí .
Kromě toho je v dokumentace zvýraznění.js nemusí být ve verzi Stack Exchange souboru highlight.js podporována, protože může být v samostatné moduly, které nemusí být nasazeny na Stack Exchange.
Z těchto důvodů prosím odkazujte na otázku Meta, která potvrdí existenci nápovědy ve vašem souhrnu úprav při přidávání nové nápovědy do seznamu.
Poznámka pro komentátory:
The komentáře k těmto častým dotazům slouží k vyžádání objasnění něčeho, čemu byste v častých dotazech nemuseli rozumět, aby to bylo možné opravit. NEDĚLEJTE , zda budou v budoucnu některé jazyky podporovány. To není otázka, na kterou můžeme odpovědět, protože Stack Exchange tento zvýrazňovač neudržuje. Jazykovou podporu naleznete na stránce highlight.js .
Komentáře
- Neměl by v této odpovědi ' být uveden preference (nikoli pravidlo) pro použití buď kódu jazyka nebo názvu značky (případně u některých kvalifikátorů)? Např. " Upřednostňujte použití X nad Y, pokud Z. " (Poněkud související otázka ohledně MSO (v komentářích) ): Jaký je ' rozdíl mezi dvěma styly formátování kódu (code-fences vs. indented blocks), pokud jde o zvýraznění syntaxe ? )
- a použije jakýkoli jazykový kód, který je aktuálně přidružen k této značce Existuje kdekoli oficiální seznam těchto mapování?
- Část 4, " 4. Zkontrolujte, zda mají značky v otázce zvýraznění syntaxe povoleno " , má všechny informace k vyhledání @JoshGoebel
- @Josh na vaši přímou otázku ' si však nemyslím, že by kdekoli seznam obsahoval všechny značky s přidruženým jazykem. Také to ' nevypadá, že by tyto informace byly přístupné buď pomocí SEDE, ale ' nejsou v tabulce značek.
https://github.com/highlightjs/
nebo stránky SE používají vlastní sady barev? Mohli bychom změnit barvu a tón barev?Language Categories
=All
aThemes
=Stackoverflow Light
je toto téma úplně stejné na stránkách SE? Který jazyk se používá prolang-default
?