diff --git a/config/cmp.nix b/config/cmp.nix index 8b5bcd0..82e70ed 100644 --- a/config/cmp.nix +++ b/config/cmp.nix @@ -1,8 +1,121 @@ { - plugins.cmp = { - enable = true; - autoEnableSources = true; + plugins = { + cmp-emoji = { enable = true; }; + cmp = { + enable = true; + settings = { + autoEnableSources = true; + experimental = { ghost_text = true; }; + performance = { + debounce = 60; + fetchingTimeout = 200; + maxViewEntries = 30; + }; + snippet = { expand = "luasnip"; }; + formatting = { fields = [ "kind" "abbr" "menu" ]; }; + sources = [ + { name = "nvim_lsp"; } + { name = "emoji"; } + { + name = "buffer"; # text within current buffer + option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; + keywordLength = 3; + } + { name = "copilot"; } + { + name = "path"; # file system paths + keywordLength = 3; + } + { + name = "luasnip"; # snippets + keywordLength = 3; + } + ]; + + window = { + completion = { border = "solid"; }; + documentation = { border = "solid"; }; + }; + + mapping = { + "" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.abort()"; + "" = "cmp.mapping.scroll_docs(-4)"; + "" = "cmp.mapping.scroll_docs(4)"; + "" = "cmp.mapping.complete()"; + "" = "cmp.mapping.confirm({ select = true })"; + "" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })"; + }; + }; + }; + cmp-nvim-lsp = { enable = true; }; # lsp + cmp-buffer = { enable = true; }; + cmp-path = { enable = true; }; # file system paths + cmp_luasnip = { enable = true; }; # snippets + cmp-cmdline = { enable = false; }; # autocomplete for cmdline }; - - plugins.cmp-buffer.enable = true; + extraConfigLua = '' + luasnip = require("luasnip") + 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 cmp = require'cmp' + + -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline({'/', "?" }, { + sources = { + { name = 'buffer' } + } + }) + + -- Set configuration for specific filetype. + cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it. + }, { + { name = 'buffer' }, + }) + }) + + -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline(':', { + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }), + -- formatting = { + -- format = function(_, vim_item) + -- vim_item.kind = cmdIcons[vim_item.kind] or "FOO" + -- return vim_item + -- end + -- } + }) ''; } diff --git a/config/copilot.nix b/config/copilot.nix index 7a4fd95..fbab078 100644 --- a/config/copilot.nix +++ b/config/copilot.nix @@ -1,12 +1,17 @@ { - plugins = { - #copilot-lua.enable = true; - #copilot-cmp.enable = true; - copilot-vim = { - enable = true; - settings = { - filetypes = { "*" = true; }; - }; - }; + plugins.copilot-cmp = { + enable = true; }; + plugins.copilot-lua = { + enable = true; + suggestion = { enabled = false; }; + panel = { enabled = false; }; + }; + + extraConfigLua = '' + require("copilot").setup({ + suggestion = { enabled = false }, + panel = { enabled = false }, + }) + ''; } diff --git a/config/default.nix b/config/default.nix index 4236dcb..0ea0c21 100644 --- a/config/default.nix +++ b/config/default.nix @@ -9,6 +9,7 @@ ./keymaps.nix ./lsp.nix ./lualine.nix + ./luasnip.nix ./markdown.nix ./neo-tree.nix ./telescope.nix diff --git a/config/lsp.nix b/config/lsp.nix index 5643ecb..aabed9e 100644 --- a/config/lsp.nix +++ b/config/lsp.nix @@ -15,7 +15,7 @@ jsonls.enable = true; lua-ls.enable = true; # nixd.enable = true; - nil_ls.enable = true; + nil-ls.enable = true; ruff-lsp.enable = true; rust-analyzer = { enable = true; diff --git a/config/luasnip.nix b/config/luasnip.nix new file mode 100644 index 0000000..b1c022f --- /dev/null +++ b/config/luasnip.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: { + plugins.luasnip = { + enable = true; + extraConfig = { + enable_autosnippets = true; + store_selection_keys = ""; + }; + fromVscode = [ + { + lazyLoad = true; + paths = "${pkgs.vimPlugins.friendly-snippets}"; + } + ]; + }; +}