From deb3b03826119399610e23384ec75a29529437f6 Mon Sep 17 00:00:00 2001 From: Christopher Brewin Date: Tue, 12 Nov 2024 02:56:20 +1000 Subject: [PATCH] feat (repo-map) configuration option for repo map ignore patterns (#831) --- lua/avante/config.lua | 4 ++++ lua/avante/repo_map.lua | 5 ++++- lua/avante/utils/init.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) 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