
# Langages

shikiphp intègre **l'ensemble complet des langages Shiki** : toutes les grammaires de
[`tm-grammars`](https://github.com/shikijs/textmate-grammars-themes) 1.31.15,
l'ensemble fourni par Shiki 3.23.0. Cela représente 235 langages, auxquels s'ajoutent 18 grammaires auxiliaires qu'ils intègrent, soit 253 grammaires au total. Ce sont les mêmes grammaires TextMate qu'utilisent VS Code et
Shiki pour la tokenisation ; la couverture des langages, les alias et les noms de portée sont donc identiques.

Vous pouvez référencer un langage par son identifiant ou l'un de ses alias — par exemple `ts` ou
`typescript`, `js` ou `javascript`, `php`, `rust`, `python`, `html`, `yaml`,
`json`, etc. Les identifiants sont comparés à l'identique : utilisez-les donc en minuscules, comme indiqué ci-dessous. Si le bundle ne reconnaît pas un identifiant, il déclenche `Shikiphp\Exceptions\Highlight` avec le message `Unknown language "…"`.

L'identifiant spécial `'ansi'` n'est pas une grammaire ; il met en évidence la sortie du terminal. Consultez
[ANSI](https://shikiphp.inline0.dev/fr/docs/ansi).

Les identifiants en texte brut de Shiki `text`, `txt`, `plain` et `plaintext` ne sont pas encore pris en charge et déclenchent `Unknown language`
([#2](https://github.com/inline0/shikiphp/issues/2)).

## Répertorier les langages intégrés

Depuis PHP, interrogez le surligneur syntaxique :

```php
use Shikiphp\Shikiphp;

$highlighter = Shikiphp::highlighter();

$highlighter->bundledLanguages(); // list<string> — ids shipped in the box
$highlighter->loadedLanguages();  // list<string> — bundled plus any you registered
```

Les deux listes contiennent tous les identifiants résolus : ceux des grammaires 253, suivis des 97
alias, soit 350 entrées pour le bundle.

Ou depuis la ligne de commande, avec un identifiant par ligne :

```bash
vendor/bin/shikiphp langs
```

## Catalogue

Les langages 235 intégrés, triés par nom. Tout identifiant ou alias d'une ligne sélectionne la
même grammaire.

| Langue | Identifiant | Alias |
| --- | --- | --- |
| 1C (Enterprise) | `bsl` | `1c` |
| 1C (Query) | `sdbl` | `1c-query` |
| ABAP | `abap` |  |
| ActionScript | `actionscript-3` |  |
| Ada | `ada` |  |
| Angular HTML | `angular-html` |  |
| Angular TypeScript | `angular-ts` |  |
| Apache Conf | `apache` |  |
| Apex | `apex` |  |
| APL | `apl` |  |
| AppleScript | `applescript` |  |
| Ara | `ara` |  |
| AsciiDoc | `asciidoc` | `adoc` |
| ASP.NET Razor | `razor` |  |
| Assembly | `asm` |  |
| Astro | `astro` |  |
| AWK | `awk` |  |
| Ballerina | `ballerina` |  |
| Batch File | `bat` | `batch` |
| Beancount | `beancount` |  |
| Berry | `berry` | `be` |
| BibTeX | `bibtex` |  |
| Bicep | `bicep` |  |
| BIRD2 Configuration | `bird2` | `bird` |
| Blade | `blade` |  |
| C | `c` |  |
| C# | `csharp` | `c#`, `cs` |
| C++ | `cpp` | `c++` |
| C3 | `c3` |  |
| Cadence | `cadence` | `cdc` |
| Cairo | `cairo` |  |
| Clarity | `clarity` |  |
| Clojure | `clojure` | `clj` |
| Closure Templates | `soy` | `closure-templates` |
| CMake | `cmake` |  |
| COBOL | `cobol` |  |
| CODEOWNERS | `codeowners` |  |
| CodeQL | `codeql` | `ql` |
| CoffeeScript | `coffee` | `coffeescript` |
| Common Lisp | `common-lisp` | `lisp` |
| Coq | `coq` |  |
| Crystal | `crystal` |  |
| CSS | `css` |  |
| CSV | `csv` |  |
| CUE | `cue` |  |
| Cypher | `cypher` | `cql` |
| D | `d` |  |
| Dart | `dart` |  |
| DAX | `dax` |  |
| Desktop | `desktop` |  |
| Diff | `diff` |  |
| Dockerfile | `docker` | `dockerfile` |
| dotEnv | `dotenv` |  |
| Dream Maker | `dream-maker` |  |
| Edge | `edge` |  |
| Elixir | `elixir` |  |
| Elm | `elm` |  |
| Emacs Lisp | `emacs-lisp` | `elisp` |
| ERB | `erb` |  |
| Erlang | `erlang` | `erl` |
| F# | `fsharp` | `f#`, `fs` |
| Fennel | `fennel` |  |
| Fish | `fish` |  |
| Fluent | `fluent` | `ftl` |
| Fortran (Fixed Form) | `fortran-fixed-form` | `f`, `for`, `f77` |
| Fortran (Free Form) | `fortran-free-form` | `f90`, `f95`, `f03`, `f08`, `f18` |
| GDResource | `gdresource` | `tscn`, `tres` |
| GDScript | `gdscript` | `gd` |
| GDShader | `gdshader` |  |
| Genie | `genie` |  |
| Gettext PO | `po` | `pot`, `potx` |
| Gherkin | `gherkin` |  |
| Git Commit Message | `git-commit` |  |
| Git Rebase Message | `git-rebase` |  |
| Gleam | `gleam` |  |
| Glimmer JS | `glimmer-js` | `gjs` |
| Glimmer TS | `glimmer-ts` | `gts` |
| GLSL | `glsl` |  |
| GN | `gn` |  |
| Gnuplot | `gnuplot` |  |
| Go | `go` |  |
| GraphQL | `graphql` | `gql` |
| Groovy | `groovy` |  |
| Hack | `hack` |  |
| Handlebars | `handlebars` | `hbs` |
| HashiCorp HCL | `hcl` |  |
| Haskell | `haskell` | `hs` |
| Haxe | `haxe` |  |
| Hjson | `hjson` |  |
| HLSL | `hlsl` |  |
| HTML | `html` |  |
| HTML (Derivative) | `html-derivative` |  |
| HTTP | `http` |  |
| Hurl | `hurl` |  |
| HXML | `hxml` |  |
| Hy | `hy` |  |
| Imba | `imba` |  |
| INI | `ini` | `properties` |
| Java | `java` |  |
| JavaScript | `javascript` | `js`, `cjs`, `mjs` |
| Jinja | `jinja` |  |
| Jison | `jison` |  |
| JSON | `json` |  |
| JSON Lines | `jsonl` |  |
| JSON with Comments | `jsonc` |  |
| JSON5 | `json5` |  |
| Jsonnet | `jsonnet` |  |
| JSSM | `jssm` | `fsl` |
| JSX | `jsx` |  |
| Julia | `julia` | `jl` |
| Just | `just` |  |
| KDL | `kdl` |  |
| Kotlin | `kotlin` | `kt`, `kts` |
| Kusto | `kusto` | `kql` |
| LaTeX | `latex` |  |
| Lean 4 | `lean` | `lean4` |
| Less | `less` |  |
| Liquid | `liquid` |  |
| LLVM IR | `llvm` |  |
| Log file | `log` |  |
| Logo | `logo` |  |
| Lua | `lua` |  |
| Luau | `luau` |  |
| Makefile | `make` | `makefile` |
| Markdown | `markdown` | `md` |
| Marko | `marko` |  |
| MATLAB | `matlab` |  |
| MDC | `mdc` |  |
| MDX | `mdx` |  |
| Mermaid | `mermaid` | `mmd` |
| MIPS Assembly | `mipsasm` | `mips` |
| Mojo | `mojo` |  |
| MoonBit | `moonbit` | `mbt`, `mbti` |
| Move | `move` |  |
| Narrat Language | `narrat` | `nar` |
| Nextflow | `nextflow` | `nf` |
| Nextflow Groovy | `nextflow-groovy` |  |
| Nginx | `nginx` |  |
| Nim | `nim` |  |
| Nix | `nix` |  |
| nushell | `nushell` | `nu` |
| Objective-C | `objective-c` | `objc` |
| Objective-C++ | `objective-cpp` |  |
| OCaml | `ocaml` |  |
| Odin | `odin` |  |
| OpenSCAD | `openscad` | `scad` |
| Pascal | `pascal` |  |
| Perl | `perl` |  |
| PHP | `php` |  |
| Pkl | `pkl` |  |
| PL/SQL | `plsql` |  |
| Polar | `polar` |  |
| PostCSS | `postcss` |  |
| PowerQuery | `powerquery` |  |
| PowerShell | `powershell` | `ps`, `ps1` |
| Prisma | `prisma` |  |
| Prolog | `prolog` |  |
| Protocol Buffer 3 | `proto` | `protobuf` |
| Pug | `pug` | `jade` |
| Puppet | `puppet` |  |
| PureScript | `purescript` |  |
| Python | `python` | `py` |
| QML | `qml` |  |
| QML Directory | `qmldir` |  |
| Qt Style Sheets | `qss` |  |
| R | `r` |  |
| Racket | `racket` |  |
| Raku | `raku` | `perl6` |
| RegExp | `regexp` | `regex` |
| Rel | `rel` |  |
| reStructuredText | `rst` |  |
| RISC-V | `riscv` |  |
| RON | `ron` |  |
| ROS Interface | `rosmsg` |  |
| Ruby | `ruby` | `rb` |
| Ruby Haml | `haml` |  |
| Rust | `rust` | `rs` |
| SAS | `sas` |  |
| Sass | `sass` |  |
| Scala | `scala` |  |
| Scheme | `scheme` |  |
| SCSS | `scss` |  |
| ShaderLab | `shaderlab` | `shader` |
| Shell | `shellscript` | `bash`, `sh`, `shell`, `zsh` |
| Shell Session | `shellsession` | `console` |
| Smalltalk | `smalltalk` |  |
| Solidity | `solidity` |  |
| SPARQL | `sparql` |  |
| Splunk Query Language | `splunk` | `spl` |
| SQL | `sql` |  |
| SSH Config | `ssh-config` |  |
| Stata | `stata` |  |
| Stylus | `stylus` | `styl` |
| SurrealQL | `surrealql` | `surql` |
| Svelte | `svelte` |  |
| Swift | `swift` |  |
| Systemd Units | `systemd` |  |
| SystemVerilog | `system-verilog` |  |
| TalonScript | `talonscript` | `talon` |
| Tasl | `tasl` |  |
| Tcl | `tcl` |  |
| Templ | `templ` |  |
| Terraform | `terraform` | `tf`, `tfvars` |
| TeX | `tex` |  |
| TOML | `toml` |  |
| TSV | `tsv` |  |
| TSX | `tsx` |  |
| Turtle | `turtle` |  |
| Twig | `twig` |  |
| TypeScript | `typescript` | `ts`, `cts`, `mts` |
| TypeScript with Tags | `ts-tags` | `lit` |
| TypeSpec | `typespec` | `tsp` |
| Typst | `typst` | `typ` |
| V | `v` |  |
| Vala | `vala` |  |
| Verilog | `verilog` |  |
| VHDL | `vhdl` |  |
| Vim Script | `viml` | `vim`, `vimscript` |
| Visual Basic | `vb` | `cmd` |
| Vue | `vue` |  |
| Vue HTML | `vue-html` |  |
| Vue Vine | `vue-vine` |  |
| Vyper | `vyper` | `vy` |
| WebAssembly | `wasm` |  |
| WebAssembly Interface Types | `wit` |  |
| Wenyan | `wenyan` | `文言` |
| WGSL | `wgsl` |  |
| Wikitext | `wikitext` | `mediawiki`, `wiki` |
| Windows Registry Script | `reg` |  |
| Wolfram | `wolfram` | `wl` |
| XML | `xml` |  |
| XSL | `xsl` |  |
| YAML | `yaml` | `yml` |
| ZenScript | `zenscript` |  |
| Zig | `zig` |  |

### Grammaires auxiliaires

Ces 18 grammaires permettent à d'autres grammaires de les intégrer ou d'injecter leur contenu (Angular,
Vue, macros C++, Jinja, Nix et littéraux de gabarit balisés dans `ts-tags`). Elles
sont chargées automatiquement avec le langage qui en a besoin, et leurs identifiants figurent aussi dans `bundledLanguages()` et `shikiphp langs` :

`angular-expression`, `angular-let-declaration`, `angular-template`, `angular-template-blocks`, `angular-inline-style`, `angular-inline-template`, `cpp-macro`, `jinja-html`, `markdown-nix`, `es-tag-css`, `es-tag-glsl`, `es-tag-html`, `es-tag-sql`, `es-tag-xml`, `markdown-vue`, `vue-directives`, `vue-interpolations`, `vue-sfc-style-variable-injection`.

## Ajouter les vôtres

Vous avez besoin d'un langage qui n'est pas fourni ou d'une grammaire privée ? Enregistrez-le avec
`loadGrammar`. Consultez [Langages et thèmes personnalisés](https://shikiphp.inline0.dev/fr/docs/custom-languages-themes).
