From e5c8f244466ff4da4b12c1bbfd2292a8408ff1d2 Mon Sep 17 00:00:00 2001 From: Sam Nystrom Date: Wed, 5 Jul 2023 21:26:02 -0400 Subject: Add Neovim config --- .config/nvim/lua/plugins/cmp.lua | 132 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 .config/nvim/lua/plugins/cmp.lua (limited to '.config/nvim/lua/plugins/cmp.lua') 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({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = true }), + [""] = 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" }), + [""] = 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, + }, +} + -- cgit v1.2.3