🧙 Completion

- Add additional completion sources:
  - yanky
  - env
  - calc
  - conventionalcommits
- Add more friendly completion mappings
This commit is contained in:
2024-07-17 05:52:58 -04:00
parent 302817f9dd
commit 8f3df3e569
+26 -46
View File
@@ -56,55 +56,35 @@ return {
---@param opts cmp.ConfigSchema ---@param opts cmp.ConfigSchema
opts = function(_, opts) opts = function(_, opts)
table.insert(opts.sources, { name = "emoji" }) table.insert(opts.sources, { name = "emoji" })
end, table.insert(opts.sources, { name = "cmp_yanky" })
dependencies = { "hrsh7th/cmp-emoji" }, table.insert(opts.sources, { name = "dotenv" })
}, table.insert(opts.sources, { name = "calc" })
{ -- Supertab completion table.insert(opts.sources, { name = "conventionalcommits" })
-- Use <tab> for completion and snippets
"hrsh7th/nvim-cmp",
---@param opts cmp.ConfigSchema
opts = function(_, opts)
local has_words_before = function()
unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0
and vim.api
.nvim_buf_get_lines(0, line - 1, line, true)[1]
:sub(col, col)
:match("%s")
== nil
end
local cmp = require("cmp") local cmp = require("cmp")
cmp.setup({
opts.mapping = vim.tbl_extend("force", opts.mapping, { mapping = {
["<Tab>"] = cmp.mapping(function(fallback) ["<C-p>"] = cmp.mapping.select_prev_item(),
if cmp.visible() then ["<C-n>"] = cmp.mapping.select_next_item(),
-- You could replace select_next_item() with confirm({ select = true }) to get VS Code autocompletion behavior ["<S-Tab>"] = cmp.mapping.select_prev_item(),
cmp.select_next_item() ["<Tab>"] = cmp.mapping.select_next_item(),
elseif vim.snippet.active({ direction = 1 }) then ["<C-S-f>"] = cmp.mapping.scroll_docs(-4),
vim.schedule(function() ["<C-f>"] = cmp.mapping.scroll_docs(4),
vim.snippet.jump(1) ["<C-Space>"] = cmp.mapping.complete(),
end) ["<C-e>"] = cmp.mapping.close(),
elseif has_words_before() then ["<CR>"] = cmp.mapping.confirm({
cmp.complete() behavior = cmp.ConfirmBehavior.Insert,
else select = true,
fallback() }),
end },
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif vim.snippet.active({ direction = -1 }) then
vim.schedule(function()
vim.snippet.jump(-1)
end)
else
fallback()
end
end, { "i", "s" }),
}) })
end, end,
dependencies = {
"hrsh7th/cmp-emoji",
"chrisgrieser/cmp_yanky",
"SergioRibera/cmp-dotenv",
"hrsh7th/cmp-calc",
"davidsierradz/cmp-conventionalcommits",
},
}, },
{ {
"norcalli/nvim-colorizer.lua", "norcalli/nvim-colorizer.lua",