Files
2026-07-13 11:58:46 +08:00

75 lines
2.2 KiB
Markdown

---
title: transform.HighlightCodeBlock
description: Highlights code received in context within a code block render hook.
categories: []
keywords: [highlight]
params:
functions_and_methods:
aliases: []
returnType: highlight.HighlightResult
signatures: ['transform.HighlightCodeBlock CONTEXT [OPTIONS]']
---
The `transform.HighlightCodeBlock` function uses the [`alecthomas/chroma`][] package to generate syntax-highlighted HTML from code received in context within a code block render hook. This function is only useful within a code block render hook.
## Arguments
CONTEXT
: The [context][] passed into a code block render hook.
OPTIONS
: (`map`) A map of key-value pairs. See the [options](#options-1) below. The key names are case-insensitive.
## Return value
`transform.HighlightCodeBlock` returns a `HighlightResult` object with two methods.
`Wrapped`
: (`template.HTML`) Returns highlighted code wrapped in `<div>`, `<pre>`, and `<code>` elements. This is identical to the value returned by the `transform.Highlight` function.
`Inner`
: (`template.HTML`) Returns highlighted code without any wrapping elements, allowing you to create your own wrapper.
## Examples
```go-html-template
{{ $result := transform.HighlightCodeBlock . }}
{{ $result.Wrapped }}
```
To override the default options:
```go-html-template
{{ $opts := merge .Options (dict "lineNos" true) }}
{{ $result := transform.HighlightCodeBlock . $opts }}
{{ $result.Wrapped }}
```
To fall back to plain text when the language is not supported by the highlighter:
```go-html-template
{{ $opts := dict }}
{{ if not (transform.CanHighlight .Type) }}
{{ $opts = dict "type" "text" }}
{{ end }}
{{ $result := transform.HighlightCodeBlock . $opts }}
{{ $result.Wrapped }}
```
## Options
The `transform.HighlightCodeBlock` function accepts an options map.
{{% include "_common/syntax-highlighting-options.md" %}}
`code`
: {{< new-in 0.162.0 />}}
: (`string`) Overrides the code received from the code block context.
`type`
: {{< new-in 0.162.0 />}}
: (`string`) Overrides the language received from the code block context.
[`alecthomas/chroma`]: https://github.com/alecthomas/chroma
[context]: /render-hooks/code-blocks/#context