From 9a0414e6d330562ba99969cd66daca58c22dd478 Mon Sep 17 00:00:00 2001 From: phanium <91544758+phanen@users.noreply.github.com> Date: Sun, 15 Feb 2026 08:32:42 +0800 Subject: [PATCH] fix(config)!: try to insert install_dir after default data/site rtp If user are not using default rtp, then runtimepath may need to be manually adjust again (like https://github.com/nvim-treesitter/nvim-treesitter/issues/8212) --- lua/nvim-treesitter/config.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lua/nvim-treesitter/config.lua b/lua/nvim-treesitter/config.lua index 97fca649f..fb33db5c1 100644 --- a/lua/nvim-treesitter/config.lua +++ b/lua/nvim-treesitter/config.lua @@ -5,9 +5,11 @@ M.tiers = { 'stable', 'unstable', 'unmaintained', 'unsupported' } ---@class TSConfig ---@field install_dir string +local default_dir = vim.fs.joinpath(vim.fn.stdpath('data') --[[@as string]], 'site') + ---@type TSConfig local config = { - install_dir = vim.fs.joinpath(vim.fn.stdpath('data') --[[@as string]], 'site'), + install_dir = default_dir, } ---Setup call for users to override configuration configurations. @@ -16,7 +18,13 @@ function M.setup(user_data) if user_data then if user_data.install_dir then user_data.install_dir = vim.fs.normalize(user_data.install_dir) - vim.o.rtp = user_data.install_dir .. ',' .. vim.o.rtp + local rtp = vim.split(vim.o.rtp, ',') + local idx = vim.iter(ipairs(rtp)):find(function(_, dir) + return dir == default_dir + end) + -- install after default_dir, only prepend when it's not found + table.insert(rtp, idx or 1, user_data.install_dir) + vim.o.rtp = table.concat(rtp, ',') end config = vim.tbl_deep_extend('force', config, user_data) end