@@ -328,12 +328,47 @@ func (c *Config) setDefaults(workingDir string) {
328328 c.LSP = make(map[string]LSPConfig)
329329 }
330330
331+ // Apply default file types for known LSP servers if not specified
332+ applyDefaultLSPFileTypes(c.LSP)
333+
331334 // Add the default context paths if they are not already present
332335 c.Options.ContextPaths = append(defaultContextPaths, c.Options.ContextPaths...)
333336 slices.Sort(c.Options.ContextPaths)
334337 c.Options.ContextPaths = slices.Compact(c.Options.ContextPaths)
335338}
336339
340+var defaultLSPFileTypes = map[string][]string{
341+ "gopls": {"go", "mod", "sum", "work"},
342+ "typescript-language-server": {"ts", "tsx", "js", "jsx", "mjs", "cjs"},
343+ "vtsls": {"ts", "tsx", "js", "jsx", "mjs", "cjs"},
344+ "bash-language-server": {"sh", "bash", "zsh", "ksh"},
345+ "rust-analyzer": {"rs"},
346+ "pyright": {"py", "pyi"},
347+ "pylsp": {"py", "pyi"},
348+ "clangd": {"c", "cpp", "cc", "cxx", "h", "hpp"},
349+ "jdtls": {"java"},
350+ "vscode-html-languageserver": {"html", "htm"},
351+ "vscode-css-languageserver": {"css", "scss", "sass", "less"},
352+ "vscode-json-languageserver": {"json", "jsonc"},
353+ "yaml-language-server": {"yaml", "yml"},
354+ "lua-language-server": {"lua"},
355+ "solargraph": {"rb"},
356+ "elixir-ls": {"ex", "exs"},
357+ "zls": {"zig"},
358+}
359+
360+// applyDefaultLSPFileTypes sets default file types for known LSP servers
361+func applyDefaultLSPFileTypes(lspConfigs map[string]LSPConfig) {
362+ for name, config := range lspConfigs {
363+ if len(config.FileTypes) != 0 {
364+ continue
365+ }
366+ bin := strings.ToLower(filepath.Base(config.Command))
367+ config.FileTypes = defaultLSPFileTypes[bin]
368+ lspConfigs[name] = config
369+ }
370+}
371+
337372func (c *Config) defaultModelSelection(knownProviders []catwalk.Provider) (largeModel SelectedModel, smallModel SelectedModel, err error) {
338373 if len(knownProviders) == 0 && c.Providers.Len() == 0 {
339374 err = fmt.Errorf("no providers configured, please configure at least one provider")