Mi a szintaktikai kiemelés és hogyan működik?

Észrevettem, hogy a kódomat rendereléskor néha különféle színekkel emelik ki.

  • Mi a szintaktikai kiemelés?
  • Hogyan működik?
  • Miért nincs kiemelve a kódom helyesen?
  • Hogyan jelenthetem a hibát, vagy új nyelvet kérhetek?
  • Hogyan használhatom a szintaxis kiemelését?
  • Mely nyelvek érhetők el jelenleg a Stack Exchange-en?

Vissza GYIK index

Hozzászólások

  • Kérdésem van: miért nem jelentenek be az SE dolgai (egy személy) további ilyen alapvető hibákat? egyszer elolvassa a highlight.js összes kiadási listáját, és könnyen eldöntheti, hogy hibás-e vagy sem. Ez valóban nem professzionálisnak tűnik, amikor ilyen kiemelkedő hibákat lát … Az SE ezt a könyvtárat választotta, úgyhogy szerintem – az SE felelőssége jelenteni az ilyen hibák tovább a highligt.js-re – különösen abban az esetben, ha ez a folyamat bonyolult (mindenkinek meg kell ismernie az összes kérdéslistát). rossz?
  • Meg kell vizsgálnom a github.com/highlightjs/highlight.js/issues meglévő jelentéseit, és esetleg új hibajelentéseket kell közzétennem . Tehát kevés kérdésem van, amelyet itt nem említettem. A highlight.js melyik verzióját használják az SE webhelyein? Hogyan vannak előre meghatározva a színek? Alapvetően tudom / feltételezem, hogy ezt a CSS fájl karbantartja, megkérdezem, hogy az SE Sites szabványos színeket használ-e a https://github.com/highlightjs/ projektből, vagy az SE Sites saját színkészleteket használ? Megváltoztathatnánk a színt és a színeket?
  • Megnézem a highlight.js bemutatót , majd a Language Categories = All és Themes = Stackoverflow Light pontosan ez a téma használt az SE webhelyeken? Melyik nyelv használatos a lang-default kifejezéshez?

Válasz

Mi a szintaxis kiemelése?

A szintaxis kiemelés lehetővé teszi, hogy a bejegyzésekben lévő kód kiemelhető legyen az általa írt nyelv alapján, hogy könnyebben olvasható legyen.

Hogyan működik?

A Stack Exchange nem rendelkezik saját szintaxis kiemelő motorral. highlight.js , és nem feltétlenül használja az adott könyvtár legújabb kiadását. Ezért a Stack Exchange nem képes kezelni a szintaxis kiemelésével kapcsolatos hibákat és szolgáltatáskéréseket.

A szintaktikai kiemelés a címkék alapján hozzárendelésre kerül az előnézethez, amikor a bejegyzéseket 5 másodpercre abbahagyja.

Miért nincs megfelelően kiemelve a kódom?

1. Ellenőrizze, hogy az Ön által használt webhelyen engedélyezve van-e a szintaxis kiemelés

A teljes lista elérhető a Metán . Ha a szintaxis kiemelése nincs engedélyezve a egy webhely kövesse a kérdésben található utasításokat.

2. Ellenőrizze, hogy a highlight.js

támogatja-e a nyelvet.

Nézze meg a A highlight.js által támogatott nyelvek listája . Ha a nyelved nincs a listán, akkor azt a highlight.js projekten belül kell létrehozni, mielőtt a Stack Exchange telepíthetné.

Ha egy a nyelv már szerepel a listán, de a Stack Exchange-en nem használják, kérjük, tegyen fel egy szolgáltatáskérést itt a Metára, hogy telepítse a hálózatra.

3. Ellenőrizze, hogy a Stack Exchange használja-e a nyelvet

Nézze meg a fejlesztői CDN-en a highlight-loader.js fájlt, nyissa meg kedvenc szerkesztőjében, és keresse meg a nyelvi tippeket. Például: " dart keresése " hljs.registerLanguage("dart", ... sorból áll. Ez azt jelenti, hogy az lang-dart elérhető nyelvtipp. " psh " vagy " powershell " nem ad eredményt, ami azt jelenti, hogy a psh-t nem támogatja a highlight.js Stack Exchange verziója.

4. Ellenőrizze, hogy a kérdés címkéin engedélyezett-e a szintaxis kiemelés

A kulisszák mögött a Stack Exchanges a kérdés címkéit használja a használt nyelv meghatározásához. Minden címke tulajdonságaiban meg van jelölve egy kiemelő nyelv, vagy nincs nyelv. Ha egynél több címke van megadva kiemelő nyelvvel, vagy ha egyik címkének sincs megadva, akkor alapértelmezett értéket használ, és lehetővé teszi a highlight.js számára, hogy melyik nyelvet használja a legjobban. a kérdésre használt nyelv kiemelése a válaszaiban is használatos.

Látogassa meg azt a “s wiki oldal. Kattintson egy címkére (például " "), majd kattintson a " További információ … ", és a címkéhez jelenleg használt nyelvi tipp (ha van ilyen) a nagyon alul , a wiki gombjai alatt:

Kód nyelv (a szintaxis kiemelésére használatos): lang-java

Ha a címkének nincs megadva kiemelő nyelve, amikor kellene, akkor hozza létre a webhelyenkénti metán, hogy webhelye kérje. (Csak a moderátorok változtathatják meg a címke kiemelésének nyelvét.)

Hogyan jelenthetem a hibát, vagy új nyelvet kérhetek?

Ha valóban hibát jelent maga a szintaktikai kiemelő, akkor ellenőrizze, hogy vannak-e meglévő jelentések először megnézni, hogy jelentették-e már; ha még nem történt meg, folytassa és jelentse ott. Olyan hibajavításokért és funkciókért, amelyeket a highlight.js már megvalósított , de itt nem működnek, kérjük, várjon, mert a highlight.js új verziói ütemezetten kerülnek telepítésre a webhelyeken, és a a legújabb verzió még nem került telepítésre. (Ha hosszú ideig nem került telepítésre, akkor felkérhet egy funkciókérést a Meta-ban, hogy kérje a highlight.js új verziójának telepítését.)

Ne feledje, hogy a Stack Exchange nem kezeli ezt a szintaxis kiemelőt (eltekintve annak újabb verzióinak telepítésétől), és az ezzel kapcsolatos hibajelentések vagy funkciókérések itt a Meta-ra történő közzététele nem fogja őket kijavítani vagy végrehajtani.

Mielőtt tegyen bármit, győződjön meg arról, hogy be van-e kapcsolva a megfelelő kiemelés.

Hogyan használhatom a szintaxis kiemelését?

Mindaddig, amíg az összes feltétel a fenti Miért nincs a kódom kiemelve helyesen? szakasz elégedett, a kiemelés automatikusan bekapcsol a kódblokkokban a kérdés címkéi alapján. (Lásd: 4. Ellenőrizze, hogy a A kérdésed címkéinek fentebb engedélyezve van a szintaxis kiemelés e ennek működéséhez.) A Inline kód (pl. this) nincs kiemelve.

Lehetséges kifejezetten felülírja a bejegyzésben használt alapértelmezett kiemelő nyelvet az Ön által kiválasztott nyelvvel egy adott kódblokkban, megadva a nyelvblokkot a kódblokk fölött. Vegye figyelembe, hogy ez csak akkor támogatott, ha a kódkerítés (```) kódformázási módot használja; a CommonMark implementációja óta a négy szóközös behúzási módszerrel végrehajtott kódblokkoknál ez már nem támogatott *:

```lang-or-tag-here code goes here ``` 

Használhat nyelvi kódot vagy címke nevet a nyelvi tippben a szintaxis kiemelés aktiválásához. Az alábbiakban olvashatja el a highlight.js által támogatott nyelvi kódok teljes listáját.

Például:

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 ``` 

Ha nem szeretné bármilyen szintaxis kiemeléshez használhatja a lang-none nyelvet:

```lang-none [code here] ``` 

Alkalmazhat nyelvi tippet is az összes kód blokkolásához a bejegyzésében, ezért nem kell minden egyes előtt tippet adnia, ha HTML-megjegyzést ad a bejegyzés tetejéhez . A tippet ezután a bejegyzés összes kódblokkjára alkalmazzuk, beleértve azokat is, amelyek négytagú behúzást vagy HTML-t használnak <pre><code>:

<!-- language-all: lang-or-tag-here --> 

Ne feledje, hogy egy kérdésnél használva nem nem írja felül a kiemelés nyelvét a válaszaiban; ezeket alapértelmezés szerint továbbra is kiemelik a kérdés címkéi szerint.


A Stack Exchange szolgáltatásban jelenleg elérhető nyelvi kódok

Ez minden egyes azonosító teljes listája használhatja a nyelvi tippekben a szintaxis kiemeléséhez. Az egyes csoportokban található összes nyelvi tipp ugyanarra a kiemelőre mutat. Lehetséges, hogy a highlight.js által beállított egyéb nyelvű álnevek működnek, de a Stack Exchange csak a következő azonosítókat támogatja hivatalosan.

  • Alapértelmezés: értelmezze a kódot, és kitalálja lang-default
  • Nincs: kifejezetten ne használjon semmilyen szintaxist, amely kiemeli a lang-none, lang-plaintext, lang-text, lang-txt
  • Bash lang-bash, lang-sh, lang-zsh
  • C, C ++ és egyéb C-szerű 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 és mtsai. lang-html, lang-xml, lang-xsl , lang-xhtml, lang-rss, lang-atom, lang-xjb, lang-xsd, lang-plist, lang-wsf, lang-svg
  • HTTP fejlécek lang-http, lang-https
  • Ini és 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
  • Kevesebb lang-less
  • Lisp lang-lisp
  • Lua lang-lua
  • Makefile lang-makefile, lang-mk, lang-mak
  • Jelölés lang-markdown, lang-md, lang-mkdown, lang-mkd
  • MATLAB lang-matlab
  • Objektív-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 sablon lang-php-template
  • Protokoll pufferek lang-protobuf
  • Python lang-py, lang-python, lang-gyp, lang-ipython
  • R lang-r
  • Rubin lang-rb, lang-ruby, lang-gemspec, lang-podspec, lang-thor, lang-irb
  • Rust lang-rs, lang-rust
  • Scala lang-scala
  • rendszer 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

A bejegyzésben használt bármely nyelvazonosító, amelyet a highlight.js nem ismer fel, funkcionálisan alapértelmezés szerint lang-default.

Tipp: Címkék

Megadhat bármely, a webhelyen létező címkét , és bármilyen nyelvi kódot fog használni, amely a címkéhez jelenleg társítva van (amely lehet akár null (nincs tipp), alapértelmezett vagy egy specifikus nyelvi kód).

Ne feledje, hogy alapértelmezés szerint az összes a címkék none nyelvű nyelvkódként indulnak. A none nyelvkódként megadott címkéket figyelmen kívül hagyják és visszaállítják a következőre: lang-default.

A sima none kulcsszót használhatja a szintaxis kiemelésének manuális megadására is, hasonlóan a lang-none kód fent.


* A kiemelő nyelv megadásának korábbi módja továbbra is használható HTML kódblokkokhoz: HTML megjegyzés elhelyezése <!-- language: lang-or-tag-here --> a <pre><code> címkék előtt, és működni fog.

Ez az előbbi is A metódust a négy szóközű behúzott kódblokkoknál nem távolították el teljesen, de csak elavulták. Bár egyelőre még működni fog négy szóközű behúzott kódblokkoknál, a jövőben eltávolíthatják / eltávolíthatják.


Megjegyzés a szerkesztőknek:

Kérjük, ne adja hozzá a fenti listára, hacsak nem vagy 100% -os e létezik.

  • Csak azért, mert beírsz valamit, és úgy néz ki helyesen nem azt jelenti, hogy az azonosító valóban létezik a rendszerben. Ne feledje, hogy az érvénytelen azonosítók visszaállnak alapértelmezett re.

  • Ezenkívül számos olyan nyelv, amelyet támogatottként jeleznek a highlight.js dokumentációját valószínűleg nem támogatja a highlight.js Stack Exchange-verziója, mivel ezek lehetnek külön modulok, amelyek nem telepíthetők a Stack Exchange-en.

Ezen pontok miatt kérjük, linkeljen a Meta kérdésre, amely megerősíti egy utalás létezését a szerkesztési összefoglalóban , amikor új tippet ad a listához.

Megjegyzés a hozzászólókhoz:

A GYIK-vel kapcsolatos megjegyzések annak tisztázására vonatkoznak, amelyet esetleg nem ért a GYIK-ben, hogy javítható legyen. Kérjük, NE ne kérdezze meg, hogy a jövőben támogatnak-e bizonyos nyelveket. Ez nem egy kérdés, amelyre megválaszolhatjuk, mert a Stack Exchange nem tartja karban ezt a kiemelőt. Nyelvi támogatásért látogasson el a highlight.js oldalra.

Megjegyzések

  • Nem kellene ' t itt feltüntetni a preferenciát (nem szabály) vagy nyelvkód vagy címke neve használatához (esetleg néhány minősítővel)? Például. " Inkább használja az X-et Y felett, kivéve, ha Z. " (Kissé kapcsolódó kérdés az MSO-val kapcsolatban (kommentekben) ): Mi ' s különbség a két kódformázási stílus (kódkerítések vs behúzott blokkok) között a szintaxis kiemelésével kapcsolatban ? )
  • és bármilyen, a címkéhez társított nyelvi kódot fog használni Van-e bárhol hivatalos felsorolás ezekről a leképezésekről?
  • 4. szakasz, " 4. Ellenőrizze, hogy a kérdés címkéinek szintaxis kiemelése engedélyezve van-e " , rendelkezik-e minden információval a @JoshGoebel
  • @Josh közvetlen kérdéséhez , Nem hiszem, hogy bárhol létezne lista , amely jelenleg az összes társított nyelvű címkét tartalmazza. Nem úgy néz ki, hogy ' úgy sem, hogy ez az információ a SEDE használatával is elérhető, ' nem szerepel a címkék táblázatban.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Deep Theme Powered by WordPress