diff options
| author | Robert Günzler <r@gnzler.io> | 2024-11-25 13:30:37 +0100 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2024-11-25 13:58:25 +0100 |
| commit | 23de12baba9fbfc4ca24581b37c374aa5345cc25 (patch) | |
| tree | e4b3c421bad572eb85a1089eaad44dc3059ab6e6 /.vim/lua/internal/find.lua | |
| parent | 18e3848110da0a59843058927ea04b496f5db2a5 (diff) | |
update nvim config
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '.vim/lua/internal/find.lua')
| -rw-r--r-- | .vim/lua/internal/find.lua | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/.vim/lua/internal/find.lua b/.vim/lua/internal/find.lua deleted file mode 100644 index 32bdea5..0000000 --- a/.vim/lua/internal/find.lua +++ /dev/null @@ -1,106 +0,0 @@ -local M = {} - -local get_searchdirs = function(dirs) - dirs = dirs or {} - if type(dirs) == 'table' and #dirs > 0 then - return dirs - elseif type(dirs) == 'string' and (dirs == ':workspace') then - dirs = vim.lsp.buf.list_workspace_folders() - elseif type(dirs) == 'string' and not (dirs == '') then - dirs = vim.split(dirs, ',') - end - -- skip asking if we're looking at known filetypes - local ft = vim.api.nvim_buf_get_option(0, 'filetype') - if #dirs == 0 and (ft == 'dirbuf' or ft == 'NvimTree' or ft == 'alpha') then - dirs = { '%:p:h' } - end - -- ask user - if #dirs == 0 then - vim.ui.input({ prompt = 'Search directories: ', default = '%:p:h' }, function(result) - dirs = { result } - end) - end - -- default to something reasonable - if #dirs == 0 then - dirs = { '%:p:h' } - end - -- finally return - return dirs -end - -function onchoice(opts, cb) - if not cb then - return - end - opts.attach_mappings = function(prompt_bufnr) - require('telescope.actions').select_default:replace(function() - local selection = require('telescope.actions.state').get_selected_entry() - if selection == nil then - return - end - require('telescope.actions').close(prompt_bufnr) - on_choice(selection.path) - end) - return true - end -end - -function search_shim(fn, search_dirs, opts, cb) - opts = opts or {} - opts.search_dirs = get_searchdirs(search_dirs) - opts.prompt_title = vim.fn.expand(table.concat(opts.search_dirs, ',')) - onchoice(opts, cb) - fn(opts) -end - -function M.live_grep(search_dirs, opts, cb) - search_shim(require('telescope.builtin').live_grep, search_dirs, opts, cb) -end - -function M.find_files(search_dirs, opts, cb) - -- convenience aliases - if type(search_dirs) == 'string' and search_dirs == 'data' then - search_dirs = vim.fn.stdpath('data') - end - search_shim(require('telescope.builtin').find_files, search_dirs, opts, cb) -end - -function M.setup(opts) - vim.keymap.set('n', ';f', function() - vim.notify('use gsf', vim.log.levels.ERROR) - end, { desc = 'find files' }) - vim.keymap.set('n', ';g', function() - vim.notify('use gsg', vim.log.levels.ERROR) - end, { desc = 'live grep' }) - - vim.keymap.set('n', 'gsg', function() - M.live_grep(':workspace') - end, { desc = 'live grep in workspace' }) - vim.keymap.set('n', 'gsG', M.live_grep, { desc = 'live grep ask' }) - vim.keymap.set('n', 'gs-', function() - M.live_grep('%:p:h') - end, { desc = 'live grep in parent' }) - - vim.keymap.set('n', 'gsf', function() - M.find_files(':workspace') - end, { desc = 'find files in workspace' }) - vim.keymap.set('n', 'gsF', M.find_files, { desc = 'find files ask' }) - - vim.api.nvim_create_user_command('Grep', function(o) - M.live_grep(table.concat(o.fargs)) - end, { - desc = 'live grep (rg)', - nargs = '*', - complete = 'dir', - }) - - vim.api.nvim_create_user_command('Find', function(o) - M.find_files(table.concat(o.fargs)) - end, { - desc = 'find files (fd)', - nargs = '*', - complete = 'dir', - }) -end - -return M |