diff --git a/lua/ivy/backends/rg.lua b/lua/ivy/backends/rg.lua new file mode 100644 index 0000000..56d9921 --- /dev/null +++ b/lua/ivy/backends/rg.lua @@ -0,0 +1,12 @@ +local utils = require "ivy.utils" + +local rg = { + name = "RG", + command = "IvyRg", + description = "Run ripgrep to search for content in files", + keymap = "/", + items = utils.command_finder "rg --vimgrep --", + callback = utils.vimgrep_action(), +} + +return rg diff --git a/plugin/ivy.lua b/plugin/ivy.lua index 2834681..a3a670e 100644 --- a/plugin/ivy.lua +++ b/plugin/ivy.lua @@ -1,34 +1,40 @@ local controller = require "ivy.controller" -- Put the controller in to the vim global so we can access it in mappings -- better without requires. You can call controller commands like `vim.ivy.xxx`. -- luacheck: ignore vim.ivy = controller local register_backend = function(backend) assert(backend.command, "The backend must have a command") assert(backend.items, "The backend must have a items function") assert(backend.callback, "The backend must have a callback function") local user_command_options = { bang = true } if backend.description ~= nil then user_command_options.desc = backend.description end local name = backend.name or backend.command vim.api.nvim_create_user_command(backend.command, function() vim.ivy.run(name, backend.items, backend.callback) end, user_command_options) if backend.keymap ~= nil then vim.api.nvim_set_keymap("n", backend.keymap, "" .. backend.command .. "", { nowait = true, silent = true }) end end register_backend(require "ivy.backends.ag") register_backend(require "ivy.backends.buffers") register_backend(require "ivy.backends.files") register_backend(require "ivy.backends.lines") register_backend(require "ivy.backends.lsp-workspace-symbols") +if vim.fn.executable "rg" then + register_backend(require "ivy.backends.rg") +elseif vim.fn.executable "ag" then + register_backend(require "ivy.backends.ag") +end + vim.cmd "highlight IvyMatch cterm=bold gui=bold"