Quest-ce que la coloration syntaxique et comment ça marche?

Jai remarqué que parfois mon code est mis en évidence dans des couleurs différentes lors du rendu.

  • Quest-ce que la coloration syntaxique?
  • Comment ça marche?
  • Pourquoi mon code nest-il pas mis en évidence correctement?
  • Comment signaler un bogue ou demander une nouvelle langue?
  • Comment utiliser la coloration syntaxique?
  • Quelles langues sont actuellement disponibles sur Stack Exchange?

Revenir à Index de la FAQ

Commentaires

  • Jai une question: pourquoi SE truc (une personne) ne rapportera pas dautres bogues fondamentaux? Cette personne lira une fois toute la liste des numéros de highlight.js et pourra facilement décider quil sagit dun bogue ou non. Cela semble vraiment non professionnel quand vous voyez de tels bogues en surbrillance … Le SE a choisi cette bibliothèque donc je pense – cest la responsabilité de SE de signaler ces bogues suite à highligt.js – en particulier dans les situations où ce processus est compliqué (tout le monde doit connaître toute la liste des problèmes). faux?
  • Je dois vérifier les rapports existants sur github.com/highlightjs/highlight.js/issues et éventuellement publier de nouveaux rapports de bogue . Jai donc quelques questions non mentionnées ici. Quelle version de highlight.js est utilisée sur les sites SE? Comment les couleurs sont-elles prédéfinies? Fondamentalement, je sais / suppose que cela est maintenu par le fichier CSS, je demande est-ce que les sites SE utilisent les couleurs standard du projet https://github.com/highlightjs/ ou les sites SE utilisent-ils leurs propres jeux de couleurs? Pouvons-nous changer la couleur et le ton des couleurs?
  • Je regarde la démo highlight.js puis je sélectionne Language Categories = All et Themes = Stackoverflow Light sont ce thème exactement le même utilisé sur les sites SE? Quelle langue est utilisée pour lang-default?

Réponse

Quoi la coloration syntaxique?

La coloration syntaxique permet au code dans les articles dêtre mis en évidence en fonction de la langue dans laquelle il est écrit, pour le rendre plus facile à lire.

Comment ça marche?

Stack Exchange ne dispose pas de son propre moteur de coloration syntaxique. Il utilise highlight.js , et nutilise pas nécessairement la dernière version de cette bibliothèque. Par conséquent, les bogues et demandes de fonctionnalités concernant la coloration syntaxique ne peuvent pas être traités par Stack Exchange.

La mise en surbrillance de la syntaxe est attribuée, en fonction des balises , à laperçu lors de la création ou de la modification de messages dès que vous arrêtez de taper pendant 5 secondes.

Pourquoi mon code nest-il pas correctement mis en évidence?

1. Vérifiez que la coloration syntaxique du site que vous utilisez est activée

La liste complète est disponible sur Meta . Si la coloration syntaxique nest pas activée sur un site suivez les instructions de cette question.

2. Vérifiez que la langue est prise en charge par highlight.js

Regardez le liste des langues prises en charge par highlight.js . Si votre langue ne figure pas dans la liste, elle doit être créée dans le projet highlight.js avant de pouvoir être déployée par Stack Exchange.

Si un la langue est déjà sur la liste mais nest pas utilisée sur Stack Exchange, veuillez faire une demande de fonctionnalité ici sur Meta pour quelle soit déployée sur le réseau.

3. Vérifiez que la langue est utilisée par Stack Exchange

Consultez le fichier highlight-loader.js sur le CDN de développement, ouvrez-le dans votre éditeur préféré et recherchez lindication de langue. Par exemple, la recherche de " dart " vous amène à ligne composée de hljs.registerLanguage("dart", .... Cela signifie que lang-dart est un indice de langue disponible. Recherche de " psh " ou " powershell " ne renvoie aucun résultat, ce qui signifie que psh nest pas pris en charge par la version Stack Exchange de highlight.js.

4. Vérifiez que la coloration syntaxique des balises de la question est activée

Dans les coulisses, Stack Exchanges utilise les balises de la question pour déterminer la langue que vous utilisez. Chaque balise a une langue de mise en évidence spécifiée dans ses propriétés, ou aucune langue. Si plusieurs balises ont une langue de surbrillance spécifiée, ou si aucune des balises nen a une spécifiée, il utilise une valeur par défaut et permet à highlight.js de déduire quelle est la meilleure langue à utiliser. La même la mise en surbrillance de la langue utilisée sur la question est également utilisée sur ses réponses.

Visitez cette balise « s page wiki . Cliquez sur une balise (telle que " "), puis cliquez sur " En savoir plus … ", et lindication de langue (le cas échéant) qui est actuellement utilisée pour cette balise saffichera au tout en bas , sous les boutons du wiki:

Code language (utilisé pour la coloration syntaxique): lang-java

Si la balise na pas de langue de surbrillance spécifiée quand elle le devrait, créez une sur la méta par site pour que votre site le demande. (Seuls les modérateurs peuvent changer la langue de mise en évidence dune balise.)

Comment signaler un bogue ou demander une nouvelle langue?

Sil sagit effectivement dun bogue dans le surligneur de syntaxe lui-même, recherchez rapports existants dabord pour voir sil a déjà été signalé; sil ne la pas été, allez-y et signalez-le ici. Pour les corrections de bogues et les fonctionnalités qui ont déjà été implémentées par highlight.js mais qui ne fonctionnent pas ici, veuillez patienter, car de nouvelles versions de highlight.js sont déployées sur les sites de manière planifiée, et le la dernière version na pas encore été déployée. (Sil na pas été déployé après une longue période, vous pouvez faire une demande de fonctionnalité sur Meta pour demander quune nouvelle version de highlight.js soit déployée.)

Gardez à lesprit que Stack Exchange ne maintient pas ce surligneur de syntaxe (mis à part linstallation de versions plus récentes de celui-ci), et publier des rapports de bogues ou des demandes de fonctionnalités le concernant ici sur Meta ne les corrigera pas ou ne les implémentera pas.

Avant de vous faites quoi que ce soit, assurez-vous assurez que vous avez activé la mise en évidence correcte.

Comment utiliser la coloration syntaxique?

Tant que toutes les conditions dans la section Pourquoi mon code n’est-il pas mis en surbrillance correctement? ci-dessus sont satisfaits, la mise en surbrillance se déclenchera automatiquement sur les blocs de code en fonction des balises de la question. (Voir 4. Vérifiez que le Les balises sur votre question ont la coloration syntaxique activée ci-dessus pour savoir comment cela fonctionne.) Le code Inline (par exemple this) nest pas mis en évidence.

Il est possible de remplacer explicitement la langue de surlignage par défaut utilisée sur le message par la langue de votre choix dans un bloc de code spécifique, en spécifiant une indication de langue au-dessus du bloc de code. Notez que cela nest pris en charge que lors de lutilisation de la méthode de formatage de code (```); à partir de la implémentation de CommonMark , le faire sur des blocs de code à laide de la méthode dindentation à quatre espaces nest plus pris en charge *:

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

Vous pouvez utiliser un code de langue ou un nom de balise dans le conseil de langue pour activer la coloration syntaxique. Voir ci-dessous pour la liste complète des codes de langue pris en charge par highlight.js.

Par exemple:

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

Si vous ne le souhaitez pas pour mettre en évidence nimporte quelle syntaxe, vous pouvez utiliser la langue lang-none:

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

Vous pouvez également appliquer un indice de langue à tous les blocs de code dans votre message, vous navez donc pas à ajouter un indice avant chacun deux, en ajoutant un commentaire HTML en haut de votre message. Lindication sera ensuite appliquée à tous blocs de code de votre message, y compris ceux qui utilisent un retrait de quatre espaces ou HTML <pre><code>:

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

Notez que lorsquil est utilisé sur une question, il ne remplace pas la langue de surlignage sur ses réponses; ceux-ci seront toujours mis en évidence par défaut selon les balises de la question.


Codes de langue actuellement disponibles sur Stack Exchange

Ceci est une liste complète de chaque identifiant que vous peut être utilisé dans lindicateur de langue pour la coloration syntaxique. Tous ces indicateurs de langue de chaque groupe pointent vers le même surligneur. Dautres alias de langue définis par highlight.js peuvent fonctionner, mais seuls les identificateurs suivants sont officiellement pris en charge par Stack Exchange.

  • Par défaut: interpréter le code et deviner lang-default
  • Aucun: nutilisez explicitement aucune coloration syntaxique lang-none, lang-plaintext, lang-text, lang-txt
  • Bash lang-bash, lang-sh, lang-zsh
  • C, C ++ , et autres C-likes 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
  • Aller lang-go, lang-golang
  • Haskell lang-hs, lang-haskell
  • HTML, XML, XSL, et al. lang-html, lang-xml, lang-xsl , lang-xhtml, lang-rss, lang-atom, lang-xjb, lang-xsd, lang-plist, lang-wsf, lang-svg
  • En-têtes HTTP lang-http, lang-https
  • Ini et 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
  • Moins 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
  • Modèle PHP lang-php-template
  • Tampons de protocole 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
  • Rouille 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

Tous les identifiants de langue utilisés dans un article qui ne sont pas reconnus par highlight.js seront fonctionnellement par défaut à lang-default.

Indice: Tags

Vous pouvez spécifier nimporte quelle balise qui existe sur le site, et elle utilisera le code de langue actuellement associé à cette balise (qui peut être soit null (aucun indice), default ou un code de langue spécifique ).

Gardez à lesprit que par défaut, tout les balises commencent par none comme code de langue. Les balises avec none spécifié comme code de langue seront ignorées et reviendront à lang-default.

Vous pouvez également utiliser le simple mot-clé none pour spécifier manuellement aucune coloration syntaxique, similaire à lutilisation de lang-none code ci-dessus.


* Lancienne méthode de spécification dun langage de surlignage peut toujours être utilisée pour les blocs de code HTML: placez un commentaire HTML <!-- language: lang-or-tag-here --> avant les balises <pre><code> et cela fonctionnera.

Aussi, cet ancien La méthode na pas été complètement supprimée pour les blocs de code en retrait de quatre espaces, mais simplement obsolète. Même si elle fonctionnera encore pour le moment sur des blocs de code en retrait de quatre espaces, elle pourra / sera supprimée à lavenir.


Note aux éditeurs:

Veuillez ne pas ajouter à la liste ci-dessus sauf si vous êtes à 100% sur e il existe.

  • Simplement parce que vous tapez quelque chose et quil ressemble est mis en évidence correctement ne signifie pas que lidentifiant existe réellement dans le système. Noubliez pas que les identifiants non valides reviennent à la valeur par défaut .

  • En outre, plusieurs langues indiquées comme prises en charge dans highlight.js peut ne pas être réellement prise en charge par la version Stack Exchange de highlight.js , car ils peuvent lêtre dans modules séparés qui ne peuvent pas être déployés sur Stack Exchange.

Pour ces raisons, veuillez créer un lien vers la question Meta qui confirme lexistence dun indice dans votre résumé de modification lors de lajout dun nouvel indice à la liste.

Remarque aux commentateurs:

Le Les commentaires sur cette FAQ sont destinés à demander des éclaircissements sur quelque chose que vous ne comprenez peut-être pas dans la FAQ afin de pouvoir le corriger. Veuillez NE PAS demander si certaines langues seront prises en charge à lavenir. Cest pas une question à laquelle nous pouvons répondre car Stack Exchange ne gère pas ce surligneur. Consultez highlight.js pour la prise en charge des langues.

Commentaires

  • Ne devrait ' quil y ait une préférence indiquée (pas une règle) ici dans cette réponse pour utiliser un code de langue ou un nom de balise (éventuellement avec certains qualificatifs)? Par exemple. " Préfère utiliser X plutôt que Y, à moins que Z. " (Question un peu liée sur MSO (dans les commentaires ): Quelle ' est la différence entre les deux styles de formatage de code (code-fences vs blocs indentés) concernant la coloration syntaxique ? )
  • et il utilisera le code de langue actuellement associé à cette balise Existe-t-il une liste officielle de ces mappages disponible nimporte où?
  • Section 4, " 4. Vérifiez que les balises de la question ont la coloration syntaxique activée " , a toutes les informations pour savoir @JoshGoebel
  • @Josh À votre question directe , Je ne ' pas croire quil existe une liste nimporte où contenant actuellement toutes les balises avec la langue associée. De plus, ' ne semble pas que ces informations soient accessibles à laide de SEDE, elles ' ne figurent pas dans le tableau des balises.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Deep Theme Powered by WordPress