
# Opções

Todos os pontos de entrada (`codeToHtml`, `codeToTokens`, `codeToTokensResult`,
`codeToHast`) aceitam o mesmo array de opções como segundo argumento. Apenas `lang`
e um tema são obrigatórios.

## `lang`

**Obrigatório.** O id ou alias do idioma usado para tokenizar — `php`, `ts`, `js`,
`rust`, `python`, `html` e assim por diante. O valor especial `'ansi'` realça
sequências de escape do terminal em vez de usar uma gramática (consulte [ANSI](https://shikiphp.inline0.dev/pt/docs/ansi)).

```php
['lang' => 'php']
```

## `theme`

Um único id de tema. Obrigatório, a menos que `themes` seja informado.

```php
['lang' => 'php', 'theme' => 'github-dark']
```

## `themes`

Um mapa de chaves para ids de tema para gerar saída com temas duplos (ou múltiplos) por meio de variáveis CSS.
Obrigatório, a menos que `theme` seja informado.

```php
['lang' => 'ts', 'themes' => ['light' => 'github-light', 'dark' => 'github-dark']]
```

## `defaultColor`

Qual chave de `themes` se torna a cor padrão em linha (as demais se tornam variáveis
`--shiki-<key>` CSS). O padrão é `'light'`. Defina como `false` para emitir
apenas variáveis, sem cor padrão em linha — útil quando você controla todas as cores com
CSS.

```php
['themes' => ['light' => '…', 'dark' => '…'], 'defaultColor' => 'dark']
```

## `transformers`

Uma lista de objetos `Shikiphp\Transformer\Transformer` aplicados pelo
pipeline. Consulte [Transformadores](https://shikiphp.inline0.dev/pt/docs/transformers).

```php
use Shikiphp\Transformer\Notation\NotationHighlight;

['transformers' => [new NotationHighlight()]]
```

## `decorations`

Aplique classes ou atributos a intervalos arbitrários do código-fonte por linha/posição do caractere.
Cada decoração é `{start, end, properties}`, e as posições são `{line, character}` (começam em zero).

```php
['decorations' => [
    [
        'start'      => ['line' => 0, 'character' => 0],
        'end'        => ['line' => 0, 'character' => 5],
        'properties' => ['class' => 'highlight'],
    ],
]]
```

## `colorReplacements`

Remapeia as cores na saída. Itens de string substituem uma cor globalmente; itens aninhados
indexados pelo nome do tema se aplicam apenas a esse tema.

```php
['colorReplacements' => [
    '#ffffff'      => '#f8f8f2',          // global
    'github-dark'  => ['#24292e' => '#000'], // only in github-dark
]]
```

## `structure`

`'classic'` (padrão) emite a estrutura `pre > code > span.line > span` completa.
`'inline'` emite apenas os trechos dos tokens com quebras de linha, sem `pre`/`code`
em volta — útil para trechos em linha.

```php
['structure' => 'inline']
```

## `tabindex`

O atributo `tabindex` no elemento `<pre>`. O padrão é `0`. Passe `false`
para omiti-lo.

```php
['tabindex' => false]
```

## `cssVariablePrefix`

O prefixo usado para as variáveis CSS de temas duplos. O padrão é `'--shiki-'`.

```php
['cssVariablePrefix' => '--my-']
```

## `mergeWhitespaces`

Controla como são tratados os tokens de espaço em branco. `true` (padrão) incorpora tokens
compostos apenas por espaços em branco ao token seguinte; `'never'` separa os espaços em branco iniciais e finais de cada token
em tokens independentes; `false` mantém os tokens inalterados.

```php
['mergeWhitespaces' => 'never']
```

## `tokenizeMaxLineLength`

Ignora a tokenização (e emite um único token simples para) qualquer linha que tenha este
comprimento ou mais, em unidades de código UTF-16. Sem limite por padrão. Uma proteção contra
entradas patológicas em uma única linha.

```php
['tokenizeMaxLineLength' => 1000]
```

## `meta`

Metadados arbitrários passados aos transformadores pelo contexto do transformador —
por exemplo, a string de metadados da cerca de código consumida por
[`MetaHighlight`](https://shikiphp.inline0.dev/pt/docs/transformers#metahighlight) e
[`MetaWordHighlight`](https://shikiphp.inline0.dev/pt/docs/transformers#metawordhighlight).

```php
['meta' => ['__raw' => '{1,3-5}']]
```

## `grammarState`

Um `Shikiphp\GrammarState` (de `getLastGrammarState`) para retomar a tokenização
a partir desse ponto. Os valores transportados `lang` e theme(s) precisam corresponder. Consulte
[`getLastGrammarState`](https://shikiphp.inline0.dev/pt/docs/api#shikiphpgetlastgrammarstate).
