change completion plugin
this was done to support dynamically enabling AI autosuggestion and is disabled by default
This commit is contained in:
parent
ec750a0e89
commit
6e2a88508c
7 changed files with 114 additions and 126 deletions
|
|
@ -41,7 +41,7 @@ cli = [
|
||||||
dev = [
|
dev = [
|
||||||
"gcc",
|
"gcc",
|
||||||
"gcc-c++",
|
"gcc-c++",
|
||||||
"just"
|
"just",
|
||||||
"nodejs",
|
"nodejs",
|
||||||
"openssl",
|
"openssl",
|
||||||
"openssl-devel",
|
"openssl-devel",
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,13 @@
|
||||||
{
|
{
|
||||||
"CopilotChat.nvim": { "branch": "canary", "commit": "df19e7ab15537436a26f59fa991f2fa81d847a0d" },
|
"CopilotChat.nvim": { "branch": "canary", "commit": "df19e7ab15537436a26f59fa991f2fa81d847a0d" },
|
||||||
"LuaSnip": { "branch": "master", "commit": "ce0a05ab4e2839e1c48d072c5236cce846a387bc" },
|
"LuaSnip": { "branch": "master", "commit": "ce0a05ab4e2839e1c48d072c5236cce846a387bc" },
|
||||||
|
"blink-cmp-copilot": { "branch": "main", "commit": "e3eedf36ceda1932e296ec894de4ceea8ddeacb6" },
|
||||||
|
"blink.cmp": { "branch": "main", "commit": "81069e3955a8b4d5063287a2a6a47a844e9ca2cb" },
|
||||||
|
"blink.compat": { "branch": "main", "commit": "08943fdf2eb00432d6205db6d0239434135416bd" },
|
||||||
"catppuccin": { "branch": "main", "commit": "637d99e638bc6f1efedac582f6ccab08badac0c6" },
|
"catppuccin": { "branch": "main", "commit": "637d99e638bc6f1efedac582f6ccab08badac0c6" },
|
||||||
"ccc.nvim": { "branch": "main", "commit": "4fb5abaef2f2e0540fe22d4d74a9841205fff9e4" },
|
"ccc.nvim": { "branch": "main", "commit": "4fb5abaef2f2e0540fe22d4d74a9841205fff9e4" },
|
||||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
|
||||||
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
|
|
||||||
"cmp-conventionalcommits": { "branch": "master", "commit": "a4dfacf0601130b7f8afa7c948d735c27802fb7f" },
|
|
||||||
"cmp-git": { "branch": "main", "commit": "22116bdffbe68bfc6ca05d52e9f217587cbfea8b" },
|
|
||||||
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
|
|
||||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
|
||||||
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
|
|
||||||
"comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" },
|
"comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" },
|
||||||
"conform.nvim": { "branch": "master", "commit": "0ebe875d9c306f5fc829db38492ffff2a70d8e9d" },
|
"conform.nvim": { "branch": "master", "commit": "0ebe875d9c306f5fc829db38492ffff2a70d8e9d" },
|
||||||
"copilot-cmp": { "branch": "master", "commit": "b6e5286b3d74b04256d0a7e3bd2908eabec34b44" },
|
|
||||||
"copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" },
|
"copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" },
|
||||||
"copilot.lua": { "branch": "master", "commit": "f8d8d872bb319f640d5177dad5fbf01f7a16d7d0" },
|
"copilot.lua": { "branch": "master", "commit": "f8d8d872bb319f640d5177dad5fbf01f7a16d7d0" },
|
||||||
"dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" },
|
"dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" },
|
||||||
|
|
@ -33,7 +28,6 @@
|
||||||
"noice.nvim": { "branch": "main", "commit": "6263b6696811f0b11c88d8d2371134b1cc1762fc" },
|
"noice.nvim": { "branch": "main", "commit": "6263b6696811f0b11c88d8d2371134b1cc1762fc" },
|
||||||
"nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" },
|
"nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" },
|
||||||
"nvim-autopairs": { "branch": "master", "commit": "78a4507bb9ffc9b00f11ae0ac48243d00cb9194d" },
|
"nvim-autopairs": { "branch": "master", "commit": "78a4507bb9ffc9b00f11ae0ac48243d00cb9194d" },
|
||||||
"nvim-cmp": { "branch": "main", "commit": "a110e12d0b58eefcf5b771f533fc2cf3050680ac" },
|
|
||||||
"nvim-lint": { "branch": "master", "commit": "efc6fc83f0772283e064c53a8f9fb5645bde0bc0" },
|
"nvim-lint": { "branch": "master", "commit": "efc6fc83f0772283e064c53a8f9fb5645bde0bc0" },
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "216deb2d1b5fbf24398919228208649bbf5cbadf" },
|
"nvim-lspconfig": { "branch": "master", "commit": "216deb2d1b5fbf24398919228208649bbf5cbadf" },
|
||||||
"nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" },
|
"nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" },
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ return {
|
||||||
Color = " ",
|
Color = " ",
|
||||||
Constant = " ",
|
Constant = " ",
|
||||||
Constructor = " ",
|
Constructor = " ",
|
||||||
Copilot = " ",
|
Copilot = " ",
|
||||||
Enum = " ",
|
Enum = " ",
|
||||||
EnumMember = " ",
|
EnumMember = " ",
|
||||||
Event = " ",
|
Event = " ",
|
||||||
|
|
|
||||||
|
|
@ -7,17 +7,15 @@ return { -- Change colors.none if not using a transparent background
|
||||||
transparent_background = true,
|
transparent_background = true,
|
||||||
integrations = {
|
integrations = {
|
||||||
aerial = true,
|
aerial = true,
|
||||||
|
blink_cmp = true,
|
||||||
cmp = true,
|
cmp = true,
|
||||||
notify = true,
|
|
||||||
harpoon = false,
|
harpoon = false,
|
||||||
|
indent_blankline = { enabled = true, scope_color = "text", },
|
||||||
|
lsp_trouble = true,
|
||||||
mason = true,
|
mason = true,
|
||||||
neogit = true,
|
neogit = true,
|
||||||
noice = true,
|
noice = true,
|
||||||
lsp_trouble = true,
|
notify = true,
|
||||||
indent_blankline = {
|
|
||||||
enabled = true,
|
|
||||||
scope_color = "text",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
custom_highlights = function(colors)
|
custom_highlights = function(colors)
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,15 @@ return {
|
||||||
config = function()
|
config = function()
|
||||||
require("copilot").setup({
|
require("copilot").setup({
|
||||||
suggestion = { enabled = false },
|
suggestion = { enabled = false },
|
||||||
panel = { enabled = true, auto_refresh = true },
|
panel = { enabled = false },
|
||||||
})
|
})
|
||||||
|
|
||||||
|
vim.g.copilot_autocomplete_enabled = false
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("CopilotToggleAutocomplete", function()
|
||||||
|
vim.g.copilot_autocomplete_enabled = not vim.g.copilot_autocomplete_enabled
|
||||||
|
print("Copilot autocompletion: " .. tostring(vim.g.copilot_autocomplete_enabled))
|
||||||
|
end, { desc = "Toggle Copilot autocompletion" })
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -62,6 +69,7 @@ return {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
|
|
||||||
keys = {
|
keys = {
|
||||||
{
|
{
|
||||||
"<leader>at",
|
"<leader>at",
|
||||||
|
|
|
||||||
|
|
@ -1,120 +1,107 @@
|
||||||
---@diagnostic disable: missing-fields
|
|
||||||
return {
|
return {
|
||||||
"hrsh7th/nvim-cmp",
|
"saghen/blink.cmp",
|
||||||
version = false, -- last release is way too old
|
lazy = false,
|
||||||
event = "InsertEnter",
|
version = "*",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"L3MON4D3/LuaSnip",
|
"rafamadriz/friendly-snippets",
|
||||||
"davidsierradz/cmp-conventionalcommits",
|
"giuxtaposition/blink-cmp-copilot",
|
||||||
"hrsh7th/cmp-buffer",
|
"folke/lazydev.nvim",
|
||||||
"hrsh7th/cmp-cmdline",
|
{ "saghen/blink.compat", version = "*", },
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
|
||||||
"hrsh7th/cmp-path",
|
|
||||||
"petertriho/cmp-git",
|
|
||||||
"saadparwaiz1/cmp_luasnip",
|
|
||||||
"windwp/nvim-autopairs",
|
|
||||||
{
|
|
||||||
"zbirenbaum/copilot-cmp",
|
|
||||||
config = function()
|
|
||||||
require("copilot_cmp").setup()
|
|
||||||
end
|
|
||||||
},
|
},
|
||||||
},
|
opts = function()
|
||||||
config = function()
|
local window_options = {
|
||||||
vim.api.nvim_set_hl(0, "CmpGhostText", { link = "Comment", default = true })
|
|
||||||
local cmp = require("cmp")
|
|
||||||
|
|
||||||
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
|
|
||||||
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
|
|
||||||
|
|
||||||
local defaults = require("cmp.config.default")()
|
|
||||||
local window_opts = {
|
|
||||||
border = "rounded",
|
border = "rounded",
|
||||||
side_padding = 1,
|
winblend = vim.o.pumblend,
|
||||||
-- fix colors for catppuccin colorscheme
|
|
||||||
winhighlight = "Normal:Pmenu,FloatBorder:FloatBorder,CursorLine:PmenuSel,Search:None",
|
|
||||||
}
|
}
|
||||||
local opts = {
|
|
||||||
visible_docs = false,
|
---@module 'blink.cmp'
|
||||||
|
---@type blink.cmp.Config
|
||||||
|
return {
|
||||||
|
sources = {
|
||||||
|
providers = {
|
||||||
|
dadbod = { name = "Dadbod", module = "vim_dadbod_completion.blink" },
|
||||||
|
lazydev = { name = "LazyDev", module = "lazydev.integrations.blink" },
|
||||||
|
copilot = {
|
||||||
|
name = "copilot",
|
||||||
|
module = "blink-cmp-copilot",
|
||||||
|
score_offset = 5,
|
||||||
|
enabled = function()
|
||||||
|
if vim.g.copilot_autocomplete_enabled == nil then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return vim.g.copilot_autocomplete_enabled
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
luasnip = {
|
||||||
|
name = 'luasnip',
|
||||||
|
module = 'blink.compat.source',
|
||||||
|
score_offset = -3,
|
||||||
|
opts = {
|
||||||
|
use_show_condition = false,
|
||||||
|
show_autosnippets = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- nvim-cmp sources
|
||||||
|
compat = {},
|
||||||
completion = {
|
completion = {
|
||||||
completeopt = "menu,menuone,noinsert",
|
enabled_providers = {
|
||||||
|
"copilot",
|
||||||
|
"lsp",
|
||||||
|
"path",
|
||||||
|
"snippets",
|
||||||
|
"buffer",
|
||||||
|
"dadbod",
|
||||||
|
"lazydev",
|
||||||
},
|
},
|
||||||
snippet = {
|
|
||||||
expand = function(args)
|
|
||||||
require("luasnip").lsp_expand(args.body)
|
|
||||||
end,
|
|
||||||
},
|
},
|
||||||
mapping = cmp.mapping.preset.insert({
|
},
|
||||||
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
accept = {
|
||||||
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
auto_brackets = { enabled = true },
|
||||||
["<C-j>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
expand_snippet = function(snippet) require('luasnip').lsp_expand(snippet) end,
|
||||||
["<C-k>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
},
|
||||||
["<C-u>"] = cmp.mapping.scroll_docs(-4),
|
trigger = { signature_help = { enabled = true } },
|
||||||
["<C-d>"] = cmp.mapping.scroll_docs(4),
|
keymap = {
|
||||||
["<C-o>"] = function()
|
preset = "enter",
|
||||||
if cmp.visible_docs() then
|
["<C-u>"] = { 'scroll_documentation_up', 'fallback' },
|
||||||
cmp.close_docs()
|
["<C-d>"] = { 'scroll_documentation_down', 'fallback' },
|
||||||
else
|
},
|
||||||
cmp.open_docs()
|
highlight = {
|
||||||
|
-- sets the fallback highlight groups to nvim-cmp's highlight groups
|
||||||
|
-- useful for when your theme doesn't support blink.cmp
|
||||||
|
-- will be removed in a future release, assuming themes add support
|
||||||
|
use_nvim_cmp_as_default = false,
|
||||||
|
},
|
||||||
|
-- set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
|
||||||
|
-- adjusts spacing to ensure icons are aligned
|
||||||
|
nerd_font_variant = "mono",
|
||||||
|
windows = {
|
||||||
|
autocomplete = vim.tbl_extend("force", window_options, {
|
||||||
|
selection = "manual",
|
||||||
|
---@type blink.cmp.Draw
|
||||||
|
draw = {
|
||||||
|
components = {
|
||||||
|
kind_icon = {
|
||||||
|
text = function(ctx)
|
||||||
|
if ctx.item.source_name == "copilot" then
|
||||||
|
ctx.kind_icon = require("aleidk.constants").icons.kinds.Copilot
|
||||||
end
|
end
|
||||||
|
|
||||||
|
return ctx.kind_icon .. ctx.icon_gap
|
||||||
end,
|
end,
|
||||||
["<C-Space>"] = cmp.mapping.complete(),
|
}
|
||||||
["<C-e>"] = cmp.mapping.abort(),
|
}
|
||||||
["<BR>"] = cmp.mapping.abort(),
|
}
|
||||||
["<C-CR>"] = cmp.mapping.confirm({ select = false }), -- Confirm only if selected an item
|
|
||||||
["<CR>"] = cmp.mapping.confirm({
|
|
||||||
-- Auto confirms first item
|
|
||||||
behavior = cmp.ConfirmBehavior.Replace,
|
|
||||||
select = true,
|
|
||||||
}),
|
}),
|
||||||
|
documentation = vim.tbl_extend("force", window_options, {
|
||||||
|
auto_show = true,
|
||||||
|
winblend = 0,
|
||||||
}),
|
}),
|
||||||
sources = cmp.config.sources({
|
|
||||||
{ name = "conventionalcommits" },
|
|
||||||
{ name = "copilot" },
|
|
||||||
{ name = "nvim_lsp" },
|
|
||||||
{ name = "luasnip" },
|
|
||||||
{ name = "buffer" },
|
|
||||||
{ name = "path" },
|
|
||||||
}),
|
|
||||||
formatting = {
|
|
||||||
fields = { "kind", "abbr", "menu" },
|
|
||||||
format = function(_, item)
|
|
||||||
local icons = require("aleidk.constants").icons.kinds
|
|
||||||
if icons[item.kind] then
|
|
||||||
item.kind = icons[item.kind] .. item.kind
|
|
||||||
end
|
|
||||||
return item
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
window = {
|
|
||||||
completion = cmp.config.window.bordered(window_opts),
|
|
||||||
documentation = cmp.config.window.bordered(window_opts),
|
|
||||||
},
|
|
||||||
experimental = {
|
|
||||||
ghost_text = {
|
ghost_text = {
|
||||||
hl_group = "CmpGhostText",
|
enabled = true,
|
||||||
},
|
|
||||||
},
|
|
||||||
sorting = {
|
|
||||||
priority_weight = 2,
|
|
||||||
comparators = {
|
|
||||||
require("copilot_cmp.comparators").prioritize,
|
|
||||||
|
|
||||||
-- Below is the default comparitor list and order for nvim-cmp
|
|
||||||
cmp.config.compare.offset,
|
|
||||||
-- cmp.config.compare.scopes, --this is commented in nvim-cmp too
|
|
||||||
cmp.config.compare.exact,
|
|
||||||
cmp.config.compare.score,
|
|
||||||
cmp.config.compare.recently_used,
|
|
||||||
cmp.config.compare.locality,
|
|
||||||
cmp.config.compare.kind,
|
|
||||||
cmp.config.compare.sort_text,
|
|
||||||
cmp.config.compare.length,
|
|
||||||
cmp.config.compare.order,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
kind_icons = require("aleidk.constants").icons.kinds,
|
||||||
}
|
}
|
||||||
|
end
|
||||||
cmp.setup(opts)
|
|
||||||
end,
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ return {
|
||||||
-- Automatically install LSPs to stdpath for neovim
|
-- Automatically install LSPs to stdpath for neovim
|
||||||
{ "williamboman/mason.nvim", config = true },
|
{ "williamboman/mason.nvim", config = true },
|
||||||
"williamboman/mason-lspconfig.nvim",
|
"williamboman/mason-lspconfig.nvim",
|
||||||
|
{ 'saghen/blink.cmp' } -- autocompletion
|
||||||
},
|
},
|
||||||
|
|
||||||
config = function()
|
config = function()
|
||||||
|
|
@ -146,7 +147,7 @@ return {
|
||||||
|
|
||||||
-- nvim-cmp supports additional completion capabilities, so broadcast that to servers
|
-- nvim-cmp supports additional completion capabilities, so broadcast that to servers
|
||||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities)
|
capabilities = require("blink.cmp").get_lsp_capabilities(capabilities)
|
||||||
|
|
||||||
-- Ensure the servers above are installed
|
-- Ensure the servers above are installed
|
||||||
local mason_lspconfig = require("mason-lspconfig")
|
local mason_lspconfig = require("mason-lspconfig")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue