-- Mason setup require("mason").setup(require("mason").setup({ ui = { icons = { package_installed = "✓", package_pending = "󰔟", package_uninstalled = "✗", }, }, })) require("mason-lspconfig").setup({ ensure_installed = { "lua_ls", }, }) vim.lsp.enable("verible") vim.lsp.config("verible", { cmd = { "verible-verilog-ls", "--rules_config_search" } }) vim.lsp.enable("clangd") vim.lsp.config("clangd", { cmd = { "clangd" }, root_markers = { ".clangd" }, filetypes = { "c", "cpp" }, }) -- @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 vim.lsp.enable("als") vim.lsp.config("als", { projectFile = get_config_file() })