From f4909335c1c8e1a1b2f71e6e11f34acbacf30044 Mon Sep 17 00:00:00 2001 From: yannickreiss Date: Tue, 4 Feb 2025 07:26:10 +0100 Subject: [PATCH] Set ada configuration file dynamically on startup --- lua/lspconfiguration.lua | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/lua/lspconfiguration.lua b/lua/lspconfiguration.lua index 83bb027..848ecac 100644 --- a/lua/lspconfiguration.lua +++ b/lua/lspconfiguration.lua @@ -60,10 +60,34 @@ 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() end +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 = {