Help:Contributing/code: Difference between revisions

From Wikibase
Jump to navigation Jump to search
Turn wikimarkup-in-code-tags into a gotcha; highlight You-type cells as wikisource (syntaxhighlight lang=wikitext where possible, pre fallback for nested syntaxhighlight) (via update-page on MediaWiki MCP Server)
Line 7: Line 7:
|-
|-
| Plain block — exactly as typed, no wiki markup, HTML escaped. Safe for logs and config pastes.
| Plain block — exactly as typed, no wiki markup, HTML escaped. Safe for logs and config pastes.
| <pre>[2026-08-19 14:32:01] wikibase.updater: entity Q42 updated</pre>
| <syntaxhighlight lang="wikitext"><pre>[2026-08-19 14:32:01] wikibase.updater: entity Q42 updated</pre></syntaxhighlight>
| <pre>[2026-08-19 14:32:01] wikibase.updater: entity Q42 updated</pre>
| <pre>[2026-08-19 14:32:01] wikibase.updater: entity Q42 updated</pre>
|-
|-
| Highlighted block — Pygments colours and a copy button.
| Highlighted block — Pygments colours and a copy button.
| &lt;syntaxhighlight lang="sparql"&gt;SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5&lt;/syntaxhighlight&gt;
| <pre>&lt;syntaxhighlight lang="sparql"&gt;SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5&lt;/syntaxhighlight&gt;</pre>
| <syntaxhighlight lang="sparql">SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5</syntaxhighlight>
| <syntaxhighlight lang="sparql">SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5</syntaxhighlight>
|-
|-
| Plain inline code — monospace in a sentence, no colours. For short tokens with no markup-significant characters.
| Plain inline code — monospace in a sentence, no colours. For short tokens with no markup-significant characters.
| &lt;code&gt;latestId&lt;/code&gt;
| <syntaxhighlight lang="wikitext" inline><code>latestId</code></syntaxhighlight>
| <code>latestId</code>
| <code>latestId</code>
|-
|-
| Highlighted inline code — monospace in a sentence, with colours.
| Highlighted inline code — monospace in a sentence, with colours.
| &lt;syntaxhighlight lang="python" inline&gt;print("hello")&lt;/syntaxhighlight&gt;
| <pre>&lt;syntaxhighlight lang="python" inline&gt;print("hello")&lt;/syntaxhighlight&gt;</pre>
| <syntaxhighlight lang="python" inline>print("hello")</syntaxhighlight>
| <syntaxhighlight lang="python" inline>print("hello")</syntaxhighlight>
|}
|}


Anything inside <syntaxhighlight lang="text" inline><syntaxhighlight></syntaxhighlight> or <syntaxhighlight lang="text" inline><pre></syntaxhighlight> is rendered literally — wiki markup and HTML are not interpreted.
Anything inside <syntaxhighlight lang="text" inline><syntaxhighlight></syntaxhighlight> or <syntaxhighlight lang="text" inline><pre></syntaxhighlight> is rendered literally — wiki markup and HTML are not interpreted.
<blockquote>
'''Don't wrap Wikimarkup content inside code tags''' — it stays literal. A link or template in a code tag renders as plain text: <syntaxhighlight lang="wikitext" inline>[[Special:AddCodeSnippet]]</syntaxhighlight> shows <syntaxhighlight lang="text" inline>[[Special:AddCodeSnippet]]</syntaxhighlight>, not a link. Write it as normal wikitext to get the link: [[Special:AddCodeSnippet|code-snippet items]].
</blockquote>


<blockquote>
<blockquote>
Line 43: Line 47:
|-
|-
| <code>line</code> — show line numbers
| <code>line</code> — show line numbers
| &lt;syntaxhighlight lang="sparql" line&gt;SELECT ?item WHERE {<br/>?item wdt:P1 wd:Q6 .<br/>}&lt;/syntaxhighlight&gt;
| <pre>&lt;syntaxhighlight lang="sparql" line&gt;SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
}&lt;/syntaxhighlight&gt;</pre>
| <syntaxhighlight lang="sparql" line>SELECT ?item WHERE {
| <syntaxhighlight lang="sparql" line>SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
?item wdt:P1 wd:Q6 .
Line 49: Line 55:
|-
|-
| <code>start="5"</code> — first line number (with <code>line</code>)
| <code>start="5"</code> — first line number (with <code>line</code>)
| &lt;syntaxhighlight lang="sparql" line start="5"&gt;SELECT ?item WHERE {<br/>?item wdt:P1 wd:Q6 .<br/>}&lt;/syntaxhighlight&gt;
| <pre>&lt;syntaxhighlight lang="sparql" line start="5"&gt;SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
}&lt;/syntaxhighlight&gt;</pre>
| <syntaxhighlight lang="sparql" line start="5">SELECT ?item WHERE {
| <syntaxhighlight lang="sparql" line start="5">SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
?item wdt:P1 wd:Q6 .
Line 55: Line 63:
|-
|-
| <code>highlight="1,3"</code> — highlight specific lines (comma-separated)
| <code>highlight="1,3"</code> — highlight specific lines (comma-separated)
| &lt;syntaxhighlight lang="sparql" highlight="1,3"&gt;SELECT ?item WHERE {<br/>?item wdt:P1 wd:Q6 .<br/>}&lt;/syntaxhighlight&gt;
| <pre>&lt;syntaxhighlight lang="sparql" highlight="1,3"&gt;SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
}&lt;/syntaxhighlight&gt;</pre>
| <syntaxhighlight lang="sparql" highlight="1,3">SELECT ?item WHERE {
| <syntaxhighlight lang="sparql" highlight="1,3">SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
?item wdt:P1 wd:Q6 .
Line 61: Line 71:
|-
|-
| <code>inline</code> — render as inline code instead of a block
| <code>inline</code> — render as inline code instead of a block
| &lt;syntaxhighlight lang="sparql" inline&gt;LIMIT&lt;/syntaxhighlight&gt;
| <pre>&lt;syntaxhighlight lang="sparql" inline&gt;LIMIT&lt;/syntaxhighlight&gt;</pre>
| <syntaxhighlight lang="sparql" inline>LIMIT</syntaxhighlight>
| <syntaxhighlight lang="sparql" inline>LIMIT</syntaxhighlight>
|-
|-
| <code>copy</code> — add a button that copies the block
| <code>copy</code> — add a button that copies the block
| &lt;syntaxhighlight lang="sparql" copy&gt;SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5&lt;/syntaxhighlight&gt;
| <pre>&lt;syntaxhighlight lang="sparql" copy&gt;SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5&lt;/syntaxhighlight&gt;</pre>
| <syntaxhighlight lang="sparql" copy>SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5</syntaxhighlight>
| <syntaxhighlight lang="sparql" copy>SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5</syntaxhighlight>
|}
|}
Line 76: Line 86:


* No fenced blocks — <syntaxhighlight lang="text" inline>```</syntaxhighlight> does nothing here. Use <syntaxhighlight lang="text" inline><pre></syntaxhighlight> or <syntaxhighlight lang="text" inline><syntaxhighlight></syntaxhighlight>.
* No fenced blocks — <syntaxhighlight lang="text" inline>```</syntaxhighlight> does nothing here. Use <syntaxhighlight lang="text" inline><pre></syntaxhighlight> or <syntaxhighlight lang="text" inline><syntaxhighlight></syntaxhighlight>.
* <syntaxhighlight lang="text" inline>[[</syntaxhighlight> and <syntaxhighlight lang="text" inline>{{</syntaxhighlight> inside <syntaxhighlight lang="text" inline><pre></syntaxhighlight> or <syntaxhighlight lang="text" inline><syntaxhighlight></syntaxhighlight> stay literal — which is what you want for code.


== House rules ==
== House rules ==

Revision as of 17:12, 19 August 2026

Languages: English · français · Esperanto

Code appears on this wikibase in two places: as content on wiki pages and as data (code-snippet items). This page covers the former.

Code blocks on wiki pages

What you want You type You get
Plain block — exactly as typed, no wiki markup, HTML escaped. Safe for logs and config pastes.
<pre>[2026-08-19 14:32:01] wikibase.updater: entity Q42 updated</pre>
[2026-08-19 14:32:01] wikibase.updater: entity Q42 updated
Highlighted block — Pygments colours and a copy button.
<syntaxhighlight lang="sparql">SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5</syntaxhighlight>
SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5
Plain inline code — monospace in a sentence, no colours. For short tokens with no markup-significant characters. <code>latestId</code> latestId
Highlighted inline code — monospace in a sentence, with colours.
<syntaxhighlight lang="python" inline>print("hello")</syntaxhighlight>
print("hello")

Anything inside <syntaxhighlight> or <pre> is rendered literally — wiki markup and HTML are not interpreted.

Don't wrap Wikimarkup content inside code tags — it stays literal. A link or template in a code tag renders as plain text: [[Special:AddCodeSnippet]] shows [[Special:AddCodeSnippet]], not a link. Write it as normal wikitext to get the link: code-snippet items.

Be careful with <code>: it does not escape HTML — text such as <, > or & inside it is read as markup. Use it for short plain tokens without those characters (#, quarto render, latestId); it is lighter to render. Use <syntaxhighlight lang="…" inline> when the snippet contains <, > or & (it escapes content) or when you want colours. Never use <code> for blocks — <pre> or <syntaxhighlight> instead.

Which languages can be highlighted

Any Pygments lexer alias works as the lang attribute — use the lowercase canonical name:

  • sparql — SPARQL queries (this wiki's query service)
  • python, javascript, bash, sql, json, wikitext — commonly used
  • Full list: Pygments lexers (use the alias column)

Options for highlighted blocks

Option You type You get
line — show line numbers
<syntaxhighlight lang="sparql" line>SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
}</syntaxhighlight>
SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
}
start="5" — first line number (with line)
<syntaxhighlight lang="sparql" line start="5">SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
}</syntaxhighlight>
SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
}
highlight="1,3" — highlight specific lines (comma-separated)
<syntaxhighlight lang="sparql" highlight="1,3">SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
}</syntaxhighlight>
SELECT ?item WHERE {
?item wdt:P1 wd:Q6 .
}
inline — render as inline code instead of a block
<syntaxhighlight lang="sparql" inline>LIMIT</syntaxhighlight>
LIMIT
copy — add a button that copies the block
<syntaxhighlight lang="sparql" copy>SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5</syntaxhighlight>
SELECT ?item WHERE { ?item wdt:P1 wd:Q6 } LIMIT 5

inline and copy are mutually exclusive.

Full parameter reference: SyntaxHighlight extension parameters (official).

Differences from Markdown

  • No fenced blocks — ``` does nothing here. Use <pre> or <syntaxhighlight>.

House rules

  • Prefer <syntaxhighlight lang="…"> for anything syntax-highlightable; <pre> for config dumps and logs where colours add noise.
  • Blocks larger than 100 kB lose highlighting automatically (a safety guard).

See also