install

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 18, 2026 License: MIT Imports: 12 Imported by: 0

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL