@@ -1,6 +1,7 @@
@@ -69,7 +70,7 @@ func (app *App) initLSPClients(ctx context.Context) {
69 wg.Go(func() {
70 wg.Go(func() {
70 app.createAndStartLSPClient(
71 app.createAndStartLSPClient(
71 ctx, name,
72 ctx, name,
72− toOurConfig(server),
73+ toOurConfig(server, app.config.LSP[name]),
73 slices.Contains(userConfiguredLSPs, name),
74 slices.Contains(userConfiguredLSPs, name),
@@ -83,7 +84,9 @@ func (app *App) initLSPClients(ctx context.Context) {
87+// toOurConfig merges powernap default config with user config.
88+// If user config is zero value, it means no user override exists.
86−func toOurConfig(in *powernapconfig.ServerConfig) config.LSPConfig {
89+func toOurConfig(in *powernapconfig.ServerConfig, user config.LSPConfig) config.LSPConfig {
87 return config.LSPConfig{
90 return config.LSPConfig{
88 Command: in.Command,
91 Command: in.Command,
89 Args: in.Args,
92 Args: in.Args,
@@ -92,6 +95,7 @@ func toOurConfig(in *powernapconfig.ServerConfig) config.LSPConfig {
92 RootMarkers: in.RootMarkers,
95 RootMarkers: in.RootMarkers,
93 InitOptions: in.InitOptions,
96 InitOptions: in.InitOptions,
94 Options: in.Settings,
97 Options: in.Settings,
98+ Timeout: user.Timeout,
@@ -126,7 +130,7 @@ func (app *App) createAndStartLSPClient(ctx context.Context, name string, config
126 lspClient.SetDiagnosticsCallback(updateLSPDiagnostics)
130 lspClient.SetDiagnosticsCallback(updateLSPDiagnostics)
128 // Increase initialization timeout as some servers take more time to start.
132 // Increase initialization timeout as some servers take more time to start.
129− initCtx, cancel := context.WithTimeout(ctx, 30*time.Second)
133+ initCtx, cancel := context.WithTimeout(ctx, time.Duration(cmp.Or(config.Timeout, 30))*time.Second)
130 defer cancel()
134 defer cancel()
132 // Initialize LSP client.
136 // Initialize LSP client.