vitte

Vitte LSP — Guide Complet

Introduction

Le Language Server Protocol (LSP) est la passerelle entre Vitte et les éditeurs modernes (VS Code, Neovim, Sublime Text, etc.).
Le serveur LSP de Vitte (vitte-lsp) offre des fonctionnalités de productivité telles que l’autocomplétion, la navigation, le diagnostic en temps réel et le formatage automatique.


Objectifs


Installation

Depuis les sources

git clone https://github.com/vitte-lang/vitte.git
cd vitte
cargo build --release -p vitte-lsp

Vérifier l’installation

./target/release/vitte-lsp --version

Utilisation

Le serveur est généralement lancé automatiquement par l’éditeur.
Manuellement, il peut être exécuté en mode stdio ou tcp.

Mode stdio (par défaut)

vitte-lsp

Mode TCP

vitte-lsp-tcp --port 9257

Fonctionnalités supportées

1. Diagnostics

2. Autocomplétion

3. Navigation

4. Hover

5. Signature Help

6. Formatting

7. Renaming

8. Code Actions


Exemple de Configuration

VS Code (settings.json)

{
  "vitte.lsp.path": "/usr/local/bin/vitte-lsp",
  "vitte.fmt.enable": true,
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "vitte-lang.vitte"
}

Neovim (Lua)

require('lspconfig').vitte_lsp.setup{
  cmd = {"vitte-lsp"},
  filetypes = {"vit"},
  root_dir = function(fname)
    return vim.fn.getcwd()
  end
}

Architecture du LSP

flowchart TD
    A[Editor] <--> B[VS Code Extension]
    B <--> C[Vitte LSP Server]
    C --> D[Parser / AST]
    C --> E[Compiler / IR]
    C --> F[Formatter]
    C --> G[Diagnostics Engine]

Intégration CLI

Le serveur peut être démarré via vitte-cli :

vitte lsp

Options :


Exemples d’utilisation

Hover sur une fonction

fn add(x: int, y: int) -> int {
    return x + y
}

let z = add(1, 2)

Au survol de add, l’éditeur affiche :

fn add(x: int, y: int) -> int

Renommer une variable

Avant :

let result = compute()
print(result)

Après renommage en value :

let value = compute()
print(value)

Débogage

Activer les logs :

RUST_LOG=debug vitte-lsp

Fichier de log :


Roadmap LSP


Conclusion

Le serveur LSP Vitte est l’élément clé pour offrir une expérience moderne et productive.
Il permet de développer Vitte comme un langage de premier plan, avec un IDE complet, multiplateforme et extensible.