Indent Line is no longer in use; it's quite an old plugin, and there are likely better ways to implement this functionality. For now, I won't be using any indent markers, and we'll see how that goes. If I encounter issues, I will explore alternative plugins. Orgmode was an attempt to bring over the knowledge base from Emacs. Vim doesn't have the same workflow as Emacs, and everything is less tightly integrated into a single application. I have now transitioned to using Markdown and Obsidian, focusing on the more widely-used Markdown integration. Conjure is too heavy for my needs. All I require is a simple plugin to execute Clojure in a REPL. This plugin conflicts with many other plugins and filetypes, where the LSP (Language Server Protocol) should handle most of the heavy lifting. I've created my own plugin for my very basic use case. See: https://github.com/AdeAttwood/nrepl.nvim
108 lines
2.7 KiB
Lua
108 lines
2.7 KiB
Lua
local cmp = require'cmp'
|
|
local luasnip = require'luasnip'
|
|
|
|
require("copilot").setup({
|
|
suggestion = { enabled = false },
|
|
panel = { enabled = false },
|
|
})
|
|
|
|
require("copilot_cmp").setup()
|
|
|
|
|
|
local icons = {
|
|
Text = "",
|
|
Method = "",
|
|
Function = "",
|
|
Constructor = "",
|
|
Field = "ﰠ",
|
|
Variable = "",
|
|
Class = "ﴯ",
|
|
Interface = "",
|
|
Module = "",
|
|
Property = "ﰠ",
|
|
Unit = "塞",
|
|
Value = "",
|
|
Enum = "",
|
|
Keyword = "",
|
|
Snippet = "",
|
|
Color = "",
|
|
File = "",
|
|
Reference = "",
|
|
Folder = "",
|
|
EnumMember = "",
|
|
Constant = "",
|
|
Struct = "פּ",
|
|
Event = "",
|
|
Operator = "",
|
|
}
|
|
|
|
cmp.setup({
|
|
mapping = cmp.mapping.preset.insert({
|
|
['<C-j>'] = cmp.get_config().mapping['<Down>'],
|
|
['<C-k>'] = cmp.get_config().mapping['<Up>'],
|
|
['<C-l>'] = function() luasnip.jump(1) end,
|
|
['<C-h>'] = function() luasnip.jump(-1) end,
|
|
|
|
['<C-e>'] = cmp.mapping.abort(),
|
|
['<CR>'] = cmp.mapping.confirm({ select = true }),
|
|
["<Tab>"] = cmp.mapping(function(fallback)
|
|
if luasnip.expand_or_jumpable() then
|
|
luasnip.expand_or_jump()
|
|
else
|
|
fallback()
|
|
end
|
|
end, { "i", "s" }),
|
|
|
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
|
if luasnip.jumpable(-1) then
|
|
luasnip.jump(-1)
|
|
else
|
|
fallback()
|
|
end
|
|
end, { "i", "s" }),
|
|
}),
|
|
sources = {
|
|
{ name = "luasnip" },
|
|
{ name = "copilot" },
|
|
{ name = 'nvim_lsp' },
|
|
{ name = 'buffer' },
|
|
{ name = 'path' },
|
|
},
|
|
snippet = {
|
|
expand = function(args)
|
|
luasnip.lsp_expand(args.body)
|
|
end,
|
|
},
|
|
window = {
|
|
completion = cmp.config.window.bordered(),
|
|
documentation = cmp.config.window.bordered(),
|
|
},
|
|
formatting = {
|
|
fields = { 'menu', 'abbr', 'kind' },
|
|
format = function(entry, vim_item)
|
|
-- Give the completion menu a consistent size to stop it jumping arround
|
|
local width = 40
|
|
if #vim_item.abbr > width then
|
|
vim_item.abbr = string.sub(vim_item.abbr, 1, width)
|
|
else
|
|
vim_item.abbr = vim_item.abbr .. string.rep(" ", width - #vim_item.abbr)
|
|
end
|
|
|
|
vim_item.menu = icons[vim_item.kind] or " "
|
|
vim_item.kind = "(" .. entry.source.name .. ")"
|
|
return vim_item
|
|
end,
|
|
},
|
|
experimental = {
|
|
ghost_text = true,
|
|
},
|
|
})
|
|
|
|
cmp.setup.cmdline(":", {
|
|
mapping = cmp.mapping.preset.cmdline(),
|
|
sources = cmp.config.sources({
|
|
{ name = "path" },
|
|
}, {
|
|
{ name = "cmdline" },
|
|
}),
|
|
})
|