Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nvimdev/epo.nvim

A blazing fast and minimal neovim autocompletion
https://github.com/nvimdev/epo.nvim

Last synced: 14 days ago
JSON representation

A blazing fast and minimal neovim autocompletion

Awesome Lists containing this project

README

        

## epo.nvim

Blazingly fast, minimal lsp auto-completion and snippet plugin for neovim.

**Needs neovim nightly**

## Usage

```lua
-- the default completetopt set by epo
vim.opt.completeopt = "menu,menuone,noselect,popup"

-- use default settings
require('epo').setup()
```

options in setup param with default value

```lua
-- fuzzy match
fuzzy = false,
-- increase this value can aviod trigger complete when delete character.
debounce = 50,
-- when completion confrim auto show a signature help floating window.
signature = false,
-- border for lsp signature popup, :h nvim_open_win
signature_border = 'rounded',
-- lsp kind formatting, k is kind string "Field", "Struct", "Keyword" etc.
kind_format = function(k)
return k:lower():sub(1, 1)
end
```

You may want to pass the capabilities to your lsp

```lua
local capabilities = vim.tbl_deep_extend(
'force',
vim.lsp.protocol.make_client_capabilities(),
require('epo').register_cap()
)
```

Completion menu look dull and boring? Your colorscheme may be missing these highlights:

```
Pmenu
PmenuExtra
PmenuSel
PmenuKind
PmenuKindSel
PmenuExtraSel
PmenuSbar
PmenuThumb
```

Click to show some mapping presets

- TAB complete

```lua
vim.keymap.set('i', '', function()
if vim.fn.pumvisible() == 1 then
return ''
elseif vim.snippet.jumpable(1) then
return 'lua vim.snippet.jump(1)'
else
return ''
end
end, { expr = true })

vim.keymap.set('i', '', function()
if vim.fn.pumvisible() == 1 then
return ''
elseif vim.snippet.jumpable(-1) then
return 'lua vim.snippet.jump(-1)'
else
return ''
end
end, { expr = true })

vim.keymap.set('i', '', function()
if vim.fn.pumvisible() == 1 then
require('epo').disable_trigger()
end
return ''
end, {expr = true})
```

- use `` to accept completion

```lua
-- For using enter as completion, may conflict with some autopair plugin
vim.keymap.set("i", "", function()
if vim.fn.pumvisible() == 1 then
return ""
end
return ""
end, { expr = true, noremap = true })

-- nvim-autopair compatibility
vim.keymap.set("i", "", function()
if vim.fn.pumvisible() == 1 then
return ""
end
return require("nvim-autopairs").autopairs_cr()
end, { expr = true, noremap = true })
```

## License MIT