summaryrefslogtreecommitdiffhomepage
path: root/packages/web/src/content/docs/fr/lsp.mdx
blob: 8a83370da0543195b2e7322c6bf5e1f1d18574d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
---
title: Serveurs LSP
description: OpenCode s'intègre à vos serveurs LSP.
---

OpenCode s'intègre via le protocole LSP (Language Server Protocol) pour aider le LLM à interagir avec votre base de code. Il utilise des diagnostics pour fournir des commentaires au LLM.

---

## Serveurs intégrés

OpenCode est livré avec plusieurs serveurs LSP intégrés pour les langages populaires :

| Serveur LSP        | Extensions                                                          | Prérequis                                                               |
| ------------------ | ------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| astro              | .astro                                                              | Installation automatique pour les projets Astro                         |
| bash               | .sh, .bash, .zsh, .ksh                                              | Installe automatiquement le serveur bash-language-server                |
| clangd             | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++                | Installation automatique pour les projets C/C++                         |
| csharp             | .cs                                                                 | `.NET SDK` installé                                                     |
| clojure-lsp        | .clj, .cljs, .cljc, .edn                                            | Commande `clojure-lsp` disponible                                       |
| dart               | .dart                                                               | Commande `dart` disponible                                              |
| deno               | .ts, .tsx, .js, .jsx, .mjs                                          | Commande `deno` disponible (détection automatique deno.json/deno.jsonc) |
| elixir-ls          | .ex, .ex                                                            | Commande `elixir` disponible                                            |
| eslint             | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue                  | Dépendance `eslint` dans le projet                                      |
| fsharp             | .fs, .fsi, .fsx, .fsscript                                          | `.NET SDK` installé                                                     |
| gleam              | .gleam                                                              | Commande `gleam` disponible                                             |
| gopls              | .go                                                                 | Commande `go` disponible                                                |
| hls                | .hs, .lhs                                                           | Commande `haskell-language-server-wrapper` disponible                   |
| jdtls              | .java                                                               | `Java SDK (version 21+)` installé                                       |
| julials            | .jl                                                                 | `julia` et `LanguageServer.jl` installés                                |
| kotlin-ls          | .kt, .kts                                                           | Installation automatique pour les projets Kotlin                        |
| lua-ls             | .lua                                                                | Installation automatique pour les projets Lua                           |
| nixd               | .nix                                                                | Commande `nixd` disponible                                              |
| ocaml-lsp          | .ml, .mli                                                           | Commande `ocamllsp` disponible                                          |
| oxlint             | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | Dépendance `oxlint` dans le projet                                      |
| php intelephense   | .php                                                                | Installation automatique pour les projets PHP                           |
| prisma             | .prisma                                                             | Commande `prisma` disponible                                            |
| pyright            | .py, .pyi                                                           | Dépendance `pyright` installée                                          |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru                                           | Commandes `ruby` et `gem` disponibles                                   |
| rust               | .rs                                                                 | Commande `rust-analyzer` disponible                                     |
| sourcekit-lsp      | .swift, .objc, .objcpp                                              | `swift` installé (`xcode` sur macOS)                                    |
| svelte             | .svelte                                                             | Installation automatique pour les projets Svelte                        |
| terraform          | .tf, .tfvars                                                        | Installation automatique à partir des versions GitHub                   |
| tinymist           | .typ, .typc                                                         | Installation automatique à partir des versions GitHub                   |
| typescript         | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts                        | Dépendance `typescript` dans le projet                                  |
| vue                | .vue                                                                | Installation automatique pour les projets Vue                           |
| yaml-ls            | .yaml, .yml                                                         | Installe automatiquement le serveur yaml-language-server de Red Hat     |
| zls                | .zig, .zon                                                          | Commande `zig` disponible                                               |

Les serveurs LSP sont automatiquement activés lorsque l'une des extensions de fichier ci-dessus est détectée et que les exigences sont remplies.

:::note
Vous pouvez désactiver les téléchargements automatiques du serveur LSP en définissant la variable d'environnement `OPENCODE_DISABLE_LSP_DOWNLOAD` sur `true`.
:::

---

## Comment ça marche

Lorsque opencode ouvre un fichier, il :

1. Vérifie l'extension du fichier par rapport à tous les serveurs LSP activés.
2. Démarre le serveur LSP approprié s'il n'est pas déjà en cours d'exécution.

---

## Configuration

Vous pouvez personnaliser les serveurs LSP via la section `lsp` de votre configuration opencode.

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {}
}
```

Chaque serveur LSP prend en charge les éléments suivants :

| Propriété        | Type     | Description                                                      |
| ---------------- | -------- | ---------------------------------------------------------------- |
| `disabled`       | booléen  | Définissez ceci sur `true` pour désactiver le serveur LSP        |
| `command`        | chaîne[] | La commande pour démarrer le serveur LSP                         |
| `extensions`     | chaîne[] | Extensions de fichiers que ce serveur LSP doit gérer             |
| `env`            | objet    | Variables d'environnement à définir lors du démarrage du serveur |
| `initialization` | objet    | Options d'initialisation à envoyer au serveur LSP                |

Regardons quelques exemples.

---

### Variables d'environnement

Utilisez la propriété `env` pour définir les variables d'environnement lors du démarrage du serveur LSP :

```json title="opencode.json" {5-7}
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "rust": {
      "env": {
        "RUST_LOG": "debug"
      }
    }
  }
}
```

---

### Options d'initialisation

Utilisez la propriété `initialization` pour transmettre les options d'initialisation au serveur LSP. Il s'agit de paramètres spécifiques au serveur envoyés lors de la requête LSP `initialize` :

```json title="opencode.json" {5-9}
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "typescript": {
      "initialization": {
        "preferences": {
          "importModuleSpecifierPreference": "relative"
        }
      }
    }
  }
}
```

:::note
Les options d'initialisation varient selon le serveur LSP. Consultez la documentation de votre serveur LSP pour connaître les options disponibles.
:::

---

### Désactivation des serveurs LSP

Pour désactiver **tous** les serveurs LSP globalement, définissez `lsp` sur `false` :

```json title="opencode.json" {3}
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": false
}
```

Pour désactiver un serveur LSP **spécifique**, définissez `disabled` sur `true` :

```json title="opencode.json" {5}
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "typescript": {
      "disabled": true
    }
  }
}
```

---

### Serveurs LSP personnalisés

Vous pouvez ajouter des serveurs LSP personnalisés en spécifiant les extensions de commande et de fichier :

```json title="opencode.json" {4-7}
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "custom-lsp": {
      "command": ["custom-lsp-server", "--stdio"],
      "extensions": [".custom"]
    }
  }
}
```

---

## Informations supplémentaires

### PHP Intelephense

PHP Intelephense offre des fonctionnalités premium via une clé de licence. Vous pouvez fournir une clé de licence en plaçant (uniquement) la clé dans un fichier texte à l'adresse :

- macOS/Linux : `$HOME/intelephense/license.txt`
- Windows : `%USERPROFILE%/intelephense/license.txt`

Le fichier doit contenir uniquement la clé de licence sans contenu supplémentaire.