From 3bd70c0f81a63287097bad4737a9bb1c7b5de61a Mon Sep 17 00:00:00 2001 From: Gaetan Covelli Date: Thu, 16 Oct 2025 13:44:24 +0200 Subject: [PATCH] fix(css_variables): update root directory Problem: Root directory was incorrect for projects containing a package.json file in subdirectories. --- lsp/css_variables.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lsp/css_variables.lua b/lsp/css_variables.lua index f9cdbcd4c2..ce63617b70 100644 --- a/lsp/css_variables.lua +++ b/lsp/css_variables.lua @@ -14,7 +14,19 @@ return { cmd = { 'css-variables-language-server', '--stdio' }, filetypes = { 'css', 'scss', 'less' }, - root_markers = { 'package.json', '.git' }, + + -- Taken from lsp/ts_ls.lua to handle simple projects and monorepos. + root_dir = function(bufnr, on_dir) + local root_markers = { 'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml', 'bun.lockb', 'bun.lock' } + -- Give the root markers equal priority by wrapping them in a table + root_markers = vim.fn.has 'nvim-0.11.3' == 1 and { root_markers, { '.git' } } + or vim.list_extend(root_markers, { '.git' }) + -- We fallback to the current working directory if no project root is found + local project_root = vim.fs.root(bufnr, root_markers) or vim.fn.getcwd() + + on_dir(project_root) + end, + -- Same as inlined defaults that don't seem to work without hardcoding them in the lua config -- https://github.com/vunguyentuan/vscode-css-variables/blob/763a564df763f17aceb5f3d6070e0b444a2f47ff/packages/css-variables-language-server/src/CSSVariableManager.ts#L31-L50 settings = {