Zauważyłem, że czasami mój kod jest podświetlany różnymi kolorami podczas renderowania.
- Co to jest podświetlanie składni?
- Jak to działa?
- Dlaczego mój kod nie jest prawidłowo wyróżniony?
- Jak zgłosić błąd lub poprosić o nowy język?
- Jak używać podświetlania składni?
- Jakie języki są obecnie dostępne na Stack Exchange?
Komentarze
Odpowiedź
Co czy jest podświetlanie składni?
Podświetlanie składni umożliwia podświetlanie kodu w postach na podstawie języka, w którym jest napisany, aby ułatwić czytanie.
Jak to działa?
Wymiana stosów nie ma własnego mechanizmu podświetlania składni. Używa highlight.js i może nie koniecznie korzystać z najnowszej wersji tej biblioteki. Dlatego też żadne błędy i prośby o funkcje dotyczące podświetlania składni nie mogą być obsługiwane przez Stack Exchange.
Podświetlanie składni jest przypisywane na podstawie tagów do podglądu podczas tworzenia lub edytowania postów, gdy tylko przestaniesz pisać przez 5 sekund.
Dlaczego mój kod nie jest poprawnie podświetlony?
1. Sprawdź, czy witryna, której używasz, ma włączone podświetlanie składni
Pełna lista jest dostępna w Meta . Jeśli podświetlanie składni nie jest włączone w witryna postępuj zgodnie z instrukcjami w tym pytaniu.
2. Sprawdź, czy język jest obsługiwany przez highlight.js
Spójrz na lista obsługiwanych języków highlight.js . Jeśli Twojego języka nie ma na liście, musisz go utworzyć w projekcie highlight.js, zanim będzie można go wdrożyć przez Stack Exchange.
Jeśli język jest już na liście, ale nie jest używany na Stack Exchange, zgłoś prośbę o funkcję tutaj w Meta, aby wdrożyć go w sieci.
3. Sprawdź, czy język jest używany przez Stack Exchange
Spójrz na plik highlight-loader.js w dev CDN, otwórz w swoim ulubionym edytorze i wyszukaj wskazówkę dotyczącą języka. Na przykład: wyszukiwanie " rzutki " prowadzi do linia składająca się z hljs.registerLanguage("dart", ...
. Oznacza to, że lang-dart
jest dostępną wskazówką dotyczącą języka. Wyszukiwanie " psh " lub " powershell " nie zwraca żadnych wyników, co oznacza, że psh nie jest obsługiwane przez wersjęlight.js stosowaną w Stack Exchange.
4. Sprawdź, czy tagi w pytaniu mają włączone podświetlanie składni
Za kulisami Stack Exchanges używa tagów w pytaniu do określenia używanego języka. Każdy tag ma język podświetlania określony we właściwościach, lub brak języka. Jeśli istnieje więcej niż jeden znacznik z określonym językiem podświetlania lub jeśli żaden z tagów nie ma określonego, używany jest domyślny i pozwala wyróżnić.js wywnioskować, który język jest najlepszy do użycia. To samo język wyróżnienia użyty w pytaniu jest również używany w odpowiedziach.
Odwiedź ten tag „s wiki . Kliknij tag (na przykład " javascript "), a następnie kliknij " Dowiedz się więcej … ", a wskazówka dotycząca języka (jeśli istnieje), która jest aktualnie używana dla tego tagu, zostanie wyświetlona w na samym dole , pod przyciskami wiki:
Jeśli tag nie ma określonego języka podświetlania, kiedy powinien, utwórz żądanie funkcji w meta witryny, aby o to poprosić (tylko moderatorzy mogą zmienić język podświetlania tagu).
Jak zgłosić błąd lub poprosić o nowy język?
Jeśli rzeczywiście jest to błąd w samym znaczniku składni, sprawdź istniejące raporty najpierw, aby sprawdzić, czy zostało to już zgłoszone; jeśli tak się nie stało, zgłoś to tam. W przypadku poprawek błędów i funkcji, które zostały już zaimplementowane przez highlight.js , ale tutaj nie działają, proszę czekać, ponieważ nowe wersje highlight.js są wdrażane w tych witrynach zgodnie z harmonogramem, a najnowsza wersja nie została jeszcze wdrożona. (Jeśli nie został wdrożony po dłuższym czasie, możesz zgłosić żądanie funkcji na Meta, aby zażądać wdrożenia nowej wersji highlight.js).
Pamiętaj, że Stack Exchange nie obsługuje tego wyróżniacza składni (poza instalowaniem jego nowszych wersji), a publikowanie raportów o błędach lub próśb o dodanie funkcji tutaj na Meta nie spowoduje ich naprawienia ani zaimplementowania.
Zanim zrób cokolwiek, upewnij się , że masz włączone poprawne podświetlanie.
Jak używać podświetlania składni?
O ile wszystkie warunki w sekcji Dlaczego mój kod nie jest poprawnie podświetlony? powyżej są spełnione, podświetlenie rozpocznie się automatycznie w blokach kodu na podstawie tagów w pytaniu. (Zobacz 4. Sprawdź, czy tagi w Twoim pytaniu mają włączone wyróżnianie składni powyżej, aby dowiedzieć się, jak to działa.) Kod wbudowany (np. this
) nie jest podświetlony.
Możliwe jest jawnie zastąpić domyślny język podświetlania używany w poście wybranym językiem w określonym bloku kodu, podając wskazówkę językową nad blokiem kodu. Zwróć uwagę, że jest to obsługiwane tylko w przypadku korzystania z metody formatowania kodu za pomocą ogrodzenia kodu (```
); od implementacji CommonMark , robienie tego na blokach kodu przy użyciu metody wcięcia z czterema spacjami nie jest już obsługiwane *:
```lang-or-tag-here code goes here ```
Możesz użyć kodu języka lub tagu nazwa we wskazówce językowej, aby włączyć podświetlanie składni. Poniżej znajduje się pełna lista kodów języków obsługiwanych przez highlight.js.
Na przykład:
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 ```
Jeśli nie chcesz aby mieć dowolne podświetlanie składni, możesz użyć lang-none
języka:
```lang-none [code here] ```
Możesz również zastosować wskazówkę dotyczącą języka aby wszystkie bloki kodu w swoim poście, więc nie musisz dodawać podpowiedzi przed każdym z nich, dodając komentarz HTML u góry górnej postu. Podpowiedź zostanie następnie zastosowana do wszystkich bloków kodu w Twoim poście, w tym tych, które używają wcięcia z czterema spacjami lub kodu HTML <pre><code>
:
<!-- language-all: lang-or-tag-here -->
Zauważ, że użyte w pytaniu, nie zastępuje języka podświetlenia w odpowiedziach; Będą one nadal domyślnie podświetlone zgodnie z tagami pytania.
Kody języków aktualnie dostępne w Stack Exchange
To jest pełna lista wszystkich identyfikatorów, można używać we wskazówkach językowych do podświetlania składni. Wszystkie te wskazówki językowe w każdej grupie wskazują na ten sam znacznik. Inne aliasy językowe ustawione przez highlight.js mogą działać, ale tylko następujące identyfikatory są oficjalnie obsługiwane przez Stack Exchange.
- Domyślnie: interpretuj kod i odgaduj
lang-default
- Brak: jawnie nie używaj podświetlania składni
lang-none
,lang-plaintext
,lang-text
,lang-txt
- Bash
lang-bash
,lang-sh
,lang-zsh
- C, C ++ i inne lubiane przez 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
- Idź
lang-go
,lang-golang
- Haskell
lang-hs
,lang-haskell
- HTML, XML, XSL i in.
lang-html
,lang-xml
,lang-xsl
,lang-xhtml
,lang-rss
,lang-atom
,lang-xjb
,lang-xsd
,lang-plist
,lang-wsf
,lang-svg
- Nagłówki 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
- Mniej
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
- Szablon PHP
lang-php-template
- Bufory protokołów
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
- Schemat
lang-scheme
- SCSS
lang-scss
- Powłoka
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
Wszelkie identyfikatory języka użyte w poście, które nie zostaną rozpoznane przez highlight.js, będą domyślnie funkcjonalnie zmieniać na lang-default
.
Wskazówka: tagi
Możesz określić dowolny tag istniejący w witrynie i użyje on dowolnego kodu języka, który jest aktualnie powiązany z tym tagiem (może to być null (bez wskazówki), default lub określony kod języka).
Pamiętaj, że domyślnie wszystkie tagi zaczynają się od none
jako kodu języka. Tagi z none
określonym jako kod języka zostaną zignorowane i przywrócone do lang-default
.
Możesz również użyć zwykłego słowa kluczowego none
, aby ręcznie określić brak podświetlania składni, podobnie jak przy użyciu lang-none
powyższy kod.
* Poprzednia metoda określania języka podświetlania może być nadal używana dla bloków kodu HTML: umieść komentarz HTML <!-- language: lang-or-tag-here -->
przed tagami <pre><code>
i będzie działać.
Poza tym ta pierwsza Metoda nie została całkowicie usunięta dla bloków kodu z wcięciami z czterema spacjami, ale jest po prostu przestarzała. Chociaż będzie nadal działać na blokach kodu z wcięciami z czterema spacjami, może / zostanie usunięta w przyszłości.
Uwaga dla redaktorów:
Nie dodawaj do powyższej listy, chyba że jesteś w 100% surowy e istnieje.
Tylko dlatego, że coś wpisujesz i wygląda na to, że jest podświetlone poprawnie nie oznacza, że identyfikator faktycznie istnieje w systemie. Pamiętaj, że nieprawidłowe identyfikatory powracają do wartości domyślnych .
Ponadto kilka języków wskazanych jako obsługiwane w highlight.js może w rzeczywistości nie być obsługiwana przez highlight.js w wersji Stack Exchange, ponieważ mogą znajdować się w oddzielne moduły, których nie można wdrożyć na Stack Exchange.
Z tego powodu proszę podać link do pytania Meta, które potwierdza istnienie wskazówki w podsumowaniu edycji podczas dodawania nowej wskazówki do listy.
Uwaga dla komentujących:
komentarze do tego FAQ służą do prośby o wyjaśnienie czegoś, czego możesz nie rozumieć w FAQ, aby można było to naprawić. Prosimy NIE pytać, czy określone języki będą obsługiwane w przyszłości. To jest nie pytanie, na które możemy odpowiedzieć, ponieważ Stack Exchange nie obsługuje tego wyróżnienia. Odwiedź stronę highlight.js , aby uzyskać pomoc językową.
Komentarze
- Nie powinno ' t w tej odpowiedzi powinna znajdować się wskazana preference (nie reguła) za użycie kodu języka lub nazwy tagu (być może z pewnymi kwalifikatorami)? Na przykład. " Wolę używać X zamiast Y, chyba że Z. " (Dość powiązane pytanie w MSO (w komentarzach ): Jaka ' jest różnica między dwoma stylami formatowania kodu (ogrodzenia kodu a bloki wcięte) w zakresie podświetlania składni ? )
- i użyje dowolnego kodu języka, który jest aktualnie powiązany z tym tagiem Czy jest gdzieś dostępna oficjalna lista tych mapowań?
- Sekcja 4, " 4. Sprawdź, czy tagi w pytaniu mają włączone podświetlanie składni " , czy zawiera wszystkie informacje potrzebne do znalezienia @JoshGoebel
- @Josh Do Twojego bezpośredniego pytania , Nie ' nie sądzę jednak, aby gdziekolwiek obecnie istnieje lista zawierająca wszystkie tagi z powiązanym językiem. Nie ' nie wygląda na to, żeby te informacje były dostępne za pomocą SEDE, ale ' nie ma w tabeli tagów.
https://github.com/highlightjs/
, czy witryny SE używają własnych zestawów kolorów? Czy moglibyśmy zmienić kolor i odcień kolorów?Language Categories
=All
iThemes
=Stackoverflow Light
czy ten motyw jest dokładnie taki sam, jak używany w witrynach SE? W jakim językulang-default
?