From a37e4699c42284c819f8487afacf55e5d0c8cccf Mon Sep 17 00:00:00 2001 From: TJ DeVries Date: Fri, 30 Oct 2020 18:31:06 -0400 Subject: [PATCH] feat: Closes #205 --- README.md | 11 +++++++++++ lua/telescope/config.lua | 2 ++ lua/telescope/pickers.lua | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/README.md b/README.md index e0892e4..4a3580d 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,17 @@ require('telescope').setup{ } ``` +### Default Configuration Keys + + +- ( Missing configuration description for many items here, but I'm trying :smile: ) +- `file_ignore_patterns`: + - List of strings that are Lua patterns that, if any are matched, will make result be ignored. + - Please note, these are Lua patterns. See: [Lua Patterns](https://www.lua.org/pil/20.2.html) + - Example: + - `file_ignore_patterns = { "scratch/.*", "%.env" }` + - This will ignore anything in `scratch/` folders and any files named `.env` + ## Examples ```vim diff --git a/lua/telescope/config.lua b/lua/telescope/config.lua index 681c074..5e3212a 100644 --- a/lua/telescope/config.lua +++ b/lua/telescope/config.lua @@ -84,6 +84,8 @@ function config.set_defaults(defaults) set("generic_sorter", sorters.get_generic_fuzzy_sorter) set("file_sorter", sorters.get_fuzzy_file) + + set("file_ignore_patterns", nil) end function config.clear_defaults() diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua index 940697e..d4b5d71 100644 --- a/lua/telescope/pickers.lua +++ b/lua/telescope/pickers.lua @@ -81,6 +81,7 @@ function Picker:new(opts) stats = {}, attach_mappings = opts.attach_mappings, + file_ignore_patterns = get_default(opts.file_ignore_patterns, config.values.file_ignore_patterns), sorting_strategy = get_default(opts.sorting_strategy, config.values.sorting_strategy), selection_strategy = get_default(opts.selection_strategy, config.values.selection_strategy), @@ -421,6 +422,13 @@ function Picker:find() log.trace("Processing result... ", entry) + for _, v in ipairs(self.file_ignore_patterns or {}) do + if string.find(entry.value, v) then + log.debug("SKPIPING", entry.value, "because", v) + return + end + end + local sort_ok, sort_score = nil, 0 if self.sorter then sort_ok, sort_score = self:_track("_sort_time", pcall, self.sorter.score, self.sorter, prompt, entry)