Mikä on syntaksikorostaminen ja miten se toimii?

Huomasin, että joskus koodini korostetaan eri väreillä renderöinnin yhteydessä.

  • Mikä on syntaksin korostus?
  • Kuinka se toimii?
  • Miksi koodiani ei korosteta oikein?
  • Kuinka voin ilmoittaa virheestä tai pyytää uutta kieltä?
  • Kuinka käytän syntaksikorostusta?
  • Mitkä kielet ovat tällä hetkellä käytettävissä Stack Exchangessa?

Palaa UKK-hakemisto

kommentit

  • Minulla on kysyttävää: miksi SE-jutut (yksi henkilö) eivät ilmoita muista tällaisista perustavanlaatuisista virheistä? lukee kerran kaikki highlight.js: n luettelot ja voi helposti päättää, onko se vika vai ei. Tämä näyttää todella ei-ammattimaiselta, kun näet tällaisia korostusvikoja … SE valitsi kyseisen kirjaston, joten luulen – SE: n vastuulla on ilmoittaa tällaisia vikoja edelleen osoitteeseen highligt.js – varsinkin tilanteessa, jossa tämä prosessi on monimutkainen (kaikkien täytyy tutustua kaikkiin ongelmaluetteloihin). väärä?
  • Minun on tarkistettava olemassa olevat raportit sivustosta github.com/highlightjs/highlight.js/issues ja mahdollisesti julkaistava uudet virheraportit . Joten minulla on vain vähän kysymyksiä, joita ei ole mainittu täällä. Mitä versiota highlight.js: stä käytetään SE-sivustoissa? Kuinka värit määritetään ennalta? Pohjimmiltaan tiedän / oletan, että CSS-tiedosto huolehtii tästä, kysyn, käyttävätkö SE-sivustot vakiovärejä projektista https://github.com/highlightjs/ tai SE-sivustot omia väripaletteja? Voisimmeko muuttaa värejä ja värejä?
  • Tutkin highlight.js -demoa ja valitsen Language Categories = All ja Themes = Stackoverflow Light ovatko tämä teema täsmälleen sama käytetty SE-sivustoissa? Mitä kieltä käytetään lang-default?

Vastaus

Mitä varten Onko syntaksin korostus?

Syntaksi-korostuksen avulla viestien koodi voidaan korostaa sen kielen perusteella, jolla se on kirjoitettu, jotta se olisi helpompi lukea.

Kuinka se toimii?

Stack Exchangella ei ole omaa syntaksikorostuskonetta. Se käyttää highlight.js , eikä välttämättä käytä kyseisen kirjaston uusinta versiota. Siksi Stack Exchange ei voi käsitellä syntaksin korostamiseen liittyviä vikoja ja ominaisuuspyyntöjä.

Syntaksi-korostus määritetään -tunnisteiden perusteella esikatseluun, kun luot tai muokkaat viestejä heti, kun lopetat kirjoittamisen 5 sekunniksi.

Miksi koodiani ei korosteta oikein?

1. Tarkista, että käyttämäsi sivuston syntaksikorostus on käytössä

Koko luettelo on käytettävissä Metassa . Jos syntaksin korostaminen ei ole käytössä noudata tämän kysymyksen ohjeita.

2. Tarkista, että highlight.js tukee kieltä

Katso luettelo highlight.js-tuetuista kielistä . Jos kielesi ei ole luettelossa, se on luotava highlight.js-projektissa, ennen kuin Stack Exchange voi ottaa sen käyttöön.

Jos kieli on jo luettelossa, mutta sitä ei käytetä Stack Exchangessa, esitä ominaisuuspyyntö Metassa saadaksesi sen käyttöön verkossa.

3. Tarkista, että Stack Exchange käyttää kieltä

Katso highlight-loader.js -tiedosto dev CDN: ssä, avaa suosikkieditorissasi ja etsi kielivihje. Esimerkiksi, hakemalla " dart " vie sinut rivi, joka koostuu hljs.registerLanguage("dart", .... Tämä tarkoittaa, että lang-dart on käytettävissä oleva kielivihje. Haetaan " psh " tai " powershell " ei palauta tuloksia, mikä tarkoittaa, että Stack Exchange -versio highlight.js ei tue psh: tä.

4. Tarkista, että kysymyksen tunnisteissa on syntaksikorostus käytössä

Kulissien takana Stack Exchanges käyttää kysymyksen tunnisteita määrittämään käyttämäsi kielen. Jokaisen tagin ominaisuuksissa on määritetty korostuskieli, tai ei kieltä. Jos on olemassa useampi kuin yksi tunniste, jolla on määritetty korostuskieli tai jos mikään tunnisteista ei ole määritetty, se käyttää oletusarvoa ja antaa highlight.js päättää, mikä kieli on paras käyttää. Sama korostavaa kieltä, jota käytetään kysymyksessä, käytetään myös sen vastauksissa.

Käy kyseisessä tagissa ”s wiki -sivu. Napsauta tagia (kuten " ") ja napsauta sitten " Lisätietoja … ", ja kyseiselle tagille tällä hetkellä käytettävä kielivihje (jos sellainen on) näytetään kohdassa aivan alhaalla , wikin painikkeiden alapuolella:

Koodi kieli (käytetään syntaksin korostamiseen): lang-java

Jos tunnisteessa ei ole korostuskieliä, kun sen pitäisi, luo sivustokohtaisessa sisällönkuvauksessa, jotta sivustosi pyytää sitä. (Vain valvojat voivat vaihtaa tagin korostuskielen.)

Kuinka voin ilmoittaa virheestä tai pyytää uutta kieltä?

Jos se on itse asiassa virhe syntaksin korostimessa, tarkista olemassa olevat raportit ensin selvittääksesi, onko siitä jo ilmoitettu; jos ei ole, mene eteenpäin ja ilmoita siitä siellä. Virheenkorjauksia ja ominaisuuksia, jotka on jo korostanut highlight.js , mutta eivät toimi täällä, odota, sillä uudet highlight.js-versiot otetaan käyttöön sivustoissa ajoitetusti uusinta versiota ei ole vielä otettu käyttöön. (Jos sitä ei ole otettu käyttöön pitkän ajan kuluttua, voit nostaa Metalle ominaisuuspyynnön pyytääksesi uuden version highlight.js: n käyttöönotosta.)

Muista, että Stack Exchange ei ylläpidä tätä syntaksikorostuskykyä (lukuun ottamatta sen uudempien versioiden asentamista), eikä sitä koskevaa virheraporttien tai ominaisuuspyyntöjen lähettäminen Metaan ei korjaa tai toteuta niitä.

Ennen kuin tee mitään, varmista varmista että olet korostanut oikean korostuksen.

Kuinka käytän syntaksikorostusta?

Niin kauan kuin kaikki ehdot Yllä olevan miksi koodiani ei korosteta oikein? -osassa on noudatettu, korostus käynnistyy automaattisesti koodilohkoissa kysymyksen tunnisteiden perusteella. (Katso 4. Tarkista, että Kysymyksesi tunnisteissa on syntaksin korostus käytössä yllä, jotta tämä toimisi.) Inline -koodia (esim. this) ei ole korostettu.

On mahdollista ohittaa nimenomaisesti viestissä käytetyn oletuskorostuskielen valitsemallasi kielellä tietyssä koodilohkossa määrittämällä kielivihje koodilohkon yläpuolelle. Huomaa, että tätä tuetaan vain käytettäessä koodiaidan (```) menetelmää koodin muotoilussa; CommonMark-toteutuksen jälkeen ei enää tueta koodilohkoissa, joissa käytetään neljän välilyönnin menetelmää *:

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

Voit käyttää joko kielikoodia tai tag nimeä kielen vihjeessä aktivoidaksesi syntaksikorostuksen. Alla on täydellinen luettelo highlight.js-tuetuista kielikoodeista.

Esimerkiksi:

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

Jos et halua Jos haluat korottaa syntaksia, voit käyttää lang-none kieltä:

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

Voit myös käyttää kielivihjettä kaikkiin viestin koodilohkoihin, joten sinun ei tarvitse lisätä vihjettä ennen kutakin viestiä lisäämällä HTML-kommentti viestisi yläosaan . Vihje lisätään sitten viestin kaikkiin koodilohkoihin, myös niihin, jotka käyttävät neljän välin luetelmakohtaa tai HTML-koodia <pre><code>:

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

Huomaa, että kun sitä käytetään kysymykseen, se ei korvaa vastausten korostuskielen; ne korostetaan edelleen oletusarvoisesti kysymyksen tunnisteiden mukaan.


Stack Exchangessa tällä hetkellä käytettävissä olevat kielikoodit

Tämä on täydellinen luettelo kaikista tunnisteista, jotka olet voi käyttää kielivihjeessä syntaksin korostamiseen. Kaikki ne kielivihjeet kussakin ryhmässä viittaavat samaan korostimeen. Muut highlight.js: n asettamat kielen aliakset saattavat toimia, mutta Stack Exchange tukee virallisesti vain seuraavia tunnisteita.

  • Oletus: tulkitse koodi ja arvaa lang-default
  • Ei mitään: älä nimenomaisesti käytä mitään syntaksikorostusta lang-none, lang-plaintext, lang-text, lang-txt
  • Bash lang-bash, lang-sh, lang-zsh
  • C, C ++ ja muut C-tykkäykset 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
  • Siirry lang-go, lang-golang
  • Haskell lang-hs, lang-haskell
  • HTML, XML, XSL et ai. lang-html, lang-xml, lang-xsl , lang-xhtml, lang-rss, lang-atom, lang-xjb, lang-xsd, lang-plist, lang-wsf, lang-svg
  • HTTP-otsikot lang-http, lang-https
  • Ini ja 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
  • Vähemmä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
  • Objektiivi-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-malli lang-php-template
  • Protokollapuskurit lang-protobuf
  • Python lang-py, lang-python, lang-gyp, lang-ipython
  • R lang-r
  • rubiini lang-rb, lang-ruby, lang-gemspec, lang-podspec, lang-thor, lang-irb
  • Rust lang-rs, lang-rust
  • Scala lang-scala
  • Kaavio lang-scheme
  • SCSS lang-scss
  • Kuori 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

Kaikki viestissä käytettävät kielitunnisteet, joita highlight.js ei tunnista, ovat toiminnallisesti oletusarvoisesti lang-default.

Vihje: Tunnisteet

Voit määrittää minkä tahansa -tunnisteen , joka on sivustolla, ja se käyttää mitä tahansa kyseiseen tagiin liittyvää kielikoodia (joka voi olla joko null (ei vihjeitä), oletus tai erityinen kielikoodi).

Muista, että oletuksena kaikki tunnisteet alkavat none kielikoodina. Tunnisteet, joiden kielikoodiksi on määritetty none, ohitetaan ja palataan arvoon lang-default.

Voit myös käyttää tavallista none avainsanaa ilman syntaksin korostusta, kuten lang-none -koodi yllä.


* Entistä korostuskielen määritystapaa voidaan silti käyttää HTML-koodilohkoissa: lisää HTML-kommentti <!-- language: lang-or-tag-here --> ennen tageja <pre><code> ja se toimii.

Myös tämä edellinen menetelmää ei ole poistettu kokonaan neljän välin sisennyksillä koodilohkoilla, mutta se on vain vanhentunut. Vaikka se toimii toistaiseksi myös neljän välin sisennyksillä koodilohkoilla, se voidaan / tullaan poistamaan tulevaisuudessa.


Huomautus toimittajille:

Älä lisää yllä olevaan luetteloon, ellet ole 100% sur e se on olemassa.

  • Vain siksi, että kirjoitat jotain sisään ja se näyttää korostettuna oikein ei tarkoita , että tunniste on järjestelmässä. Muista, että virheelliset tunnisteet palaavat takaisin oletus .

  • Lisäksi useita kieliä, jotka on ilmoitettu tuetuiksi

highlight.js -palvelun Stack Exchange -versio ei välttämättä tue

highlight.js: n dokumentaatiota , koska ne saattavat olla erilliset moduulit, joita ei voi käyttää Stack Exchangessa.

Näiden seikkojen vuoksi linkitä metakysymykseen, joka vahvistaa vihjeen olemassaolon muokkausyhteenvedossasi , kun lisäät uuden vihjeen luetteloon.

Huomautus kommentoijille:

tämän usein kysytyn kysymyksen kommentit on tarkoitettu selvittämään jotain, jota et ehkä ymmärrä usein kysytyissä kysymyksissä, jotta se voidaan korjata. ÄLÄ kysy, tuetaanko tiettyjä kieliä tulevaisuudessa. Tämä on ei kysymys, johon voimme vastata, koska Stack Exchange ei ylläpidä tätä korostuskykyä. Käy kielitukea käymällä osoitteessa highlight.js .

Kommentit

  • Pitäisi ' t tässä vastauksessa olla ilmoitettu kohde (ei sääntö) joko kielikoodin tai tagin nimen (mahdollisesti joidenkin määrittelijöiden) käyttämiseen? Esimerkiksi. " Käytä mieluummin X: tä yli Y: n, ellei Z. " (Hieman liittyvä kysymys MSO: sta (kommenteissa ): Mikä ' on ero koodin kahden muotoilutyylin (koodiaidat vs. sisennetyt lohkot) välillä syntaksin korostuksessa ? )
  • ja se käyttää mitä tahansa kyseiseen tunnisteeseen liittyvää kielikoodia Onko näistä kartoituksista virallista luetteloa saatavilla missä tahansa?
  • 4 jakso, " 4. Tarkista, että kysymyksen tunnisteiden syntaksikorostus on käytössä " , on kaikki tiedot saadaksesi selville @JoshGoebel
  • @Josh Suoraan kysymykseesi En usko, että ' uskoo, että missään tällä hetkellä on luettelo , joka sisältää kaikki tunnisteet liittyvällä kielellä. Se ei myöskään ' näytä siltä, että nämä tiedot ovat käytettävissä myös SEDE: n avulla, se ' ei ole tunnisteitaulukossa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Deep Theme Powered by WordPress