Open2

ddc.vimとnvim-autopairsの共存のための設定方法

airRnotairRnot

結論

vim.cmd [[
inoremap <silent><expr> <CR> pum#visible() ? pum#map#confirm() :
	\ "\<Cmd>call feedkeys(v:lua.require('nvim-autopairs').autopairs_cr(), 'in')\<CR>"
]]

airRnotairRnot

詳細

completion系pluginで補完の確定を<CR>に設定している人は、autopairs系のpluginと競合しないように設定すると思うのですが、ddc.vimとnvim-autopairsの組み合わせの情報はあまり見かけなかったので残しておきます。


私は以前はautopairsにmini.pairsを使用していて、ddcとの共存の設定は以下のようにしていました。

local pum_visible = vim.fn["pum#visible"]
vim.keymap.set("i", "<CR>", function()
                        return pum_visible() and "<Cmd>call pum#map#confirm()<CR>" or require("mini.pairs").cr()
                    end, { expr = true, silent = true, noremap = false })

しかし、HTMLタグのautopairsのためにnvim-ts-autotagを使用したくなり、それに伴いmini.pairsからnvim-autopairsに移行を行いました。
そこで、上記のコードのmini.pairsの部分だけをnvim-autopairs用に修正したところ、うまく動作しませんでした。

色々試行錯誤したのですが、うまくいかず、GitHubをあさった結果以下のものが見つかりました。

https://github.com/ElanMedoff/neovim-config/blob/4f721f613efbe6a73c37d51696252dd0b1380422/lua/feature_complete/plugins/lsp.lua#L37

これはcoc用だったので、少し修正したものが冒頭のコードとなります。これでようやくうまく動きました。
ただし、vim.cmdで書いてしまっているので、ちゃんとluaで書けるようにしたいですね。