From 0a3464bb12f8dbff675da799fe508618a794efb4 Mon Sep 17 00:00:00 2001 From: matt1432 Date: Sat, 11 May 2024 15:07:24 -0400 Subject: [PATCH] feat(nvim): setup autopairs with coq --- common/home/neovim/langs/default.nix | 40 +++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/common/home/neovim/langs/default.nix b/common/home/neovim/langs/default.nix index a121bb0..fb93bfb 100644 --- a/common/home/neovim/langs/default.nix +++ b/common/home/neovim/langs/default.nix @@ -28,7 +28,12 @@ in { */ '' -- Start completion / snippet stuff - vim.g.coq_settings = { auto_start = 'shut-up' }; + vim.g.coq_settings = { + auto_start = 'shut-up', + keymap = { + recommended = false, + }, + }; -- Add formatting cmd vim.api.nvim_create_user_command( @@ -58,7 +63,38 @@ in { }); require('lsp_lines').setup(); + + -- Autopairs with coq + local remap = vim.api.nvim_set_keymap + local npairs = require('nvim-autopairs') + + npairs.setup({ map_bs = false, map_cr = false }) + + _G.MUtils= {} + + MUtils.CR = function() + if vim.fn.pumvisible() ~= 0 then + if vim.fn.complete_info({ 'selected' }).selected ~= -1 then + return npairs.esc(''); + else + return npairs.esc('') .. npairs.autopairs_cr(); + end + else + return npairs.autopairs_cr(); + end + end + remap('i', '', 'v:lua.MUtils.CR()', { expr = true, noremap = true }); + + MUtils.BS = function() + if vim.fn.pumvisible() ~= 0 and vim.fn.complete_info({ 'mode' }).mode == 'eval' then + return npairs.esc('') .. npairs.autopairs_bs(); + else + return npairs.autopairs_bs(); + end + end + remap('i', '', 'v:lua.MUtils.BS()', { expr = true, noremap = true }); ''; + plugins = [ vimPlugins.nvim-lspconfig @@ -66,6 +102,8 @@ in { vimPlugins.coq-artifacts vimPlugins.coq-thirdparty + vimPlugins.nvim-autopairs + vimPlugins.lsp-status-nvim vimPlugins.lsp_lines-nvim ];