aboutsummaryrefslogtreecommitdiff
path: root/plugin/40-lsp.lua
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/40-lsp.lua')
-rw-r--r--plugin/40-lsp.lua61
1 files changed, 61 insertions, 0 deletions
diff --git a/plugin/40-lsp.lua b/plugin/40-lsp.lua
new file mode 100644
index 0000000..af95c47
--- /dev/null
+++ b/plugin/40-lsp.lua
@@ -0,0 +1,61 @@
+local opts = {
+ ensure_installed = {
+ "bash-language-server",
+ "termux-language-server",
+ "lua-language-server",
+ "clangd",
+ "clang-format",
+ "taplo",
+ "jq",
+ "json-lsp",
+ "svelte-language-server",
+ "emmet-language-server",
+ "html-lsp",
+ "css-lsp",
+ "typescript-language-server",
+ "pyright",
+ "glsl_analyzer",
+ "kotlin-lsp",
+ "jdtls",
+ "csharp-language-server",
+ "unocss-language-server",
+ },
+ PATH = "skip",
+ ui = {
+ icons = {
+ package_pending = " ",
+ package_installed = "󰄳 ",
+ package_uninstalled = " 󰚌",
+ },
+ keymaps = {
+ toggle_server_expand = "<CR>",
+ install_server = "i",
+ update_server = "u",
+ check_server_version = "c",
+ update_all_servers = "U",
+ check_outdated_servers = "C",
+ uninstall_server = "X",
+ cancel_installation = "<C-c>",
+ },
+ },
+ max_concurrent_installers = 10,
+}
+
+vim.api.nvim_create_user_command("MasonInstallAll", function ()
+ if opts.ensure_installed and #opts.ensure_installed > 0 then
+ vim.cmd("MasonInstall " .. table.concat(opts.ensure_installed, " "))
+ end
+end, {
+ desc = "Install all required mason packages",
+})
+
+vim.pack.add({
+ "https://github.com/neovim/nvim-lspconfig",
+ "https://github.com/mason-org/mason.nvim",
+})
+
+require("mason").setup(opts)
+
+if not (vim.uv or vim.loop).fs_stat(vim.g.mason_path) then
+ vim.cmd("MasonInstallAll")
+end