diff --git a/lua/avante/config.lua b/lua/avante/config.lua index 100a6a3..8c9dd7e 100644 --- a/lua/avante/config.lua +++ b/lua/avante/config.lua @@ -209,6 +209,10 @@ M.defaults = { hints = { enabled = true, }, + --- @class AvanteRepoMapConfig + repo_map = { + ignore_patterns = { "%.git", "%.worktree", "__pycache__", "node_modules" }, -- ignore files matching these + }, } ---@type avante.Config diff --git a/lua/avante/repo_map.lua b/lua/avante/repo_map.lua index 93dfc92..6c2f303 100644 --- a/lua/avante/repo_map.lua +++ b/lua/avante/repo_map.lua @@ -1,6 +1,7 @@ local Popup = require("nui.popup") local Utils = require("avante.utils") local event = require("nui.utils.autocmd").event +local Config = require("avante.config") local fn = vim.fn local filetype_map = { @@ -47,7 +48,9 @@ end function RepoMap._build_repo_map(project_root, file_ext) local output = {} local gitignore_path = project_root .. "/.gitignore" - local ignore_patterns, negate_patterns = Utils.parse_gitignore(gitignore_path) + local gitignore_patterns, negate_patterns = Utils.parse_gitignore(gitignore_path) + local ignore_patterns = vim.list_extend(gitignore_patterns, Config.repo_map.ignore_patterns) + local filepaths = Utils.scan_directory(project_root, ignore_patterns, negate_patterns) vim.iter(filepaths):each(function(filepath) if not Utils.is_same_file_ext(file_ext, filepath) then return end diff --git a/lua/avante/utils/init.lua b/lua/avante/utils/init.lua index c0b8a1c..ff4741f 100644 --- a/lua/avante/utils/init.lua +++ b/lua/avante/utils/init.lua @@ -583,7 +583,7 @@ local function pattern_to_lua(pattern) end function M.parse_gitignore(gitignore_path) - local ignore_patterns = { "%.git", "%.worktree", "__pycache__", "node_modules", "vendor" } + local ignore_patterns = {} local negate_patterns = {} local file = io.open(gitignore_path, "r") if not file then return ignore_patterns, negate_patterns end