mirror of
https://github.com/neovim/nvim-lspconfig.git
synced 2026-05-05 08:36:09 +02:00
62 lines
1.7 KiB
Lua
62 lines
1.7 KiB
Lua
---@brief
|
|
---
|
|
--- https://github.com/withastro/language-tools/tree/main/packages/language-server
|
|
---
|
|
--- `astro-ls` can be installed via `npm`:
|
|
--- ```sh
|
|
--- npm install -g @astrojs/language-server
|
|
--- ```
|
|
---
|
|
--- If typescript is installed globally, you might get the `\`typescript.tsdk\` init option is required` error.
|
|
--- You will need to manually pass the typescript SDK path. Here is an example of a Nix configuration where typescript is installed via Nix's Home-manager:
|
|
---
|
|
--- ```nix
|
|
--- { config, pkgs, ... }:
|
|
---
|
|
--- {
|
|
--- home.packages = with pkgs; [
|
|
--- typescript
|
|
--- ];
|
|
---
|
|
--- programs.neovim = {
|
|
--- plugins = with pkgs.vimPlugins; [
|
|
--- nvim-lspconfig
|
|
--- ];
|
|
--- extraPackages = with pkgs; [
|
|
--- astro-language-server
|
|
--- ];
|
|
--- initLua = ''
|
|
--- vim.lsp.config['astro'] = {
|
|
--- init_options = {
|
|
--- typescript = {
|
|
--- tsdk = ${pkgs.typescript}/lib/node_modules/typescript/lib,
|
|
--- },
|
|
--- },
|
|
--- }
|
|
---
|
|
--- vim.lsp.enable('astro')
|
|
---
|
|
--- -- ...
|
|
--- '';
|
|
--- };
|
|
--- }
|
|
--- ```
|
|
--- The path can also be passed via a variable, like `vim.g.tsdk = "${pkgs.typescript}/lib/node_modules/typescript/lib"` and then used in the Lua Neovim config.
|
|
|
|
local util = require 'lspconfig.util'
|
|
|
|
---@type vim.lsp.Config
|
|
return {
|
|
cmd = { 'astro-ls', '--stdio' },
|
|
filetypes = { 'astro' },
|
|
root_markers = { 'package.json', 'tsconfig.json', 'jsconfig.json', '.git' },
|
|
init_options = {
|
|
typescript = {},
|
|
},
|
|
before_init = function(_, config)
|
|
if config.init_options and config.init_options.typescript and not config.init_options.typescript.tsdk then
|
|
config.init_options.typescript.tsdk = util.get_typescript_server_path(config.root_dir)
|
|
end
|
|
end,
|
|
}
|