diff --git a/lua/plugins/coding.lua b/lua/plugins/coding.lua index fe036b0..e58c39a 100644 --- a/lua/plugins/coding.lua +++ b/lua/plugins/coding.lua @@ -1,6 +1,75 @@ return { + { - "echasnovski/mini.pairs", + "L3MON4D3/LuaSnip", + build = (not jit.os:find("Windows")) + and "echo 'NOTE: jsregexp is optional, so not a big deal if it fails to build'; make install_jsregexp" + or nil, + dependencies = { + "rafamadriz/friendly-snippets", + config = function() + require("luasnip.loaders.from_vscode").lazy_load() + end, + }, + opts = { + history = true, + delete_check_events = "TextChanged", + }, + -- stylua: ignore + keys = { + { + "", + function() + return require("luasnip").jumpable(1) and "luasnip-jump-next" or "" + end, + expr = true, silent = true, mode = "i", + }, + { "", function() require("luasnip").jump(1) end, mode = "s" }, + { "", function() require("luasnip").jump(-1) end, mode = { "i", "s" } }, + }, + }, + + { + "hrsh7th/nvim-cmp", + event = "InsertEnter", + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "saadparwaiz1/cmp_luasnip", + }, + opts = function () + vim.api.nvim_set_hl(0, "CmpGhostText", { link = "Comment", default = true }) + local cmp = require("cmp") + return { + completion = { + completeopt = "menu,menuone,noinsert" + }, + snippet = { + expand = function (args) + require("luasnip").lsp_expand(args) + end, + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), + [""] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ behavior = cmp.SelectBehavior.Replace, select = true}), + }), + sources = cmp.config.sources({ + { name = "path" }, + { name = "nvim_lsp" }, + { name = "buffer", keyword_length = 5 }, + { name = "luasnip", keyword_length = 3 }, + }) + } + end + }, + + + { + "echasnovski/mini.pairs", event = "VeryLazy", opts = {} },