@@ -5,6 +5,7 @@ import (
8+ "github.com/charmbracelet/crush/internal/config"
8 "github.com/charmbracelet/crush/internal/log"
9 "github.com/charmbracelet/crush/internal/log"
9 "github.com/charmbracelet/crush/internal/lsp"
10 "github.com/charmbracelet/crush/internal/lsp"
10 "github.com/charmbracelet/crush/internal/lsp/watcher"
11 "github.com/charmbracelet/crush/internal/lsp/watcher"
@@ -13,20 +14,20 @@ import (
13// initLSPClients initializes LSP clients.
14// initLSPClients initializes LSP clients.
14func (app *App) initLSPClients(ctx context.Context) {
15func (app *App) initLSPClients(ctx context.Context) {
15 for name, clientConfig := range app.config.LSP {
16 for name, clientConfig := range app.config.LSP {
16− go app.createAndStartLSPClient(ctx, name, clientConfig.Command, clientConfig.Args...)
17+ go app.createAndStartLSPClient(ctx, name, clientConfig)
18 slog.Info("LSP clients initialization started in background")
19 slog.Info("LSP clients initialization started in background")
21// createAndStartLSPClient creates a new LSP client, initializes it, and starts its workspace watcher
22// createAndStartLSPClient creates a new LSP client, initializes it, and starts its workspace watcher
22−func (app *App) createAndStartLSPClient(ctx context.Context, name string, command string, args ...string) {
23+func (app *App) createAndStartLSPClient(ctx context.Context, name string, config config.LSPConfig) {
23− slog.Info("Creating LSP client", "name", name, "command", command, "args", args)
24+ slog.Info("Creating LSP client", "name", name, "command", config.Command, "fileTypes", config.FileTypes, "args", config.Args)
25 // Update state to starting
26 // Update state to starting
26 updateLSPState(name, lsp.StateStarting, nil, nil, 0)
27 updateLSPState(name, lsp.StateStarting, nil, nil, 0)
28 // Create LSP client.
29 // Create LSP client.
29− lspClient, err := lsp.NewClient(ctx, name, command, args...)
30+ lspClient, err := lsp.NewClient(ctx, name, config)
30 if err != nil {
31 if err != nil {
31 slog.Error("Failed to create LSP client for", name, err)
32 slog.Error("Failed to create LSP client for", name, err)
32 updateLSPState(name, lsp.StateError, err, nil, 0)
33 updateLSPState(name, lsp.StateError, err, nil, 0)
@@ -123,6 +124,6 @@ func (app *App) restartLSPClient(ctx context.Context, name string) {
125 // Create a new client using the shared function.
126 // Create a new client using the shared function.
126− app.createAndStartLSPClient(ctx, name, clientConfig.Command, clientConfig.Args...)
127+ app.createAndStartLSPClient(ctx, name, clientConfig)
127 slog.Info("Successfully restarted LSP client", "client", name)
128 slog.Info("Successfully restarted LSP client", "client", name)