Compare commits

..

2 commits

Author SHA1 Message Date
c1ede21dd8 chore: make public api consistent
Some checks failed
CI / Luacheck (pull_request) Successful in 20s
CI / StyLua (pull_request) Failing after 4s
CI / Cargo Format (pull_request) Successful in 19s
CI / Build and test (pull_request) Successful in 1m55s
Conventional Tools Commitlint / Commitlint (pull_request) Successful in 5s
Summary:

Right now we have two ways to access the public api we have `require('ivy')`
and `vim.ivy. Each way has a different api that will cause some confusion.

Now both apis are the same so anyone that wants to integrate with ivy can do so
without having to figure out what one they need to use.

Test Plan:

The unit tests cover most of the work, I have also been using this locally for
quite some time now with now issues.
2024-09-03 06:47:04 +00:00
Ádran Farias Carnavale
7efb98baab
docs: installation instructions with mini.deps
This commit introduces a brief guide about how to install this plugin
using the `mini.deps` package manager

ref: https://github.com/echasnovski/mini.deps
2024-07-29 08:55:54 +01:00

View file

@ -21,6 +21,7 @@ git clone https://github.com/AdeAttwood/ivy.nvim ~/.config/nvim/pack/bundle/star
### Plugin managers
Using [lazy.nvim](https://github.com/folke/lazy.nvim)
```lua
{
"AdeAttwood/ivy.nvim",
@ -28,6 +29,31 @@ Using [lazy.nvim](https://github.com/folke/lazy.nvim)
},
```
Using [mini.deps](https://github.com/echasnovski/mini.deps)
```lua
local deps = require "mini.deps"
deps.later(function() -- Or `deps.now` if you want this to be loaded immediately
local build = function(args)
local obj = vim
.system(
{ "cargo", "build", "--release", string.format("%s%s%s", "--manifest-path=", args.path, "/Cargo.toml") },
{ text = true }
)
:wait()
vim.print(vim.inspect(obj))
end
deps.add {
source = "AdeAttwood/ivy.nvim",
hooks = {
post_install = build,
post_checkout = build,
},
}
end)
```
TODO: Add more plugin managers
### Setup / Configuration
@ -36,19 +62,19 @@ Ivy can be configured with minimal config that will give you all the defaults
provided by Ivy.
```lua
require('ivy').setup()
require("ivy").setup()
```
With Ivy you can configure your own backends.
```lua
require('ivy').setup {
require("ivy").setup {
backends = {
-- A backend module that will be registered
"ivy.backends.buffers",
-- Using a table so you can configure a custom keymap overriding the
-- default one.
{ "ivy.backends.files", { keymap = "<C-p>" } }
{ "ivy.backends.files", { keymap = "<C-p>" } },
},
}
```
@ -59,7 +85,7 @@ function, this can be used to load backends before or after the setup function
is called.
```lua
require('ivy').register_backend("ivy.backends.files")
require("ivy").register_backend "ivy.backends.files"
```
### Compiling
@ -116,27 +142,31 @@ customized when you register it.
Action can be run on selected candidates provide functionality
| Action | Key Map | Description |
| -------------- | ----------- | ------------------------------------------------------------------------------ |
| Complete | \<CR\> |Run the completion function, usually this will be opening a file |
| Vertical Split | \<C-v\> |Run the completion function in a new vertical split |
| Split | \<C-s\> |Run the completion function in a new split |
| Destroy | \<C-c\> |Close the results window |
| Clear | \<C-u\> |Clear the results window |
| Delete word | \<C-w\> |Delete the word under the cursor |
| Next | \<C-n\> |Move to the next candidate |
| Previous | \<C-p\> |Move to the previous candidate |
| Next Checkpoint| \<C-M-n\> |Move to the next candidate and keep Ivy open and focussed |
| Previous Checkpoint| \<C-M-n\>|Move to the previous candidate and keep Ivy open and focussed |
| Action | Key Map | Description |
| ------------------- | --------- | ---------------------------------------------------------------- |
| Complete | \<CR\> | Run the completion function, usually this will be opening a file |
| Vertical Split | \<C-v\> | Run the completion function in a new vertical split |
| Split | \<C-s\> | Run the completion function in a new split |
| Destroy | \<C-c\> | Close the results window |
| Clear | \<C-u\> | Clear the results window |
| Delete word | \<C-w\> | Delete the word under the cursor |
| Next | \<C-n\> | Move to the next candidate |
| Previous | \<C-p\> | Move to the previous candidate |
| Next Checkpoint | \<C-M-n\> | Move to the next candidate and keep Ivy open and focussed |
| Previous Checkpoint | \<C-M-n\> | Move to the previous candidate and keep Ivy open and focussed |
Add your own keymaps for an action by adding a `ftplugin/ivy.lua` file in your config.
Just add a simple keymap like this:
```lua
vim.api.nvim_set_keymap( "n", "<esc>", "<cmd>lua vim.ivy.destroy()<CR>", { noremap = true, silent = true, nowait = true })
vim.api.nvim_set_keymap(
"n",
"<esc>",
"<cmd>lua vim.ivy.destroy()<CR>",
{ noremap = true, silent = true, nowait = true }
)
```
## API
### ivy.run
@ -190,7 +220,9 @@ vertical split action it will open the buffer in a new `vsplit`
end,
-- Action callback that will be called on the completion or checkpoint actions.
-- The currently selected item is passed in as the result.
function(result) vim.cmd("edit " .. result) end
function(result)
vim.cmd("edit " .. result)
end
)
```