diff --git a/neovim/.config/nvim/init.lua b/neovim/.config/nvim/init.lua index daa741a..ed9490f 100644 --- a/neovim/.config/nvim/init.lua +++ b/neovim/.config/nvim/init.lua @@ -152,6 +152,7 @@ require("user.file-tree") require("user.treesitter") require("user.telescope") require("user.git") +require("user.comp") require("user.lsp") require("user.comment") require("user.snippets") diff --git a/neovim/.config/nvim/lua/user/comp.lua b/neovim/.config/nvim/lua/user/comp.lua new file mode 100644 index 0000000..6757bf6 --- /dev/null +++ b/neovim/.config/nvim/lua/user/comp.lua @@ -0,0 +1,109 @@ +local cmp = require("cmp") + +local kind_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 = "", + TypeParameter = "", +} + +local completion_trigger = "" +if vim.fn.has("win32") == 1 then + completion_trigger = "" +end + +cmp.setup({ + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, + }, + mapping = { + [""] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }), + [""] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }), + [completion_trigger] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.close() + else + cmp.complete() + end + end), + [""] = cmp.mapping.confirm({ + select = true, + behavior = cmp.SelectBehavior.Insert, + }), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.scroll_docs(-4), + }, + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, + }, { + { name = "path" }, + { name = "buffer" }, + }), + completion = { + completeopt = "menu,menuone,noselect,noinsert,preview", + }, + experimental = { + ghost_text = true, + }, + sorting = { + comparators = { + cmp.config.compare.score, + cmp.config.compare.sort_text, + cmp.config.compare.kind, + }, + }, + documentation = { + border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" }, + zindex = 999, + format = { "markdown" }, + }, + formatting = { + format = function(entry, vim_item) + vim_item.kind = string.format("%s %s", kind_icons[vim_item.kind], vim_item.kind) + vim_item.menu = ({ + buffer = "[Buffer]", + luasnip = "[Snippet]", + nvim_lua = "[Lua]", + path = "[File]", + })[entry.source.name] + + return vim_item + end, + }, +}) + +cmp.setup.cmdline("/", { + sources = { + { name = "cmdline" }, + }, +}) + +cmp.setup.cmdline(":", { + sources = { + { name = "cmdline" }, + }, +}) diff --git a/neovim/.config/nvim/lua/user/lsp.lua b/neovim/.config/nvim/lua/user/lsp.lua index 1073a14..ee7a2ca 100644 --- a/neovim/.config/nvim/lua/user/lsp.lua +++ b/neovim/.config/nvim/lua/user/lsp.lua @@ -1,36 +1,7 @@ local lsp_installer = require("nvim-lsp-installer") -local cmp = require("cmp") local null_ls = require("null-ls") local util = require("lspconfig").util -local kind_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 = "", - TypeParameter = "", -} - local formatting = null_ls.builtins.formatting local diagnostics = null_ls.builtins.diagnostics @@ -61,86 +32,6 @@ vim.api.nvim_create_autocmd("BufWritePre", { callback = vim.lsp.buf.formatting_sync, }) -local completion_trigger = "" -if vim.fn.has("win32") == 1 then - completion_trigger = "" -end - -cmp.setup({ - snippet = { - expand = function(args) - require("luasnip").lsp_expand(args.body) - end, - }, - mapping = { - [""] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }), - [""] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }), - [completion_trigger] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.close() - else - cmp.complete() - end - end), - [""] = cmp.mapping.confirm({ - select = true, - behavior = cmp.SelectBehavior.Insert, - }), - [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping.scroll_docs(-4), - }, - sources = cmp.config.sources({ - { name = "nvim_lsp" }, - { name = "luasnip" }, - }, { - { name = "path" }, - { name = "buffer" }, - }), - completion = { - completeopt = "menu,menuone,noselect,noinsert,preview", - }, - experimental = { - ghost_text = true, - }, - sorting = { - comparators = { - cmp.config.compare.score, - cmp.config.compare.sort_text, - cmp.config.compare.kind, - }, - }, - documentation = { - border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" }, - zindex = 999, - format = { "markdown" }, - }, - formatting = { - format = function(entry, vim_item) - vim_item.kind = string.format("%s %s", kind_icons[vim_item.kind], vim_item.kind) - vim_item.menu = ({ - buffer = "[Buffer]", - luasnip = "[Snippet]", - nvim_lua = "[Lua]", - path = "[File]", - })[entry.source.name] - - return vim_item - end, - }, -}) - -cmp.setup.cmdline("/", { - sources = { - { name = "cmdline" }, - }, -}) - -cmp.setup.cmdline(":", { - sources = { - { name = "cmdline" }, - }, -}) - local capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()) capabilities.textDocument.completion.completionItem.snippetSupport = true