From 9962e25a23f0e992116b99a9a6400947d5a7177b Mon Sep 17 00:00:00 2001 From: Tulio Brunoro Date: Tue, 28 Jan 2025 13:25:27 -0300 Subject: fix(angularls): pass --angularCoreVersion for backwards compatibility #3592 --- lua/lspconfig/configs/angularls.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'lua') diff --git a/lua/lspconfig/configs/angularls.lua b/lua/lspconfig/configs/angularls.lua index 91b076a1..45b756b4 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 = { -- cgit v1.2.3-70-g09d2