diff --git a/common/.config/nvim/lua/lsp-general.lua b/common/.config/nvim/lua/lsp-general.lua index 2f3d9fd..c16d40c 100644 --- a/common/.config/nvim/lua/lsp-general.lua +++ b/common/.config/nvim/lua/lsp-general.lua @@ -9,8 +9,8 @@ lsp.preset({ local rust_lsp = lsp.build_options('rust_analyzer', {}) lsp.ensure_installed({ - 'tsserver', - 'clangd', + 'tsserver', + 'clangd', }) -- Fix Undefined global 'vim' @@ -49,14 +49,28 @@ lsp.setup_nvim_cmp({ mapping = cmp_mappings, }) -local cmp_config = lsp.defaults.cmp_config({ - window = { - completion = cmp.config.window.bordered(), - documentation = cmp.config.window.bordered() - }, -}) -cmp.setup(cmp_config) +lsp.on_attach(function(_, bufnr) + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + local opts = { noremap = true, silent = true, buffer = bufnr } + vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.definition()', opts) + vim.keymap.set('n', 'gT', 'lua vim.lsp.buf.type_definition()', opts) + vim.keymap.set('n', 'gI', 'lua vim.lsp.buf.implementation()', opts) + vim.keymap.set('n', 'gR', 'lua vim.lsp.buf.references()', opts) + + vim.keymap.set('n', '', 'lua vim.lsp.buf.code_action()', opts) + + -- Glance LSP + vim.keymap.set('n', 'gd', 'Glance definitions', opts) + vim.keymap.set('n', 'gt', 'Glance type_definitions', opts) + vim.keymap.set('n', 'gi', 'Glance implementations', opts) + vim.keymap.set('n', 'gr', 'Glance references', opts) +end) + +lsp.setup() + +require('rust-tools').setup({server = rust_lsp}) + cmp.setup.cmdline('/', { sources = { @@ -82,59 +96,56 @@ lsp.set_preferences({ } }) +local cmp_kinds = { + 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 = "" +} -lsp.on_attach(function(_, bufnr) - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - local opts = { noremap = true, silent = true, buffer = bufnr } - vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.definition()', opts) - vim.keymap.set('n', 'gT', 'lua vim.lsp.buf.type_definition()', opts) - vim.keymap.set('n', 'gI', 'lua vim.lsp.buf.implementation()', opts) - vim.keymap.set('n', 'gR', 'lua vim.lsp.buf.references()', opts) +local cmp_config = { + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered() + }, + formatting = { + fields = { "kind", "abbr", "menu" }, + format = function(entry, vim_item) + vim_item.kind = (cmp_kinds[vim_item.kind] or '') - vim.keymap.set('n', '', 'lua vim.lsp.buf.code_action()', opts) - - -- Glance LSP - vim.keymap.set('n', 'gd', 'Glance definitions', opts) - vim.keymap.set('n', 'gt', 'Glance type_definitions', opts) - vim.keymap.set('n', 'gi', 'Glance implementations', opts) - vim.keymap.set('n', 'gr', 'Glance references', opts) -end) - -lsp.setup() - -require('rust-tools').setup({server = rust_lsp}) + vim_item.menu = ({ + buffer = "[]", + nvim_lsp = "[]", + })[entry.source.name] + return vim_item + end, + } +} +cmp.setup(cmp_config) vim.diagnostic.config({ virtual_text = true }) --- completion symbols -vim.lsp.protocol.CompletionItemKind = { - "  (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)" -} -