
# Επιλογές

Όλα τα σημεία εισόδου (`codeToHtml`, `codeToTokens`, `codeToTokensResult`,
`codeToHast`) δέχονται τον ίδιο πίνακα επιλογών ως δεύτερο όρισμα. Απαιτούνται μόνο το `lang`
και ένα θέμα.

## `lang`

**Υποχρεωτικό.** Το αναγνωριστικό της γλώσσας ή ένα ψευδώνυμο με το οποίο θα γίνει η ανάλυση σε tokens — `php`, `ts`, `js`,
`rust`, `python`, `html` κ.ο.κ. Η ειδική τιμή `'ansi'` επισημαίνει
ακολουθίες διαφυγής τερματικού αντί να χρησιμοποιεί γραμματική (δείτε το [ANSI](https://shikiphp.inline0.dev/el/docs/ansi)).

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

## `theme`

Ένα αναγνωριστικό θέματος. Απαιτείται εκτός αν δοθεί το `themes`.

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

## `themes`

Αντιστοίχιση κλειδιών σε αναγνωριστικά θεμάτων για έξοδο με διπλό (ή πολλαπλό) θέμα μέσω μεταβλητών CSS.
Απαιτείται εκτός αν δοθεί το `theme`.

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

## `defaultColor`

Ποιο κλειδί στο `themes` θα γίνει το προεπιλεγμένο ενσωματωμένο χρώμα (τα υπόλοιπα γίνονται μεταβλητές `--shiki-<key>` CSS). Η προεπιλογή είναι `'light'`. Ορίστε το σε `false` για να παραχθούν μόνο μεταβλητές, χωρίς προεπιλεγμένο ενσωματωμένο χρώμα — χρήσιμο όταν ελέγχετε όλα τα χρώματα από το CSS.

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

## `transformers`

Λίστα αντικειμένων `Shikiphp\Transformer\Transformer` που εφαρμόζονται μέσω της
διαδικασίας. Δείτε τους [Μετασχηματιστές](https://shikiphp.inline0.dev/el/docs/transformers).

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

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

## `decorations`

Εφαρμόστε κλάσεις ή γνωρίσματα σε αυθαίρετα εύρη του πηγαίου κώδικα βάσει θέσης γραμμής/χαρακτήρα. Κάθε διακόσμηση είναι `{start, end, properties}`, όπου οι θέσεις είναι `{line, character}` (με αρίθμηση από το μηδέν).

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

## `colorReplacements`

Αντιστοιχίστε ξανά τα χρώματα στην έξοδο. Οι συμβολοσειρές αντικαθιστούν ένα χρώμα παντού· οι ένθετες εγγραφές με κλειδί το όνομα θέματος εφαρμόζονται μόνο σε εκείνο το θέμα.

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

## `structure`

Το `'classic'` (προεπιλογή) παράγει ολόκληρη τη δομή `pre > code > span.line > span`.
Το `'inline'` παράγει μόνο τα εύρη των tokens με αλλαγές γραμμής, χωρίς περιβάλλον `pre`/`code` — χρήσιμο για ενσωματωμένα αποσπάσματα.

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

## `tabindex`

Το γνώρισμα `tabindex` στο στοιχείο `<pre>`. Προεπιλογή: `0`. Περάστε το `false` για να παραλειφθεί.

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

## `cssVariablePrefix`

Το πρόθεμα που χρησιμοποιείται για τις μεταβλητές CSS διπλού θέματος. Προεπιλογή: `'--shiki-'`.

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

## `mergeWhitespaces`

Ελέγχει τον χειρισμό των tokens κενών χαρακτήρων. Το `true` (προεπιλογή) ενσωματώνει τα tokens που περιέχουν μόνο κενά στο επόμενο token· το `'never'` διαχωρίζει τα αρχικά και τελικά κενά κάθε token σε ξεχωριστά tokens· το `false` αφήνει τα tokens ανέπαφα.

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

## `tokenizeMaxLineLength`

Παραλείπει την ανάλυση σε tokens και παράγει ένα απλό token για κάθε γραμμή που έχει αυτό το μήκος ή μεγαλύτερο, σε μονάδες κώδικα UTF-16. Προεπιλογή: χωρίς όριο. Προστασία από παθολογικά μεγάλες γραμμές εισόδου.

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

## `meta`

Αυθαίρετα μεταδεδομένα που περνούν στους μετασχηματιστές μέσω του περιβάλλοντος μετασχηματιστή —
για παράδειγμα, η συμβολοσειρά meta ενός code fence που χρησιμοποιείται από τα
[`MetaHighlight`](https://shikiphp.inline0.dev/el/docs/transformers#metahighlight) και
[`MetaWordHighlight`](https://shikiphp.inline0.dev/el/docs/transformers#metawordhighlight).

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

## `grammarState`

Ένα `Shikiphp\GrammarState` (από το `getLastGrammarState`) από το οποίο συνεχίζεται η ανάλυση σε tokens.
Τα μεταφερόμενα `lang` και theme(s) πρέπει να συμφωνούν. Δείτε το
[`getLastGrammarState`](https://shikiphp.inline0.dev/el/docs/api#shikiphpgetlastgrammarstate).
