From b6ae4dfe7fe443362f5f31d71797173ec12c2598 Mon Sep 17 00:00:00 2001 From: phyer Date: Mon, 17 Feb 2025 12:56:09 +0800 Subject: [PATCH] fix: use absolute paths to handle gitignore Co-authored-by: zhangkun9038@dingtalk.com --- lua/avante/utils/init.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lua/avante/utils/init.lua b/lua/avante/utils/init.lua index 7e97297..fef7648 100644 --- a/lua/avante/utils/init.lua +++ b/lua/avante/utils/init.lua @@ -665,6 +665,19 @@ function M.scan_directory_respect_gitignore(options) local directory = options.directory local gitignore_path = directory .. "/.gitignore" local gitignore_patterns, gitignore_negate_patterns = M.parse_gitignore(gitignore_path) + + -- Convert relative paths in gitignore to absolute paths based on project root + local project_root = M.get_project_root() + local function to_absolute_path(pattern) + -- Skip if already absolute path + if pattern:sub(1, 1) == "/" then return pattern end + -- Convert relative path to absolute + return Path:new(project_root, pattern):absolute() + end + + gitignore_patterns = vim.tbl_map(to_absolute_path, gitignore_patterns) + gitignore_negate_patterns = vim.tbl_map(to_absolute_path, gitignore_negate_patterns) + return M.scan_directory({ directory = directory, gitignore_patterns = gitignore_patterns,