Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var BuiltinServers = []ServerDefinition{ { ID: "gopls", Extensions: []string{".go"}, Command: []string{"gopls"}, Strategy: StrategyGoInstall, InstallPackage: "golang.org/x/tools/gopls@latest", DefaultInit: map[string]any{ "codelenses": map[string]bool{ "generate": true, "regenerate_cgo": true, "test": true, "tidy": true, "upgrade_dependency": true, "vendor": true, "vulncheck": false, }, }, }, { ID: "typescript", Extensions: []string{".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".mts", ".cts"}, Command: []string{"typescript-language-server", "--stdio"}, Strategy: StrategyNpm, InstallPackage: "typescript-language-server typescript", }, { ID: "bash", Extensions: []string{".sh", ".bash", ".zsh", ".ksh"}, Command: []string{"bash-language-server", "start"}, Strategy: StrategyNpm, InstallPackage: "bash-language-server", }, { ID: "yaml", Extensions: []string{".yaml", ".yml"}, Command: []string{"yaml-language-server", "--stdio"}, Strategy: StrategyNpm, InstallPackage: "yaml-language-server", }, { ID: "vue", Extensions: []string{".vue"}, Command: []string{"vue-language-server", "--stdio"}, Strategy: StrategyNpm, InstallPackage: "@vue/language-server", }, { ID: "svelte", Extensions: []string{".svelte"}, Command: []string{"svelteserver", "--stdio"}, Strategy: StrategyNpm, InstallPackage: "svelte-language-server", }, { ID: "astro", Extensions: []string{".astro"}, Command: []string{"astro-ls", "--stdio"}, Strategy: StrategyNpm, InstallPackage: "@astrojs/language-server", }, { ID: "pyright", Extensions: []string{".py"}, Command: []string{"pyright-langserver", "--stdio"}, Strategy: StrategyNpm, InstallPackage: "pyright", }, { ID: "intelephense", Extensions: []string{".php"}, Command: []string{"intelephense", "--stdio"}, Strategy: StrategyNpm, InstallPackage: "intelephense", }, { ID: "lua-ls", Extensions: []string{".lua"}, Command: []string{"lua-language-server"}, Strategy: StrategyGitHubRelease, InstallRepo: "LuaLS/lua-language-server", }, { ID: "terraform", Extensions: []string{".tf", ".tfvars"}, Command: []string{"terraform-ls", "serve"}, Strategy: StrategyGitHubRelease, InstallRepo: "hashicorp/terraform-ls", }, { ID: "tinymist", Extensions: []string{".typ", ".typc"}, Command: []string{"tinymist", "lsp"}, Strategy: StrategyGitHubRelease, InstallRepo: "Myriad-Dreamin/tinymist", }, { ID: "rust-analyzer", Extensions: []string{".rs"}, Command: []string{"rust-analyzer"}, }, { ID: "clangd", Extensions: []string{".c", ".cpp", ".cc", ".cxx", ".c++", ".h", ".hpp", ".hh", ".hxx", ".h++"}, Command: []string{"clangd"}, }, { ID: "dart", Extensions: []string{".dart"}, Command: []string{"dart", "language-server", "--protocol=lsp"}, }, { ID: "zls", Extensions: []string{".zig", ".zon"}, Command: []string{"zls"}, }, { ID: "ocamllsp", Extensions: []string{".ml", ".mli"}, Command: []string{"ocamllsp"}, }, { ID: "nixd", Extensions: []string{".nix"}, Command: []string{"nixd"}, }, { ID: "hls", Extensions: []string{".hs", ".lhs"}, Command: []string{"haskell-language-server-wrapper", "--lsp"}, }, { ID: "gleam", Extensions: []string{".gleam"}, Command: []string{"gleam", "lsp"}, }, { ID: "sourcekit-lsp", Extensions: []string{".swift"}, Command: []string{"sourcekit-lsp"}, }, { ID: "kotlin-lsp", Extensions: []string{".kt", ".kts"}, Command: []string{"kotlin-lsp", "kotlin-language-server"}, }, { ID: "clojure-lsp", Extensions: []string{".clj", ".cljs", ".cljc", ".edn"}, Command: []string{"clojure-lsp"}, }, { ID: "elixir-ls", Extensions: []string{".ex", ".exs"}, Command: []string{"elixir-ls"}, }, { ID: "jdtls", Extensions: []string{".java"}, Command: []string{"jdtls"}, }, { ID: "ruby-lsp", Extensions: []string{".rb", ".rake", ".gemspec", ".ru"}, Command: []string{"ruby-lsp"}, }, { ID: "csharp", Extensions: []string{".cs"}, Command: []string{"csharp-ls"}, }, { ID: "fsharp", Extensions: []string{".fs", ".fsi", ".fsx", ".fsscript"}, Command: []string{"fsautocomplete", "--adaptive-lsp-server-enabled"}, }, { ID: "prisma", Extensions: []string{".prisma"}, Command: []string{"prisma-language-server", "--stdio"}, }, { ID: "metals", Extensions: []string{".scala"}, Command: []string{"metals"}, }, }
BuiltinServers is the registry of built-in LSP server definitions.
Functions ¶
func BinDir ¶
func BinDir() string
BinDir returns the directory where auto-installed LSP binaries are stored.
func ResolveCommand ¶
func ResolveCommand(ctx context.Context, server ResolvedServer, disableDownload bool) (string, []string, error)
ResolveCommand finds or installs the LSP server binary and returns the command + args.
func ResolveServers ¶
func ResolveServers(cfg *config.Config) map[string]ResolvedServer
ResolveServers returns only LSP servers explicitly configured by the user. If a configured server matches a built-in, its defaults are merged. Disabled servers are excluded from the result.
Types ¶
type InstallStrategy ¶
type InstallStrategy int
InstallStrategy defines how an LSP server binary is obtained.
const ( StrategyNone InstallStrategy = iota // Must be pre-installed on PATH StrategyNpm // npm install --prefix <dir> <package> StrategyGoInstall // go install <pkg>@latest StrategyGitHubRelease // Download from GitHub releases )
type ResolvedServer ¶
type ResolvedServer struct {
ID string
Extensions []string
Command []string
Env map[string]string
Initialization any
Strategy InstallStrategy
InstallPackage string
InstallRepo string
}
ResolvedServer is the final server config after merging registry + user config.
type ServerDefinition ¶
type ServerDefinition struct {
ID string
Extensions []string
Command []string // Default command and args
Strategy InstallStrategy
InstallPackage string // npm package name or go module path
InstallRepo string // GitHub owner/repo for release downloads
DefaultInit map[string]any
}
ServerDefinition describes a built-in LSP server.
Click to show internal directories.
Click to hide internal directories.