> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel LSP — extension IDE via Language Server Protocol

> Implémentation officielle Laravel de Language Server Protocol. Elle fournit à votre éditeur une complétion et un survol conscients du framework.

<Info>
  Cet article est une analyse préliminaire basée sur la v0.0.19 (juin 2026). Le package n'est pas encore publié sur Packagist et ne peut donc pas être installé via Composer pour l'instant.
</Info>

## Qu'est-ce que Laravel LSP ?

**Laravel LSP** (Language Server Protocol) est l'outil officiel qui fournit à votre éditeur des fonctionnalités IDE conscientes du framework Laravel. [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) est le protocole standard de communication entre un client LSP (éditeur) et un serveur LSP (Laravel LSP), ce qui permet une expérience de développement unifiée à travers plusieurs éditeurs.

Fonctionnalités offertes par Laravel LSP :

* **Complétion** — auto-complétion des routes, vues, clés de configuration, clés de traduction, composants Livewire, etc.
* **Informations au survol** — survol pour afficher description, documentation et informations contextuelles
* **Diagnostics** — détection en temps réel des problèmes dans le code
* **Liens de document** — liaison entre fichiers et ressources
* **Correctifs rapides** — suggestions de correction automatique pour les problèmes courants
* **Aller à la définition** — navigation vers la définition d'un symbole

## Pourquoi c'est utile

La complétion PHP standard des éditeurs ne comprend pas les couches d'abstraction de Laravel. Par exemple :

* Aucune complétion sur le premier argument de `Route::get()` (le pattern d'URI)
* La saisie du nom de vue dans `view('users.index')` n'est pas complétée avec les noms réels des fichiers
* Les clés de configuration (`config('app.name')`) et de traduction (`trans('messages.welcome')`) ne sont pas prises en charge
* La complétion et la vérification dans les templates Blade ne sont pas gérées non plus

Laravel LSP comprend ces « contextes propres au framework » et fournit une complétion et des diagnostics précis.

## Installation

### Installation globale

Installez globalement avec Composer :

```bash theme={null}
composer global require laravel/lsp
```

Vérifiez que le répertoire des binaires globaux de Composer est dans le `PATH`, puis lancez :

```bash theme={null}
laravel-lsp
```

### Installation depuis les sources

Pour utiliser la version de développement, clonez le dépôt et exécutez :

```bash theme={null}
gh repo clone laravel/lsp
cd lsp
composer install
php server
```

Configurez un alias shell pour utiliser la commande `laravel-lsp` :

```bash theme={null}
# Zsh
echo 'alias laravel-lsp="php /path/to/lsp/server"' >> ~/.zshrc
source ~/.zshrc

# Bash
echo 'alias laravel-lsp="php /path/to/lsp/server"' >> ~/.bashrc
source ~/.bashrc
```

## Guide de configuration par éditeur

Laravel LSP utilise le protocole LSP standard, il fonctionne donc avec tout éditeur compatible LSP. Voici comment le configurer avec les principaux éditeurs.

### Sublime Text

Installez le [package LSP](https://packagecontrol.io/packages/LSP), puis ajoutez la configuration du client dans `Preferences: LSP Settings` :

```json theme={null}
{
    "clients": {
        "laravel-lsp": {
            "enabled": true,
            "command": ["laravel-lsp"],
            "selector": "embedding.php | text.html.blade"
        }
    }
}
```

### Neovim

Sous Neovim 0.11+, vous pouvez ajouter directement une configuration LSP personnalisée :

```lua theme={null}
vim.lsp.config("laravel_lsp", {
    cmd = { "laravel-lsp" },
    filetypes = { "php", "blade" },
    root_markers = { "artisan", "composer.json", ".git" },
})

vim.lsp.enable("laravel_lsp")
```

Avec `nvim-lspconfig`, enregistrez ainsi :

```lua theme={null}
local lspconfig = require("lspconfig")
local configs = require("lspconfig.configs")

if not configs.laravel_lsp then
    configs.laravel_lsp = {
        default_config = {
            cmd = { "laravel-lsp" },
            filetypes = { "php", "blade" },
            root_dir = lspconfig.util.root_pattern("artisan", "composer.json", ".git"),
        },
    }
end

lspconfig.laravel_lsp.setup({})
```

### Cursor

Cursor prend en charge les extensions VS Code : si l'extension Laravel est installée, elle est déjà compatible. En développement local, utilisez un client LSP compatible VS Code en spécifiant la commande :

```sh theme={null}
laravel-lsp
```

### VS Code

VS Code dispose également d'un client LSP et peut être configuré via une extension.

### OpenCode

Activez le support LSP dans `opencode.json` en déclarant Laravel LSP comme serveur personnalisé :

```json theme={null}
{
    "$schema": "https://opencode.ai/config.json",
    "lsp": {
        "laravel-lsp": {
            "command": ["laravel-lsp"],
            "extensions": [".php", ".blade.php"]
        }
    }
}
```

## Configuration avec GitHub Copilot CLI

Si vous utilisez GitHub Copilot CLI, une configuration globale est possible dans `~/.copilot/lsp-config.json`. Aucune configuration d'éditeur supplémentaire n'est nécessaire :

```json theme={null}
{
  "lspServers": {
    "laravel-lsp": {
      "command": "laravel-lsp",
      "fileExtensions": {
        ".php": "php",
        ".blade.php": "blade"
      }
    }
  }
}
```

La configuration LSP de Copilot CLI prend également en charge `initializationOptions`, ce qui permet d'utiliser tous les réglages avancés décrits ci-après.

## Options de configuration

Le client LSP peut transmettre des réglages détaillés à Laravel LSP via `initializationOptions`.

### Détection de l'environnement PHP

L'option `phpEnvironment` contrôle la commande PHP utilisée pour indexer les données du projet. Par défaut, `auto` détecte automatiquement :

| Valeur  | Comportement de la commande PHP                                       |
| ------- | --------------------------------------------------------------------- |
| `auto`  | Détection dans l'ordre Herd → Valet → Sail → Lando → DDEV → PHP local |
| `herd`  | Utilise `herd which-php`                                              |
| `valet` | Utilise `valet which-php`                                             |
| `sail`  | Utilise `./vendor/bin/sail php` quand Sail tourne                     |
| `lando` | Utilise `lando php`                                                   |
| `ddev`  | Utilise `ddev php`                                                    |
| `local` | Utilise directement le binaire PHP local                              |

En cas d'échec de détection ou de valeur invalide, il retombe sur `php`.

### Exemple de configuration de base

```json theme={null}
{
    "phpEnvironment": "auto",
    "phpCommand": ["php"],
    "definitionProvider": false
}
```

### Configuration par fonctionnalité

Chaque fonctionnalité peut être activée ou désactivée individuellement. Les suffixes sont `Completion`, `Diagnostics`, `Hover`, `Link`, etc. :

```json theme={null}
{
    "routeCompletion": true,
    "routeDiagnostics": true,
    "viewDiagnostics": false,
    "translationHover": true,
    "configLink": true,
    "envCompletion": true,
    "bladeComponentLink": true
}
```

## Liste des fonctionnalités disponibles

| Domaine                   | Complétion | Survol | Diagnostics | Liens | Correctifs rapides |
| ------------------------- | ---------- | ------ | ----------- | ----- | ------------------ |
| Routes                    | ✓          | ✓      | ✓           | ✓     | -                  |
| Vues & Blade              | ✓          | ✓      | ✓           | ✓     | ✓                  |
| Traductions               | ✓          | ✓      | -           | -     | -                  |
| Configuration             | ✓          | ✓      | ✓           | ✓     | -                  |
| Variables d'environnement | ✓          | ✓      | ✓           | ✓     | ✓                  |
| Assets & Mix              | ✓          | ✓      | ✓           | ✓     | -                  |
| Middleware                | ✓          | ✓      | ✓           | ✓     | -                  |
| Inertia                   | ✓          | -      | ✓           | ✓     | -                  |
| Livewire                  | ✓          | ✓      | -           | ✓     | -                  |
| Auth & Policies           | ✓          | ✓      | ✓           | ✓     | -                  |
| Container Bindings        | ✓          | ✓      | ✓           | ✓     | -                  |
| Validation                | ✓          | -      | -           | -     | -                  |
| Actions de contrôleur     | ✓          | -      | ✓           | ✓     | -                  |
| Eloquent                  | ✓          | -      | -           | -     | -                  |

## Démarrage rapide

1. **Installer** — `composer global require laravel/lsp`
2. **Configurer l'éditeur** — reportez-vous au guide par éditeur ci-dessus
3. **Ouvrir un projet Laravel** — le serveur indexe depuis la racine les données du projet (routes, vues, traductions, config, etc.)
4. **Utiliser la complétion** — la complétion consciente du framework fonctionne automatiquement dans les fichiers PHP et les templates Blade

## Conclusion

Laravel LSP améliore considérablement l'expérience développeur. Il comprend les contextes propres au framework, hors de portée des fonctionnalités standard des éditeurs, et fournit une complétion et des diagnostics plus précis et pertinents.

**Prérequis :**

* PHP 8.2 ou supérieur
* Composer
* Éditeur compatible LSP (Sublime Text, Neovim, Cursor, VS Code, etc.)

**Ressources :**

* [Dépôt GitHub Laravel LSP](https://github.com/laravel/lsp)
* [Site officiel du Language Server Protocol](https://microsoft.github.io/language-server-protocol/)
* [Guide de configuration LSP de GitHub Copilot CLI](https://docs.github.com/en/copilot/how-tos/copilot-cli/set-up-copilot-cli/add-lsp-servers)


## Related topics

- [Laravel Socialite (authentification sociale)](/fr/socialite.md)
- [Core — opérations AT Protocol de base](/fr/packages/laravel-bluesky/core.md)
- [Laravel Sail](/fr/sail.md)
- [Identity](/fr/packages/laravel-bluesky/identity.md)
- [Installation](/fr/installation.md)
