Help:Syntax Highlighting: Difference between revisions

From Rosetta Code
Content added Content deleted
m (Geishi no longer supported)
m (missed some)
Line 2: Line 2:


== How to highlight ==
== How to highlight ==
Prefix your code with <code>&lt;lang ''foo''&gt;</code> (where ''foo'' is the language to use for highlighting) and suffix it with <code>&lt;/lang&gt;</code>. Be sure not to insert extra space between the tags and your code. For example, here's how you'd highlight a C program:
Prefix your code with <code>&lt;syntaxhighlight lang="foo"&gt;</code> (where ''foo'' is the language to use for highlighting) and suffix it with <code>&lt;/syntaxhighlight&gt;</code>. Be sure not to insert extra space between the tags and your code. For example, here's how you'd highlight a C program:


<pre>
<pre>
Line 23: Line 23:
Also, if it hasn't been done yet, add the identifier to your language's category page. Use the "tags" parameter in the [[Template:Language|language template]] to specify it (e.g. "tags=foo" for the example above). If you find that your language already has a tag listed there that isn't in the Village Pump post, add it to the post as well.
Also, if it hasn't been done yet, add the identifier to your language's category page. Use the "tags" parameter in the [[Template:Language|language template]] to specify it (e.g. "tags=foo" for the example above). If you find that your language already has a tag listed there that isn't in the Village Pump post, add it to the post as well.


If you'd like to, it's surprisingly easy to write a new language definition for GeSHi. See [[Rosetta Code:Village Pump/Syntax Highlighting#Relationship Between Rosetta Code and GeSHi|this post]] for more on the relationship between GeSHi and Rosetta Code. [http://rosettacode.org/geshi/ AutoGeSHi] may be of use, although it isn't nearly as fancy as its name suggests; see [[Rosetta Code:AutoGeSHi|this page]].
If you'd like to, it's not difficult to write a new language definition for Pygments. See [https://pygments.org/docs/lexerdevelopment/ Write your own lexer] for more on adding support for a new language.


===Recommended language tag usage===
===Recommended language tag usage===

Revision as of 22:55, 28 September 2022

Rosetta Code supports syntax highlighting of code using Pygments.

How to highlight

Prefix your code with <syntaxhighlight lang="foo"> (where foo is the language to use for highlighting) and suffix it with </syntaxhighlight>. Be sure not to insert extra space between the tags and your code. For example, here's how you'd highlight a C program:

<syntaxhighlight lang="c">int main (int argc, char* argv[])
{
  return 0;
}</syntaxhighlight>

That markup would be rendered thus:

int main (int argc, char* argv[])
{
  return 0;
}

Supported languages

Make sure to use the standard identifier for your language even if Pygments doesn't know how to highlight it yet. If your language isn't in the list, make up an identifier (consisting entirely of lowercase alphanumeric ASCII characters; make it short yet unambiguous) and add it to the list. That way, if your language is supported in a future release of Pygments, Rosetta Code can immediately benefit.

Also, if it hasn't been done yet, add the identifier to your language's category page. Use the "tags" parameter in the language template to specify it (e.g. "tags=foo" for the example above). If you find that your language already has a tag listed there that isn't in the Village Pump post, add it to the post as well.

If you'd like to, it's not difficult to write a new language definition for Pygments. See Write your own lexer for more on adding support for a new language.

Recommended language tag usage

Rather than trying to keep disparate lists in sync, refer directly to the official Pygments documentation.

Official language list

In general, the language parameter should be the lowercase language name bounded by double quotes.