-- Mason setup require("mason").setup(require("mason").setup({ ui = { icons = { package_installed = "✓", package_pending = "󰔟", package_uninstalled = "✗", }, }, })) require("mason-lspconfig").setup({ ensure_installed = { "lua_ls", }, }) -- require("mason-lspconfig").setup_handlers({ -- function(asm_lsp) -- require("lspconfig")[asm_lsp].setup({}) -- end, -- function(clangd) -- require("lspconfig")[clangd].setup({}) -- end, -- function(lua_ls) -- require("lspconfig")[lua_ls].setup({}) -- end, -- function(hls) -- require("lspconfig")[hls].setup({}) -- end, -- function(rust_analyzer) -- require("lspconfig")[rust_analyzer].setup({}) -- end, -- function(vhdl_ls) -- require("lspconfig")[vhdl_ls].setup({}) -- end, -- function(verible) -- require("lspconfig")[verible].setup({}) -- end, -- function(vimls) -- require("lspconfig")[vimls].setup({}) -- end, -- function(texlab) -- require("lspconfig")[texlab].setup({}) -- end, -- function(als) -- require("lspconfig")[als].setup({}) -- end, -- }) require("lspconfig").verible.setup({ cmd = { "verible-verilog-ls", "--rules_config_search" }, }) -- @name file_exists -- @param (name -- @short Check if a file does exists (i. e. an ada project file) local function file_exists(name) local f = io.open(name, "r") return f ~= nil and io.close(f) end -- @name get_config_file -- @param -- @short Get the configuration file. local function get_config_file() local filename = vim.api.nvim_buf_get_name(0) local basedirectory = filename:gsub("/[^%/]-$", "") local currentdirectory = filename:match("[^%/]-$") if file_exists(basedirectory .. currentdirectory .. ".gpr") then return basedirectory .. currentdirectory .. ".gpr" else basedirectory = basedirectory:gsub("/[^%/]-$", "") currentdirectory = filename:match("[^%/]-$") if file_exists(basedirectory .. currentdirectory .. ".gpr") then return basedirectory .. currentdirectory .. ".gpr" else return "default.gpr" end end end require("lspconfig").als.setup({ settings = { ada = { projectFile = get_config_file(), }, }, })