Couleur (coloration syntaxique) à l'intérieur d'une balise HTML <code> tag
Dans un fragment de code comme le suivant ...
class Foo
{
internal Foo()
{
for (int i = 0; i < 42; ++i);
}
}
... ses différents mots-clés et ainsi de suite sont de couleur lorsqu'ils sont à l'affiche dans mon navigateur.
Quand je fais "Afficher la source", je ne vois rien de spécial dans le code HTML de mise en œuvre de cette couleur-codage.
Comment et où est-ce que la syntaxe spécifique à la couleur de mise en évidence de mises en œuvre, alors? Par exemple est-il intégré dans les navigateurs, ou est-il mis en œuvre par le site spécifique de édition de JavaScript, le DOM dans les navigateurs?
Je trouve que c'est une question difficile à Google pour.
- La mise en forme est réalisée a posteriori via javascript; si vous faites un "inspecter l'élément" (avec un navigateur comme google Chrome), vous verrez que beaucoup de durée de balises ont été ajoutées
Vous devez vous connecter pour publier un commentaire.
Stackoverflow utilise Google embellir bibliothèque JS pour faire de la coloration syntaxique. Il s'exécute côté client après le HTML a été transmis par le serveur. C'est pourquoi vous ne le voyez pas dans la source HTML brut. Si vous avez un plugin de navigateur comme FireBug, vous serez en mesure d'inspecter les DOM après embellir a fait sa magie.
C'est une bibliothèque Javascript. Il ya un peu là-bas, les plus populaires étant SyntaxHighlighter. Mon favori personnel est Chili, si.
Il y a une excellente FAQ Qu'est-ce que la coloration syntaxique et comment ça fonctionne? plus sur meta.SE.
Je suis entièrement citant ici pour votre commodité, mais vous voudrez peut-être vérifier le post original pour les mises à jour de la liste des langues prises en charge.
Ce qui est de la syntaxe?
La coloration syntaxique permet code des postes à être mis en évidence en fonction de la langue il est écrit dans le, pour le rendre plus facile à lire.
Comment ça fonctionne?
Pile d'Échange ne dispose pas de sa propre coloration syntaxique moteur. Il utilise Google Code Embellir. Par conséquent, tous les bugs et demandes de fonctionnalités concernant la coloration syntaxique ne peut pas être traitée par la Pile d'Échange et doivent être adressées à l'équipe derrière Google Code Embellir.
La coloration syntaxique est attribué à l'aperçu lors de la création ou de la modification des postes dès que vous arrêtez de taper pendant 5 secondes.
Embellir prend en charge une liste de langues de base qu'il peut mettre en évidence (y compris C/C++, C#, Java, JavaScript/CoffeScript, Perl, Python, Ruby, Regex, Bash, HTML, XML), avec un par défaut générique surligneur qui fonctionne passablement sur la plupart des C-comme les langages HTML et-comme les langages de balisage. Les autres langues sont mises en œuvre comme extensions (chaque
lang-*.js
fichier).Pourquoi n'est pas mon code en surbrillance correctement?
Si votre post n'est pas mise en évidence, c'est possible, il n'est pas pris en charge. Merci de regarder la liste d'Embellir les langues prises en charge. Si votre langue n'est pas sur la liste, il doit être créé au sein de l'Embellir projet avant qu'il puisse être déployé par Stack Exchange.
Si une langue qui pourrait être appliqué à une balise est déjà sur la liste, mais pas utilisé sur Stack Exchange, s'il vous plaît faire une demande de fonctionnalité ici sur Meta avoir déployé sur le réseau.
Comment puis-je signaler un bug ou d'une demande d'une nouvelle langue?
Si c'est effectivement une erreur dans la syntaxe surligneur lui-même, vérifiez la liste de problèmes de pour voir si il a déjà été signalé. Si elle n'a pas, n'hésitez pas à le signaler ou joindre le projet et de soumettre un correctif vous-même. Si vous voulez vous assurer que d'un problème que vous avez soulevé est résolu rapidement, il est préférable d'inclure le correctif dans le rapport. Si le correctif a déjà été mis en œuvre par les Embellir, mais n'est toujours pas de travail ici, s'il vous plaît faire une demande de fonctionnalité sur Meta pour demander qu'une nouvelle version d'Embellir être déployé.
Vous pouvez également soumettre une demande pour une nouvelle langue à ajouter dans la même liste de problèmes de. Gardez à l'esprit que la Pile d'Échange ne pas maintenir cette syntaxe surligneur, et la publication de rapports de bogue ou les demandes concernant ici sur Meta va pas fixe ou mis en œuvre.
Avant de faire quoi que ce soit, faire sûr que vous avez la bonne soulignant allumé.
Comment fait-il de déterminer la langue de la coloration syntaxique?
Derrière la scène, Pile Échanges utilise les balises sur la question à déduire de la langue que vous utilisez. Si il n'y a plus d'une étiquette qui est de la syntaxe, il utilise une valeur par défaut et permet de l'Embellir en déduire quel est le meilleur langage à utiliser.
Si vous êtes curieux de savoir si un tag est une langue de l'indice, n'importe quel utilisateur est capable de vérifier en visitant cette balise de la page wiki. La langue de l'indice (le cas échéant) qui est utilisé actuellement pour cette balise sera affiché au bas de l'écran, en dessous des boutons pour le wiki:
Il est possible de remplacer explicitement la mise en évidence de l'utilisation avec la langue de votre choix en précisant une langue de l'indice au-dessus du bloc de code:
Vous pouvez utiliser soit un code de langue ou un tag nom dans la langue astuce pour activer la coloration syntaxique. Voir ci-dessous pour la liste complète des embellir pris en charge les codes de langue.
Par exemple:
Si vous ne voulez pas avoir la coloration syntaxique, vous pouvez utiliser le
lang-none
langue:Vous pouvez également appliquer une langue astuce pour tous blocs de code dans votre post (si vous n'avez pas à ajouter une pointe avant de chacun):
Allusion: Des Codes De Langue
C'est une liste complète de chaque identifiant que vous pouvez utiliser dans la langue de l'indice pour la coloration syntaxique.
De base:
default
lang-none
lang-bash
,lang-bsh
,lang-csh
,lang-sh
lang-c
,lang-cc
,lang-cpp
,lang-cxx
,lang-cyc
,lang-m
lang-cs
lang-coffee
lang-html
,lang-xml
,lang-xsl
lang-java
lang-js
,lang-javascript
lang-json
lang-pl
,lang-perl
lang-py
,lang-python
,lang-cv
lang-regex
lang-rb
,lang-ruby
lang-rc
,lang-rs
,lang-rust
Extensions:
lang-clj
lang-css
lang-dart
lang-erl
,lang-erlang
lang-go
lang-sh
lang-latex
,lang-tex
lang-cl
,lang-el
,lang-lisp
,lang-lsp
,lang-scm
,lang-ss
,lang-rkt
lang-lua
lang-matlab
lang-fs
,lang-ml
lang-pascal
lang-proto
lang-r
,lang-s
lang-scala
lang-sql
lang-vhdl
,lang-vhd
lang-vb
,lang-vbs
Allusion: Tags
Vous pouvez spécifier n'importe quelle balise qui existe sur le site, et il utilisera le code de langue est actuellement associé à cette balise (qui peut être soit null (pas d'indicateur), par défaut, ou un spécifiques du code de la langue).
Garder à l'esprit que, par défaut, toutes les balises commencer avec
none
comme leur code de langue. Les balises denone
spécifié comme leur langue code sera ignoré et revenir àdefault
.Vous pouvez également utiliser la plaine
none
mot-clé pour spécifier manuellement pas de coloration syntaxique, similaire à l'aide de lalang-none
code ci-dessus.