local opts = { tasks = { { name = 'ripgrep current directory', cmd = 'rg ${pattern} ${cwd}', tags = { 'ripgrep', 'cwd', 'search', 'pattern' }, ask = { ['${pattern}'] = { title = 'Pattern to use', default = 'error', }, }, window = { name = 'Ripgrep', close = false, keep_current = true, }, }, { name = 'ast-grep current directory', cmd = 'ast-grep -p "${pattern}" ${cwd}', tags = { 'ripgrep', 'cwd', 'search', 'pattern' }, ask = { ['${pattern}'] = { title = 'Pattern to use', default = '', }, }, window = { name = 'ast-grep', close = false, }, }, }, edit_mode = 'buffer', -- buffer, tab, split, vsplit config_file = '.tasks.json', -- name of json config file for project/global config config_order = { -- default: { project, global, opts }. Order in which -- tasks are aggregated 'project', -- .task.json in project directory 'global', -- .tasks.json in stdpath('data') 'opts', -- tasks defined in setup opts }, tag_source = true, -- display #project, #global, or #opt after tags global_tokens = { ['${cwd}'] = vim.fn.getcwd, ['${do-the-needful}'] = 'please', ['${projectname}'] = function() return vim.fn.system 'basename $(git rev-parse --show-toplevel)' end, }, ask_functions = { get_cwd = function() return vim.fn.getcwd() end, current_file = function() return vim.fn.expand '%' end, }, } return { 'catgoose/do-the-needful.nvim', event = 'BufReadPre', keys = { { 'np', [[Telescope do-the-needful please]], 'n' }, { 'nn', [[Telescope do-the-needful]], 'n' }, }, dependencies = 'nvim-lua/plenary.nvim', opts = opts, }