From 122aa61b3895d69bdf46061ca849e831a4bbfd2d Mon Sep 17 00:00:00 2001 From: mactep Date: Mon, 27 Jan 2025 21:38:32 -0300 Subject: [PATCH] Set Angular core version --- lua/lspconfig/configs/angularls.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lua/lspconfig/configs/angularls.lua b/lua/lspconfig/configs/angularls.lua index 91b076a1cb..39e319842f 100644 --- a/lua/lspconfig/configs/angularls.lua +++ b/lua/lspconfig/configs/angularls.lua @@ -9,7 +9,27 @@ local function get_probe_dir(root_dir) return project_root and (project_root .. '/node_modules') or '' end +local function get_angular_core_version(root_dir) + local project_root = vim.fs.dirname(vim.fs.find("node_modules", { path = root_dir, upward = true })[1]) + + local package_json = project_root .. "/package.json" + if not vim.loop.fs_stat(package_json) then + return "" + end + + local contents = io.open(package_json):read "*a" + local json = vim.json.decode(contents) + if not json.dependencies then + return "" + end + + local angular_core_version = json.dependencies["@angular/core"] + + return angular_core_version +end + local default_probe_dir = get_probe_dir(vim.fn.getcwd()) +local default_angular_core_version = get_angular_core_version(vim.fn.getcwd()) return { default_config = { @@ -20,6 +40,8 @@ return { default_probe_dir, '--ngProbeLocations', default_probe_dir, + '--angularCoreVersion', + default_angular_core_version, }, filetypes = { 'typescript', 'html', 'typescriptreact', 'typescript.tsx', 'htmlangular' }, -- Check for angular.json since that is the root of the project. @@ -29,6 +51,7 @@ return { }, on_new_config = function(new_config, new_root_dir) local new_probe_dir = get_probe_dir(new_root_dir) + local angular_core_version = get_angular_core_version(new_root_dir) -- We need to check our probe directories because they may have changed. new_config.cmd = { @@ -38,6 +61,8 @@ return { new_probe_dir, '--ngProbeLocations', new_probe_dir, + '--angularCoreVersion', + angular_core_version, } end, docs = {