local on_attach = require("plugins.configs.lspconfig").on_attach local capabilities = require("plugins.configs.lspconfig").capabilities local lspconfig = require "lspconfig" local util = require "lspconfig/util" -- LUA LSP local runtime_path = vim.split(package.path, ";") table.insert(runtime_path, "lua/?.lua") table.insert(runtime_path, "lua/?/init.lua") lspconfig.lua_ls.setup { on_attach = on_attach, capabilities = capabilities, filetypes = { "lua" }, settings = { Lua = { runtime = { -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) version = "LuaJIT", path = runtime_path, }, diagnostics = { -- Get the language server to recognize the `vim` global globals = { "vim" }, }, workspace = { -- Make the server aware of Neovim runtime files library = vim.api.nvim_get_runtime_file("", true), checkThirdParty = false, }, -- Do not send telemetry data containing a randomized but unique identifier telemetry = { enable = false, }, }, }, } -- GO LSP lspconfig.gopls.setup { on_attach = on_attach, capabilities = capabilities, cmd = { "gopls" }, filetypes = { "go", "gomod", "gowork", "gotmpl" }, root_dir = util.root_pattern("go.work", "go.mod", ".git"), settings = { gopls = { completeUnimported = true, usePlaceholders = true, analyses = { unusedparams = true, }, }, }, } -- VUE LSP lspconfig.volar.setup { filetypes = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue", "json" }, init_options = { typescript = { -- Alternative location if installed as root: tsdk = "/usr/local/lib/node_modules/typescript/lib", }, }, } -- BASH LSP lspconfig.bashls.setup { filetypes = { "sh" }, }