diff options
| author | Sam Nystrom <sam@samnystrom.dev> | 2023-07-05 21:26:02 -0400 |
|---|---|---|
| committer | Sam Nystrom <sam@samnystrom.dev> | 2023-07-05 21:26:02 -0400 |
| commit | e5c8f244466ff4da4b12c1bbfd2292a8408ff1d2 (patch) | |
| tree | 978e99f5e9fdb7877a15ebe54eaa6d06dee71a92 /.config/nvim/lua/plugins/cmp.lua | |
| parent | 22f001c91a158c1bc576a74ecae5a33402f83ab8 (diff) | |
Add Neovim config
Diffstat (limited to '.config/nvim/lua/plugins/cmp.lua')
| -rw-r--r-- | .config/nvim/lua/plugins/cmp.lua | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua new file mode 100644 index 0000000..19b091f --- /dev/null +++ b/.config/nvim/lua/plugins/cmp.lua @@ -0,0 +1,132 @@ +return { + { + "hrsh7th/nvim-cmp", + dependencies = { + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "petertriho/cmp-git", + "nvim-lua/plenary.nvim", + "hrsh7th/cmp-nvim-lsp", + "saadparwaiz1/cmp_luasnip", + { + "L3MON4D3/LuaSnip", + dependencies = { "rafamadriz/friendly-snippets" }, + config = function() + require("luasnip.loaders.from_vscode").lazy_load() + end, + }, + }, + event = "InsertEnter", + config = function() + local cmp = require("cmp") + local luasnip = require("luasnip") + + cmp.setup({ + mapping = cmp.mapping.preset.insert({ + ["<C-b>"] = cmp.mapping.scroll_docs(-4), + ["<C-f>"] = cmp.mapping.scroll_docs(4), + ["<C-Space>"] = cmp.mapping.complete(), + ["<C-e>"] = cmp.mapping.abort(), + ["<CR>"] = cmp.mapping.confirm({ select = true }), + ["<Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { "i", "s" }), + ["<S-Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }), + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end + }, + sources = cmp.config.sources({ + { name = "luasnip" }, + { name = "nvim_lsp" }, + { name = "path" }, + { name = "conjure" }, + { name = "git" }, + }, { + { name = "buffer" }, + }), + }) + + require("cmp_git").setup() + end, + }, + { + "hrsh7th/cmp-cmdline", + dependencies = { + "hrsh7th/nvim-cmp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + }, + event = "CmdlineEnter", + config = function() + local cmp = require("cmp") + cmp.setup.cmdline({ "/", "?" }, { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = "buffer" }, + }), + }) + cmp.setup.cmdline(":", { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = "path" }, + }, { + { + name = "cmdline", + option = { + ignore_cmds = { "Man", "!" }, + }, + }, + }) + }) + end, + }, + { + "PaterJason/cmp-conjure", + dependencies = { "hrsh7th/nvim-cmp" }, + ft = { + "clojure", + "fennel", + "janet", + "racket", + "hy", + "scheme", + "guile", + "commonlisp", + "julia", + "rust", + "lua", + "python", + }, + }, + { + "rcarriga/cmp-dap", + dependencies = { "hrsh7th/nvim-cmp" }, + ft = { "dap-repl", "dapui_watches", "dapui_hover" }, + config = function() + local cmp = require("cmp") + cmp.setup.filetype({ "dap-repl", "dapui_watches", "dapui_hover" }, { + sources = { + { name = "dap" }, + }, + }) + end, + }, +} + |
