
# Asetukset

Kaikki aloituskohdat (`codeToHtml`, `codeToTokens`, `codeToTokensResult`,
`codeToHast`) ottavat toisen argumenttinsa samasta asetustaulukosta. Vain `lang`
ja teema ovat pakollisia.

## `lang`

**Pakollinen.** Kielitunnus tai alias, jonka mukaan tokenisoidaan — `php`, `ts`, `js`,
`rust`, `python`, `html` ja niin edelleen. Erikoisarvo `'ansi'` korostaa
päätteen ohjausjaksoja kieliopin sijaan (katso [ANSI](https://shikiphp.inline0.dev/fi/docs/ansi)).

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

## `theme`

Yksi teeman tunnus. Pakollinen, ellei `themes` ole annettu.

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

## `themes`

Avainten ja teematunnusten kartta usean teeman tulostetta varten CSS-muuttujien kautta.
Pakollinen, ellei `theme` ole annettu.

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

## `defaultColor`

Mikä avain asetuksessa `themes` määrittää rivinsisäisen oletusvärin (muista tulee
`--shiki-<key>` CSS-muuttujia). Oletusarvo on `'light'`. Aseta arvoksi `false`, jos haluat tuottaa
vain muuttujia ilman rivinsisäistä oletusta — kätevää, kun hallitset kaikkia värejä tiedostosta
CSS.

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

## `transformers`

Luettelo `Shikiphp\Transformer\Transformer`-objekteista, jotka käsitellään putken kautta. Katso [Muuntajat](https://shikiphp.inline0.dev/fi/docs/transformers).

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

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

## `decorations`

Käytä luokkia tai attribuutteja lähteen mielivaltaisiin alueisiin rivi- ja merkkisijainnin mukaan.
Kukin koristelu on `{start, end, properties}`, jossa sijainnit ovat
`{line, character}` (nollapohjaisia).

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

## `colorReplacements`

Määritä tulosteen värit uudelleen. Merkkijonomerkinnät korvaavat värin kaikkialla; sisäkkäiset
teeman nimen mukaan avaimetut merkinnät koskevat vain kyseistä teemaa.

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

## `structure`

`'classic'` (oletus) tuottaa koko rakenteen `pre > code > span.line > span`.
`'inline'` tuottaa vain tokenvälit rivinvaihtoineen ilman ympäröivää rakennetta
`pre`/`code` — hyödyllinen koodikatkelmille.

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

## `tabindex`

Attribuutti `tabindex` elementissä `<pre>`. Oletusarvo on `0`. Välitä `false`
sen jättämiseksi pois.

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

## `cssVariablePrefix`

Kahden teeman CSS-muuttujissa käytetty etuliite. Oletusarvo on `'--shiki-'`.

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

## `mergeWhitespaces`

Määrittää välilyöntitokenien käsittelyn. `true` (oletus) yhdistää vain välilyöntejä
sisältävät tokenit seuraavaan tokeniin; `'never'` jakaa kunkin tokenin alun ja
lopun välilyönnit omiksi tokeneikseen; `false` jättää tokenit ennalleen.

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

## `tokenizeMaxLineLength`

Ohita tokenisointi ja tuota yksi tavallinen tokeni riveille, joiden pituus on vähintään tämä
määrä UTF-16-koodiyksiköissä. Oletusarvoisesti rajaa ei ole. Suojaus poikkeuksellisen pitkiltä
yksirivisiltä syötteiltä.

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

## `meta`

Mielivaltaisia metatietoja, jotka välitetään muuntajille muuntajan kontekstin kautta —
esimerkiksi koodiaitausten metatietomerkkijono, jota käyttää
[`MetaHighlight`](https://shikiphp.inline0.dev/fi/docs/transformers#metahighlight) ja
[`MetaWordHighlight`](https://shikiphp.inline0.dev/fi/docs/transformers#metawordhighlight).

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

## `grammarState`

`Shikiphp\GrammarState` (kohteesta `getLastGrammarState`), josta tokenisointia jatketaan.
Siirrettyjen arvojen `lang` ja theme(s) on täsmättävä. Katso
[`getLastGrammarState`](https://shikiphp.inline0.dev/fi/docs/api#shikiphpgetlastgrammarstate).
