diff --git a/lua/telescope/_extensions/egrepify.lua b/lua/telescope/_extensions/egrepify.lua index 1617a50..28a0931 100644 --- a/lua/telescope/_extensions/egrepify.lua +++ b/lua/telescope/_extensions/egrepify.lua @@ -145,6 +145,22 @@ local egrepify = function(opts) end end + local hidden_opts = { "--hidden", "--no-ignore", "-u", "-uu", "-uuu" } + local ignore_opts = { "--no-hidden", "--ignore" } + if popts.vimgrep_arguments then + for i = #popts.vimgrep_arguments, 1, -1 do + if vim.tbl_contains(hidden_opts, popts.vimgrep_arguments[i]) then + popts.hidden = true + break + end + if vim.tbl_contains(ignore_opts, popts.vimgrep_arguments[i]) then + popts.hidden = false + break + end + end + popts.hidden = popts.hidden or false + end + egrep_picker(popts) end diff --git a/lua/telescope/_extensions/egrepify/actions.lua b/lua/telescope/_extensions/egrepify/actions.lua index 0dda8b4..5fd44b0 100644 --- a/lua/telescope/_extensions/egrepify/actions.lua +++ b/lua/telescope/_extensions/egrepify/actions.lua @@ -55,5 +55,16 @@ function egrep_actions.toggle_permutations(prompt_bufnr) current_picker:refresh() end +--- Toggle the use of hidden files option in the picker +--- @param prompt_bufnr number: The prompt bufnr +function egrep_actions.toggle_hidden(prompt_bufnr) + local current_picker = action_state.get_current_picker(prompt_bufnr) + current_picker.hidden = not current_picker.hidden + local msg = current_picker.hidden and "Hidden files enabled" or "Hidden files disabled" + dismiss_notifications() + egrep_utils.notify("picker", { msg = msg, level = "INFO" }) + current_picker:refresh() +end + egrep_actions = transform_mod(egrep_actions) return egrep_actions diff --git a/lua/telescope/_extensions/egrepify/config.lua b/lua/telescope/_extensions/egrepify/config.lua index 1bc3d69..a89aa7a 100644 --- a/lua/telescope/_extensions/egrepify/config.lua +++ b/lua/telescope/_extensions/egrepify/config.lua @@ -27,7 +27,8 @@ _TelescopeEgrepifyConfig = { [""] = egrep_actions.toggle_prefixes, [""] = egrep_actions.toggle_and, [""] = egrep_actions.toggle_permutations, - [""] = actions.to_fuzzy_refine + [""] = egrep_actions.toggle_hidden, + [""] = actions.to_fuzzy_refine, }, }, prefixes = { diff --git a/lua/telescope/_extensions/egrepify/picker.lua b/lua/telescope/_extensions/egrepify/picker.lua index 064ca05..1b83753 100644 --- a/lua/telescope/_extensions/egrepify/picker.lua +++ b/lua/telescope/_extensions/egrepify/picker.lua @@ -64,6 +64,7 @@ end ---@field use_prefixes boolean use prefixes in prompt, toggleable with (default: true) ---@field AND boolean search with fzf-like AND logic to ordered sub-tokens of prompt ---@field permutations boolean search permutations of sub-tokens of prompt, implies AND true +---@field hidden boolean search hidden files, toggleable with (true if corresponding flags are set in `vimgrep_arguments`) ---@field prefixes table prefixes for `rg` input, see |telescope-egrepify.prefix| ---@field filename_hl string hl for title (default: `EgrepifyFile` w/ link to `Title`) ---@field title boolean filename as title, false to inline (default: true) @@ -170,6 +171,13 @@ function Picker.picker(opts) else -- matches everything in between sub-tokens and permutations prompt = egrep_utils.permutations(tokens) end + if current_picker and current_picker.hidden then + prompt_args[#prompt_args + 1] = "--no-ignore" + prompt_args[#prompt_args + 1] = "--hidden" + else + prompt_args[#prompt_args + 1] = "--ignore" + prompt_args[#prompt_args + 1] = "--no-hidden" + end return flatten { args, prompt_args, "--", prompt, search_list } end, egrep_entry_maker(opts), opts.max_results, opts.cwd) @@ -196,6 +204,7 @@ function Picker.picker(opts) cached_opts.use_prefixes = picker.use_prefixes cached_opts.AND = picker.AND cached_opts.permutations = picker.permutations + cached_opts.hidden = picker.hidden end end, } @@ -209,6 +218,7 @@ function Picker.picker(opts) picker.AND = vim.F.if_nil(opts.AND, egrep_conf.AND) -- matches everything in between sub-tokens and permutations picker.permutations = vim.F.if_nil(opts.permutations, egrep_conf.permutations) + picker.hidden = vim.F.if_nil(opts.hidden, egrep_conf.hidden) if picker.permutations then picker.AND = true